为什么我的S3存储桶中的项目为403?

Mik*_*ike 5 amazon-s3 amazon-web-services

我正在通过AWS API将文档上传到S3存储桶.工作良好.

上传的项目虽然标记为私有,但无法在线查看.我可以通过右键单击控制台中的文件并单击"公开",或使用API​​将其公开来解决此问题.

是否可以公开上传所有文件,因此我不必进行额外的API调用?

以下是存储桶权限的屏幕截图:

在此输入图像描述

我不认为它与IAM有任何关系,因为请求用户根本不是用户,而是公众.

谢谢

Mat*_*att 4

这可以通过存储桶策略来完成(单击屏幕截图中的存储桶策略)。例如,

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::examplebucket/*"]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

(请参阅https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html上的“向匿名用户授予只读权限” )

这允许任何人 ( *) 对存储桶中的任何项目执行操作GetObject,而不必为每个项目设置权限。

  • 谢谢 - 这已经奏效了。然而,AWS 随后会显示一条警告消息,指出他们不建议允许公众访问存储桶。如果是这种情况,推荐的方法是什么,因为大多数 s3 存储桶肯定用于某种类型的资产托管? (2认同)
  • 据我所知,这只是一个警告,以防止人们意外泄露私人数据。如果您将 cloudfront 用于网站并需要全球分发等,那么最好将 cloudfront 放在存储桶前面,这样您就可以将存储桶设为您的 AWS 账户的私有存储桶。 (2认同)