Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Что указывается в записи CNAME в AWS?
В AWS, как и в целом в системе DNS, CNAME-запись (Canonical Name Record) служит для создания псевдонима (алиаса) одного доменного имени для другого. Она указывает на другое, уже существующее доменное имя (FQDN — Fully Qualified Domain Name), а не на IP-адрес. Это фундаментальное отличие от A-записи (которая указывает на IPv4-адрес) или AAAA-записи (указывает на IPv6-адрес).
Ключевые принципы и синтаксис
В AWS-сервисах, таких как Amazon Route 53 (облачный DNS-сервис), CNAME-запись создаётся для сопоставления имени источника (алиаса) с именем цели (каноническим именем). Синтаксис в консоли управления или в файле зоны выглядит так:
www.example.com. IN CNAME elb-123456.us-east-1.elb.amazonaws.com.
- Имя/Источник (Name):
www.example.com.— это алиас, который вы хотите настроить. - Тип (Type):
CNAME. - Значение/Назначение (Value/Target):
elb-123456.us-east-1.elb.amazonaws.com.— каноническое (настоящее) имя, на которое будет ссылаться алиас.
Важное правило DNS: CNAME-запись не может сосуществовать на одном и том же поддомене с другими записями ресурсов (например, A, MX, TXT). Это означает, что вы не можете создать CNAME для example.com (апекс/корневой домен) и одновременно иметь там, к примеру, запись MX для почты — это нарушит стандарты DNS. Для решения этой проблемы на уровне корневого домена AWS предлагает использовать A-записи типа Alias.
Типичные цели (Target) для CNAME в AWS
В контексте экосистемы AWS CNAME-записи чаще всего указывают на конечные точки (Endpoint) других облачных сервисов AWS. Вот основные примеры:
- Сервисы распределения и балансировки нагрузки:
* **Elastic Load Balancing (ELB):** DNS-имя Network Load Balancer (NLB) или Application Load Balancer (ALB). Часто имеет вид: `name-123456.region.elb.amazonaws.com`.
* **Amazon CloudFront:** Домен дистрибутива CDN. Например: `d111111abcdef8.cloudfront.net`.
* **AWS Global Accelerator:** DNS-имя акселератора, например: `abcdef12345.awsglobalaccelerator.com`.
- Сервисы хостинга и вычислений:
* **Amazon API Gateway:** Домен пользовательского API, например: `api-id.execute-api.region.amazonaws.com`.
* **AWS Elastic Beanstalk:** URL-адрес среды Elastic Beanstalk, например: `myapp.region.elasticbeanstalk.com`.
* **Amazon S3 (для хостинга статических сайтов):** Конечная точка веб-сайта S3, например: `bucket-name.s3-website-region.amazonaws.com`. *Обратите внимание, что это отличается от обычной конечной точки S3 REST API.*
- Внешние ресурсы: CNAME также можно использовать для указания на ресурсы за пределами AWS, например, на серверы старого хостинга (
old-hosting.com), CDN другого провайдера или SaaS-платформы (например, Zendesk, Shopify).
Основное отличие: CNAME vs. Alias-запись в Route 53
Это ключевой момент для работы в AWS. Alias-запись — это специальный тип записи, предлагаемый Route 53, который также создаёт алиас, но с критически важными преимуществами:
| Характеристика | CNAME-запись | Alias-запись (Route 53) |
|---|---|---|
| Поддержка корневого домена | Нет. Нельзя создать для example.com. | Да. Можно создать для example.com (апекса зоны). |
| Сосуществование с другими записями | Невозможно. | Возможно на уровне корневого домена. |
| Цель (Target) | Только другое доменное имя (FQDN). | AWS-ресурс (ELB, S3, CloudFront, API Gateway) или другое доменное имя в этой же зоне. |
| Разрешение DNS и стоимость | Стандартное разрешение, может взиматься плата за запрос. | Интеллектуальное. Route 53 напрямую возвращает IP-адреса цели. Бесплатно для запросов к ресурсам AWS. |
| Пример цели | www.other-site.com. | s3-website-us-east-1.amazonaws.com (как ресурс AWS) или internal-elb.region.elb.amazonaws.com (как ресурс AWS). |
Практический пример настройки
Задача: Направить трафик с app.company.com на Application Load Balancer.
Правильный способ (используя Alias-запись в Route 53):
- В консоли Route 53 создайте или откройте хостованную зону для
company.com. - Создайте новую запись.
- В поле Имя записи введите
app. - Выберите тип записи A — IPv4-адрес.
- Включите переключатель Alias.
- В выпадающем списке выберите соответствующую конечную точки ALB в вашем регионе.
- Сохраните запись.
Ваш блок кода в консоли не потребуется, но так выглядела бы логика в Infrastructure-as-Code (Terraform):
resource "aws_route53_record" "app_alias" {
zone_id = aws_route53_zone.main.zone_id
name = "app.company.com"
type = "A"
alias {
name = aws_lb.app_lb.dns_name
zone_id = aws_lb.app_lb.zone_id
evaluate_target_health = true
}
}
Использование классического CNAME было бы уместно, если бы вам нужно было направить staging.app.company.com на внешний ресурс, например, на сервис вне AWS. В этом случае в качестве значения записи вы указали бы полное доменное имя этого внешнего сервиса.
Итог: В AWS в CNAME указывается доменное имя (FQDN) ресурса-цели. Однако для большинства сценариев интеграции с родными сервисами AWS (особенно для корневого домена и ресурсов типа ELB, S3, CloudFront) настоятельно рекомендуется использовать Alias-записи Route 53 как более функциональную, производительную и экономичную альтернативу.