aws s3 存储桶中的文件在通过 aws cli 同步后不公开

Web*_*per 3 amazon-s3 amazon-web-services reactjs aws-cli

你好吗。我正在使用 aws s3 存储桶同步 react.js Web 应用程序构建目录。当我通过输入亚马逊控制台(https://s3.console.aws.amazon.com/)手动将构建目录中的文件上传到 s3 时,所有上传的文件都是公开的,因此当我访问端点时,它显示网站很好(我正在使用s3 用于静态网站托管)

但是如果我将它与 aws cli 同步

aws s3 sync build/ s3://mybucketnamehere --delete
Run Code Online (Sandbox Code Playgroud)

我可以在存储桶中看到所有上传的新文件,但这些都被拒绝访问,所以当我进入网站时它给了我 403 错误。

这是政策

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:DeleteObject",
                "s3:DeleteObjectTagging",
                "s3:DeleteObjectVersion",
                "s3:DeleteObjectVersionTagging",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::mybucketnamehere",
                "arn:aws:s3:::mybucketnamehere/*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

谢谢

Yos*_*ssi 5

正确答案是:不要使用 S3 来提供静态文件。您应该设置一个 Cloudfront 发行版来提供这些文件,因为它为您提供了许多优势。

如果由于某种原因您不能使用 Cloudfront,您可以添加--acl public-read到您的命令中:

aws s3 sync build/ s3://mybucketnamehere --delete --acl public-read
Run Code Online (Sandbox Code Playgroud)