краткое введение
В этой записи блога вы узнаете, как использовать непрерывное развертывание CloudFront (непрерывное развертывание) для сине-зеленого развертывания/проверки изменений, а затем в соответствии с требованиями высокой доступности бизнеса.
Диаграмма непрерывного развертывания (Continuous deployment):
Мы разделим его на несколько частей, чтобы объяснить функции ниже:
Анализ концепции
Подготовка окружающей среды
процесс развертывания
Проверка конфигурации и мониторинг
Меры предосторожности
01
Анализ концепции
Используя непрерывное развертывание Amazon CloudFront, вы можете передать часть рабочего трафика в измененную конфигурацию (промежуточное распространение) в оттенках серого, чтобы безопасно развертывать изменения в конфигурации CDN.
процесс работы:
Чтобы упростить непрерывное развертывание с помощью CloudFront, ниже объясняются концепции, связанные с процессом развертывания.
1. Первичный дистрибутив: дистрибутив, требующий изменения конфигурации.
2. Промежуточное распространение: в процессе включения функции непрерывного развертывания CloudFront отдельно создаст конфигурацию промежуточного распространения, и все изменения конфигурации будут сохранены в промежуточном распространении, а основное распространение не будет затронуто до выполнения продвижения.
3. Политика: политика трафика, которую необходимо использовать.При непрерывном развертывании вы можете использовать один из двух методов для отображения трафика в оттенках серого в соответствии с фактическими потребностями:
▪ Направлять часть трафика на промежуточное распределение на основе веса;
▪ Указывает, что запросы, несущие определенные заголовки запросов (на основе заголовков), направляются на промежуточное распространение.
На основе веса: до 15 % производственного трафика можно указать для направления на промежуточный дистрибутив. Чтобы соответствовать определенным конкретным сценариям, некоторым пользователям необходимо посетить конфигурацию до или после изменения. Политика на основе процента поддерживает привязку сеанса. Можно указать время закрепления сеанса, а максимальный настраиваемый срок жизни бездействия составляет 1 час. Следует отметить, что при закреплении сеанса максимальный TTL (Максимальный TTL) также составляет 1 ч. Когда прилипание сеанса включено, независимо от того, сколько времени простоя вы установите, когда сеанс пользователя достигнет 1 часа, он повторно войдет в ссылку политики для выбора на основе веса.
На основе заголовка: формат имени заголовка запроса должен начинаться с aws-cf-cd-, например aws-cf-cd-jwtest .
4. Продвижение: отправьте изменения, сохраненные в промежуточном дистрибутиве, в первичный дистрибутив.
02
Подготовка окружающей среды
Мы демонстрируем процесс развертывания на основе общей архитектуры руководства по развертыванию (2):
Требование состоит в том, что нам нужно добавить IP-адрес клиента в заголовок пользовательского запроса True-Client-IP через функцию CloudFront и передать его обратно в источник. Мы можем использовать официальный пример кода для развертывания функции CloudFront. Вы можете найти запись функции CloudFront в левой части консоли CloudFront:
Выберите, чтобы создать функцию
Дайте вашей функции имя и продолжайте
Скопируйте и вставьте официальный образец кода в поле кода, сохраните и продолжите.
Образец кода:
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/example-function-add-true-client-ip-header.html
Перейдем на вкладку «Тест», сначала отладим логику кода и проверим, соответствуют ли выходные результаты ожиданиям.
В приведенном ниже результате выполнения мы видим, что выполнение прошло успешно, и заголовок запроса соответствует ожидаемому.
Далее мы опубликуем эту функцию
Как упоминалось в Руководстве по развертыванию CloudFront (2) в разделе политики заголовков запросов и ответов для возврата к источнику, если вы ожидаете, что пользовательские заголовки будут успешно перенесены обратно в источник, вам необходимо добавить информацию заголовка в белый список в политике запросов источника (политика запроса источника). Здесь нам нужно добавить true-client-ip в политику возврата к источнику, как показано на следующем рисунке.
К этому моменту вы выполнили предварительные условия для развертывания функции CloudFront в промежуточной раздаче!
03
процесс развертывания
Основываясь на предыдущем небольшом руководстве, мы подошли к интерфейсу CloudFront Distribution, который требует непрерывного развертывания.Вы можете найти запись для создания непрерывного развертывания в интерфейсе Distribution:
После нажатия «Непрерывное развертывание» мы войдем в интерфейс конфигурации, В этом интерфейсе вы можете изменить примечания промежуточного распространения, например, пометить содержимое этого изменения и так далее.
Переходя к следующему шагу, мы можем начать применять измененную конфигурацию.Здесь мы вносим изменения в шаблон пути «/»:
На странице изменения примените функцию CloudFront, подготовленную на предыдущих шагах, к этому поведению. Убедитесь, что применяемая здесь политика запроса источника должна включать заголовок запроса true-client-ip, используемый в нашем эксперименте, а функция CloudFront применяется к правильному событию. Согласно документации по коду, тип события функции — запрос зрителя, и он применяется в соответствующем событии.
документация по коду
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/example-function-add-true-client-ip-header.html
После нажатия «Сохранить» вернитесь на предыдущую страницу, нажмите «Далее», чтобы продолжить:
На следующей странице мы можем выбрать метод трафика в оттенках серого. Как упоминалось в преамбуле, непрерывное развертывание может поддерживать два метода оттенков серого для трафика. Чтобы облегчить отображение результатов тестирования, здесь мы выбираем метод Header-Based для настройки:
Убедившись, что конфигурация верна, перейдите в нижнюю часть страницы, чтобы создать промежуточный дистрибутив.
После создания дистрибутива мы видим, что дистрибутив с логотипом Staging создан, а в списке дистрибутивов мы также видим соответствующий Staging и Primary Distribution:
Войдите в основной дистрибутив, вы увидите связанный с ним промежуточный дистрибутив:
На этом вы завершили создание конфигурации непрерывного развертывания!
04
Проверка/мониторинг конфигурации
В этом фактическом тесте мы можем использовать для тестирования заголовок, указанный в Политике, и результаты теста следующие:
На приведенном выше снимке экрана из тела запроса curl, несущего указанный заголовок, мы видим, что заголовок запроса, записанный эхо-сервером, уже может видеть информацию заголовка запроса True Client IP, указанную логикой функции CloudFront. В то же время это изменение влияет только на промежуточное распространение. Когда указанный заголовок не переносится, логика конфигурации распределения остается неизменной, а заголовок запроса не содержит информации заголовка запроса True Client IP.
В метриках Cloudwatch вы можете использовать идентификатор промежуточного дистрибутива для запроса метрик и наблюдения за эффектом после развертывания. Также рекомендуется создать панель мониторинга для сравнения в Cloudwatch, чтобы вы могли более интуитивно видеть сравнение между статусом запроса после направления в промежуточный дистрибутив и статусом запроса основного дистрибутива. Ниже приведен пример панели мониторинга для сравнения:
Убедившись, что результаты теста соответствуют ожиданиям, мы можем перейти на страницу основного распространения, нажать кнопку «Повысить» и изменить переход с режима оттенков серого на производственную среду:
Необходимо убедиться, что результаты тестирования промежуточной конфигурации соответствуют ожиданиям.Следует отметить, что после завершения продвижения откат конфигурации невозможен.Вы должны убедиться, что результаты проверки верны, прежде чем приступить к операции продвижения:
После Продвижения Staging Distribution будет находиться в состоянии Disabled.Если вам нужно внести другие изменения, вы можете продолжить редактирование этого Staging Distribution и указать нужную Политику планирования трафика.
05
Меры предосторожности
На данный момент (2023/5), прежде чем использовать CloudFront для непрерывного развертывания, существуют некоторые ограничения использования, которые требуют вашего внимания. Подробную информацию см. в официальной документации веб-сайта. Вот несколько важных мер предосторожности:
Очень важно, чтобы списки поведения первичного и промежуточного распространения были согласованы, в противном случае вы можете столкнуться с запросами промежуточного распределения 403. Если вам нужно создать новый шаблон пути, соответствующий поведению, вы можете сначала создать его в основном, но содержимое конфигурации соответствует тому, что было до изменения, например политика кэширования/заголовок запроса/стратегия заголовка ответа и т. д. После создания создайте промежуточное распространение на основе этого основного распределения. Затем изменения применяются в промежуточном распределении.
Не все конфигурации доступны для непрерывного развертывания, такие как изменение версии HTTP/ассоциация правил WAF и т. д. Следующие части поддерживают непрерывное развертывание:
1. Поведение
2. Страницы ошибок
3. Географические ограничения
4. Происхождение
5. Ведение журнала
Каждый первичный дистрибутив может быть связан только с одним промежуточным дистрибутивом.
Независимо от того, включен ли промежуточный дистрибутив или нет, срок его действия не истечет.
Планирование трафика непрерывного развертывания реализовано на основе внутренней логики CloudFront (на основе веса или заголовка запроса) и не повлияет на DNS-разрешение фактического доменного имени. Поэтому доменное имя (CloudFront.net), созданное CloudFront в промежуточном распределении, нельзя использовать. Если требуется трафик в оттенках серого, выберите два метода политики, предусмотренные в непрерывном развертывании.
При создании конфигурации непрерывного развертывания, если вы случайно прервете или выйдете без сохранения, будет создан промежуточный дистрибутив, не связанный с каким-либо основным дистрибутивом (как показано на рисунке ниже).Поскольку количество промежуточных дистрибутивов имеет максимальный верхний предел (20), при неправильном использовании бесполезного промежуточного дистрибутива, чтобы не занимать квоту, вы можете удалить промежуточный дистрибутив, чтобы не занимать квоту.
Подведем итог
В этой статье, если конфигурация, которую вам необходимо изменить в будущем, сопряжена с определенными рисками, такими как изменение бизнес-логики, изменение исходного сервера и т. д., чтобы избежать прерывания бизнеса или повлиять на взаимодействие с пользователем, вызванное изменением, использование функции непрерывного развертывания 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/
Автор этой статьи
Ван Цзюньсин
Архитектор продуктов Amazon Cloud Technology Edge, отвечающий за техническое продвижение услуг Amazon Cloud Technology Edge в Китае. Он имеет многолетний практический опыт в области распространения контента CDN и WAF, уделяя особое внимание проектированию периферийных услуг и оптимизации работы.
Я слышал, нажмите 4 кнопки ниже
Вы не столкнетесь с ошибками!