在Amazon S3中公开存储桶


286

如何在Amazon S3中设置存储桶,以便默认情况下所有文件均为公开只读状态?


10
我很生气这个问题被标记为主题。AWS对认真的程序员至关重要。我要补充一下,您可以将cli sync命令与acl参数一起使用,例如:aws s3 sync ./local-folder-name s3://remote-bucket-name --acl=public-read
John Vandivier

这个类似帖子的答案可能会有所帮助:stackoverflow.com/a/23102551/475882
jaxxbo

Answers:


462

您可以按照以下博客文章中的详细说明设置存储桶策略:

http://ariejan.net/2010/12/24/public-read-amazon-s3-bucket-policy/


根据@robbyt的建议,使用以下JSON创建存储桶策略:

{
  "Version": "2008-10-17",
  "Statement": [{
    "Sid": "AllowPublicRead",
    "Effect": "Allow",
    "Principal": { "AWS": "*" },
    "Action": ["s3:GetObject"],
    "Resource": ["arn:aws:s3:::bucket/*" ]
  }]
}

重要提示bucket在该Resource行中用您的存储桶名称替换。


使用正式的AWS CLI时,arn:aws:s3:::bucket也需要添加到Resource阵列中。(因此,没有/*。)我希望这对像我一样在此方面挣扎的其他人有所帮助。
silvenon 2015年

我的错。仅在您打算这样做时才需要sync,而不仅仅是查看存储桶。
silvenon 2015年

6
为了支持通过python的boto进行匿名访问,除了设置此策略外,我还必须在存储桶的“属性”>“权限”部分中授予List权限Everyone
克里斯·贝蒂

编写Version的规则是什么?我正在使用当前日期2017-11-16,它报告:错误:该策略必须包含有效的版本字符串
Timothy.Li

1
@ Timothy.Li您还记得用引号将它包装起来吗?"2017-11-16",
froggomad

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.