gpt4 book ai didi

amazon-web-services - AWS 预签名 url acl 公共(public)读取无效签名

转载 作者:IT王子 更新时间:2023-10-29 02:22:01 25 4
gpt4 key购买 nike

我有一个私有(private)桶,我想创建一个预签名的 url,允许用户在时间限制内上传文件并将 ACL 设置为公共(public)只读。

当创建如下所示的 PutObjectRequest 时,它工作正常,我可以毫无问题地 PUT 文件。当我添加 ACL:aws.String("public-read") 时,我收到错误“签名不匹配”并且 PUT 失败,这是 GO sdk 生成的 url 示例。

https://<MY-BUCKET>.s3.eu-west-2.amazonaws.com/<MY-KEY>?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<AWS_ACCESS_KEY>/20170505/eu-west-2/s3/aws4_request&X-Amz-Date=20170505T793528Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host;x-amz-acl&X-Amz-Signature=2584062aaa76545665bfed7204fcf0dfe233a45016f698e7e8a11c34a5a7921e

我已经尝试使用 root aws 用户和普通用户。我尝试过使用和不使用存储桶策略,使用存储桶策略和 FULL S3 访问的 IAM 策略和不使用。基本上都是组合。每当我添加 ACL 字段时,都会出现签名错误。

我不确定它是否与 GO SDK 或 AWS 服务有关。有人可以建议我该怎么做吗?

svc := s3.New(session.New(&aws.Config{Region: aws.String("eu-west-2")}))
req, _ := svc.PutObjectRequest(&s3.PutObjectInput{
ACL: aws.String("public-read"),
Bucket: aws.String("MY BUCKET NAME"),
Key: aws.String("MY KEY"),
})
str, err := req.Presign(15 * time.Minute)

最佳答案

这是 aws 服务端的错误,未对 url 进行签名。

关于amazon-web-services - AWS 预签名 url acl 公共(public)读取无效签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43806098/

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