Общие вопросы

Вопрос: Что представляет собой 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 в группе, например предупреждения и откаты.
 
Можно определить несколько групп развертывания для приложения, например группу отладки и рабочую группу. Информацию о тегах см. в разделе Working with Amazon EC2 Tags in the Console. Дополнительные сведения о развертывании в группах Auto Scaling см. в разделе Auto Scaling Integration.
 
Вопрос: Что такое конфигурация развертывания?
Конфигурация развертывания определяет поведение при развертывании, в том числе порядок обработки отказов, с использованием группы развертывания. Конфигурацию развертывания можно использовать для выполнения развертывания без простоев в группах развертывания с несколькими инстансами. Например, если приложение требует, чтобы не менее 50 % инстансов в группе развертывания были активны и обрабатывали трафик, это можно указать в конфигурации развертывания, чтобы развертывание не вызвало простоев в работе. Если с развертыванием или с группой развертывания не связана ни одна конфигурация развертывания, то по умолчанию AWS CodeDeploy будет выполнять развертывание на каждом инстансе по очереди.  Дополнительные сведения о конфигурации развертывания см. в разделе Работоспособность инстансов.
 
Вопрос: Какие параметры необходимо указывать для развертывания?
Для развертывания необходимо указать три параметра.
  1. Редакция: определяет, что подлежит развертыванию.
  2. Группа развертывания: определяет, где необходимо осуществить развертывание.
  3. Конфигурация развертывания: необязательный параметр, который определяет, как именно необходимо осуществить развертывание.

Вопрос: Что такое файл AppSpec?
Файл AppSpec – это файл конфигурации, содержащий список файлов, которые должны быть скопированы, и скриптов, которые должны быть выполнены. Файл AppSpec в формате YAML размещается в корневом каталоге редакции. Файл AppSpec используется агентом AWS CodeDeploy и состоит из двух разделов. В разделе файлов указаны исходные файлы редакции, которые должны быть скопированы, а также папка назначения на каждом инстансе. В разделе процедур указано расположение скриптов, которые должны выполняться на каждом этапе развертывания, в виде относительных путей, начинающихся с корневого каталога пакета редакции. Каждый этап развертывания называется событием жизненного цикла развертывания. Ниже приведен пример файла AppSpec. Дополнительные сведения о файле AppSpec, включая все параметры, которые в нем можно указать, см. в справке по файлу AppSpec.

version: 0.0

os: linux

files: 

# You can specify one or more mappings in the files section.

  - source: /

    destination: /var/www/html/WordPress

hooks:

 # The lifecycle hooks sections allows you to specify deployment scripts.

ApplicationStop: 

# Step 1: Stop Apache and MySQL if running.

    - location: helper_scripts/stop_server.sh

BeforeInstall: 

# Step 2: Install Apache and MySQL.

# You can specify one or more scripts per deployment lifecycle event.

    - location: deploy_hooks/puppet-apply-apache.sh

    - location: deploy_hooks/puppet-apply-mysql.sh 

 AfterInstall: 

# Step 3: Set permissions.

    - location: deploy_hooks /change_permissions.sh

      timeout: 30

      runas: root

# Step 4: Start the server.

    - 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. Краткий обзор сервиса см. в разделе Getting Started, который включает в себя пошаговое руководство.

Использование AWS CodeDeploy

Вопрос: Существуют ли особые требования для использования существующего инстанса Amazon EC2 с AWS CodeDeploy?
Инстанс Amazon EC2 должен быть связан с профилем инстанса IAM, и на нем должна работать поддерживаемая операционная система. Дополнительные сведения см. в разделе Use an Existing Amazon EC2 Instance.
 
Вопрос: Какие стандартные действия необходимо выполнить для развертывания приложения с помощью AWS CodeDeploy?
На следующей диаграмме показаны стандартные действия, которые необходимо выполнить во время развертывания. Задачи создания приложения и развертывания группы (определения этих терминов см. в разделе Понятия), как правило, выполняются один раз при настройке каждого приложения. Загрузка редакции и ее развертывание – повторяющиеся действия. Подробное описание каждого из этих заданий, включая пошаговые инструкции, см. в разделе Развертывание.
 
Вопрос: Как можно получить доступ к AWS CodeDeploy?
Для доступа к сервису AWS CodeDeploy можно использовать Консоль управления AWS, интерфейс командной строки AWS, пакеты 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. Готовые решения для интеграции и образцы см. на странице интеграции продукта.
 
Вопрос: Как установить приложение на инстансы, которые только что были добавлены в группу развертывания?
Чтобы установить приложение на только что добавленных инстансах, выполните развертывание последней редакции в группе развертывания. AWS CodeDeploy не развертывает последнюю редакцию на только что добавленных инстансах автоматически, за исключением инстансов Amazon EC2, запущенных в составе группы Auto Scaling.
 
Вопрос: Как AWS CodeDeploy работает с Auto Scaling?
Группу Auto Scaling можно связать с группой развертывания, чтобы при запуске новых инстансов на них устанавливалась последняя версия приложения. Каждый новый инстанс Amazon EC2, запущенный в указанной группе Auto Scaling, переводится в состояние ожидания, а затем на нем выполняется развертывание последней успешной редакции для указанной группы развертывания. Если развертывание завершается успешно, состояние инстанса Amazon EC2 изменяется на «InService». Если развертывание завершается с ошибкой, работа инстанса Amazon EC2 прекращается, запускается новый инстанс Amazon EC2 в состоянии ожидания, после чего для него запускается процесс развертывания. Дополнительные сведения о событиях жизненного цикла инстансов группы Auto Scaling см. в разделе Auto Scaling Group Lifecycle.
 
Вопрос: Как можно следить за состоянием развертывания?
Можно следить за состоянием развертывания с помощью Консоли управления AWS, интерфейса командной строки AWS (CLI), пакетов SDK AWS и API сервиса AWS CodeDeploy. Можно просматривать общее состояние развертывания, а также состояние каждого инстанса и каждого события жизненного цикла развертывания этого инстанса. Можно также просматривать записи в журнале о возникших ошибках, что позволяет без труда осуществить отладку проблем развертывания, не входя в инстанс.
 
Вопрос: Можно ли остановить выполняемое развертывание?
Да. При остановке выполняемого развертывания сервис AWS CodeDeploy передает агенту на каждом инстансе команду для прекращения выполнения дополнительных скриптов. Чтобы вернуть приложение обратно в рабочее состояние, можно осуществить повторное развертывание редакции или развертывание другой редакции.
 
Вопрос: Как выполнить откат к предыдущей редакции приложения?
Чтобы вернуть предыдущую редакцию приложения, необходимо осуществить развертывание этой редакции. AWS CodeDeploy отслеживает файлы, которые были скопированы для текущей редакции, и удаляет их перед началом нового развертывания, поэтому нет никакой разницы между осуществлением повторного развертывания и выполнением отката к предыдущей версии. При этом необходимо убедиться, что предыдущие редакции доступны для повторного развертывания.
 
Вопрос: Можно ли использовать для хранения редакций корзину Amazon S3 с контролем версий?
Да. Можно использовать корзину Amazon S3 с контролем версий и указывать идентификатор версии для однозначного определения редакции.
 
Вопрос: Какие лимиты предусмотрены для сервиса AWS CodeDeploy?
Сведения о лимитах для сервиса см. в разделе Limits. Для увеличения лимитов отправьте запрос в Центр AWS Support.
 
Вопрос: Можно ли получить журнал всех обращений 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 Virtual Private Cloud (VPC)?
Да, но агент AWS CodeDeploy, установленный на инстансах Amazon EC2, должен иметь доступ к публичным адресам сервисов AWS CodeDeploy и Amazon S3. Дополнительные сведения см. в разделах AWS CodeDeploy Endpoints и Amazon S3 Endpoints.

Вопрос: Можно ли использовать AWS Identity and Access Management (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. Подробнее см. на странице цен.

Решения для интеграции AWS CodeDeploy

Посетить страницу интеграции продукта
Готовы приступить к разработке?
Начать работу с AWS CodeDeploy
Есть вопросы?
Свяжитесь с нами