Добавление доменов в дистрибутив AWS Cloudfront Через API

#amazon-web-services #ssl-certificate #amazon-cloudfront

Вопрос:

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

Я запускаю это приложение на AWS с помощью CloudFront и диспетчера сертификатов AWS для управления SSL. Я могу добавить «Альтернативные доменные имена» в дистрибутив CloudFront вручную, но я бы хотел сделать это через API, если это возможно, чтобы не было обновлений «вручную». Возможно ли это?

Кроме того, и, возможно, что более важно, мне нужно найти масштабируемый способ копирования моих SSL-сертификатов, чтобы все существующие домены оставались сертифицированными, но я могу просто «Добавить» еще один… в идеале через API, но я понимаю, что это МОЖЕТ быть ручная работа.

Суть в том, что мне нужно иметь возможность программно добавлять домены в свой дистрибутив cloudfront. Если мне придется все делать вручную, я боюсь, что это возможность для ошибки.

Ответ №1:

Вы можете сделать это через интерфейс командной строки aws, используя эту команду: https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudfront/update-distribution.html.

Что-то вроде этого:

 aws cloudfront update-distribution 
  --id EMLARXS9EXAMPLE 
  --distribution-config file://dist-config-disable.json
 

Где содержимое dist-config-disable.json включает новые псевдонимы (доменные имена), например (сокращенно этот файл для краткости):

 {
  ...
  "Aliases": {
    "Quantity": 2,
    "Items": ["example.com", "example2.com"]
  },
  ...
}
 

Комментарии:

1. Это так хорошо! Спасибо. Итак, будет ли «dist-config-disable.json» ПОЛНОЙ конфигурацией всего дистрибутива или я динамически создаю файл на лету только с альтернативными доменами, а затем ссылаюсь на него в вызове API? Может быть, что-то вроде экспорта — > изменения — > > импорта: >> docs.aws.amazon.com/cli/latest/reference/acm/… Я что, сошел с ума?

2. Честно говоря, я бы использовал инфраструктуру в качестве инструментов кода (возможно, терраформирования) для решения этой проблемы, а не писал индивидуальное приложение/скрипт

3. Кроме того, если мой ответ был полезен, не могли бы вы, пожалуйста, принять его и проголосовать за него? Спасибо! @MarkSinapi

4. Эй, спасибо! Я пока не могу, потому что моя репутация недостаточно высока. Извините.