Пользовательский домен шлюза AWS API: указанный вами домен уже связан с существующим дистрибутивом CloudFront
Я просто пытаюсь настроить собственный домен в API Gateway. У меня есть сертификат ACM "*.mysite.com.au", который в настоящее время используется для обслуживания статического веб-сайта S3 через CloudFront по адресу "beta.mysite.com.au". Я хочу создать собственный домен для "api.mysite.com.au" с этим сертификатом.
Тем не менее я получаю следующую ошибку в консоли AWS API Gateway:
Указанное вами доменное имя уже связано с существующим дистрибутивом CloudFront. Удалите доменное имя из существующего дистрибутива CloudFront или используйте другое доменное имя. Если вы являетесь владельцем этого доменного имени и не используете его в существующем дистрибутиве CloudFront, обратитесь в службу поддержки.
В настоящее время я не использую api.mysite.com.au в дистрибутиве CloudFront. Итак, я потерялся. Кто-нибудь сталкивался с этой проблемой раньше? И если так, как я могу решить это?
Заранее спасибо,
Strainy
2 ответа
Есть три, может быть четыре варианта:
вы фактически настроили этот домен как альтернативное имя домена в CloudFront - в этой учетной записи AWS или в другой учетной записи, и вы забыли об этом, или
кто-то случайно или намеренно настроил этот домен в дистрибутиве CloudFront, или
Вы уже настроили это в API Gateway, но в другом регионе AWS, или
это ошибка в интеграции между API Gateway и CloudFront.
Для устранения неполадок:
Перейдите в CloudFront и создайте новый дистрибутив.
Попробуйте установить это имя хоста в качестве альтернативного имени домена.
Если это работает, то это похоже на ошибку в интеграции API Gateway/CloudFront. Удалите имя хоста из альтернативных доменных имен для этого нового дистрибутива, подождите несколько минут, чтобы дистрибутив вернулся к Deployed
статус, затем повторите попытку в API Gateway. (Позже удалите дистрибутив - он не нужен).
Но я собираюсь предположить, что выше не будет работать. Вы должны получить ошибку от CloudFront, CNAMEAlreadyExists
, (Это на самом деле не CNAME, но, к сожалению, так его называли.)
Итак, следуйте официальному процессу, чтобы подтвердить право собственности на ваше доменное имя и контроль над ним и связать его с новым дистрибутивом CloudFront.
Этот процесс должен освободить это имя хоста из любого дистрибутива CloudFront.
После этого удалите это имя хоста из настройки альтернативных доменных имен нового дистрибутива, сохраните изменения, дождитесь его возврата к Deployed
и вернитесь в API Gateway и попробуйте снова. (Позже удалите неиспользованный дистрибутив.)
Проблема здесь в том, что, как и в пространстве имен S3 Bucket, интерфейсная часть CloudFront Host:
пространство имен заголовка является глобальным. Имя хоста не может быть связано с более чем одним дистрибутивом CloudFront, включая дистрибутивы "стелс", которые использует API Gateway. Ошибка подразумевает, что тот, который вы пытаетесь использовать, по какой-то причине уже есть.
Это не должно быть связано с подстановочным знаком, который вы можете использовать в ACM.
Я нашел реальную причину крайнего случая, которая привела меня к этой проблеме и связанному с ней решению.
- Иметь существующую учетную запись AWS (например, ABC-123) с ресурсами, связанными с личным доменом. В моем случае в API Gateway.
- Отмените/приостановите действие учетной записи AWS, наивно ожидая, что она удалит все ресурсы, тогда как большая часть, если не все, ресурсов останется нетронутой.
- Откройте другую учетную запись AWS (DEF-456) и попробуйте указать личный домен, который использовался (ABC-123).
Решением описанного выше сценария является связаться с AWS и попросить их восстановить учетную запись ABC-123. Войдите в систему, удалите записи личного домена, и это освободит этот личный домен.