AWS预签名URL ACL公共读取无效签名

克里斯 :

我有一个专用存储桶,我想创建一个预签名的url,该URL允许用户将文件上传到时间限制内,并将ACL设置为public read only。

当创建如下所示的PutObjectRequest时,它可以很好地工作,我可以将文件放在没有问题的位置。当我添加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未签名。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章