Вопрос: Что представляет собой AWS CodeDeploy?
AWS CodeDeploy – сервис, автоматизирующий развертывание кода в любом инстансе, включая инстансы Amazon EC2 и инстансы, работающие локально. 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.

Вопрос: Что такое группа развертывания?
Группа развертывания – это набор инстансов, которые связаны с приложением, предназначенным для развертывания. Можно добавить инстансы в группу развертывания, указав тег, название группы Auto Scaling или оба этих признака. Можно определить несколько групп развертывания для приложения, например группу отладки и рабочую группу. Информацию о тегах см. в разделе Работа с тегами Amazon EC2 в Консоли. Дополнительные сведения о развертывании в группах Auto Scaling см. в разделе Интеграция с Auto Scaling.

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

Вопрос: Какие параметры необходимо указывать для развертывания?
Есть три параметра, которые указываются для развертывания:

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

version: 0.0

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

Вопрос: Существуют ли особые требования для использования существующего инстанса Amazon EC2 с AWS CodeDeploy?
Инстанс Amazon EC2 должен быть связан с профилем инстанса IAM, и на нем должна работать поддерживаемая операционная система. Дополнительные сведения см. в разделе Использование существующего инстанса Amazon EC2.

Вопрос: Какие шаги обычно необходимо выполнить для развертывания приложения с помощью 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 для хранения редакций см. в разделе Запуск редакции.

Вопрос: Как 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?
Группу Auto Scaling можно связать с группой развертывания для гарантии того, что на новых запущенных инстансах всегда будет установлена последняя версия приложения. Каждый раз при запуске нового инстанса Amazon EC2 для указанной группы Auto Scaling он сначала будет переведен в состояние ожидания, после чего на этом инстансе Amazon EC2 будет запущена процедура развертывания последней успешной редакции для указанной группы развертывания. Если развертывание завершается успешно, состояние инстанса Amazon EC2 изменяется на «InService». Если развертывание завершается с ошибкой, работа инстанса Amazon EC2 прекращается, запускается новый инстанс Amazon EC2 в состоянии ожидания, после чего для этого только что созданного инстанса EC2 запускается процесс развертывания. Дополнительные сведения о событиях жизненного цикла инстансов группы Auto Scaling см. в разделе Жизненный цикл группы Auto Scaling.

Вопрос: Как можно следить за состоянием развертывания?
Можно следить за состоянием развертывания с помощью Консоли управления AWS, интерфейса командной строки AWS, пакетов SDK AWS и API AWS CodeDeploy. Вы можете видеть общее состояние развертывания, а также перейти к более детальному просмотру состояния каждого инстанса и состояния каждого события жизненного цикла развертывания этого инстанса. Можно также посмотреть записи логов о возникших ошибках, что позволяет легко осуществить отладку проблем развертывания без необходимости входа в инстанс.

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

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

Вопрос: Можно ли использовать для хранения редакций корзину Amazon S3 с контролем версий?
Да. Можно использовать корзину Amazon S3 с контролем версий и указывать идентификатор версии для однозначного определения редакции.

Вопрос: Какие имеются ограничения в работе сервиса AWS CodeDeploy?
Сведения об ограничениях сервиса см. на странице Ограничения. Для увеличения предельных значений ограничений отправьте запрос в AWS Support Center.

Вопрос: Можно ли получить журнал всех обращений API AWS CodeDeploy своего аккаунта для анализа уровня безопасности и текущего устранения неполадок?
Да. Для получения истории вызовов API AWS CodeDeploy вашего аккаунта включите сервис AWS CloudTrail в Консоли управления AWS.

Вопрос: Можно ли использовать AWS CodeDeploy для развертывания приложения на инстансах Amazon EC2, работающих в виртуальном частном облаке Amazon (VPC)?
Да, но агент AWS CodeDeploy, установленный на инстансах Amazon EC2, должен иметь возможность получить доступ к публичным конечным точкам сервисов AWS CodeDeploy и Amazon S3. Дополнительные сведения см. в разделах Конечные точки AWS CodeDeploy и Конечные точки Amazon S3.

Вопрос: Можно ли использовать 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. Дополнительную информацию см. на странице цен.