Статический веб-хостинг на AWS S3 дает мне «403 разрешение запрещено» - PullRequest
1 голос
/ 21 мая 2019

Буду признателен, если кто-нибудь может указать мне, где я делаю неправильно.см. ниже шаги

  1. У меня есть доменное имя в route53.

  2. На основе доменного имени я создал имя сегмента (радимой вопрос позволяет придерживаться корзины и доменного имени как abc.nl)

  3. Создание корзины без изменения какого-либо предоставленного по умолчанию контрольного списка.
  4. Кликнул на корзину (abc.nl) и добавил под "политикой корзины"
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::1234567:user/usrname"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::abc.nl/*"
        }
    ]
}
Я предоставил свою username политику AmazonS3FullAccess в IAM. Мой блокировать публичный доступ (настройки учетной записи) также без изменений.Block public access (account settings) Теперь я загрузил все свои статические файлы в корзину (abc.nl). На вкладке свойств я добавил index.html в блок static website hosting.

Теперь, согласно инструкции, я должен иметь возможность щелкнуть ссылку и получить доступ к странице.Но по какой-то причине это выдает ошибку 403. Запрещен доступ.

В моем понимании, просто добавив bucket policy, вы включаете публичный доступ.Но я не вижу тега public.Итак, не знаю, что происходит.(Мое понимание может быть неправильным, поэтому этот пост.)

Если вам интересно, какое руководство я соблюдаю, https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.htmlкак разместить статический веб-сайт .

В любом случае, кто-нибудь мне укажет, где я делаю неправильно и какие варианты я должен выбрать из разрешений для корзины? Я мог бы пропустить некоторые строки.

PS: я создавал и удалял одно и то же ведро несколько раз, просто чтобы каждый раз начинать заново.

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Значение Principal в вашей политике сегментов неверно.Скопировано из Пример: настройка статического веб-сайта с использованием настраиваемого домена , с которым вы связались:

Чтобы предоставить открытый доступ для чтения, присоедините следующую политику сегментов к example.com bucket, заменяя имя вашего сегмента на example.com .

{
  "Version":"2012-10-17",
  "Statement":[{
    "Sid":"PublicReadGetObject",
    "Effect":"Allow",
    "Principal": "*",
    "Action":["s3:GetObject"],
    "Resource":["arn:aws:s3:::example.com/*"]
  }]
}
0 голосов
/ 21 мая 2019

Чтобы сделать корзину общедоступной (= всех), вам нужно установить * в качестве принципала в своей политике корзины:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::abc.nl/*"
        }
    ]
}

Также убедитесь, что у вас нет Блокировать публичныедоступ к настройкам в корзине, потому что это не позволит вам опубликовать корзину публично.

...