Руководство по развертыванию Amazon CloudFront (3) — непрерывное развертывание

dc603277919b5eb46c866f784a5f5c56.gif

краткое введение

В этой записи блога вы узнаете, как использовать непрерывное развертывание CloudFront (непрерывное развертывание) для сине-зеленого развертывания/проверки изменений, а затем в соответствии с требованиями высокой доступности бизнеса.

Диаграмма непрерывного развертывания (Continuous deployment):

00b75df562a4bb1b146361fe342f16c7.jpeg

Мы разделим его на несколько частей, чтобы объяснить функции ниже:

  1. Анализ концепции

  2. Подготовка окружающей среды

  3. процесс развертывания

  4. Проверка конфигурации и мониторинг

  5. Меры предосторожности

01

Анализ концепции

Используя непрерывное развертывание Amazon CloudFront, вы можете передать часть рабочего трафика в измененную конфигурацию (промежуточное распространение) в оттенках серого, чтобы безопасно развертывать изменения в конфигурации CDN.

процесс работы:

2ea58e32837034dd4dad7301841fc4f7.jpeg

Чтобы упростить непрерывное развертывание с помощью CloudFront, ниже объясняются концепции, связанные с процессом развертывания.

1. Первичный дистрибутив: дистрибутив, требующий изменения конфигурации.

2. Промежуточное распространение: в процессе включения функции непрерывного развертывания CloudFront отдельно создаст конфигурацию промежуточного распространения, и все изменения конфигурации будут сохранены в промежуточном распространении, а основное распространение не будет затронуто до выполнения продвижения.

3. Политика: политика трафика, которую необходимо использовать.При непрерывном развертывании вы можете использовать один из двух методов для отображения трафика в оттенках серого в соответствии с фактическими потребностями:

▪ Направлять часть трафика на промежуточное распределение на основе веса;

▪ Указывает, что запросы, несущие определенные заголовки запросов (на основе заголовков), направляются на промежуточное распространение.

На основе веса: до 15 % производственного трафика можно указать для направления на промежуточный дистрибутив. Чтобы соответствовать определенным конкретным сценариям, некоторым пользователям необходимо посетить конфигурацию до или после изменения. Политика на основе процента поддерживает привязку сеанса. Можно указать время закрепления сеанса, а максимальный настраиваемый срок жизни бездействия составляет 1 час. Следует отметить, что при закреплении сеанса максимальный TTL (Максимальный TTL) также составляет 1 ч. Когда прилипание сеанса включено, независимо от того, сколько времени простоя вы установите, когда сеанс пользователя достигнет 1 часа, он повторно войдет в ссылку политики для выбора на основе веса.

39bb50a6f373ff8bacb4bb3d4d969a5d.jpeg

На основе заголовка: формат имени заголовка запроса должен начинаться с aws-cf-cd-, например aws-cf-cd-jwtest .

4. Продвижение: отправьте изменения, сохраненные в промежуточном дистрибутиве, в первичный дистрибутив.

02

Подготовка окружающей среды

Мы демонстрируем процесс развертывания на основе общей архитектуры руководства по развертыванию (2):

4ea6cce2b6b4986ddb63d7b4ba82b43a.jpeg

Требование состоит в том, что нам нужно добавить IP-адрес клиента в заголовок пользовательского запроса True-Client-IP через функцию CloudFront и передать его обратно в источник. Мы можем использовать официальный пример кода для развертывания функции CloudFront. Вы можете найти запись функции CloudFront в левой части консоли CloudFront:

5f223750159fde01a50d30e9c919d188.jpeg

Выберите, чтобы создать функцию

adb12efcf2628163c135dcd2d0d1ce4c.jpeg

Дайте вашей функции имя и продолжайте

2b1fda2a43653b6b1e889ba73f9a3850.jpeg

Скопируйте и вставьте официальный образец кода в поле кода, сохраните и продолжите.

  • Образец кода:

    https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/example-function-add-true-client-ip-header.html

2ceec70bdeeb18a188bd71a33bb42f27.jpeg

Перейдем на вкладку «Тест», сначала отладим логику кода и проверим, соответствуют ли выходные результаты ожиданиям.

9ee6627894d65b31a23ddfc8cd601e96.jpeg

В приведенном ниже результате выполнения мы видим, что выполнение прошло успешно, и заголовок запроса соответствует ожидаемому.

18af4193ac9b205d500a49d9fb50f8c1.jpeg

Далее мы опубликуем эту функцию

1cb0c49aa92eba0c7038c568d35bf874.jpeg

Как упоминалось в Руководстве по развертыванию CloudFront (2) в разделе политики заголовков запросов и ответов для возврата к источнику, если вы ожидаете, что пользовательские заголовки будут успешно перенесены обратно в источник, вам необходимо добавить информацию заголовка в белый список в политике запросов источника (политика запроса источника). Здесь нам нужно добавить true-client-ip в политику возврата к источнику, как показано на следующем рисунке.

608b080ebb097f16042dad10521855ff.jpeg

К этому моменту вы выполнили предварительные условия для развертывания функции CloudFront в промежуточной раздаче!

03

процесс развертывания

Основываясь на предыдущем небольшом руководстве, мы подошли к интерфейсу CloudFront Distribution, который требует непрерывного развертывания.Вы можете найти запись для создания непрерывного развертывания в интерфейсе Distribution:

383f80b87d3502170687883c092f9802.jpeg

После нажатия «Непрерывное развертывание» мы войдем в интерфейс конфигурации, В этом интерфейсе вы можете изменить примечания промежуточного распространения, например, пометить содержимое этого изменения и так далее.

61c573ee07e4b4fec95d3131426c8734.png

Переходя к следующему шагу, мы можем начать применять измененную конфигурацию.Здесь мы вносим изменения в шаблон пути «/»:

81347d6a87b195c2d8d3a65964e357a6.png

На странице изменения примените функцию CloudFront, подготовленную на предыдущих шагах, к этому поведению. Убедитесь, что применяемая здесь политика запроса источника должна включать заголовок запроса true-client-ip, используемый в нашем эксперименте, а функция CloudFront применяется к правильному событию. Согласно документации по коду, тип события функции — запрос зрителя, и он применяется в соответствующем событии.

  • документация по коду

    https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/example-function-add-true-client-ip-header.html

ca28e69cfc6514ca3d30f18fa7ef26ce.png

После нажатия «Сохранить» вернитесь на предыдущую страницу, нажмите «Далее», чтобы продолжить:

82be9b142a843a95b4a3bdd98429e495.png

На следующей странице мы можем выбрать метод трафика в оттенках серого. Как упоминалось в преамбуле, непрерывное развертывание может поддерживать два метода оттенков серого для трафика. Чтобы облегчить отображение результатов тестирования, здесь мы выбираем метод Header-Based для настройки:

6b2bf908e19944fe0c3e91d78e6bb0bc.png

Убедившись, что конфигурация верна, перейдите в нижнюю часть страницы, чтобы создать промежуточный дистрибутив.

8bb20f1fd2dbad2597ae6fb30ea230c0.png

После создания дистрибутива мы видим, что дистрибутив с логотипом Staging создан, а в списке дистрибутивов мы также видим соответствующий Staging и Primary Distribution:

a9ff50eb6029dae94e57c5bd25000c68.png

df3c4e9fe605f11d71f9c776cb1ac815.jpeg

Войдите в основной дистрибутив, вы увидите связанный с ним промежуточный дистрибутив:

4d34aa69f011cd43bbb2f4852421f1ac.jpeg

На этом вы завершили создание конфигурации непрерывного развертывания!

04

Проверка/мониторинг конфигурации

В этом фактическом тесте мы можем использовать для тестирования заголовок, указанный в Политике, и результаты теста следующие:

1411c09e328cbf33485498effbecb42f.jpeg

На приведенном выше снимке экрана из тела запроса curl, несущего указанный заголовок, мы видим, что заголовок запроса, записанный эхо-сервером, уже может видеть информацию заголовка запроса True Client IP, указанную логикой функции CloudFront. В то же время это изменение влияет только на промежуточное распространение. Когда указанный заголовок не переносится, логика конфигурации распределения остается неизменной, а заголовок запроса не содержит информации заголовка запроса True Client IP.

В метриках Cloudwatch вы можете использовать идентификатор промежуточного дистрибутива для запроса метрик и наблюдения за эффектом после развертывания. Также рекомендуется создать панель мониторинга для сравнения в Cloudwatch, чтобы вы могли более интуитивно видеть сравнение между статусом запроса после направления в промежуточный дистрибутив и статусом запроса основного дистрибутива. Ниже приведен пример панели мониторинга для сравнения:

0307ae9fd6dd6dcd14d1e1212c65e53b.jpeg

Убедившись, что результаты теста соответствуют ожиданиям, мы можем перейти на страницу основного распространения, нажать кнопку «Повысить» и изменить переход с режима оттенков серого на производственную среду:

10154c41da88a5878d399775089256c6.jpeg

Необходимо убедиться, что результаты тестирования промежуточной конфигурации соответствуют ожиданиям.Следует отметить, что после завершения продвижения откат конфигурации невозможен.Вы должны убедиться, что результаты проверки верны, прежде чем приступить к операции продвижения:

c9e5b453b6a946a9a543f8fa60ef2d09.jpeg

После Продвижения Staging Distribution будет находиться в состоянии Disabled.Если вам нужно внести другие изменения, вы можете продолжить редактирование этого Staging Distribution и указать нужную Политику планирования трафика.

05

Меры предосторожности

На данный момент (2023/5), прежде чем использовать CloudFront для непрерывного развертывания, существуют некоторые ограничения использования, которые требуют вашего внимания. Подробную информацию см. в официальной документации веб-сайта. Вот несколько важных мер предосторожности:

  • Очень важно, чтобы списки поведения первичного и промежуточного распространения были согласованы, в противном случае вы можете столкнуться с запросами промежуточного распределения 403. Если вам нужно создать новый шаблон пути, соответствующий поведению, вы можете сначала создать его в основном, но содержимое конфигурации соответствует тому, что было до изменения, например политика кэширования/заголовок запроса/стратегия заголовка ответа и т. д. После создания создайте промежуточное распространение на основе этого основного распределения. Затем изменения применяются в промежуточном распределении.

  • Не все конфигурации доступны для непрерывного развертывания, такие как изменение версии HTTP/ассоциация правил WAF и т. д. Следующие части поддерживают непрерывное развертывание: 

    1. Поведение

    2. Страницы ошибок

    3. Географические ограничения

    4. Происхождение

    5. Ведение журнала

  • Каждый первичный дистрибутив может быть связан только с одним промежуточным дистрибутивом.

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

  • Планирование трафика непрерывного развертывания реализовано на основе внутренней логики CloudFront (на основе веса или заголовка запроса) и не повлияет на DNS-разрешение фактического доменного имени. Поэтому доменное имя (CloudFront.net), созданное CloudFront в промежуточном распределении, нельзя использовать. Если требуется трафик в оттенках серого, выберите два метода политики, предусмотренные в непрерывном развертывании.

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

6152fd89023dbf32ff4208141ec7c5ab.jpeg

Подведем итог

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

Облачные технологии Амазон 

Серия мини-руководств по развертыванию CloudFront

Руководство по развертыванию Amazon CloudFront (1) — быстро создайте раздачу содержимого CDN:

https://aws.amazon.com/cn/blogs/china/amazon-cloudfront-deployment-handbook-part-one/

Руководство по развертыванию Amazon CloudFront (2) — расширенное развертывание:

https://aws.amazon.com/cn/blogs/china/amazon-cloudfront-deployment-handbook-part-two/

Руководство по развертыванию Amazon CloudFront (4) — Основные сведения о функциях CloudFront и диагностика:

https://aws.amazon.com/cn/blogs/china/amazon-cloudfront-deployment-handbook-part-four/

Руководство по развертыванию Amazon CloudFront (5) — Использование технологии Amazon Edge для оптимизации внутриигровых ресурсов Выпуск обновления:

https://aws.amazon.com/cn/blogs/china/amazon-cloudfront-deployment-handbook-part-five/

Руководство по развертыванию Amazon CloudFront (6) — основы и диагностика Lambda@Edge:

https://aws.amazon.com/cn/blogs/china/amazon-cloudfront-deployment-handbook-part-six/

Автор этой статьи

877fb37263b7bdeb444a84145706180b.jpeg

Ван Цзюньсин

Архитектор продуктов Amazon Cloud Technology Edge, отвечающий за техническое продвижение услуг Amazon Cloud Technology Edge в Китае. Он имеет многолетний практический опыт в области распространения контента CDN и WAF, уделяя особое внимание проектированию периферийных услуг и оптимизации работы.

3601dd81d0a01a3d10f79e110569bc1e.gif

f3afd3f8558b0e9321cec04f197bf98b.gif

Я слышал, нажмите 4 кнопки ниже

Вы не столкнетесь с ошибками!

d13a2a4f297344e029f5332d60330e8d.gif

рекомендация

отblog.csdn.net/u012365585/article/details/131863016