根据策略无效:策略条件失败:来自邮递员的 ["eq"、“$acl”、"public-read"]

Invalid according to Policy: Policy Condition failed: ["eq", "$acl", "public-read"] from postman

嘿,我用它来设置使用预签名 url 直接上传到 S3。 https://devcenter.heroku.com/articles/s3-upload-python 在 Cors 政策中,我保留了: 允许的来源 * 其余一切都一样。

收到预签名响应后,我使用 postman 尝试将图像文件上传到 s3。 但是似乎出现错误:

"Invalid according to Policy: Policy Condition failed:"eq", "$acl", "public-read""

我想我搞砸了 cors 政策什么的。

PS:public 对 S3 存储桶的访问全部被阻止...我需要禁用它才能正常工作吗?

bucket policy也是空白..我需要在那里添加一些东西吗? (对不起菜鸟的东西)。

提前致谢。

根据您引用的 link,您生成的预签名 URL 允许上传的对象 public 可读,而存储桶块 Public访问存储桶及其对象。

如果存储桶中的对象可以 public 公开,您可以禁用阻止 public 访问的设置。请参阅文档 here.

或者,您可以更新 generate_presigned_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
  )