AWS Step Functions is a fully managed serverless orchestration service that lets you coordinate distributed applications and microservices using visual state machine workflows defined in the Amazon States Language (ASL). It eliminates the need to write custom coordination code for retry logic, error handling, and parallel execution. The critical mental model to grasp early: Step Functions bills Standard Workflows per state transition (not per execution), so workflow design choices — whether to use Express vs. Standard, polling vs. callbacks, or nested child executions — directly shape your monthly cost.
What This Cheat Sheet Covers
This topic spans 17 focused tables and 165 indexed concepts, 124 flashcards. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
A jump-to index of every table row in this cheat sheet.
An interactive map of every table and concept in this topic.
Table 1: State Machine Core Concepts
The foundational vocabulary of Step Functions is built around state machines, states, and executions. Understanding how executions flow, how input and output travel between states, and what the Amazon States Language (ASL) requires gives you the frame to read and write any workflow definition.
| Concept | Example | Description | |
|---|---|---|---|
{"StartAt": "Hello", "States": {...}} | A JSON (ASL) definition of a workflow — a collection of named states that chain together via Next or End: true. | ||
"MyState": {"Type": "Task", ...} | • A single step in a workflow • each state has a Type and optionally Next or End: true. State names must be unique within the machine | ||
aws stepfunctions start-execution --state-machine-arn ... | • A single run of a state machine with a specific input • Standard executions retain history for 90 days | ||
{"Comment": "...", "StartAt": "S1", "States": {...}} | • The JSON specification used to define state machines • Files must be saved with .asl.json extension outside the console | ||
"StartAt": "FirstState" | • Required top-level field • names the first state to run • Case-sensitive and must match a state name exactly | ||
"Next": "ProcessData" | • Directs execution to the named next state after this state completes • required unless End: true. | ||
"End": true | • Marks this state as a terminal state • execution completes successfully when this state finishes | ||
"Comment": "Processes order data" | • Optional human-readable annotation on state machines or individual states • ignored at runtime | ||
"QueryLanguage": "JSONata" | Top-level or per-state field to select "JSONPath" (default) or "JSONata" for data querying and transformation. | ||
"TaskToken.$": "$$.Task.Token" | Internal JSON object accessible via $$ prefix containing execution metadata — ID, name, role ARN, and the current task token. | ||
"TimeoutSeconds": 300 | • Sets a maximum wall-clock duration for a state or the entire state machine • triggers States.Timeout if exceeded. Always set this — without it a stuck task waits up to one year |