【发布时间】:2019-07-16 10:54:23
【问题描述】:
我正在尝试使用 go sdk 为我的 S3 存储桶中的文件创建预签名 URL。
当我从命令行运行程序时,我得到了不包含 X-Amz-Security-Token 的预签名 URL。
但如果我使用来自 lambda 函数的相同代码,我总是会在 URL 中获得 X-Amz-Security-Token。
我不确定为什么这种行为会有所不同。
这里是代码-
func CreatePreSignedURL(bucketName string, path string) (string, error) {
sess, err := session.NewSession(&aws.Config{
Region: aws.String("us-east-1")},
)
svc := s3.New(sess)
req, _ := svc.GetObjectRequest(&s3.GetObjectInput{
Bucket: aws.String(bucketName),
Key: aws.String(path),
})
urlStr, err := req.Presign(60 * time.Minute)
if err != nil {
fmt.Println("error in generarting presigned URL is ", err)
return urlStr, err
}
return urlStr, nil
}
lambda 生成的 URL 很长,对于我的应用程序,我期望没有 X-Amz-Security-Token 的 URL 更短
【问题讨论】:
-
两台主机上的env vars 和config files 是否相同?
-
如果
x-amz-security-token不存在也意味着在生成的当前环境中不需要。我解决了添加 if 语句来检查和处理x-amz-security-token的问题,前提是x-amz-security-token存在,并且我的前端在本地工作并部署在 lambda 中。
标签: amazon-web-services go amazon-s3 aws-lambda aws-sdk