AWS Step Functions is a serverless orchestrator built on state machines: each step is a state that calls an AWS service or an external worker, execution history is retained and visually debuggable, and the bill is per state transition rather than per server.
Fully managed and serverless: author a state machine in Amazon States Language or the visual editor, then trigger it from the API, an EventBridge rule, or EventBridge Scheduler cron. Standard bills per state transition with 4,000 free each month; Express bills per request and GB-second. Your own code runs in Lambda, containers, or any polling activity worker.
How AWS Step Functions answers the questions Workflow Orchestration turns on.
| How it works | |
| Authoring model | A state machine in Amazon States Language, with a visual editor over it |
| Unit of work | A state in a state machine, a Task that calls something, plus seven flow states: Choice, Parallel, Map, Pass, Wait, Succeed and Fail. Map runs inline or as a Distributed Map for large fan-out, up to 10,000 parallel children |
| Passing data | JSON travelling between states and hard-capped at 256 KiB for any state input or output, with no offload, past that you pass an S3 pointer instead. Shaping is either JSONPath's five fields or JSONata's Arguments and Output, picked per state machine or per state through QueryLanguage, with Assign holding variables |
| Triggers | StartExecution from the API or SDK, an EventBridge rule over 140+ event sources, EventBridge Scheduler for cron and rate expressions, API Gateway, or a parent state machine, there is no scheduler inside Step Functions itself |
| Delivery guarantee | Standard is exactly-once; asynchronous Express at-least-once · synchronous Express at-most-once |
| Caching and reruns | No caching of any kind. The rerun primitive is redrive (restart a failed Standard execution from the step that failed, keeping the successful results and the same execution ARN) and it is gone 14 days after the execution closes, never available on Express, and bills the transitions again |
| Running it | |
| Where tasks run | AWS runs the engine: states call over 200 services directly, with no substrate to size |
| Connections | |
| Task languages | None: Step Functions runs no code of yours. Lambda brings its own runtimes, ECS and EKS bring containers, and an Activity worker is any program that can make an HTTP connection, hosted anywhere, polling for work. The only authoring inside the service is JSONata or JSONPath over the data |
| Connectors | Over nine thousand API actions across more than two hundred AWS services through SDK integrations, a smaller optimized set adding run-a-job and wait-for-callback patterns, and an HTTP Task for third-party or private HTTPS APIs, capped at 60 seconds |
| Cost | |
| Billing unit | Standard bills per state transition at $0.000025, with 4,000 free every month that never expire; Express bills $1.00 a million requests plus $0.00001667 a GB-second in 64MB chunks and has no free tier. Choosing the workflow type changes the cost model, not the rate |
vs AWS Step Functions: Open source (permissive) · Self-hosted · Managed · Free · Operational complexity: High · Python, TypeScript
vs AWS Step Functions: Open source (permissive) · Self-hosted · Free · Operational complexity: High · Java
vs AWS Step Functions: Open source (permissive) · Self-hosted · Free · Operational complexity: High · Go