← Назад к вопросам

Что указывается в CNAME в AWS

2.0 Middle🔥 142 комментариев
#Облачные технологии

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что указывается в записи 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. Вот основные примеры:

  1. Сервисы распределения и балансировки нагрузки:
    *   **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`.

  1. Сервисы хостинга и вычислений:
    *   **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.*

  1. Внешние ресурсы: 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):

  1. В консоли Route 53 создайте или откройте хостованную зону для company.com.
  2. Создайте новую запись.
  3. В поле Имя записи введите app.
  4. Выберите тип записи A — IPv4-адрес.
  5. Включите переключатель Alias.
  6. В выпадающем списке выберите соответствующую конечную точки ALB в вашем регионе.
  7. Сохраните запись.

Ваш блок кода в консоли не потребуется, но так выглядела бы логика в 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 как более функциональную, производительную и экономичную альтернативу.

Что указывается в CNAME в AWS | PrepBro