0Pricing
AWS Solutions Architect · Урок

Step Functions: оркестрация бессерверных рабочих процессов

Определяйте многоэтапные рабочие процессы как конечные автоматы в Step Functions, обрабатывайте ошибки блоками перехвата и повторных попыток и интегрируйте встроенные вызовы SDK.

«Step Functions: оркестрация бессерверных рабочих процессов» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Solutions Architect, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Solutions Architect содержит 4 уроков всего.

Что такое AWS Step Functions?

AWS Step Functions — это полностью управляемый сервис оркестрации рабочих процессов, который координирует распределённые приложения как последовательность этапов, определённых в конечном автомате. Каждый этап конечного автомата — это состояние: вызов Lambda, вызов AWS SDK, ожидание, параллельная ветвь или выбор (if/else). Step Functions управляет состоянием, обрабатывает повторные попытки и предоставляет визуальную историю выполнения, поэтому писать логику оркестрации в коде приложения не требуется.

Amazon States Language (ASL)

Конечные автоматы определяются в Amazon States Language (ASL) — языке на основе JSON. У каждого состояния есть Type (Task, Choice, Wait, Parallel, Map, Pass, Succeed, Fail), после чего выполняется переход в состояние Next или работа завершается. Поле Resource состояния Task указывает вызываемый сервис AWS: ARN для Lambda или оптимизированный ARN интеграции с сервисом для более чем 200 сервисов AWS без промежуточной Lambda.

{
  'Comment': 'Order processing workflow',
  'StartAt': 'ValidateOrder',
  'States': {
    'ValidateOrder': {
      'Type': 'Task',
      'Resource': 'arn:aws:lambda:us-east-1:123456789012:function:ValidateOrder',
      'Next': 'ChargePayment',
      'Retry': [{'ErrorEquals': ['Lambda.ServiceException'], 'IntervalSeconds': 2, 'MaxAttempts': 3}]
    },
    'ChargePayment': {
      'Type': 'Task',
      'Resource': 'arn:aws:states:::dynamodb:putItem',
      'Parameters': {'TableName': 'Orders', 'Item': {'orderId': {'S.$': '$.orderId'}}},
      'End': true
    }
  }
}

Рабочие процессы Standard и Express

В Step Functions есть два типа рабочих процессов. Рабочие процессы Standard: надёжное выполнение, длительность до 1 года, семантика выполнения ровно один раз, полная история выполнения хранится 90 дней — подходят для длительных бизнес-процессов. Рабочие процессы Express: высокая пропускная способность (более 100 000 выполнений в секунду), длительность до 5 минут, семантика выполнения как минимум один раз, журналы отправляются в CloudWatch — подходят для обработки событий в реальном времени и конвейеров данных IoT. Выбирайте тип с учётом длительности, пропускной способности и требований к идемпотентности.

# Create a Standard workflow state machine
aws stepfunctions create-state-machine \
  --name OrderProcessing \
  --definition file://order-state-machine.json \
  --role-arn arn:aws:iam::123456789012:role/StepFunctionsRole \
  --type STANDARD

# Create an Express workflow for high-throughput
aws stepfunctions create-state-machine \
  --name ClickstreamProcess \
  --definition file://click-state-machine.json \
  --role-arn arn:aws:iam::123456789012:role/StepFunctionsRole \
  --type EXPRESS

Состояния Task и интеграции с сервисами

Состояния Task в Step Functions поддерживают два шаблона интеграции. Запрос-ответ: вызовите сервис AWS и сразу продолжите выполнение (отправка без ожидания результата). Синхронная интеграция: вызовите сервис и дождитесь его завершения перед переходом к следующему состоянию (например, дождитесь завершения задачи ECS, задания Glue или обучения SageMaker). Синхронная интеграция использует суффикс :sync:2 в ARN ресурса и устраняет необходимость в логике периодического опроса.

# Sync integration: start Glue job and wait for completion
'RunGlueETL': {
  'Type': 'Task',
  'Resource': 'arn:aws:states:::glue:startJobRun.sync:2',
  'Parameters': {
    'JobName': 'clean-sales'
  },
  'Next': 'RunAthenaQuery'
}

Состояния Choice для ветвления логики

Состояние Choice реализует условное ветвление — это аналог конструкции if/else или switch в рабочем процессе. Вы задаёте Choices как массив условий; первое совпавшее условие определяет следующее состояние. Состояние Default обрабатывает случаи, для которых не найдено совпадение. Состояния Choice позволяют направлять заказ по разным путям выполнения в зависимости от типа товара, уровня клиента или статуса платежа — без написания условной логики в Lambda.

'RouteByOrderType': {
  'Type': 'Choice',
  'Choices': [
    {
      'Variable': '$.orderType',
      'StringEquals': 'DIGITAL',
      'Next': 'FulfillDigital'
    },
    {
      'Variable': '$.orderType',
      'StringEquals': 'PHYSICAL',
      'Next': 'FulfillPhysical'
    }
  ],
  'Default': 'HandleUnknownType'
}

Состояния Parallel и Map

Состояние Parallel одновременно выполняет несколько ветвей и ждёт завершения всех перед продолжением. Это полезно для параллельных задач, например одновременной проверки кредитоспособности и запасов. Состояние Map перебирает массив во входных данных и параллельно применяет один и тот же набор состояний к каждому элементу. Оно удобно для обработки пакета элементов, возвращённых предыдущим этапом, например для изменения размера нескольких загруженных изображений.

'ProcessImages': {
  'Type': 'Map',
  'ItemsPath': '$.imageKeys',
  'MaxConcurrency': 10,
  'Iterator': {
    'StartAt': 'ResizeImage',
    'States': {
      'ResizeImage': {
        'Type': 'Task',
        'Resource': 'arn:aws:lambda:us-east-1:123:function:ResizeImage',
        'End': true
      }
    }
  },
  'Next': 'NotifyComplete'
}

Обработка ошибок: Catch и Retry

У каждого состояния Task в Step Functions могут быть блоки Retry и Catch для устойчивой обработки ошибок. Retry указывает типы ошибок, которые запускают автоматические повторные попытки, и позволяет настроить IntervalSeconds, MaxAttempts и BackoffRate (множитель экспоненциального увеличения интервала). Catch задаёт резервные состояния для невосстановимых ошибок. Такая декларативная обработка ошибок избавляет от повторяющихся блоков try/catch внутри функций Lambda.

'ChargeCard': {
  'Type': 'Task',
  'Resource': 'arn:aws:lambda:us-east-1:123:function:ChargeCard',
  'Retry': [{
    'ErrorEquals': ['Lambda.ServiceException', 'States.TaskFailed'],
    'IntervalSeconds': 2,
    'MaxAttempts': 3,
    'BackoffRate': 2.0
  }],
  'Catch': [{
    'ErrorEquals': ['PaymentDeclined'],
    'Next': 'NotifyPaymentFailed',
    'ResultPath': '$.error'
  }],
  'Next': 'FulfillOrder'
}

Состояния Wait и обратные вызовы

Состояние Wait приостанавливает выполнение рабочего процесса на заданный период или до определённой отметки времени. Шаблон Callback (с использованием .waitForTaskToken) приостанавливает выполнение, пока внешняя система не вызовет SendTaskSuccess или SendTaskFailure, передав токен. Так Step Functions моделирует этапы согласования человеком: отправьте электронное письмо с токеном задачи, и рабочий процесс продолжится, когда человек нажмёт ссылку подтверждения или отклонения в своём почтовом клиенте.

# Callback pattern: wait for human approval
'RequestApproval': {
  'Type': 'Task',
  'Resource': 'arn:aws:states:::sqs:sendMessage.waitForTaskToken',
  'Parameters': {
    'QueueUrl': 'https://sqs.us-east-1.amazonaws.com/123/approvals',
    'MessageBody': {
      'taskToken.$': '$$.Task.Token',
      'orderId.$': '$.orderId'
    }
  },
  'Next': 'ProcessApproval'
}

Интеграция Step Functions и EventBridge

Запуск выполнения Step Functions может инициироваться правилами EventBridge, что упрощает запуск рабочих процессов в ответ на события сервисов AWS. Например, событие S3 ObjectCreated запускает правило EventBridge, которое начинает рабочий процесс обработки изображений в Step Functions. Step Functions также может публиковать собственные события в EventBridge при успешном или неуспешном выполнении, обеспечивая последующий мониторинг и оповещения без периодического опроса API Step Functions.

Мониторинг выполнений Step Functions

Консоль Step Functions предоставляет визуальную схему выполнения рабочего процесса, показывающую, какое состояние завершилось успешно, какое выполняется, а какое завершилось ошибкой; состояния выделяются цветом в реальном времени. Для каждого выполнения сохраняется полная история входных и выходных данных рабочих процессов Standard (срок хранения — 90 дней). Для рабочих процессов Express журналы отправляются в CloudWatch Logs. Используйте трассировку X-Ray, чтобы отслеживать задержку запроса от начала до конца в функциях Lambda и других сервисах, вызываемых в рабочем процессе.

# List recent executions and check status
aws stepfunctions list-executions \
  --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:OrderProcessing \
  --status-filter FAILED

# Describe a specific failed execution for debugging
aws stepfunctions describe-execution \
  --execution-arn arn:aws:states:us-east-1:123456789012:execution:OrderProcessing:exec-001

Step Functions, SQS и EventBridge

Понимание того, когда использовать Step Functions, а когда SQS или EventBridge, — частая тема экзаменационных вопросов. Используйте Step Functions, когда требуется наглядная оркестрация процесса из нескольких этапов с сохранением состояния, обработкой ошибок и ветвлением. Используйте SQS для надёжного асинхронного обмена сообщениями «точка — точка» между двумя сервисами с повторными попытками через тайм-аут видимости. Используйте EventBridge для маршрутизации событий нескольким подписчикам на основе шаблонов содержимого. Рабочий процесс Step Functions может объединять все три сервиса: ожидать сообщение SQS с помощью токена задачи, публиковать завершение в EventBridge и объединять вызовы Lambda и SDK в цепочку.

Быстрая проверка

Проверьте своё понимание концепций AWS и архитектора решений (SAA-C03) из этого урока.

Итоги урока

В этом уроке Вы узнали, что Step Functions оркестрирует рабочие процессы как конечные автоматы с состояниями Task, Choice, Parallel, Map, Wait и Catch, Standard Workflows поддерживают выполнение длительностью до 1 года с полной историей выполнения, а Express Workflows предназначены для высокопроизводительных рабочих нагрузок длительностью менее 5 минут, а также что шаблон Callback с токенами задач позволяет добавлять этапы согласования с участием человека. Далее мы рассмотрим Kinesis Data Streams для обработки событий в реальном времени с высокой пропускной способностью.

Часто задаваемые вопросы

Урок «Step Functions: оркестрация бессерверных рабочих процессов» бесплатный?

Да — полный текст урока «Step Functions: оркестрация бессерверных рабочих процессов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.

Чему я научусь в уроке «Step Functions: оркестрация бессерверных рабочих процессов»?

Определяйте многоэтапные рабочие процессы как конечные автоматы в Step Functions, обрабатывайте ошибки блоками перехвата и повторных попыток и интегрируйте встроенные вызовы SDK. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AWS Solutions Architect?

Предыдущий опыт не требуется. AWS Solutions Architect на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Step Functions: оркестрация бессерверных рабочих процессов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AWS Solutions Architect?

Да. Каждый урок AWS Solutions Architect включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. EventBridge: шина событий и правила
  2. Step Functions: оркестрация бессерверных рабочих процессов
  3. Kinesis Data Streams для обработки событий в реальном времени
  4. Шаблоны хореографии и оркестрации
← Назад к AWS Solutions Architect