Антон Долганин

Я инженер, который решает задачи, а не пишет на языке. Архитектура, разработка, DevOps — подбираю инструменты под цель, строю решения, которые работают в проде и масштабируются без боли.

Зачем: Обрабатывай массив задач параллельно в serverless-стиле. Подходит для пакетной обработки (batch из S3/SQS/DynamoDB), массовых API вызовов или генерации отчётов.

Best Practices:

  • Используй Map в режиме distributed, а не inline, если итераций больше 40.
  • Подключай Lambda, ECS или даже вложенные Step Functions.
  • Настраивай maxConcurrency, чтобы не перегрузить зависимости.

Use case: Ты получаешь 1000 заказов → Step Function обрабатывает каждый из них отдельно (в параллель), логируя успех/фейл.

Пример JSON-фрагмента Map state:

{
  "Type": "Map",
  "InputPath": "$.items",
  "ItemsPath": "$",
  "MaxConcurrency": 10,
  "Iterator": {
    "StartAt": "ProcessItem",
    "States": {
      "ProcessItem": {
        "Type": "Task",
        "Resource": "arn:aws:lambda:region:account:function:processItem",
        "End": true
      }
    }
  },
  "End": true
}

Итог: подаешь items: [1,2,3,4,...] — и Step Functions сам запускает processItem Lambda для каждого.

Step Functions + Map State = массовый параллельный fan-out