Skip to content

Instantly share code, notes, and snippets.

@masahide
Last active August 29, 2015 14:15
Show Gist options
  • Save masahide/1de7e460815af6e337b1 to your computer and use it in GitHub Desktop.
Save masahide/1de7e460815af6e337b1 to your computer and use it in GitHub Desktop.
GoでAWS APIを叩く。 aws-sdk-go の 認証には aws.DetectCreds() が便利 ref: http://qiita.com/yamasaki-masahide/items/1a11545e1c5984ab7481
var (
accessKey = "AWSaccesskey"
secretKey = "AWSsecretKey"
region = "ap-northeast-1"
)
func main() {
httpClient := &http.Client{Timeout: time.Duration(30) * time.Second}
creds := aws.Creds(accessKey, secretKey, "")
S3 := s3.New(creds, region, httpClient)
S3 := s3.New(aws.DetectCreds("", "", ""), region, httpClient)
package main
import (
"log"
"net/http"
"os"
"time"
"github.com/awslabs/aws-sdk-go/aws"
"github.com/awslabs/aws-sdk-go/gen/s3"
)
var (
region = "ap-northeast-1"
bucket = "buket_name"
filename = "hoge.txt"
acl = "private"
mimeType = "text/plain"
)
func main() {
var (
err error
file *os.File
info os.FileInfo
)
httpClient := &http.Client{Timeout: time.Duration(30) * time.Second}
S3 := s3.New(aws.DetectCreds("", "", ""), region, httpClient)
if file, err = os.Open(filename); err != nil {
log.Println(err)
}
defer file.Close()
if info, err = file.Stat(); err != nil {
log.Println(err)
}
req := s3.PutObjectRequest{
Body: file,
Bucket: &bucket,
Key: &filename,
ACL: &acl,
ContentType: &mimeType,
ContentLength: aws.Long(info.Size()),
}
res, err := S3.PutObject(&req)
log.Printf("res:%s, err:%s", res, err)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment