Go
AWS
S3
golang

[AWS SDK for Go] S3の署名付きURLを取得する

プライベートなS3コンテンツにアクセスしたい!

→署名付きURLを発行する!

http://docs.aws.amazon.com/ja_jp/sdk-for-go/v1/developer-guide/s3-example-presigned-urls.html

svc := s3.New(session.New(), aws.NewConfig().WithRegion("ap-northeast-1"))

req, _ := svc.GetObjectRequest(&s3.GetObjectInput{
    Bucket: aws.String("bucket_name"),
    Key:    aws.String("file_path"),
})
url, err := req.Presign(time.Hour * 2) // 有効期限を指定して署名付きURLを取得
if err != nil {
    fmt.Println("Failed to sign request", err)
}

fmt.Println(url)

コマンドでも取得できるので、確認用に
$ aws s3 presign s3://bucket_name/file_path --expires-in 30

こう使ってます

  1. DynamoDBにバケット名とファイルパスを保存しておく
  2. バケット名とファイルパスを指定して、S3から署名付きURLを取得
  3. ファイルが見れる!