Файлы в контейнере aws s3 не являются общедоступными после синхронизации с помощью aws cli - PullRequest
0 голосов
/ 13 января 2019

Как дела. Я синхронизирую директорию сборки веб-приложения response.js с корзиной aws s3. Когда я загружаю файлы из директории сборки в s3 вручную, вводя консоль amazon (https://s3.console.aws.amazon.com/),, все загруженные файлы общедоступны, поэтому при посещении конечной точки он хорошо показывает веб-сайт (я использую 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 голосов
/ 13 января 2019

Правильный ответ: не используйте S3 для обслуживания ваших статических файлов. Вам следует настроить дистрибутив Cloudfront для обслуживания этих файлов, поскольку он дает вам многочисленные преимущества.

Если по какой-то причине вы не можете использовать Cloudfront, вы можете добавить --acl public-read к вашей команде:

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