Amazon web services 根据策略无效:策略条件失败:[“eq”、“acl”、“public read”]from postman

Amazon web services 根据策略无效:策略条件失败:[“eq”、“acl”、“public read”]from postman,amazon-web-services,amazon-s3,postman,pre-signed-url,Amazon Web Services,Amazon S3,Postman,Pre Signed Url,嘿,我用这个来设置直接上传,使用预先签名的url到S3。 在Cors政策中,我遵守: 允许原产地* 休息吧,一切都一样 在收到预先签名的响应后,我使用postman尝试将图像文件上载到s3。 但似乎出现了一个错误: "Invalid according to Policy: Policy Condition failed:"eq", "$acl", "public-read"" 我想我把cors的政策搞砸了 PS:对S3存储桶的公共访问全部被阻止…我需要禁用它才能工作吗 bucket策略也为空

嘿,我用这个来设置直接上传,使用预先签名的url到S3。 在Cors政策中,我遵守: 允许原产地* 休息吧,一切都一样

在收到预先签名的响应后,我使用postman尝试将图像文件上载到s3。 但似乎出现了一个错误:

"Invalid according to Policy: Policy Condition failed:"eq", "$acl", "public-read""
我想我把cors的政策搞砸了

PS:对S3存储桶的公共访问全部被阻止…我需要禁用它才能工作吗

bucket策略也为空。是否需要在此处添加内容。 (很抱歉,这是努布的事)


提前感谢。

根据您引用的链接,您正在生成的预签名URL允许上传的对象公开可读,而bucket阻止了对bucket及其对象的公开访问

如果bucket中的对象可以公开,则可以禁用阻止公共访问的设置。请参阅文档

或者,您可以更新
generate\u presigned\u post
方法,将ACL设置为私有

 presigned_post = s3.generate_presigned_post(
    Bucket = S3_BUCKET,
    Key = file_name,
    Fields = {"acl": "private", "Content-Type": file_type},
    Conditions = [
      {"acl": "private"},
      {"Content-Type": file_type}
    ],
    ExpiresIn = 3600
  )

问题中引用的错误消息与CORS无关。嘿,Franks,谢谢你的帮助…因此根据你的建议,我取消了所有阻止公共访问,并为公共获取对象添加了一个策略…现在的问题是我获取拒绝访问错误(403)当我尝试使用预先签名的url上载文件时……请注意,我用于生成url的用户具有完全的s3访问权限。bucket策略如下,{“版本”:“2012-10-17”,“语句”:[{“Sid”:“PublicReadForGetBucketObjects”,“效果”:“允许”,“主体”:“操作”:“s3:GetObject”,“Resource”:“arn:aws:s3:::img bucket/”}]}您正试图通过预签名的URL上载对象。请在策略中添加
PutObject
权限。为什么?我用于创建预签名URL的用户已将fullAccessToS3策略附加到该策略。嘿,Franks…能够解决此问题…我被许多角色弄糊涂了,并将权限授予了不正确的角色,这导致了问题…非常感谢s、 …现在我可以睡觉了。。