LoginSignup
42
39

More than 5 years have passed since last update.

AWS SDK for Goを使ってS3にファイルアップロード

Last updated at Posted at 2015-02-01

https://github.com/awslabs/aws-sdk-go
aws公式のsdkになるaws-sdk。

取り急ぎ、ファイル一覧取得と、ファイルのアップロードの2つだけ確認してみた。

ファイル一覧取得

package main

import (
  "fmt"

  "github.com/awslabs/aws-sdk-go/aws"
  "github.com/awslabs/aws-sdk-go/gen/s3"
)

func main() {
  accessKey := "<AWS_ACCESS_KEY_ID>"
  secretKey := "<AWS_SECRET_ACCESS_KEY>"
  bucket := "<bucket>"

  creds := aws.Creds(accessKey, secretKey, "")
  cli := s3.New(creds, s3.BucketLocationConstraintApNortheast1, nil)

  resp, err := cli.ListObjects(&s3.ListObjectsRequest{
    Bucket: aws.String(bucket),
  })
  if err != nil {
    panic(err)
  }
  for _, c := range resp.Contents {
    fmt.Println(*c.Key)
  }
}

ファイルのアップロード

package main

import (
  "fmt"

  "github.com/awslabs/aws-sdk-go/aws"
  "github.com/awslabs/aws-sdk-go/gen/s3"
)

func main() {
  accessKey := "<AWS_ACCESS_KEY_ID>"
  secretKey := "<AWS_SECRET_ACCESS_KEY>"
  bucket := "<bucket>"

  creds := aws.Creds(accessKey, secretKey, "")
  cli := s3.New(creds, s3.BucketLocationConstraintApNortheast1, nil)

  f, err := os.Open("./foo.jpg")
  if err != nil {
    panic(f)
  }
  defer f.Close()

  fstat, err := f.Stat()
  if err != nil {
    panic(f)
  }

  _, err = cli.PutObject(&s3.PutObjectRequest{
    Body:          f,
    Bucket:        aws.String(bucket),
    Key:           aws.String("images/foo.jpg"),
    ACL:           aws.String(s3.BucketCannedACLPublicRead),
    ContentType:   aws.String("image/jpeg"),
    ContentLength: aws.Long(fstat.Size()),
  })

  if err != nil {
    panic(err)
  }
}

所感

ドキュメントがまだ未整備なので
エラーや必須パラメータはAWSのAPIドキュメントを見る必要が出てくる。
A header you provided implies functionality that is not implementedとか言われたら、
APIドキュメントを見て原因を確認していくことになる。

要はAWS client以上でも以下でもない感じ。

42
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
39