2017-01-15 4 views
1

У меня есть файл в моем ковше AWS: https://s3.amazonaws.com/static.my-company.com/media/my-file.jpg.Как я могу присвоить субдомен моему ковру AWS S3?

В настоящее время я обращаюсь к этому файлу в своем index.html файле www.my-company.com. У меня есть my-company.com в качестве зоны размещения в маршруте AWS 53.

Но в этом index.html я не хочу, чтобы было очевидно, что этот актив находится в ковше AWS. Я хочу, чтобы он отображался так, как будто он размещен на серверах моего собственного домена. Поэтому вместо https://s3.amazonaws.com/static.my-company.com/media/my-file.jpg, я хочу, чтобы он был адресован как https://static.my-company.com/media/my-file.jpg. Как я могу это сделать?

Я попытался вставить запись CNAME в Route 53, которая будет указывать static.my-company.com на s3.amazonaws.com/static.my-company.com. Но это не сработало. Это то, что Джей Годзе рекомендовал here

ответ

2

Вам необходимо установить S3 ведро как статический сайт (это вариант в S3, чтобы установить ведро как таковой). Затем доменное имя изменится на http://static.my-company.com.s3-website-us-east-1.amazonaws.com., что и будет необходимо для установки записи CNAME в Route 53.

Обратите внимание, что вы не можете установить запись CNAME в каталог, который вы сейчас делаете, быть разрешимой областью.

+1

Правильно, за исключением того, что это не поддерживает HTTPS, а 'us-east-1' будет отличаться в зависимости от региона, в котором было создано ведро. Правильная конечная точка для ведра найдена [в консоли] (http://docs.aws.amazon.com/AmazonS3/latest/dev/HowDoIWebsiteConfiguration.html). –

1

Таким образом, вместо https://s3.amazonaws.com/static.my-company.com/media/my-file.jpg, я хочу, чтобы он рассматривался как https://static.my-company.com/media/my-file.jpg. Как я могу это сделать?

Здесь есть три отдельных вопроса.

Если вы включили функцию хостинга веб-сайта для своего ведра, то как @Deif иллюстрирует в другом ответе здесь, вы можете указать имя хоста в Route 53 на конечную точку веб-сайта ведра с использованием псевдонима или CNAME, и это работает. Но он не поддерживает HTTPS.

HTTPS требует, чтобы веб-сервер идентифицировал себя с браузером с сертификатом SSL (TLS), который включает имя хоста, соответствующее имени в поле адреса браузера. Сертификаты S3 в конечной точке REST соответствуют различным перестановкам s3.amazonaws.com - они не соответствуют вашему домену.

Для этого вам нужен сертификат SSL. Если у вас его уже есть, загрузите его в диспетчер сертификатов Amazon (ACM) в регионе us-east-1. ¹ Если нет, ACM может создать его для вас бесплатно.

Затем создайте новый дистрибутив CloudFront, используя свой поддомен в качестве альтернативного доменного имени, используя вышеуказанный сертификат ACM и используя имя хоста конечной точки веб-сайта в качестве исходного сервера.

Затем укажите ваш поддомен в маршруте 53 на распределение CloudFront.

Теперь https://subdomain.example.com/pics/funny/cat.jpg переходит на CloudFront, который обеспечивает SSL и выбирает содержимое из соответствующего ведра.

Почему необходим CloudFront? Это официальное решение для использования пользовательского имени домена с поддержкой SSL с S3. S3 не поддерживает возможности изначально. Использование CloudFront имеет сопутствующие затраты, но это значительно снижает стоимость самого S3. Когда загрузка происходит через CloudFront, S3 заряжает $ 0 для полосы пропускания, используемой для загрузки, а CloudFront вместо этого использует полосу пропускания.Цена CloudFront для полосы пропускания во многих случаях ниже (предположительно потому, что CloudFront может масштабироваться горизонтально, чтобы облегчить перегрузку, а S3 может масштабироваться только вертикально - это ограничение местоположения по дизайну).


¹ В АКМ, то us-east-1 область всегда используется для настройки я описываю здесь, независимо от места нахождения ведра, потому что CloudFront управляется из нас-восток-1 и нам нужен этот сертификат, чтобы быть доступным для CloudFront ,