Планирование бессерверного рабочего процесса

с помощью AWS Step Functions и Amazon CloudWatch

Автоматизация действий в ответ на операционные события в аккаунте AWS может помочь снизить операционные расходы на инфраструктуру облака AWS. Например, как инженеру DevOps или менеджеру ИТ-отдела вам может понадобится автоматизировать процесс управления исправлениями, задания ETL, синхронизацию данных или процессы обеспечения безопасности.

Для этого вы можете запустить бессерверный рабочий процесс по повременному плану. Amazon CloudWatch Events генерирует поток системных событий, описывающих изменения и уведомления для ресурсов AWS, в режиме, близком к реальному времени. Для этого потока можно создать правила направления конкретных событий в AWS Step Functions и вызова конечного автомата для дальнейшей обработки. Сервис AWS Step Functions позволяет объединить множество сервисов в бессерверные рабочие процессы для быстрого создания и обновления автоматизированных процессов.

В рамках этого учебного пособия вы будете использовать сервис Step Functions для организации бессерверных рабочих процессов в ответ на событие CloudWatch. Сначала вы создадите очень простой конечный автомат с помощью сервиса AWS Step Functions. Затем с помощью сервиса Amazon CloudWatch Events вы создадите правило ежеминутного запуска конечного автомата. Поскольку в этом учебном пособии используется рабочий процесс по повременному плану, его можно использовать и для интеграции с другими сервисами AWS для генерирования событий.

В рамках этого учебного пособия вы будете использовать сервис AWS Step Functions и Amazon CloudWatch. Оба сервиса предоставляются на уровне бесплатного пользования AWS.

Для работы с этим учебным пособием необходим аккаунт AWS

За использование сервисов Step Functions и CloudWatch дополнительная плата не взимается. Ресурсы, которые вы создаете в рамках обучения по этому пособию, доступны для уровня бесплатного пользования. 

Подробнее об уровне бесплатного пользования >>


Шаг 1. Создание роли AWS Identity and Access Management (IAM)

Сервис AWS Step Functions может выполнять код и получать доступ к другим ресурсам AWS (например, к данным, хранящимся в корзинах Amazon S3). Чтобы поддерживать надлежащий уровень безопасности, необходимо предоставить сервису Step Functions доступ к этим ресурсам с помощью AWS Identity and Access Management (IAM).


а. Откройте консоль управления AWS в другом окне браузера, оставив это пошаговое руководство открытым. Когда стартовый экран загрузится, введите имя пользователя и пароль, чтобы начать работу. Затем введите в строке поиска слово IAM и выберите пункт IAM, чтобы открыть консоль сервиса.

01a
01a

(Щелкните, чтобы увеличить изображение.)


b.  Щелкните Roles (Роли) и выберите пункт Create Role (Создать роль).

01b
01b

(Щелкните, чтобы увеличить изображение.)


в. На странице Выбор типа доверенного объекта в разделе «Сервисе AWS» в списке выберите пункт Step Functions и выберите Далее: разрешения.

01c
01c

(Щелкните, чтобы увеличить изображение.)


d. На странице Attach permissions policy (Прикрепление политики разрешений) нажмите кнопку Next: Review (Далее: проверка).

01d
01d

(Щелкните, чтобы увеличить изображение.)


e. На странице Review (Проверка) введите значение step_functions_basic_execution для параметра Role name (Имя роли) и щелкните Create role (Создать роль).

01e
01e

(Щелкните, чтобы увеличить изображение.)


е. Будет создана новая роль IAM.

01f
01f

(Щелкните, чтобы увеличить изображение.)


Шаг 2. Создание конечного автомата сервиса AWS Step Functions

На этом этапе вы создадите простой независимый конечный автомат, используя состояние Pass. В состоянии Pass входные данные переходят в выходные данные, то есть по сути в этом состоянии никакая работа не выполняется.

В реальной ситуации бессерверный рабочий процесс может выполнять любые задания, которые вы ему назначите. Вы можете координировать несколько функций Lambda для выполнения заданий, принятия решений и т. п. Однако в рамках этого учебного пособия рассмотрим простой рабочий процесс.


а. Откройте консоль AWS Step Functions. Step Functions предлагает различные шаблоны конечных автоматов. В рамках этого учебного пособия вы создадите конечный автомат, используя шаблон Hello World. На странице Создание конечного автомата выберите Шаблоны и Hello world.

02c
02c

(Щелкните, чтобы увеличить изображение.)


б. В разделе Сведения в поле Имя для конечного автомата введите ScheduledWorkflow, затем в разделе Роль IAM выберите Использовать текущую роль. В разделе Текущие роли IAM выберите созданную роль IAM step_functions_basic_execution.

02d
02d

(Щелкните, чтобы увеличить изображение.)


в. Сервис Step Functions автоматически укажет имя конечного автомата. Он также заполнит поля на панели Определение конечного автомата, указав в качестве описания конечного автомата Amazon States Language. Дополнительную информацию о том, как задать определения конечных автоматов, см. в разделе Структура конечных автоматов.

Внесем некоторые простые изменения в конечный автомат.

В строках 2 и 5 замените фразу «HelloWorld» на «Do Something».
В строке 7 замените фразу «Hello World!» на «Work complete!»

Затем нажмите кнопку обновления, расположенную рядом с визуальным представлением рабочего процесса, чтобы обновить диаграмму конечного автомата и отобразить изменения.

02e
02e

(Щелкните, чтобы увеличить изображение.)


г. Выберите Создать конечный автомат. Теперь конечный автомат готов к выполнению.

02f
02f

(Щелкните, чтобы увеличить изображение.)


Шаг 3. Создание правила Amazon CloudWatch Events

После создания конечного автомата вы можете создать правило Amazon CloudWatch Events для запуска конечного автомата в соответствии с планом. Amazon CloudWatch Events доставляет поток системных событий, описывающих изменения ресурсов в Amazon Web Services (AWS), в режиме, близком к реальному времени. С помощью простых быстро настраиваемых правил можно сопоставлять события и перенаправлять их в одну или несколько целевых функций или потоков.


а. Откройте новую вкладку браузера. Перейдите на консоль CloudWatch Events, введя в строку поиска CloudWatch.

03a
03a

(Щелкните, чтобы увеличить изображение.)


б. Выберите События, а затем – Создать правило.  

03b
03b

(Щелкните, чтобы увеличить изображение.)


в. Откроется страница Шаг 1. Создание правила. В разделе Источник события выберите План. В поле Фиксированная скорость для введите 1 и в качестве единиц измерения оставьте «Минуты».

03c
03c

(Щелкните, чтобы увеличить изображение.)


г. В разделе Цели выберите Добавить цель. В списке выберите Конечный автомат Step Functions и выберите ScheduledWorkflow.

Выберите Настроить входные данные и нажмите Сопоставленное событие. Сведения CloudWatch Event будут передаваться в виде входных данных в Step Functions каждый раз при выполнении инстанса конечного автомата.

Выберите Создать роль для этого конкретного ресурса и щелкните Настроить сведения.

03d
03d

(Щелкните, чтобы увеличить изображение.)


д. Откроется страница Шаг 2. Настройка сведений правила. Введите execute_state_machine в поле Название для правила, оставьте флажок Включено для автомата и выберите Создать правило.

Правило будет создано, и откроется страница Правила с перечнем всех ваших правил CloudWatch Events.

Теперь конечный автомат будет выполняться каждую минуту.

03e
03e

(Щелкните, чтобы увеличить изображение.)


Шаг 4. Настройка обработки конечным автоматом входных и выходных данных

Теперь вы сможете настроить способ обработки конечным автоматом входных и выходных данных. Понимая, как информация перемещается между состояниями, и освоив принципы фильтрации и обработки этих данных, вы сможете эффективно разрабатывать и осуществлять рабочие процессы в AWS Step Functions.


а. Вернитесь на консоль Step Functions, где все еще должен отображаться конечный автомат ScheduledWorkflow. Щелкните Редактировать.

04a
04a

(Щелкните, чтобы увеличить изображение.)


б. В окне Определение конечного автомата перейдите к строке 7. В поле «Результат» в состоянии Pass указываются выходные данные, которые необходимо передать на следующее состояние. Поскольку наш конечный автомат содержит только одно состояние, на конечное состояние вашего рабочего процесса будет передано следующее сообщение: «Work complete!».

Напоминаем, что состояние Pass сервиса Step Functions просто передает данные со входа на выход. Чтобы изменить выходные данные состояния, можно использовать поле ResultPath. Например, можно заменить входные данные состояния на полученный результат (например, выходные данные функции состояния Task).

Чтобы объединить входные данные состояния с результатом, необходимо после строки 7 добавить новую строку и ввести следующее:

"ResultPath": "$.taskresult",

Это позволит объединить сведения CloudWatch Event, которые привели к выполнению конечного автомата с использованием выходных данных состояния Pass; в этом случае это сообщение «Work complete!». Дополнительную информацию см. в разделе Обработка входных и выходных данных в Step Functions.

04b
04b

(Щелкните, чтобы увеличить изображение.)


в. Щелкните Сохранить.

04c
04c

(Щелкните, чтобы увеличить изображение.)


Шаг 5. Подтверждение надлежащего исполнения рабочего процесса

После включения правила CloudWatch Events сервис CloudWatch запускает ежеминутное выполнение рабочего процесса конечного автомата. На этом этапе вы будете следить за этими выполнениями и проверять, чтобы сервис Step Functions собирал сведения CloudWatch Event.


а. Вернитесь на консоль Step Functions, щелкните ScheduledWorkflow в строке навигации вверху страницы.

05a
05a

(Щелкните, чтобы увеличить изображение.)


б. В разделе Выполнения можно следить за выполнениями, запущенными сервисом CloudWatch Events. Нажмите кнопку обновления, чтобы обновить окно и следить за новыми выполнениями конечного автомата. Подождите пару минут, прежде чем разрешить запуск по меньшей мере двух инстансов рабочего процесса.

05b
05b

(Щелкните, чтобы увеличить изображение.)


в. Щелкните правой кнопкой мыши по одному из выполнений и откройте ссылку в новой вкладке браузера. Повторите эти действия для другого выполнения конечного автомата.

На каждой вкладке щелкните состояние Do Something на панели визуального представления рабочего процесса, чтобы заполнить Панель сведений Step справа.

Щелкнув Входные данные, вы сможете просмотреть сведения сопоставленного события из CloudWatch. Обратите внимание на различия в событиях, такие как поля «Идентификатор» и «Время».

05c
05c

(Щелкните, чтобы увеличить изображение.)


г. На каждой вкладке разверните пункт Выходные данные на панели сведений Step. Здесь можно увидеть, что входящие данные были объединены с выходящими данными в состоянии Do Something.

05d
05d

(Щелкните, чтобы увеличить изображение.)


Шаг 6. Удаление ресурсов

На этом этапе вы удалите свои ресурсы, связанные с сервисами AWS Step Functions и Amazon CloudWatch.

Важно! Удаление неиспользуемых ресурсов позволяет сократить расходы и является рекомендованной мерой. Если не удалить ресурсы, может взиматься дополнительная плата.


а. Закройте вкладки отдельных выполнений конечных автоматов. В верхней части окна Step Functions щелкните пункт Конечные автоматы.

06a
06a

(Щелкните, чтобы увеличить изображение.)


б. В окне Конечные автоматы щелкните конечный автомат, созданный в рамках этого учебного пособия, и выберите Удалить. Подтвердите действие, выбрав команду Удалить конечный автомат в диалоговом окне. Ваш конечный автомат будет удален через одну-две минуты после того, как сервис Step Functions подтвердит, что все сеансы выполнения процессов завершены.

06b
06b

(Щелкните, чтобы увеличить изображение.)


в. Далее удалите правило Amazon CloudWatch Events. На консоли CloudWatch щелкните Действия и щелкните Удалить. Подтвердите удаление, еще раз щелкнув Удалить.

06c
06c

(Щелкните, чтобы увеличить изображение.)


г. Щелкните Сервисы и в строке поиска введите IAM, чтобы перейти к консоли IAM.

06d

(Щелкните, чтобы увеличить изображение.)


д. Щелкните Роли.

06e
06e

(Щелкните, чтобы увеличить изображение.)


е) Выберите обе роли IAM, которые вы создали для работы с данным учебным пособием, а затем нажмите Удалить роль. Подтвердите удаление, нажав пункт Да, удалить в диалоговом окне.

Теперь можно выйти из консоли управления AWS.

06f
06f

(Щелкните, чтобы увеличить изображение.)


Поздравляем!

Вы успешно запланировали бессерверный рабочий процесс, который будет запускаться каждую минуту.
Сервис AWS Step Functions предоставляет возможность проверять и проводить аудит выполнения повторяющихся заданий для подтверждения их исправного выполнения. Объединив AWS Step Functions и Amazon CloudWatch Events, вы можете автоматизировать ежедневные, еженедельные и ежемесячные задания или запускать выполнение рабочего процесса Step Functions при соблюдении конкретных условий.


Была ли полезной информация, представленная в этом учебном пособии?