ChatGPT解决这个技术问题 Extra ChatGPT

在 Amazon S3 中公开存储桶

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

我很生气这个问题被标记为离题。 AWS 对于认真的程序员来说至关重要。我想添加你可以使用带有 acl 参数的 cli 同步命令,如下所示:aws s3 sync ./local-folder-name s3://remote-bucket-name --acl=public-read
这个对类似帖子的回答可能会有所帮助:stackoverflow.com/a/23102551/475882

A
Akash Kumar Verma

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

http://ariejan.net/2010/12/24/public-readable-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/*"
            ]
        }
    ]
}

重要提示:将 Resource 行中的 bucket 替换为您的存储桶名称。


使用官方 AWS CLI 时,还需要将 arn:aws:s3:::bucket 添加到 Resource 数组中。 (所以没有 /*。)我希望这可以帮助像我一样在这方面苦苦挣扎的其他人。
我的错。仅当您计划 sync 时才需要这样做,而不仅仅是查看存储桶。
为了支持通过 python 的 boto 进行匿名访问,除了设置这个策略之外,我还必须在 Properties > 中将 List 权限授予 Everyone存储桶的权限部分。
写版本的规则是什么?我正在使用当前日期 2017-11-16,它报告:错误:策略必须包含有效的版本字符串
@Timothy.Li 你记得用引号括起来吗? "2017-11-16",
c
craft

Amazon 提供了一个策略生成器工具:

https://awspolicygen.s3.amazonaws.com/policygen.html

之后,您可以在 AWS 控制台上输入存储桶的策略要求:

https://console.aws.amazon.com/s3/home


这是<<使用桶策略和用户策略>>的官方文档docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html
很棒的链接。语法非常复杂,他们不得不为它编写一个生成器。