英文:
Amazon S3 token generation from a Golang REST API
问题
我正在编写一个使用Golang编写的REST API,需要为用户生成S3令牌,以便他们可以将文件上传到存储桶内的特定文件夹中。
这是我需要实现的内容:
方法:GET
端点:myapp.com/images/:imageid/token
描述:返回2个令牌,以便用户可以将文件上传到与图像ID参数相关的S3存储桶中。
我正在使用Golang的echo框架。
我不太确定如何实现这个功能。
这应该通过AWS SDK来完成,还是亚马逊提供其他以编程方式生成令牌的方法?
英文:
I'm writing a Golang REST API that needs to generate S3 tokens for users so that they can upload files to the specific folder inside a bucket.
This is what I need to implement:
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.
I'm using the Golang echo framework.
And I'm not really sure how to implement this functionality.
Should this be done via the AWS SDK or does Amazon offer other ways of programmatically generrating tokens?
答案1
得分: 1
为了为用户生成用于直接上传文件到S3的令牌,您可以使用预签名URL。
生成预签名URL后,将其返回给用户,调用应用程序可以使用该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)
英文:
To generate tokens for users to upload files directly to s3, you can use pre-signed URLS.
After generating a pre-signed URL, return that to the user and the calling application can use that to upload the file.
This example from the link above should be about what you're looking for:
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)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论