2017-05-05 155 views
0

我正在编写需要为用户生成S3令牌的Golang REST API,以便他们可以将文件上载到存储桶中的特定文件夹。从Golang REST API生成Amazon S3令牌

这是我需要实现:

Method: GET 
Endpoint: myapp.com/images/:imageid/token 
Description: Return 2 tokens so that the user can upload files to the S3 
      bucket related to the image ID parameter. 

我使用Golang回声框架。 而且我不确定如何实现此功能。

这应该通过AWS SDK来完成,还是亚马逊提供了其他以编程方式生成令牌的方式?

+0

你想生成什么样的记号?听起来像(因为你说2个标记),你可能试图生成短暂的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY对? –

+0

说实话,我不知道令牌应该是什么。我认为你是真实的。我将如何从程序内部生成这些访问密钥? – Anurope

+0

预先签名的网址将成为您的选择。您需要为每个正在执行的上传返回一个。要清楚 - 在我的第一条评论中提到的短命钥匙对不是你想去的地方。 –

回答

1

要生成用于将文件直接上传到s3的令牌,您可以使用pre-signed URLS

生成预先签名的URL后,将其返回给用户,调用应用程序可以使用它来上传文件。

从这个链接上面的例子应该是什么你正在寻找:

svc := s3.New(session.New(&aws.Config{Region: aws.String("us-west-2")})) 
req, _ := svc.PutObjectRequest(&s3.PutObjectInput{ 
    Bucket: aws.String("myBucket"), 
    Key: aws.String("myKey"), 
}) 
str, err := req.Presign(15 * time.Minute) 

log.Println("The URL is:", str, " err:", err) 
+0

这太好了,谢谢。 – Anurope