цыплята и яйца в развертывании AWS S3 CloudFront с использованием Route 53 и ACM - PullRequest
3 голосов
/ 04 октября 2019

Я автоматизирую развертывание статического сайта в AWS, включая следующие:

  1. Загрузка статического содержимого в корзину S3.
  2. Создание размещенной зоны в Route 53.
  3. Создание сертификата SSL / TLS в ACM.
  4. Размещение записей проверки сертификата в маршруте 53.
  5. Создание распространения CloudFront с использованием сертификата ACM.
  6. Добавление записей Route 53 для указания на дистрибутив CloudFront.

Кажется, что все автоматизировано, но есть небольшая загвоздка: на шаге 5, при создании дистрибутива CloudFront, сертификат только что был создани еще не был проверен, поэтому создание дистрибутива CloudFront не выполняется. Более того, даже ожидание проверки не поможет, потому что для проверки DNS домена необходимо обновить, чтобы он указывал на серверы имен для размещенной зоны, которые не известны до шага № 2, когда создается размещенная зона.

Поскольку я использую сторонний регистратор доменов, я заранее не знаю, какие извращения имени указывать для домена до завершения шага # 2. Но затем шаг № 5 не может быть выполнен до тех пор, пока сертификат не будет проверен, что требует обновления серверов имен с помощью моего регистратора домена. Так что у меня проблема с куриным яйцом.

Есть ли способ сообщить CloudFound о создании дистрибутива, даже если домен является «недействительным» (еще не проверен), чтобы после того, как все было закончено, я могпойти обновить мой регистратор домена с серверами имен для созданной размещенной зоны? Или я должен остановить этот автоматизированный процесс в середине после создания размещенной зоны, а затем вернуться и завершить его позже после обновления серверов имен?

Есть ли другие идеи для решения этой проблемы? (Да, я знаю, что могу также использовать Route 53 для регистрации домена, а затем, возможно, автоматически обновлять серверы имен, но я хочу, чтобы мой автоматизированный инструмент работал со сторонними регистраторами.)

Ответы [ 2 ]

2 голосов
/ 10 октября 2019

Я не верю, что вы сможете настроить Cloudfront, пока домен не будет зарегистрирован, и AWS сможет подтвердить, что вы контролируете DNS.

Существует несколько проблем безопасности, над которыми работает AWS - см. https://aws.amazon.com/blogs/security/enhanced-domain-protections-for-amazon-cloudfront-requests/ - и, похоже, вам будет запрещено делать то, что вы пытаетесь сделать.

1 голос
/ 15 октября 2019

Я рекомендую ваши шаги должны быть:

  1. Создать S3 Bucket

  2. Загрузить статический контент в корзину.

  3. Создайте "заполнитель" CloudFront Distribution с использованием сегмента из шага 1 (сертификат не нужен; это ваше яйцо)

  4. Создайте свою размещенную зону на маршруте 53. (старый шаг 2)

  5. Создание сертификата SSL / TLS в ACM. (старый шаг 3)

  6. Поместите записи проверки сертификата в маршрут 53 (старый шаг 4)

  7. Обновите дистрибутив CloudFront, созданный на шаге 3когда ваш сертификат сделан. Ваша курица!

  8. и т. д. Остальные шаги автоматизации для завершения

Минимальные требования для создания веб-дистрибутива CloudFront невелики. Одно ведро подойдет. Зайдите в консоль и попробуйте сами, все просто. После создания дистрибутива он может бездействовать до тех пор, пока остальные шаги не будут выполнены AWS и сторонним регистратором. Затем вы обновляете дистрибутив своим полностью испеченным сертификатом. Поскольку это возможно через консоль, а все действия консоли поддерживаются вызовами API, это означает, что вы можете автоматизировать это.

Взгляните на требования к созданию API CloudFront * по сравнению с обновлением CloudFront APIтребования . Вы можете создать дистрибутив без действительного сертификата. Однако для обновлений для этого распределения заполнителей вам понадобятся все обязательные поля, включая ViewerCertificate .

При создании автоматизированного инструмента следует помнить, что есливы застряли с API, попробуйте выполнить действие в консоли, чтобы определить / проанализировать значения, необходимые для передачи в вызовы API.

...