Ответ
В AWS, как и в стандартном DNS, CNAME-запись (Canonical Name) указывает на другое доменное имя, а не напрямую на IP-адрес. Она создаёт псевдоним (алиас) одного доменного имени для другого.
Типичные сценарии использования в AWS:
- Перенаправление поддомена на основной домен:
www.example.com→example.com
- Направление трафика на AWS-сервисы:
- Поддомен
assets.example.comможет указывать на CloudFront-дистрибутив (d111111abcdef8.cloudfront.net). - Поддомен
api.example.comможет указывать на DNS-имя Application Load Balancer (ALB).
- Поддомен
Пример CNAME-записи в Route 53 (консольный формат):
Имя: www.example.com
Тип: CNAME
Значение: example.com
TTL: 300
Критически важные ограничения и нюансы в AWS:
- CNAME для корневой зоны (apex domain): Вы не можете создать стандартную CNAME-запись для корневого домена (
example.com). Это ограничение DNS-стандарта. - Alias-записи Route 53: Для решения проблемы с корневым доменом AWS Route 53 предоставляет специальный тип — Alias-запись (A или AAAA запись с включённой опцией Alias). Alias-запись может указывать напрямую на AWS-ресурсы (S3 bucket, CloudFront, ALB, API Gateway) и является бесплатной для запросов в пределах зоны. Это предпочтительный способ для связывания доменов с AWS-сервисами.
- Пример Alias-записи для корневого домена:
Имя: example.com Тип: A (Alias включён) Значение: d1234abcd.cloudfront.net (CloudFront дистрибутив)
- Пример Alias-записи для корневого домена:
Вывод для DevOps: При проектировании DNS-структуры в AWS для корневых доменов и критичных поддоменов используйте Alias-записи Route 53 для лучшей производительности, надёжности и интеграции с AWS-сервисами. CNAME подходит для внутренних или менее критичных поддоменов.
Ответ 18+ 🔞
А, ну это про CNAME в AWS! Ёпта, тема простая, но нюансов — овердохуища. Сейчас разжуём.
Представь, что CNAME — это такая табличка "Иди нахуй туда". Ты пишешь одно доменное имя, а по факту все запросы летят к другому. Не к IP-адресу, а именно к другому имени. Классический пример: www.example.com — это просто пизда рулю, а на самом деле все идут на example.com.
Где это обычно вставляют:
- Поддомены всякие. Хочешь, чтобы
blog.example.comвёл на твой хостинг для блогов? CNAME его, и дело в шляпе. - На AWS-сервисы. Вот это самое мясо! Хочешь
assets.example.comотдать на раздачу через CloudFront? CNAME на его адресd111111abcdef8.cloudfront.net— и волнение ебать, всё работает. То же самое с балансировщиками (ALB) дляapi.example.com.
Выглядит в Route 53 это примерно так, чувак:
Имя: www.example.com
Тип: CNAME
Значение: example.com
TTL: 300
Всё, элементарно. Но сейчас будет главный подвох, из-за которого народ ебет котелок.
Внимание, хуй с горы!
-
CNAME для корня зоны НЕЛЬЗЯ. Ты не можешь воткнуть обычную CNAME-запись для голого
example.com. Это запрещено самим DNS-стандартом, ядрёна вошь. Если попробуешь — получишь ошибку и будешь охуевать. -
Спасает Alias-запись Route 53. AWS, видя наш ступор, придумал свою фишку. Это не CNAME, а специальная Alias-запись (типа A или AAAA, но с волшебной галочкой). Она может указывать прямо на AWS-ресурс (S3, CloudFront, ALB) и работает даже для корня домена
example.com. И да, запросы по ней — бесплатные, что тоже приятно.- Вот как это выглядит для корня:
Имя: example.com Тип: A (Alias включён) Значение: d1234abcd.cloudfront.net (CloudFront дистрибутив)
- Вот как это выглядит для корня:
Итог для деплоя, чувак: Не выёбывайся. Для главного домена (example.com) и всех ответственных поддоменов — сразу лепи Alias Route 53. Надёжнее, быстрее и с AWS дружит лучше. А обычный CNAME оставь для внутренней движухи, типа test-dev-backup.example.com, про которую все забудут через неделю.