Планирование бессерверного рабочего процесса
с помощью 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, чтобы открыть консоль сервиса.
Шаг 2. Создание конечного автомата сервиса AWS Step Functions
На этом этапе вы создадите простой независимый конечный автомат, используя состояние Pass. В состоянии Pass входные данные переходят в выходные данные, то есть по сути в этом состоянии никакая работа не выполняется.
В реальной ситуации бессерверный рабочий процесс может выполнять любые задания, которые вы ему назначите. Вы можете координировать несколько функций Lambda для выполнения заданий, принятия решений и т. п. Однако в рамках этого учебного пособия рассмотрим простой рабочий процесс.
а. Откройте консоль AWS Step Functions. Step Functions предлагает различные шаблоны конечных автоматов. В рамках этого учебного пособия вы создадите конечный автомат, используя шаблон Hello World. На странице Создание конечного автомата выберите Шаблоны и Hello world.
в. Сервис Step Functions автоматически укажет имя конечного автомата. Он также заполнит поля на панели Определение конечного автомата, указав в качестве описания конечного автомата Amazon States Language. Дополнительную информацию о том, как задать определения конечных автоматов, см. в разделе Структура конечных автоматов.
Внесем некоторые простые изменения в конечный автомат.
В строках 2 и 5 замените фразу «HelloWorld» на «Do Something».
В строке 7 замените фразу «Hello World!» на «Work complete!»
Затем нажмите кнопку обновления, расположенную рядом с визуальным представлением рабочего процесса, чтобы обновить диаграмму конечного автомата и отобразить изменения.
Шаг 3. Создание правила Amazon CloudWatch Events
После создания конечного автомата вы можете создать правило Amazon CloudWatch Events для запуска конечного автомата в соответствии с планом. Amazon CloudWatch Events доставляет поток системных событий, описывающих изменения ресурсов в Amazon Web Services (AWS), в режиме, близком к реальному времени. С помощью простых быстро настраиваемых правил можно сопоставлять события и перенаправлять их в одну или несколько целевых функций или потоков.
г. В разделе Цели выберите Добавить цель. В списке выберите Конечный автомат Step Functions и выберите ScheduledWorkflow.
Выберите Настроить входные данные и нажмите Сопоставленное событие. Сведения CloudWatch Event будут передаваться в виде входных данных в Step Functions каждый раз при выполнении инстанса конечного автомата.
Выберите Создать роль для этого конкретного ресурса и щелкните Настроить сведения.
д. Откроется страница Шаг 2. Настройка сведений правила. Введите execute_state_machine в поле Название для правила, оставьте флажок Включено для автомата и выберите Создать правило.
Правило будет создано, и откроется страница Правила с перечнем всех ваших правил CloudWatch Events.
Теперь конечный автомат будет выполняться каждую минуту.
Шаг 4. Настройка обработки конечным автоматом входных и выходных данных
Теперь вы сможете настроить способ обработки конечным автоматом входных и выходных данных. Понимая, как информация перемещается между состояниями, и освоив принципы фильтрации и обработки этих данных, вы сможете эффективно разрабатывать и осуществлять рабочие процессы в AWS Step Functions.
б. В окне Определение конечного автомата перейдите к строке 7. В поле «Результат» в состоянии Pass указываются выходные данные, которые необходимо передать на следующее состояние. Поскольку наш конечный автомат содержит только одно состояние, на конечное состояние вашего рабочего процесса будет передано следующее сообщение: «Work complete!».
Напоминаем, что состояние Pass сервиса Step Functions просто передает данные со входа на выход. Чтобы изменить выходные данные состояния, можно использовать поле ResultPath. Например, можно заменить входные данные состояния на полученный результат (например, выходные данные функции состояния Task).
Чтобы объединить входные данные состояния с результатом, необходимо после строки 7 добавить новую строку и ввести следующее:
"ResultPath": "$.taskresult",
Это позволит объединить сведения CloudWatch Event, которые привели к выполнению конечного автомата с использованием выходных данных состояния Pass; в этом случае это сообщение «Work complete!». Дополнительную информацию см. в разделе Обработка входных и выходных данных в Step Functions.
Шаг 5. Подтверждение надлежащего исполнения рабочего процесса
После включения правила CloudWatch Events сервис CloudWatch запускает ежеминутное выполнение рабочего процесса конечного автомата. На этом этапе вы будете следить за этими выполнениями и проверять, чтобы сервис Step Functions собирал сведения CloudWatch Event.
б. В разделе Выполнения можно следить за выполнениями, запущенными сервисом CloudWatch Events. Нажмите кнопку обновления, чтобы обновить окно и следить за новыми выполнениями конечного автомата. Подождите пару минут, прежде чем разрешить запуск по меньшей мере двух инстансов рабочего процесса.
в. Щелкните правой кнопкой мыши по одному из выполнений и откройте ссылку в новой вкладке браузера. Повторите эти действия для другого выполнения конечного автомата.
На каждой вкладке щелкните состояние Do Something на панели визуального представления рабочего процесса, чтобы заполнить Панель сведений Step справа.
Щелкнув Входные данные, вы сможете просмотреть сведения сопоставленного события из CloudWatch. Обратите внимание на различия в событиях, такие как поля «Идентификатор» и «Время».
Шаг 6. Удаление ресурсов
На этом этапе вы удалите свои ресурсы, связанные с сервисами AWS Step Functions и Amazon CloudWatch.
Важно! Удаление неиспользуемых ресурсов позволяет сократить расходы и является рекомендованной мерой. Если не удалить ресурсы, может взиматься дополнительная плата.
б. В окне Конечные автоматы щелкните конечный автомат, созданный в рамках этого учебного пособия, и выберите Удалить. Подтвердите действие, выбрав команду Удалить конечный автомат в диалоговом окне. Ваш конечный автомат будет удален через одну-две минуты после того, как сервис Step Functions подтвердит, что все сеансы выполнения процессов завершены.
Поздравляем!
Вы успешно запланировали бессерверный рабочий процесс, который будет запускаться каждую минуту.
Сервис AWS Step Functions предоставляет возможность проверять и проводить аудит выполнения повторяющихся заданий для подтверждения их исправного выполнения. Объединив AWS Step Functions и Amazon CloudWatch Events, вы можете автоматизировать ежедневные, еженедельные и ежемесячные задания или запускать выполнение рабочего процесса Step Functions при соблюдении конкретных условий.