gpt4 book ai didi

amazon-web-services - AWS S3 预签名 URL 包含 X-Amz-Security-Token

转载 作者:IT王子 更新时间:2023-10-29 02:07:38 24 4
gpt4 key购买 nike

我正在尝试使用 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

最佳答案

当该函数在您的命令行中运行时,它会生成带有 IAM 凭证的预签名 URL,这些凭证可能存储在环境变量或 ~/.aws/config 中。

为关联的 IAM 角色分配临时凭证 1 在 AWS Lambda 环境中调用该函数。

AWS 要求使用临时凭证发出的请求包含 x-amz-security-token header 。 2

我认为 URL 的长度在这里不是问题。

如果您想在本地和 Lambda 函数环境中保持一致的行为,一个简单的方法是在 Lambda 函数的环境中设置 AWS 凭证。

关于amazon-web-services - AWS S3 预签名 URL 包含 X-Amz-Security-Token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54825501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com