CNAMEAlreadyExists: указание субдомена для распространения в новом аккаунте - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь указать поддомен для нового дистрибутива.У меня есть два аккаунта: legacy , new .

Устаревшая учетная запись имеет следующие ресурсы:

  • Хост-зона Route53 foo.com, с:
    • CNAME a.foo.com -> xyz.cloudfront.net
  • Распределение Cloudfront с доменным именем xyz.cloudfront.net:
    • Альтернативное имя домена (CNAME) a.foo.com
    • Сертификат для a.foo.com

У учетной записи новая есть следующие ресурсы:

  • Распространение CloudFront с доменным именем qrs.cloudfront.net

Я бы хотел, чтобы окончательная настройка была a.foo.com CNAME до qrs.cloudfront.net.(Я не понимаю, почему дистрибутив CloudFront должен знать, что к нему относится CNAME, что, возможно, является причиной того, что я не понимаю ошибку, приведенную ниже.)

Итак, я следую эти официальные документы .Я пытаюсь выполнить шаг 3, установив *.foo.com в качестве альтернативного имени домена в новом дистрибутиве CloudFront.

Но я получаю следующую ошибку:

com.amazonaws.services.cloudfront.model.CNAMEAlreadyExistsException: одно или несколько предоставленных вами CNAME уже связаны с другим ресурсом.(Сервис: AmazonCloudFront; Код состояния: 409; Код ошибки: CNAMEAlreadyExists;)

1 Ответ

0 голосов
/ 13 октября 2018

Следующие инструкции предназначены для переноса субдомена в другой дистрибутив внутри той же учетной записи.

Невозможно добавить альтернативное имя домена в дистрибутив CloudFront, еслиальтернативное доменное имя уже существует в другом дистрибутиве CloudFront, даже если вашей учетной записи AWS принадлежит другой дистрибутив.

Однако вы можете добавить альтернативное доменное имя с подстановочными знаками, например * .example.com, которое включает (перекрывающееся)с) альтернативное доменное имя без подстановочных знаков, такое как www.example.com. Перекрывающиеся доменные имена могут находиться в одном и том же дистрибутиве или в отдельных дистрибутивах, если оба дистрибутива были созданы с использованием одной учетной записи AWS. (выделение добавлено)

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html#alternate-domain-names-wildcard

Невозможно иметь неопределенность с подстановочными знаками для нескольких учетных записей, и то, что вы пытаетесь сделать, настроит именно такое условие.Он не поддерживается, потому что это уязвимость безопасности.

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

HTTP и DNS взаимодействуют таким образом, что сервер назначения не знает о пути разрешения DNS, который привел браузер к адресу сервера, к которому он относится.связано.Сервер может идентифицировать только тот сайт, который запрашивает браузер, по заголовку HTTP Host и значению поля SNI, когда используется HTTPS - промежуточное имя хоста dzczcexample.cloudfront.net теряется в процессе.Параметр конфигурации альтернативного доменного имени (к сожалению и неточно называемый также CNAME по старым причинам) - это то, что CloudFront - крупная глобально распределенная система - использует для определения того, какой конкретный дистрибутив должен обрабатывать запрос, поэтому альтернативное доменное имя можетустановить только foo.example.com для одного дистрибутива во всем CloudFront.

Как отмечалось выше, *.example.com можно установить только для дистрибутива CloudFront в пределах той же учетной записи, что и foo.example.com, поскольку разрешение в противном случае создает уязвимость для захвата домена.

Временное решениенемного деликатно, но это можно сделать.

  • Настройте новый дистрибутив CloudFront, не задавая альтернативное имя домена, и дождитесь его перехода в состояние Deployed.
  • Измените DNS, чтобы указать назначенное имя хоста для нового дистрибутива.Это не будет делать то, что вы могли бы предположить: трафик будет фактически обрабатываться старым дистрибутивом из-за вышеупомянутого Host сопоставления заголовка / SNI ... но этот параметр необходимо изменить, прежде чем продолжить.* Удалите имя хоста из настроек альтернативного имени домена старого дистрибутива и сохраните изменения.
  • Добавьте имя хоста в настройки альтернативного имени домена нового дистрибутива и сохраните изменения.Вы должны получить ошибки в течение короткого периода времени, после чего изменение будет принято, и трафик будет обслуживаться новым дистрибутивом.

Вы захотите настроить два тестовых дистрибутива и фиктивный поддомен.(вероятно, в другой области) и проработайте эти шаги, чтобы ознакомиться с процессом.Получившийся сбой, когда я проходил этот процесс ранее, является кратким, поскольку вы не создаете новый дистрибутив (который занимает некоторое время), а просто меняете атрибуты одного стабильного дистрибутива, а затем другого.

...