Я пытаюсь настроить простой веб-сайт на базе Amazon AWS S3, как описано Вот.
Я установил ведро S3 (simples3websitetest.com), дал ему (надеюсь) правильные разрешения:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::simples3websitetest.com/*"
]
}
]
}
Я загрузил index.html, настроил доступ к сайту, и он доступен через http://simples3websitetest.com.s3-website-us-west-2.amazonaws.com/index.html
Пока все хорошо, теперь я хочу настроить доступ к Amazon Route53, и здесь я застрял.
Я установил размещаемую зону на своем домене (resourcesbox.net), нажал «создать набор записей» и перешел на шаг «настроить псевдоним», но когда я получаю «Нет доступных целей» в конечных точках веб-сайта S3 попробуйте установить цель псевдонима.
Что я пропустил??
Создаваемый вами псевдоним A-записи должен совпадать с именем сегмента, поскольку виртуальный хостинг сегментов в S3 требует, чтобы Host:
заголовок, отправленный браузером, соответствует имени сегмента. На самом деле нет другого практического способа, которым мог бы быть выполнен виртуальный хостинг сегментов ... сегмент должен быть идентифицирован каким-то механизмом, и этот механизм - заголовки http.
Чтобы создать псевдоним для корзины в домене example.com, имя корзины также должно быть именем хоста, которое вы можете официально объявить в этом домене ... Route 53 A-Record "testbucket.example .com, например, может только быть псевдонимом корзины с именем "testbucket.example.com" ... и никаким другим ведром.
В своем вопросе вы нарушаете это ограничение ... но вы можете создать псевдоним только для корзины с именем "simples3websitetest.com" внутри (и в верхней части) домена "simples3websitetest.com".
Это сделано специально, а не ограничением Route 53 или S3. Они только мешают вам делать то, что не может работать. Веб-серверы не знают ни о каких псевдонимах, CNAME или о чем-либо еще, сделанном в DNS - они получают только исходное имя хоста, к которому, по мнению браузера, он пытается подключиться, в заголовках http, отправленных браузером ... и S3 использует это информация для определения имени сегмента, к которому применяется виртуальный размещенный запрос.
Amazon S3 требует, чтобы вы дали корзине то же имя, что и домен. Это сделано для того, чтобы Amazon S3 мог правильно разрешать заголовки хостов, отправляемые веб-браузерами, когда пользователь запрашивает контент с вашего веб-сайта. Поэтому мы рекомендуем вам создать свои корзины для своего веб-сайта в Amazon S3, прежде чем платить за регистрацию своего доменного имени.
Однако обратите внимание, что это ограничение применяется только в том случае, если вы не используете CloudFront перед своим ведром.
CloudFront обеспечивает большую гибкость, поскольку Host:
заголовок может быть переписан (самим CloudFront) до того, как запрос будет передан на S3. Вы настраиваете "исходный хост" в вашем распределении CloudFront как your-bucket.s3-website-xx-yyyy-n.amazonaws.com
где xx-yyyy-n - это область AWS на S3, в которой была создана ваша корзина. Эта конечная точка отображается в консоли S3 для каждого сегмента.
Предположим, у вас есть размещенная зона abc.com. и вы создаете сегмент abc.com (который не отображается в списке псевдонимов маршрутов) - вы можете подумать, что это. после имени, которым нельзя назвать ведра
Попробуйте и это. Потому что в первый раз я создал ведро с правильным именем и все равно не сработало. Поверьте, у меня ОКР, поэтому я не пропустил точку или запятую.
Это сработало для меня, попробовав почти все - некоторые предложения, которые я вижу, - это выйти и войти в систему для какой-то очистки кеша - не уверен