通过AWS CLI同步后,AWS S3存储桶中的文件不公开

时间:2019-01-13 09:04:12

标签: reactjs amazon-web-services amazon-s3 aws-cli

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

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

aws s3 sync build/ s3://mybucketnamehere --delete

我可以在存储桶中看到所有已上传的新文件,但是所有这些文件都被拒绝访问,因此进入网站时出现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/*"
            ]
        }
    ]
}

我在做什么错了?

谢谢

1 个答案:

答案 0 :(得分:2)

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

如果由于某种原因您无法使用Cloudfront,则可以将--acl public-read添加到命令中:

aws s3 sync build/ s3://mybucketnamehere --delete --acl public-read