Я размещаю статический веб-сайт с использованием Amazon Route53 для DNS и S3 для файлов html. Работает нормально.
Текущая настройка:
example.com. A ALIAS s3-website-us-east-1.amazonaws.com.
www.example.com. CNAME www.example.com.s3-website-us-east-1.amazonaws.com
(ПРИМЕЧАНИЕ: example.com и www.example.com являются корзинами S3. Мои файлы HTML находятся в корзине example.com.)
Теперь я хочу добавить подобный поддомен с подстановочными знаками - вот что я пробовал:
*.example.com. CNAME www.example.com.s3-website-us-east-1.amazonaws.com
Идея состоит в том, чтобы иметь something.example.com для правильного разрешения на веб-сайт. Но, похоже, это не работает. Поэтому, когда я перехожу на сайт joker.example.com, я вижу сообщение об ошибке в браузере:
Code: NoSuchBucket
Message: The specified bucket does not exist
BucketName: joker.example.com
Ответ @ edvinas.me правильный. Вы должны создать облачный дистрибутив для своей корзины.
При создании облачного распространения установите для параметра альтернативных доменных имен значение * .example.com.
Затем используйте URL-адрес облачного интерфейса, например d3lt3rsz2leycm.cloudfront.net.
Теперь вы можете добавить поддомен с подстановочными знаками следующим образом:
*.example.com. CNAME 3lt3rsz2leycm.cloudfront.net.
И должно работать.
Ваш S3 Bucket настроен на прием запросов только для example.com (и / или www.example.com). Вы не можете настроить свой сегмент для приема или каких-либо конкретных субдоменов, которые вы хотите быть активными.
Единственный способ сделать это - использовать внешний сервис, например Cloudfront. http://aws.amazon.com/cloudfront/ который будет проксировать запросы.
Ответ Майкла (sqlbot), кажется, освещает это более подробно.
Amazon S3 использует имя хоста для определения имени сегмента.
- http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html
Имя хоста - это строчная буква значения, отправляемого браузером в Host:
заголовок. Невозможно настроить ведро для ответа на несколько имен хостов.
Есть несколько обходных способов добиться этого, в зависимости от того, что вы пытаетесь сделать, но для этого потребуется экземпляр EC2, на котором запущены HAProxy, Varnish, Apache или что-то подобное, чтобы отвечать на запросы имен хостов с подстановочными знаками с перенаправлением на переписать адресную строку браузера на реальное имя хоста / имя сегмента или изменить заголовки запроса и передать запрос на S3, что не так неэффективно, как может показаться, поскольку нет платы за передачу данных между S3 и EC2 в одном и том же регион, и задержка низкая.