- Инструменты для разработчиков›
- AWS CodeDeploy›
- Вопросы и ответы
Вопросы и ответы по AWS CodeDeploy
Общие вопросы
Что представляет собой AWS CodeDeploy?
AWS CodeDeploy – сервис, автоматизирующий развертывание кода в любом инстансе, включая инстансы Amazon EC2 и инстансы, работающие локально. AWS CodeDeploy упрощает как быстрое развертывание новых функций, помогая избежать простоев во время развертывания, так и обновление приложений. С помощью AWS CodeDeploy можно автоматизировать развертывание, что поможет избавиться от ненадежных ручных операций. При этом сервис масштабируется в соответствии с вашей инфраструктурой: вы можете легко выполнять развертывание как в одном инстансе, так и в тысячах.
Для кого предназначен сервис AWS CodeDeploy?
Сервис AWS CodeDeploy создан для разработчиков и администраторов, которым необходимо развертывать приложения на любых инстансах, включая инстансы Amazon EC2 и инстансы, работающие локально. Это гибкий сервис, которым могут пользоваться все, кому необходимо обновлять программное обеспечение или запускать скрипты на своих инстансах.
Какие типы приложений можно развертывать с помощью AWS CodeDeploy?
AWS CodeDeploy можно использовать для развертывания любых типов приложений. Для использования 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 работает с различными системами управления конфигурацией, системами непрерывной интеграции и развертывания, а также системами управления исходным кодом. Дополнительные сведения см. на странице интеграции продукта.
Чем сервис AWS CodeDeploy отличается от других сервисов развертывания и управления AWS, таких как AWS Elastic Beanstalk и AWS OpsWorks?
AWS CodeDeploy – это вспомогательный сервис, позволяющий разработчикам развертывать и обновлять программное обеспечение на любом инстансе, включая инстансы Amazon EC2 и инстансы, работающие локально. Сервисы AWS Elastic Beanstalk и AWS OpsWorks являются комплексными решениями для управления приложениями.
Поддерживает ли AWS CodeDeploy локальные инстансы?
Да. 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 в Консоли. Дополнительные сведения о развертывании в группах «Автомасштабирование» см. в разделе Интеграция с автомасштабированием.
Что такое конфигурация развертывания?
Конфигурация развертывания определяет поведение при развертывании, в том числе порядок обработки отказов, с использованием группы развертывания. Конфигурацию развертывания можно использовать для выполнения развертывания без простоев в группах развертывания с несколькими инстансами. Например, если приложение требует, чтобы не менее 50 % инстансов в группе развертывания были активны и обрабатывали трафик, это можно указать в конфигурации развертывания, чтобы развертывание не вызвало простоев в работе. Если с развертыванием или с группой развертывания не связана ни одна конфигурация развертывания, то по умолчанию AWS CodeDeploy будет выполнять развертывание на каждом инстансе по очереди. Дополнительные сведения о конфигурации развертывания см. в разделе Работоспособность инстансов.
Какие параметры необходимо указывать для развертывания?
Есть три параметра, которые указываются для развертывания:
- Редакция: определяет, что необходимо развернуть.
- Группа развертывания: определяет, где необходимо осуществить развертывание.
- Конфигурация развертывания: необязательный параметр, который определяет, как именно необходимо осуществить развертывание.
Что такое файл AppSpec?
Файл 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 CodeDeploy?
Начать использование сервиса AWS CodeDeploy можно после входа в Консоль управления AWS. Краткий обзор сервиса см. в разделе Начало работы, который включает в себя пошаговое руководство.
Использование AWS CodeDeploy
Существуют ли особые требования для использования имеющегося инстанса Amazon EC2 с AWS CodeDeploy?
Необходимо, чтобы инстанс Amazon EC2 был связан с профилем инстанса IAM и на нем работала поддерживаемая операционная система. Дополнительные сведения см. в разделе Use an Existing Amazon EC2 Instance.
Какие стандартные действия необходимо выполнить для развертывания приложения с помощью AWS CodeDeploy?
На следующей диаграмме показаны стандартные действия, которые необходимо выполнить во время развертывания. Задачи создания приложения и развертывания группы (определения этих терминов см. в разделе Понятия), как правило, выполняются один раз при настройке каждого приложения. Загрузка редакции и ее развертывание – повторяющиеся действия. Подробное описание каждого из этих заданий, включая пошаговые инструкции, см. в разделе Развертывание.
Как можно получить доступ к AWS CodeDeploy?
Для доступа к сервису AWS CodeDeploy можно использовать Консоль управления AWS, интерфейс командной строки AWS (AWS CLI), пакеты AWS SDK и API AWS CodeDeploy.
Какие изменения необходимо внести в код, чтобы можно было осуществить его развертывание с помощью AWS CodeDeploy?
Вносить изменения в код не требуется. Нужно просто добавить в корневой каталог пакета редакции файл конфигурации (называемый AppSpec) со списком файлов, которые следует скопировать, и скриптов, которые необходимо выполнить.
Как можно осуществить развертывание приложения из системы управления исходным кодом с помощью AWS CodeDeploy?
При использовании GitHub можно выполнять развертывание редакций из репозитория в формате .zip, .tar или .tar.gz непосредственно на инстансах. При использовании других систем управления исходным кодом можно объединить файлы редакции в пакет и загрузить в корзину Amazon S3 в формате .zip, .tar или .tar.gz, а затем указать расположение Amazon S3 при выполнении развертывания. Если для приложения необходим этап сборки, в репозитории GitHub или корзине Amazon S3 должны содержаться объекты после сборки. Дополнительные сведения об использовании GitHub с AWS CodeDeploy см. на странице интеграции продукта. Дополнительные сведения об использовании Amazon S3 для хранения редакций см. в разделе Push a Revision.
Как AWS CodeDeploy работает с существующими инструментами управления конфигурацией?
Инструмент управления конфигурацией можно вызвать из любой процедуры события жизненного цикла развертывания в файле AppSpec. Например, если при развертывании нужно запустить рецепт Chef, его можно указать в соответствующей процедуре события жизненного цикла развертывания в файле AppSpec. Кроме того, можно использовать свою систему управления конфигурацией для установки агента AWS CodeDeploy на инстансах. Примеры, иллюстрирующие использование AWS CodeDeploy с системами управления конфигурацией, такими как Chef, Puppet, Ansible и Saltstack, см. на странице интеграции продукта.
Можно ли использовать AWS CodeDeploy с системами непрерывной интеграции и развертывания?
Да. Можно интегрировать AWS CodeDeploy с системами непрерывной интеграции и развертывания путем вызова общедоступных API с использованием интерфейса командной строки AWS или пакетов SDK AWS. Готовые решения для интеграции и образцы см. на странице интеграции продукта.
Как установить приложение на инстансы, которые только что были добавлены в группу развертывания?
Чтобы установить приложение на только что добавленных инстансах, выполните развертывание последней редакции в группе развертывания. За исключением инстансов Amazon EC2, которые запускаются в составе группы Auto Scaling, AWS CodeDeploy не развертывает последнюю редакцию на только что добавленных инстансах автоматически.
Как AWS CodeDeploy работает с автомасштабированием?
Группу Auto Scaling можно связать с группой развертывания, чтобы при запуске новых инстансов на них устанавливалась последняя версия приложения. Каждый новый инстанс Amazon EC2, запущенный в указанной группе Auto Scaling, переводится в состояние ожидания, а затем на нем выполняется развертывание последней успешной редакции для указанной группы развертывания. Если развертывание завершается успешно, состояние инстанса Amazon EC2 изменяется на «InService». Если развертывание завершается с ошибкой, работа инстанса Amazon EC2 прекращается, запускается новый инстанс Amazon EC2 в состоянии ожидания, после чего для него запускается процесс развертывания. Дополнительные сведения о событиях жизненного цикла инстансов группы «Автомасштабирование» см. в разделе Жизненный цикл группы «Автомасштабирование».
Как можно следить за состоянием развертывания?
Состояние развертывания можно отслеживать с помощью Консоли управления AWS, интерфейса командной строки AWS (AWS CLI), пакетов AWS SDK и API AWS CodeDeploy. Вы можете увидеть общее состояние развертывания и более подробно ознакомиться с состоянием каждого экземпляра и статусом каждого события жизненного цикла развертывания экземпляра. Можно также посмотреть записи логов о возникших ошибках, что позволяет легко осуществить отладку проблем развертывания без необходимости входа в инстанс.
Можно ли остановить выполняемое развертывание?
Да. При остановке выполняемого развертывания сервис AWS CodeDeploy передает агенту на каждом инстансе команду для прекращения выполнения дополнительных скриптов. Чтобы вернуть приложение обратно в рабочее состояние, можно осуществить повторное развертывание редакции или развертывание другой редакции.
Как выполнить откат к предыдущей редакции приложения?
Чтобы вернуть предыдущую редакцию приложения, необходимо осуществить развертывание этой редакции. AWS CodeDeploy отслеживает файлы, которые были скопированы для текущей редакции, и удаляет их перед началом нового развертывания, поэтому нет никакой разницы между осуществлением повторного развертывания и выполнением отката к предыдущей версии. При этом необходимо убедиться, что предыдущие редакции доступны для выполнения повторного развертывания.
Можно ли использовать для хранения редакций корзину Amazon S3 с контролем версий?
Да. Можно использовать корзину Amazon S3 с контролем версий и указывать идентификатор версии для однозначного определения редакции.
Какие лимиты предусмотрены для сервиса AWS CodeDeploy?
Сведения о лимитах сервисов см. в разделе Лимиты. Для увеличения лимитов отправьте запрос в Центр поддержки AWS.
Можно ли получить журнал всех обращений API сервиса AWS CodeDeploy для аккаунта в целях анализа безопасности и устранения текущих неисправностей?
Да. Для получения истории вызовов API AWS CodeDeploy вашего аккаунта включите сервис AWS CloudTrail в Консоли управления AWS.
Как получать оповещения или предупреждения о любых событиях в AWS CodeDeploy?
Можно создавать оповещения о событиях, затрагивающих ваши развертывания. Оповещения будут приходить в виде сообщений от сервиса Amazon SNS. Каждое оповещение будет включать в себя сообщение о состоянии, а также ссылку на ресурсы, где возникло событие, ставшее причиной оповещения. Оповещения предоставляются бесплатно, однако плата может начисляться за использование других сервисов AWS при оповещении, например Amazon SNS. Чтобы узнать, как начать работу с оповещениями, см. соответствующее руководство пользователя. Кроме того, клиенты, использующие AWS Chatbot, могут настроить отправку оповещений в каналы Slack или чат‑комнаты Amazon Chime. Подробную информацию см. здесь.
Безопасность
Можно ли использовать AWS CodeDeploy для развертывания приложения на инстансах Amazon EC2, работающих в виртуальном частном облаке Amazon (VPC)?
Да, но агент AWS CodeDeploy, установленный на инстансах Amazon EC2, должен иметь доступ к публичным адресам сервисов AWS CodeDeploy и Amazon S3. Дополнительные сведения см. в разделах Конечные точки AWS CodeDeploy и Конечные точки Amazon S3.
Можно ли использовать Управление идентификацией и доступом AWS (IAM) для контроля доступа к AWS CodeDeploy?
Да. AWS CodeDeploy поддерживает разрешения на уровне ресурсов. Для каждого ресурса AWS CodeDeploy можно указать пользователей, которые имеют доступ, а также действия, которые они могут выполнять. Например, можно создать политику IAM, которая позволит пользователю осуществлять развертывание определенного приложения, но для других приложений разрешит только просматривать список редакций. Таким образом можно предотвратить случайное внесение изменений в другое приложение. Дополнительную информацию об использовании IAM с AWS CodeDeploy см. в справке по правам доступа.
Регионы
В каких регионах доступен сервис AWS CodeDeploy?
Сведения о доступности сервиса CodeDeploy по регионам см. на странице Продукты и сервисы по регионам.
Как осуществить развертывание приложения AWS CodeDeploy в нескольких регионах?
AWS CodeDeploy осуществляет развертывание на ресурсах AWS, расположенных в одном регионе. Для развертывания приложения в нескольких регионах необходимо определить приложение в требуемых конечных регионах, скопировать пакет приложения в корзину Amazon S3 в каждом регионе, а затем начать развертывание, осуществляя последовательное или параллельное развертывание во всех регионах.
Оплата
Какова стоимость использования сервиса AWS CodeDeploy?
Дополнительная плата за развертывание кода на инстансах Amazon EC2 с помощью AWS CodeDeploy отсутствует. За обновление локального инстанса с помощью AWS CodeDeploy вы платите 0,02 USD. Подробнее см. на странице цен.