Синхронный / асинхронный поток AWS

#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.