- Инструменты для разработчиков›
- AWS CodeDeploy›
- Вопросы и ответы
Вопросы и ответы по AWS CodeDeploy
Общие вопросы
Открыть всеAWS CodeDeploy – сервис, автоматизирующий развертывание кода в любом инстансе, включая инстансы Amazon EC2 и инстансы, работающие локально. AWS CodeDeploy позволяет быстро выпускать новые возможности, помогает избежать простоев во время развертывания и упрощает процедуру обновления приложений. С помощью AWS CodeDeploy можно автоматизировать развертывание ПО и избавиться от ненадежных ручных операций. При этом сервис масштабируется в соответствии с инфраструктурой пользователя: можно без труда выполнять развертывание как в одном инстансе, так и в тысячах.
Сервис AWS CodeDeploy создан для разработчиков и администраторов, которым необходимо развертывать приложения на любых инстансах, включая инстансы Amazon EC2 и инстансы, работающие локально. Это гибкий сервис, которым могут пользоваться все, кому необходимо обновлять программное обеспечение или запускать скрипты на своих инстансах.
AWS CodeDeploy можно использовать для развертывания любых типов приложений. Для использования AWS CodeDeploy требуется указать файлы, которые необходимо скопировать, и скрипты, которые необходимо запустить на каждом инстансе во время развертывания. Сервис AWS CodeDeploy работает независимо от конкретной архитектуры и языка программирования, поэтому с ним можно использовать скрипты любого настраиваемого кода развертывания.
AWS CodeDeploy поддерживает различные операционные системы. AWS CodeDeploy предоставляет агенты, которые были протестированы с ОС Amazon Linux, Red Hat Enterprise Linux, Ubuntu Server и Microsoft Windows Server. Если вы хотите использовать другие операционные системы, агент AWS CodeDeploy доступен здесь в виде программного обеспечения с открытым исходным кодом. Дополнительные сведения о поддержке операционных систем см. в документации AWS CodeDeploy.
Да. AWS CodeDeploy работает с различными системами управления конфигурацией, системами непрерывной интеграции и развертывания, а также системами управления исходным кодом. Дополнительные сведения см. на странице интеграции продуктов.
AWS CodeDeploy – это вспомогательный сервис, позволяющий разработчикам развертывать и обновлять программное обеспечение на любом инстансе, включая инстансы Amazon EC2 и инстансы, работающие локально. Сервисы AWS Elastic Beanstalk и AWS OpsWorks являются комплексными решениями для управления приложениями.
Да. AWS CodeDeploy поддерживает любой инстанс, который может установить агент CodeDeploy и подключиться к публичным конечным точкам AWS.
Понятия
Открыть всеПриложение – это набор программного обеспечения и конфигурационных данных для развертывания на группе инстансов. Как правило, на инстансах в группе работает одинаковое программное обеспечение. К примеру, в большой распределенной системе на сетевом уровне, скорее всего, используется одно приложение, а на уровне данных – другое.
Ревизия — это конкретная версия развертываемого контента, такого как исходный код, артефакты после сборки, веб-страницы, исполняемые файлы и сценарии развертывания, а также файл AppSpec. Агент AWS CodeDeploy может использовать редакции из репозитория GitHub или корзины Amazon S3.
Группа развертывания – это сущность AWS CodeDeploy для объединения инстансов EC2 или функций AWS Lambda в рамках развертываний CodeDeploy. Для развертываний в EC2 это набор инстансов, которые связаны с развертываемым приложением. Можно добавить инстансы в группу развертывания, указав тег, название группы Auto Scaling или оба этих признака. В развертываниях AWS Lambda группа развертывания определяет набор конфигураций AWS CodeDeploy для предстоящего бессерверного развертывания Lambda в группе, например предупреждения и откаты.
Можно определить несколько групп развертывания для приложения, например группу отладки и рабочую группу. Сведения о тегах см. в разделе Работа с тегами Amazon EC2 в консоли. Дополнительные сведения о развертывании в группах Auto Scaling см. в разделе Интеграция с автоматическим масштабированием.
Конфигурация развертывания определяет поведение при развертывании, в том числе порядок обработки отказов, с использованием группы развертывания. Конфигурацию развертывания можно использовать для выполнения развертывания без простоев в группах развертывания с несколькими инстансами. Например, если приложение требует, чтобы не менее 50 % инстансов в группе развертывания были активны и обрабатывали трафик, это можно указать в конфигурации развертывания, чтобы развертывание не вызвало простоев в работе. Если с развертыванием или с группой развертывания не связана ни одна конфигурация развертывания, то по умолчанию AWS CodeDeploy будет выполнять развертывание на каждом инстансе по очереди. Дополнительные сведения о конфигурации развертывания см. в разделе Состояние экземпляра.
Для развертывания необходимо указать три параметра.
- Редакция: определяет, что подлежит развертыванию.
- Группа развертывания: определяет, где необходимо осуществить развертывание.
- Конфигурация развертывания: необязательный параметр, который определяет, как именно необходимо осуществить развертывание.
Файл AppSpec – это файл конфигурации, содержащий список файлов, которые должны быть скопированы, и скриптов, которые должны быть выполнены. Файл AppSpec использует формат YAML, и вы добавляете его в корневой каталог своей ревизии. Файл AppSpec используется агентом AWS CodeDeploy и состоит из двух разделов. В разделе файлов указаны исходные файлы редакции, которые должны быть скопированы, а также папка назначения на каждом инстансе. В разделе процедур указано расположение скриптов, которые должны выполняться на каждом этапе развертывания, в виде относительных путей, начинающихся с корневого каталога пакета редакции. Каждый этап развертывания называется событием жизненного цикла развертывания. Ниже приведен пример файла AppSpec. Дополнительные сведения о файле AppSpec, включая все параметры, которые можно указать, см. в разделе Справочник по файлу AppSpec.
os: linux
files:
# В этом разделе можно указать одно или несколько местоположений.
– source: /
destination: /var/www/html/WordPress
hooks:
# В разделе процедур жизненного цикла можно указать скрипты для развертывания.
ApplicationStop:
# Шаг 1. Остановите Apache и MySQL, если они запущены.
– location: helper_scripts/stop_server.sh
BeforeInstall:
# Шаг 2. Установите Apache и MySQL.
# С каждым событием жизненного цикла развертывания можно связать один или несколько скриптов.
– location: deploy_hooks/puppet-apply-apache.sh
– location: deploy_hooks/puppet-apply-mysql.sh
AfterInstall:
# Шаг 3. Установите разрешения.
– location: deploy_hooks /change_permissions.sh
timeout: 30
runas: root
# Шаг 4. Запустите сервер.
– location: helper_scripts/start_server.sh
timeout: 30
runas: root
Развертывание проходит через ряд заранее определенных этапов, называемых событиями жизненного цикла развертывания. События жизненного цикла развертывания дают возможность выполнять код в процессе развертывания. В следующей таблице перечислены поддерживаемые в настоящее время события жизненного цикла развертывания в порядке их выполнения, а также приведены примеры их использования.
Событие жизненного цикла развертывания
- ApplicationStop
-
Это первое событие жизненного цикла развертывания, которое происходит еще до загрузки редакции. Для этого события жизненного цикла развертывания используется файл AppSpec и скрипты из последней успешно развернутой редакции.
Событие жизненного цикла развертывания ApplicationStop можно использовать, если необходимо корректно остановить приложение или удалить ранее установленные пакеты для подготовки к развертыванию.
-
-
DownloadBundle
-
Во время этого события жизненного цикла развертывания агент копирует файлы редакции во временную папку на инстансе. Это событие жизненного цикла развертывания зарезервировано для агента и не может использоваться для запуска пользовательских скриптов.
-
-
BeforeInstall
-
Событие жизненного цикла развертывания BeforeInstall можно использовать для заданий, выполняемых перед установкой, таких как дешифрование файлов или создание резервной копии текущей версии.
-
-
Install
-
Во время этого события жизненного цикла развертывания агент копирует файлы редакции из временной папки в конечную. Это событие жизненного цикла развертывания зарезервировано для агента и не может использоваться для запуска пользовательских скриптов.
-
-
AfterInstall
-
Событие жизненного цикла развертывания AfterInstall можно использовать для выполнения таких задач, как настройка приложения или изменение разрешений на доступ к файлам.
-
-
ApplicationStart
-
Обычно событие жизненного цикла развертывания ApplicationStart используется для перезапуска сервисов, которые были остановлены во время события ApplicationStop.
-
-
ValidateService
-
ValidateService – это последнее событие жизненного цикла развертывания, позволяющее убедиться в том, что развертывание успешно завершено.
-
Начало работы
Открыть всеМожно войти в Консоль управления AWS и начать использовать AWS CodeDeploy. Если вам нужен краткий обзор сервиса, см. раздел Начало работы, содержащий пошаговое руководство.
Использование AWS CodeDeploy
Открыть всеИнстанс Amazon EC2 должен быть связан с профилем инстанса IAM и работать под управлением поддерживаемой операционной системы. Дополнительные сведения см. в разделе Использование существующего инстанса Amazon EC2.
На следующей диаграмме показаны стандартные действия, которые необходимо выполнить во время развертывания. Создание приложения и группы развертывания (пояснение этих терминов см. в разделе «Концепты») обычно представляет собой разовые задачи по настройке каждого приложения. Загрузка редакции и ее развертывание – повторяющиеся действия. Подробное объяснение, включая пошаговые инструкции по каждой из этих задач, см. в разделе Развертывания.
Вносить изменения в код не требуется. Вы просто добавляете файл конфигурации (называемый файлом AppSpec) в корневой каталог пакета ревизий, в котором указываются копируемые файлы и сценарии, которые необходимо выполнить.
При использовании GitHub можно выполнять развертывание редакций из репозитория в формате .zip, .tar или .tar.gz непосредственно на инстансах. При использовании других систем управления исходным кодом можно объединить файлы редакции в пакет и загрузить в корзину Amazon S3 в формате .zip, .tar или .tar.gz, а затем указать расположение Amazon S3 при выполнении развертывания. Если для приложения необходим этап сборки, в репозитории GitHub или корзине Amazon S3 должны содержаться объекты после сборки. Дополнительные сведения об использовании GitHub с AWS CodeDeploy см. на нашей странице интеграции продуктов. Дополнительные сведения об использовании Amazon S3 для хранения редакций см. в разделе Отправка редакции.
Инструмент управления конфигурацией можно вызвать из любой процедуры события жизненного цикла развертывания в файле AppSpec. Например, если при развертывании нужно запустить рецепт Chef, его можно указать в соответствующей процедуре события жизненного цикла развертывания в файле AppSpec. Кроме того, можно использовать свою систему управления конфигурацией для установки агента AWS CodeDeploy на инстансах. Примеры использования AWS CodeDeploy с такими системами управления конфигурацией, как Chef, Puppet, Ansible и Saltstack, см. на нашей странице интеграции продуктов.
Да. Можно интегрировать AWS CodeDeploy с системами непрерывной интеграции и развертывания путем вызова общедоступных API с использованием интерфейса командной строки AWS или пакетов SDK AWS. Вы можете найти готовые интеграции и образцы на нашей странице интеграции продуктов.
Чтобы установить приложение на только что добавленных инстансах, выполните развертывание последней редакции в группе развертывания. AWS CodeDeploy не развертывает последнюю редакцию на только что добавленных инстансах автоматически, за исключением инстансов Amazon EC2, запущенных в составе группы Auto Scaling.
Группу Auto Scaling можно связать с группой развертывания, чтобы при запуске новых инстансов на них устанавливалась последняя версия приложения. Каждый новый инстанс Amazon EC2, запущенный в указанной группе Auto Scaling, переводится в состояние ожидания, а затем на нем выполняется развертывание последней успешной редакции для указанной группы развертывания. Если развертывание завершается успешно, состояние инстанса Amazon EC2 изменяется на «InService». Если развертывание завершается с ошибкой, работа инстанса Amazon EC2 прекращается, запускается новый инстанс Amazon EC2 в состоянии ожидания, после чего для него запускается процесс развертывания. Дополнительные сведения о событиях жизненного цикла инстансов группы Auto Scaling см. в разделе Жизненный цикл группы Auto Scaling.
Состояние развертывания можно отслеживать с помощью Консоли управления AWS, интерфейса командной строки AWS (AWS CLI), AWS SDK и API AWS CodeDeploy. Вы можете увидеть общее состояние развертывания и более подробно ознакомиться с состоянием каждого экземпляра и статусом каждого события жизненного цикла развертывания экземпляра. Можно также просматривать записи в журнале о возникших ошибках, что позволяет без труда осуществить отладку проблем развертывания, не входя в инстанс.
Да. При остановке выполняемого развертывания сервис AWS CodeDeploy передает агенту на каждом инстансе команду для прекращения выполнения дополнительных скриптов. Чтобы вернуть приложение обратно в рабочее состояние, можно осуществить повторное развертывание редакции или развертывание другой редакции.
Чтобы вернуть предыдущую редакцию приложения, необходимо осуществить развертывание этой редакции. AWS CodeDeploy отслеживает файлы, которые были скопированы для текущей редакции, и удаляет их перед началом нового развертывания, поэтому нет никакой разницы между осуществлением повторного развертывания и выполнением отката к предыдущей версии. При этом необходимо убедиться, что предыдущие редакции доступны для повторного развертывания.
Да. Можно использовать корзину Amazon S3 с контролем версий и указывать идентификатор версии для однозначного определения редакции.
Информацию об ограничениях услуг см. в разделе Ограничения. Чтобы увеличить лимиты сервисов, отправьте запрос через Центр поддержки AWS.
Да. Чтобы получить историю вызовов API сервиса AWS CodeDeploy для аккаунта, достаточно включить AWS CloudTrail в Консоли управления AWS.
Можно создавать оповещения о событиях, затрагивающих ваши развертывания. Уведомления будут приходить в виде уведомлений Amazon SNS. Каждое оповещение будет включать в себя сообщение о состоянии, а также ссылку на ресурсы, где возникло событие, ставшее причиной оповещения. Оповещения предоставляются бесплатно, однако плата может начисляться за использование других сервисов AWS при оповещении, например Amazon SNS. Чтобы узнать, как начать работу с уведомлениями, см. руководство пользователя уведомлений. Кроме того, клиенты, использующие AWS Chatbot, могут настроить отправку уведомлений в каналы Slack или чаты Amazon Chime. Более подробную информацию можно найти здесь.
Безопасность
Открыть всеДа, но агент AWS CodeDeploy, установленный на инстансах Amazon EC2, должен иметь доступ к публичным адресам сервисов AWS CodeDeploy и Amazon S3. Дополнительные сведения см. в разделах Конечные точки AWS CodeDeploy и конечные точки Amazon S3.
Да. AWS CodeDeploy поддерживает разрешения на уровне ресурсов. Для каждого ресурса AWS CodeDeploy можно указать пользователей, которые имеют доступ, а также действия, которые они могут выполнять. Например, можно создать политику IAM, которая позволит пользователю осуществлять развертывание определенного приложения, но для других приложений разрешит только просматривать список редакций. Таким образом можно предотвратить случайное внесение изменений в другое приложение. Дополнительные сведения об использовании IAM с AWS CodeDeploy см. в разделе Справочник по разрешениям доступа.
Регионы
Открыть всеПодробную информацию о доступности CodeDeploy по регионам см. в разделе «Региональные продукты и услуги».
AWS CodeDeploy осуществляет развертывание на ресурсах AWS, расположенных в одном регионе. Для развертывания приложения в нескольких регионах необходимо определить приложение в требуемых конечных регионах, скопировать пакет приложения в корзину Amazon S3 в каждом регионе, а затем выполнить последовательное или параллельное развертывание во всех регионах.
Оплата
Открыть всеДополнительная плата за развертывание кода на инстансах Amazon EC2 с помощью AWS CodeDeploy отсутствует. За обновление локального инстанса с помощью AWS CodeDeploy вы платите 0,02 USD. Более подробную информацию см. на странице с ценами.