#amazon-web-services #aws-step-functions
#amazon-веб-сервисы #aws-пошаговые функции
Вопрос:
У меня есть три шага в моей среде AWS:
- Шаг 1 выполняется синхронно
- Шаг 2 выполняется после шага 1 и является асинхронным, который принимает входные данные с шага 1, кодирует аудиофайл и помещает закодированный файл на S3.
- Шаг 3 должен выполняться после того, как Шаг 2 примет входные данные как из шага 1, так и из закодированного файла на S3, созданного на шаге 2.
Как я должен это реализовать? Я хочу использовать пошаговые функции, но у меня есть асинхронный шаг 2, с которым я не уверен, как справиться.
Ответ №1:
Вы можете достичь этого, выполнив действия по выполнению задач.
Работником activity может быть приложение, запущенное на экземпляре Amazon EC2, функция AWS Lambda, мобильное устройство: любое приложение, которое может устанавливать HTTP-соединение, размещенное где угодно. Когда Step Functions достигает состояния задачи activity, рабочий процесс ожидает, пока activity worker проведет опрос для задачи. Рабочий activity опрашивает пошаговые функции с помощью GetActivityTask и отправляет ARN для соответствующего действия. GetActivityTask возвращает ответ, включающий входные данные (строку ввода в формате JSON для задачи) и taskToken (уникальный идентификатор для задачи). После того, как activity worker завершит свою работу, он может предоставить отчет о своем успехе или сбое с помощью SendTaskSuccess или SendTaskFailure. Эти два вызова используют taskToken, предоставляемый GetActivityTask, чтобы связать результат с этой задачей.
Предполагается, что шаг 3 является задачей activity. Рабочий, вызванный на шаге 2, опросит действие, созданное на шаге 3, и после завершения своей работы сообщит об активности на шаге 3, используя SendTaskSuccess или SendTaskFailure в зависимости от результатов рабочего процесса.
Комментарии:
1. Почему шаг 3 является задачей activity, а не шагом 2? Шаг 2 является асинхронным, шаг 3 — нет.
2. Пошаговые функции могут использовать только один ресурс. Если предполагается, что шаг 2 запускает асинхронное рабочее задание, то его также нельзя использовать для задания activity.