[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-step-functions":3,"mdc-9fdpqz-key":34,"related-repo-aws-labs-step-functions":2276,"related-org-aws-labs-step-functions":2375},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"step-functions","build workflows with AWS Step Functions","Design and build AWS Step Functions workflows. Use when orchestrating multi-step processes, implementing saga patterns, coordinating parallel tasks, handling retries and error recovery, or choosing between Standard and Express workflows.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"aws-labs","AWS Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faws-labs.png","awslabs",[13,17,20],{"name":14,"slug":15,"type":16},"Automation","automation","tag",{"name":18,"slug":19,"type":16},"Orchestration","orchestration",{"name":21,"slug":22,"type":16},"AWS","aws",14,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fstartups","2026-07-12T08:40:58.865642",null,15,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"Official AWS Startups repository that hosts plugins, skills, tools and resources to support startup builders on AWS","https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fstartups\u002Ftree\u002FHEAD\u002Fsolution-architecture\u002Fplugins\u002Faws-dev-toolkit\u002Fskills\u002Fstep-functions","---\nname: step-functions\ndescription: Design and build AWS Step Functions workflows. Use when orchestrating multi-step processes, implementing saga patterns, coordinating parallel tasks, handling retries and error recovery, or choosing between Standard and Express workflows.\n---\n\nYou are a Step Functions specialist. Help teams design reliable, cost-effective state machine workflows.\n\n## Decision Framework: Standard vs Express\n\n| Feature         | Standard                                  | Express                                     |\n| --------------- | ----------------------------------------- | ------------------------------------------- |\n| Max duration    | 1 year                                    | 5 minutes                                   |\n| Execution model | Exactly-once                              | At-least-once (async) \u002F At-most-once (sync) |\n| Pricing         | Per state transition ($0.025\u002F1000)        | Per request + duration                      |\n| History         | Full execution history in console         | CloudWatch Logs only                        |\n| Step limit      | 25,000 events per execution               | Unlimited                                   |\n| Max concurrency | Default ~1M (soft limit)                  | Default ~1,000 (soft limit)                 |\n| Ideal for       | Long-running, business-critical workflows | High-volume, short, event processing        |\n\n**Opinionated recommendation**:\n\n- **Default to Standard** for business workflows, orchestration, and anything requiring auditability.\n- **Use Express** for high-volume event processing (>100K executions\u002Fday), data transforms, and ETL microbatches where duration is under 5 minutes.\n- **Express is cheaper at scale** but loses execution history -- you must configure CloudWatch Logs.\n\n## State Types\n\n### Task State (does work)\n\n**Opinionated**: Always add Retry and Catch to every Task state. Without Retry, a transient failure (Lambda throttle, DynamoDB ProvisionedThroughputExceededException, network timeout) fails the entire execution immediately — even though a retry 2 seconds later would succeed. Without Catch, a permanent failure (invalid input, missing resource) causes an unhandled error that terminates the workflow with no way to log the failure, notify anyone, or run compensating actions. The cost of adding Retry+Catch is a few lines of ASL; the cost of omitting them is silent failures in production.\n\n### Direct Service Integrations (prefer over Lambda wrappers)\n\nStep Functions can call 200+ AWS services directly. Do NOT wrap simple API calls in Lambda. Common direct integrations to use instead of Lambda:\n\n- **DynamoDB**: GetItem, PutItem, UpdateItem, DeleteItem, Query\n- **SQS**: SendMessage\n- **SNS**: Publish\n- **EventBridge**: PutEvents\n- **ECS\u002FFargate**: RunTask (for long-running containers)\n- **Glue**: StartJobRun\n- **SageMaker**: CreateTransformJob, CreateTrainingJob\n- **Bedrock**: InvokeModel\n\nSee `references\u002Fintegrations.md` for ASL examples of each integration, plus Choice, Parallel, Map, and Wait state examples.\n\n### Other State Types\n\n- **Choice**: Branch based on input values (string, numeric, boolean comparisons)\n- **Parallel**: Run multiple branches concurrently, Catch on any branch failure\n- **Map (Inline)**: Iterate over a collection with configurable MaxConcurrency\n- **Map (Distributed)**: Process millions of items from S3 with Express child executions\n- **Wait**: Pause for a duration or until a timestamp\n\n## Error Handling: Retry and Catch\n\n### Retry Strategy\n\n```json\n\"Retry\": [\n  {\n    \"ErrorEquals\": [\"States.Timeout\"],\n    \"IntervalSeconds\": 5,\n    \"MaxAttempts\": 2,\n    \"BackoffRate\": 2.0\n  },\n  {\n    \"ErrorEquals\": [\"TransientError\", \"Lambda.ServiceException\"],\n    \"IntervalSeconds\": 1,\n    \"MaxAttempts\": 5,\n    \"BackoffRate\": 2.0,\n    \"JitterStrategy\": \"FULL\"\n  },\n  {\n    \"ErrorEquals\": [\"States.ALL\"],\n    \"MaxAttempts\": 0\n  }\n]\n```\n\n**Opinionated**: Order retries from specific to general. Use `JitterStrategy: FULL` to prevent thundering herd. Put `States.ALL` with `MaxAttempts: 0` last to explicitly catch-and-fail on unexpected errors rather than retrying them.\n\n### Catch and Error Recovery\n\n```json\n\"Catch\": [\n  {\n    \"ErrorEquals\": [\"PaymentDeclined\"],\n    \"Next\": \"NotifyCustomerPaymentFailed\",\n    \"ResultPath\": \"$.error\"\n  },\n  {\n    \"ErrorEquals\": [\"States.ALL\"],\n    \"Next\": \"GenericErrorHandler\",\n    \"ResultPath\": \"$.error\"\n  }\n]\n```\n\n**Always use `ResultPath` in Catch** to preserve the original input alongside the error. Without it, the error replaces your entire state input.\n\n## Pattern: Saga (Compensating Transactions)\n\nFor distributed transactions across services where you need to undo completed steps on failure. Each step has a compensating action, compensations run in reverse order, and compensations must be idempotent. See `references\u002Fpatterns.md` for the full ASL example with compensating transaction flow.\n\n## Pattern: Human Approval (Callback)\n\nUse `.waitForTaskToken` to pause execution until an external system sends a callback via `send-task-success` or `send-task-failure`. **Always set `TimeoutSeconds` on callback tasks.** Without it, the execution waits forever (up to 1 year for Standard). See `references\u002Fpatterns.md` for the full ASL and CLI examples.\n\n## Pattern: Distributed Map\n\nProcess millions of items from S3 using Express child executions for massive parallelism. See `references\u002Fpatterns.md` for the ASL example with S3 CSV reader configuration.\n\n## Common CLI Commands\n\n```bash\n# Create state machine\naws stepfunctions create-state-machine \\\n  --name my-workflow \\\n  --definition file:\u002F\u002Fdefinition.json \\\n  --role-arn arn:aws:iam::123456789:role\u002Fstep-functions-role\n\n# Start execution\naws stepfunctions start-execution \\\n  --state-machine-arn arn:aws:states:us-east-1:123456789:stateMachine:my-workflow \\\n  --input '{\"orderId\": \"12345\"}'\n\n# List executions\naws stepfunctions list-executions \\\n  --state-machine-arn arn:aws:states:us-east-1:123456789:stateMachine:my-workflow \\\n  --status-filter FAILED\n\n# Get execution details\naws stepfunctions describe-execution \\\n  --execution-arn arn:aws:states:us-east-1:123456789:execution:my-workflow:exec-123\n\n# Get execution history (debug step-by-step)\naws stepfunctions get-execution-history \\\n  --execution-arn arn:aws:states:us-east-1:123456789:execution:my-workflow:exec-123 \\\n  --query 'events[?type==`TaskFailed` || type==`ExecutionFailed`]'\n\n# Update state machine\naws stepfunctions update-state-machine \\\n  --state-machine-arn arn:aws:states:us-east-1:123456789:stateMachine:my-workflow \\\n  --definition file:\u002F\u002Fdefinition.json\n\n# Test a state (local testing)\naws stepfunctions test-state \\\n  --definition '{\"Type\":\"Task\",\"Resource\":\"arn:aws:states:::dynamodb:getItem\",\"Parameters\":{\"TableName\":\"Orders\",\"Key\":{\"orderId\":{\"S\":\"123\"}}}}' \\\n  --role-arn arn:aws:iam::123456789:role\u002Fstep-functions-role \\\n  --input '{\"orderId\": \"123\"}'\n```\n\n## Workflow Studio\n\nUse Workflow Studio in the AWS Console for:\n\n- Visual design and prototyping (drag-and-drop states)\n- Understanding existing workflows\n- Quick iteration on state machine logic\n\n**Opinionated**: Start in Workflow Studio for prototyping, then export to ASL (Amazon States Language) JSON and manage in version control. Never rely solely on the console for production workflows.\n\n## Input\u002FOutput Processing\n\nData flows through each state as: `InputPath -> Parameters -> Task -> ResultSelector -> ResultPath -> OutputPath`\n\n**Opinionated**: Use `ResultPath` generously to accumulate data through states. Use `ResultSelector` to trim large API responses down to only what you need (saves state size and cost on Standard workflows). See `references\u002Fintegrations.md` for detailed examples of each processing stage.\n\n## Anti-Patterns\n\n1. **Lambda wrappers for AWS API calls**: Step Functions integrates directly with 200+ services. Don't write a Lambda just to call DynamoDB PutItem or SQS SendMessage.\n2. **No error handling on Task states**: Every Task state should have Retry (for transient errors) and Catch (for permanent failures). No exceptions.\n3. **Ignoring state payload limits**: Standard workflows have a 256 KB payload limit per state. Store large data in S3 and pass references.\n4. **Using Standard for high-volume short tasks**: If you're running >100K executions\u002Fday with \u003C5 min duration, Express workflows are dramatically cheaper.\n5. **Missing TimeoutSeconds on callback tasks**: Without a timeout, `.waitForTaskToken` tasks will hang for up to 1 year if the callback never arrives.\n6. **Not using Distributed Map for large datasets**: Inline Map processes items sequentially or with limited concurrency within one execution. Distributed Map scales to millions of items.\n7. **Putting business logic in the state machine**: ASL is for orchestration, not computation. Complex data transforms and business rules belong in Lambda functions.\n8. **Not enabling logging for Express workflows**: Express workflows have no built-in execution history. You MUST configure CloudWatch Logs or you'll have zero visibility.\n9. **Monolith state machines**: A 50-state workflow is hard to understand and test. Break large workflows into nested state machines using `arn:aws:states:::states:startExecution.sync:2`.\n10. **Not using `JitterStrategy` on retries**: Without jitter, retried tasks create thundering herd effects that amplify the original failure.\n\n## Cost Optimization\n\n- **Standard**: $0.025 per 1,000 state transitions. Minimize states. Use direct integrations to avoid Lambda invocation costs on top of transition costs.\n- **Express**: Priced by number of requests and duration. Cheaper for high-volume, short workflows.\n- **Pass states are not free** in Standard (they count as transitions). Eliminate unnecessary Pass states.\n- **Combine simple sequential tasks** where possible to reduce transition count.\n- Use `ResultSelector` to trim response payloads -- smaller payloads mean faster processing.\n\n## Reference Files\n\n- **references\u002Fpatterns.md** -- Saga, callback, and Distributed Map patterns with full ASL examples\n- **references\u002Fintegrations.md** -- Direct service integration examples (DynamoDB, SQS, SNS, EventBridge, ECS, Bedrock), state type ASL, and input\u002Foutput processing pipeline details\n\n## Related Skills\n\n- `aws-plan` -- Architecture planning that may include Step Functions workflows\n- `lambda` -- Lambda functions used as Task state targets\n- `api-gateway` -- API Gateway to Step Functions direct integrations (StartExecution, StartSyncExecution)\n- `observability` -- CloudWatch Logs, X-Ray tracing, and monitoring for Step Functions\n- `aws-debug` -- Debugging failed Step Functions executions\n",{"data":35,"body":36},{"name":4,"description":6},{"type":37,"children":38},"root",[39,47,54,213,224,259,265,272,282,288,293,376,390,396,449,455,461,944,976,982,1264,1281,1287,1300,1306,1357,1363,1375,1381,1903,1909,1914,1932,1941,1947,1958,1989,1995,2121,2127,2179,2185,2206,2212,2270],{"type":40,"tag":41,"props":42,"children":43},"element","p",{},[44],{"type":45,"value":46},"text","You are a Step Functions specialist. Help teams design reliable, cost-effective state machine workflows.",{"type":40,"tag":48,"props":49,"children":51},"h2",{"id":50},"decision-framework-standard-vs-express",[52],{"type":45,"value":53},"Decision Framework: Standard vs Express",{"type":40,"tag":55,"props":56,"children":57},"table",{},[58,82],{"type":40,"tag":59,"props":60,"children":61},"thead",{},[62],{"type":40,"tag":63,"props":64,"children":65},"tr",{},[66,72,77],{"type":40,"tag":67,"props":68,"children":69},"th",{},[70],{"type":45,"value":71},"Feature",{"type":40,"tag":67,"props":73,"children":74},{},[75],{"type":45,"value":76},"Standard",{"type":40,"tag":67,"props":78,"children":79},{},[80],{"type":45,"value":81},"Express",{"type":40,"tag":83,"props":84,"children":85},"tbody",{},[86,105,123,141,159,177,195],{"type":40,"tag":63,"props":87,"children":88},{},[89,95,100],{"type":40,"tag":90,"props":91,"children":92},"td",{},[93],{"type":45,"value":94},"Max duration",{"type":40,"tag":90,"props":96,"children":97},{},[98],{"type":45,"value":99},"1 year",{"type":40,"tag":90,"props":101,"children":102},{},[103],{"type":45,"value":104},"5 minutes",{"type":40,"tag":63,"props":106,"children":107},{},[108,113,118],{"type":40,"tag":90,"props":109,"children":110},{},[111],{"type":45,"value":112},"Execution model",{"type":40,"tag":90,"props":114,"children":115},{},[116],{"type":45,"value":117},"Exactly-once",{"type":40,"tag":90,"props":119,"children":120},{},[121],{"type":45,"value":122},"At-least-once (async) \u002F At-most-once (sync)",{"type":40,"tag":63,"props":124,"children":125},{},[126,131,136],{"type":40,"tag":90,"props":127,"children":128},{},[129],{"type":45,"value":130},"Pricing",{"type":40,"tag":90,"props":132,"children":133},{},[134],{"type":45,"value":135},"Per state transition ($0.025\u002F1000)",{"type":40,"tag":90,"props":137,"children":138},{},[139],{"type":45,"value":140},"Per request + duration",{"type":40,"tag":63,"props":142,"children":143},{},[144,149,154],{"type":40,"tag":90,"props":145,"children":146},{},[147],{"type":45,"value":148},"History",{"type":40,"tag":90,"props":150,"children":151},{},[152],{"type":45,"value":153},"Full execution history in console",{"type":40,"tag":90,"props":155,"children":156},{},[157],{"type":45,"value":158},"CloudWatch Logs only",{"type":40,"tag":63,"props":160,"children":161},{},[162,167,172],{"type":40,"tag":90,"props":163,"children":164},{},[165],{"type":45,"value":166},"Step limit",{"type":40,"tag":90,"props":168,"children":169},{},[170],{"type":45,"value":171},"25,000 events per execution",{"type":40,"tag":90,"props":173,"children":174},{},[175],{"type":45,"value":176},"Unlimited",{"type":40,"tag":63,"props":178,"children":179},{},[180,185,190],{"type":40,"tag":90,"props":181,"children":182},{},[183],{"type":45,"value":184},"Max concurrency",{"type":40,"tag":90,"props":186,"children":187},{},[188],{"type":45,"value":189},"Default ~1M (soft limit)",{"type":40,"tag":90,"props":191,"children":192},{},[193],{"type":45,"value":194},"Default ~1,000 (soft limit)",{"type":40,"tag":63,"props":196,"children":197},{},[198,203,208],{"type":40,"tag":90,"props":199,"children":200},{},[201],{"type":45,"value":202},"Ideal for",{"type":40,"tag":90,"props":204,"children":205},{},[206],{"type":45,"value":207},"Long-running, business-critical workflows",{"type":40,"tag":90,"props":209,"children":210},{},[211],{"type":45,"value":212},"High-volume, short, event processing",{"type":40,"tag":41,"props":214,"children":215},{},[216,222],{"type":40,"tag":217,"props":218,"children":219},"strong",{},[220],{"type":45,"value":221},"Opinionated recommendation",{"type":45,"value":223},":",{"type":40,"tag":225,"props":226,"children":227},"ul",{},[228,239,249],{"type":40,"tag":229,"props":230,"children":231},"li",{},[232,237],{"type":40,"tag":217,"props":233,"children":234},{},[235],{"type":45,"value":236},"Default to Standard",{"type":45,"value":238}," for business workflows, orchestration, and anything requiring auditability.",{"type":40,"tag":229,"props":240,"children":241},{},[242,247],{"type":40,"tag":217,"props":243,"children":244},{},[245],{"type":45,"value":246},"Use Express",{"type":45,"value":248}," for high-volume event processing (>100K executions\u002Fday), data transforms, and ETL microbatches where duration is under 5 minutes.",{"type":40,"tag":229,"props":250,"children":251},{},[252,257],{"type":40,"tag":217,"props":253,"children":254},{},[255],{"type":45,"value":256},"Express is cheaper at scale",{"type":45,"value":258}," but loses execution history -- you must configure CloudWatch Logs.",{"type":40,"tag":48,"props":260,"children":262},{"id":261},"state-types",[263],{"type":45,"value":264},"State Types",{"type":40,"tag":266,"props":267,"children":269},"h3",{"id":268},"task-state-does-work",[270],{"type":45,"value":271},"Task State (does work)",{"type":40,"tag":41,"props":273,"children":274},{},[275,280],{"type":40,"tag":217,"props":276,"children":277},{},[278],{"type":45,"value":279},"Opinionated",{"type":45,"value":281},": Always add Retry and Catch to every Task state. Without Retry, a transient failure (Lambda throttle, DynamoDB ProvisionedThroughputExceededException, network timeout) fails the entire execution immediately — even though a retry 2 seconds later would succeed. Without Catch, a permanent failure (invalid input, missing resource) causes an unhandled error that terminates the workflow with no way to log the failure, notify anyone, or run compensating actions. The cost of adding Retry+Catch is a few lines of ASL; the cost of omitting them is silent failures in production.",{"type":40,"tag":266,"props":283,"children":285},{"id":284},"direct-service-integrations-prefer-over-lambda-wrappers",[286],{"type":45,"value":287},"Direct Service Integrations (prefer over Lambda wrappers)",{"type":40,"tag":41,"props":289,"children":290},{},[291],{"type":45,"value":292},"Step Functions can call 200+ AWS services directly. Do NOT wrap simple API calls in Lambda. Common direct integrations to use instead of Lambda:",{"type":40,"tag":225,"props":294,"children":295},{},[296,306,316,326,336,346,356,366],{"type":40,"tag":229,"props":297,"children":298},{},[299,304],{"type":40,"tag":217,"props":300,"children":301},{},[302],{"type":45,"value":303},"DynamoDB",{"type":45,"value":305},": GetItem, PutItem, UpdateItem, DeleteItem, Query",{"type":40,"tag":229,"props":307,"children":308},{},[309,314],{"type":40,"tag":217,"props":310,"children":311},{},[312],{"type":45,"value":313},"SQS",{"type":45,"value":315},": SendMessage",{"type":40,"tag":229,"props":317,"children":318},{},[319,324],{"type":40,"tag":217,"props":320,"children":321},{},[322],{"type":45,"value":323},"SNS",{"type":45,"value":325},": Publish",{"type":40,"tag":229,"props":327,"children":328},{},[329,334],{"type":40,"tag":217,"props":330,"children":331},{},[332],{"type":45,"value":333},"EventBridge",{"type":45,"value":335},": PutEvents",{"type":40,"tag":229,"props":337,"children":338},{},[339,344],{"type":40,"tag":217,"props":340,"children":341},{},[342],{"type":45,"value":343},"ECS\u002FFargate",{"type":45,"value":345},": RunTask (for long-running containers)",{"type":40,"tag":229,"props":347,"children":348},{},[349,354],{"type":40,"tag":217,"props":350,"children":351},{},[352],{"type":45,"value":353},"Glue",{"type":45,"value":355},": StartJobRun",{"type":40,"tag":229,"props":357,"children":358},{},[359,364],{"type":40,"tag":217,"props":360,"children":361},{},[362],{"type":45,"value":363},"SageMaker",{"type":45,"value":365},": CreateTransformJob, CreateTrainingJob",{"type":40,"tag":229,"props":367,"children":368},{},[369,374],{"type":40,"tag":217,"props":370,"children":371},{},[372],{"type":45,"value":373},"Bedrock",{"type":45,"value":375},": InvokeModel",{"type":40,"tag":41,"props":377,"children":378},{},[379,381,388],{"type":45,"value":380},"See ",{"type":40,"tag":382,"props":383,"children":385},"code",{"className":384},[],[386],{"type":45,"value":387},"references\u002Fintegrations.md",{"type":45,"value":389}," for ASL examples of each integration, plus Choice, Parallel, Map, and Wait state examples.",{"type":40,"tag":266,"props":391,"children":393},{"id":392},"other-state-types",[394],{"type":45,"value":395},"Other State Types",{"type":40,"tag":225,"props":397,"children":398},{},[399,409,419,429,439],{"type":40,"tag":229,"props":400,"children":401},{},[402,407],{"type":40,"tag":217,"props":403,"children":404},{},[405],{"type":45,"value":406},"Choice",{"type":45,"value":408},": Branch based on input values (string, numeric, boolean comparisons)",{"type":40,"tag":229,"props":410,"children":411},{},[412,417],{"type":40,"tag":217,"props":413,"children":414},{},[415],{"type":45,"value":416},"Parallel",{"type":45,"value":418},": Run multiple branches concurrently, Catch on any branch failure",{"type":40,"tag":229,"props":420,"children":421},{},[422,427],{"type":40,"tag":217,"props":423,"children":424},{},[425],{"type":45,"value":426},"Map (Inline)",{"type":45,"value":428},": Iterate over a collection with configurable MaxConcurrency",{"type":40,"tag":229,"props":430,"children":431},{},[432,437],{"type":40,"tag":217,"props":433,"children":434},{},[435],{"type":45,"value":436},"Map (Distributed)",{"type":45,"value":438},": Process millions of items from S3 with Express child executions",{"type":40,"tag":229,"props":440,"children":441},{},[442,447],{"type":40,"tag":217,"props":443,"children":444},{},[445],{"type":45,"value":446},"Wait",{"type":45,"value":448},": Pause for a duration or until a timestamp",{"type":40,"tag":48,"props":450,"children":452},{"id":451},"error-handling-retry-and-catch",[453],{"type":45,"value":454},"Error Handling: Retry and Catch",{"type":40,"tag":266,"props":456,"children":458},{"id":457},"retry-strategy",[459],{"type":45,"value":460},"Retry Strategy",{"type":40,"tag":462,"props":463,"children":468},"pre",{"className":464,"code":465,"language":466,"meta":467,"style":467},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\"Retry\": [\n  {\n    \"ErrorEquals\": [\"States.Timeout\"],\n    \"IntervalSeconds\": 5,\n    \"MaxAttempts\": 2,\n    \"BackoffRate\": 2.0\n  },\n  {\n    \"ErrorEquals\": [\"TransientError\", \"Lambda.ServiceException\"],\n    \"IntervalSeconds\": 1,\n    \"MaxAttempts\": 5,\n    \"BackoffRate\": 2.0,\n    \"JitterStrategy\": \"FULL\"\n  },\n  {\n    \"ErrorEquals\": [\"States.ALL\"],\n    \"MaxAttempts\": 0\n  }\n]\n","json","",[469],{"type":40,"tag":382,"props":470,"children":471},{"__ignoreMap":467},[472,505,514,560,592,622,648,657,665,725,754,782,811,846,853,860,901,926,935],{"type":40,"tag":473,"props":474,"children":477},"span",{"class":475,"line":476},"line",1,[478,484,490,494,500],{"type":40,"tag":473,"props":479,"children":481},{"style":480},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[482],{"type":45,"value":483},"\"",{"type":40,"tag":473,"props":485,"children":487},{"style":486},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[488],{"type":45,"value":489},"Retry",{"type":40,"tag":473,"props":491,"children":492},{"style":480},[493],{"type":45,"value":483},{"type":40,"tag":473,"props":495,"children":497},{"style":496},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[498],{"type":45,"value":499},": ",{"type":40,"tag":473,"props":501,"children":502},{"style":480},[503],{"type":45,"value":504},"[\n",{"type":40,"tag":473,"props":506,"children":508},{"class":475,"line":507},2,[509],{"type":40,"tag":473,"props":510,"children":511},{"style":480},[512],{"type":45,"value":513},"  {\n",{"type":40,"tag":473,"props":515,"children":517},{"class":475,"line":516},3,[518,523,529,533,537,542,546,551,555],{"type":40,"tag":473,"props":519,"children":520},{"style":480},[521],{"type":45,"value":522},"    \"",{"type":40,"tag":473,"props":524,"children":526},{"style":525},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[527],{"type":45,"value":528},"ErrorEquals",{"type":40,"tag":473,"props":530,"children":531},{"style":480},[532],{"type":45,"value":483},{"type":40,"tag":473,"props":534,"children":535},{"style":480},[536],{"type":45,"value":223},{"type":40,"tag":473,"props":538,"children":539},{"style":480},[540],{"type":45,"value":541}," [",{"type":40,"tag":473,"props":543,"children":544},{"style":480},[545],{"type":45,"value":483},{"type":40,"tag":473,"props":547,"children":548},{"style":486},[549],{"type":45,"value":550},"States.Timeout",{"type":40,"tag":473,"props":552,"children":553},{"style":480},[554],{"type":45,"value":483},{"type":40,"tag":473,"props":556,"children":557},{"style":480},[558],{"type":45,"value":559},"],\n",{"type":40,"tag":473,"props":561,"children":563},{"class":475,"line":562},4,[564,568,573,577,581,587],{"type":40,"tag":473,"props":565,"children":566},{"style":480},[567],{"type":45,"value":522},{"type":40,"tag":473,"props":569,"children":570},{"style":525},[571],{"type":45,"value":572},"IntervalSeconds",{"type":40,"tag":473,"props":574,"children":575},{"style":480},[576],{"type":45,"value":483},{"type":40,"tag":473,"props":578,"children":579},{"style":480},[580],{"type":45,"value":223},{"type":40,"tag":473,"props":582,"children":584},{"style":583},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[585],{"type":45,"value":586}," 5",{"type":40,"tag":473,"props":588,"children":589},{"style":480},[590],{"type":45,"value":591},",\n",{"type":40,"tag":473,"props":593,"children":595},{"class":475,"line":594},5,[596,600,605,609,613,618],{"type":40,"tag":473,"props":597,"children":598},{"style":480},[599],{"type":45,"value":522},{"type":40,"tag":473,"props":601,"children":602},{"style":525},[603],{"type":45,"value":604},"MaxAttempts",{"type":40,"tag":473,"props":606,"children":607},{"style":480},[608],{"type":45,"value":483},{"type":40,"tag":473,"props":610,"children":611},{"style":480},[612],{"type":45,"value":223},{"type":40,"tag":473,"props":614,"children":615},{"style":583},[616],{"type":45,"value":617}," 2",{"type":40,"tag":473,"props":619,"children":620},{"style":480},[621],{"type":45,"value":591},{"type":40,"tag":473,"props":623,"children":625},{"class":475,"line":624},6,[626,630,635,639,643],{"type":40,"tag":473,"props":627,"children":628},{"style":480},[629],{"type":45,"value":522},{"type":40,"tag":473,"props":631,"children":632},{"style":525},[633],{"type":45,"value":634},"BackoffRate",{"type":40,"tag":473,"props":636,"children":637},{"style":480},[638],{"type":45,"value":483},{"type":40,"tag":473,"props":640,"children":641},{"style":480},[642],{"type":45,"value":223},{"type":40,"tag":473,"props":644,"children":645},{"style":583},[646],{"type":45,"value":647}," 2.0\n",{"type":40,"tag":473,"props":649,"children":651},{"class":475,"line":650},7,[652],{"type":40,"tag":473,"props":653,"children":654},{"style":480},[655],{"type":45,"value":656},"  },\n",{"type":40,"tag":473,"props":658,"children":660},{"class":475,"line":659},8,[661],{"type":40,"tag":473,"props":662,"children":663},{"style":480},[664],{"type":45,"value":513},{"type":40,"tag":473,"props":666,"children":668},{"class":475,"line":667},9,[669,673,677,681,685,689,693,698,702,707,712,717,721],{"type":40,"tag":473,"props":670,"children":671},{"style":480},[672],{"type":45,"value":522},{"type":40,"tag":473,"props":674,"children":675},{"style":525},[676],{"type":45,"value":528},{"type":40,"tag":473,"props":678,"children":679},{"style":480},[680],{"type":45,"value":483},{"type":40,"tag":473,"props":682,"children":683},{"style":480},[684],{"type":45,"value":223},{"type":40,"tag":473,"props":686,"children":687},{"style":480},[688],{"type":45,"value":541},{"type":40,"tag":473,"props":690,"children":691},{"style":480},[692],{"type":45,"value":483},{"type":40,"tag":473,"props":694,"children":695},{"style":486},[696],{"type":45,"value":697},"TransientError",{"type":40,"tag":473,"props":699,"children":700},{"style":480},[701],{"type":45,"value":483},{"type":40,"tag":473,"props":703,"children":704},{"style":480},[705],{"type":45,"value":706},",",{"type":40,"tag":473,"props":708,"children":709},{"style":480},[710],{"type":45,"value":711}," \"",{"type":40,"tag":473,"props":713,"children":714},{"style":486},[715],{"type":45,"value":716},"Lambda.ServiceException",{"type":40,"tag":473,"props":718,"children":719},{"style":480},[720],{"type":45,"value":483},{"type":40,"tag":473,"props":722,"children":723},{"style":480},[724],{"type":45,"value":559},{"type":40,"tag":473,"props":726,"children":728},{"class":475,"line":727},10,[729,733,737,741,745,750],{"type":40,"tag":473,"props":730,"children":731},{"style":480},[732],{"type":45,"value":522},{"type":40,"tag":473,"props":734,"children":735},{"style":525},[736],{"type":45,"value":572},{"type":40,"tag":473,"props":738,"children":739},{"style":480},[740],{"type":45,"value":483},{"type":40,"tag":473,"props":742,"children":743},{"style":480},[744],{"type":45,"value":223},{"type":40,"tag":473,"props":746,"children":747},{"style":583},[748],{"type":45,"value":749}," 1",{"type":40,"tag":473,"props":751,"children":752},{"style":480},[753],{"type":45,"value":591},{"type":40,"tag":473,"props":755,"children":757},{"class":475,"line":756},11,[758,762,766,770,774,778],{"type":40,"tag":473,"props":759,"children":760},{"style":480},[761],{"type":45,"value":522},{"type":40,"tag":473,"props":763,"children":764},{"style":525},[765],{"type":45,"value":604},{"type":40,"tag":473,"props":767,"children":768},{"style":480},[769],{"type":45,"value":483},{"type":40,"tag":473,"props":771,"children":772},{"style":480},[773],{"type":45,"value":223},{"type":40,"tag":473,"props":775,"children":776},{"style":583},[777],{"type":45,"value":586},{"type":40,"tag":473,"props":779,"children":780},{"style":480},[781],{"type":45,"value":591},{"type":40,"tag":473,"props":783,"children":785},{"class":475,"line":784},12,[786,790,794,798,802,807],{"type":40,"tag":473,"props":787,"children":788},{"style":480},[789],{"type":45,"value":522},{"type":40,"tag":473,"props":791,"children":792},{"style":525},[793],{"type":45,"value":634},{"type":40,"tag":473,"props":795,"children":796},{"style":480},[797],{"type":45,"value":483},{"type":40,"tag":473,"props":799,"children":800},{"style":480},[801],{"type":45,"value":223},{"type":40,"tag":473,"props":803,"children":804},{"style":583},[805],{"type":45,"value":806}," 2.0",{"type":40,"tag":473,"props":808,"children":809},{"style":480},[810],{"type":45,"value":591},{"type":40,"tag":473,"props":812,"children":814},{"class":475,"line":813},13,[815,819,824,828,832,836,841],{"type":40,"tag":473,"props":816,"children":817},{"style":480},[818],{"type":45,"value":522},{"type":40,"tag":473,"props":820,"children":821},{"style":525},[822],{"type":45,"value":823},"JitterStrategy",{"type":40,"tag":473,"props":825,"children":826},{"style":480},[827],{"type":45,"value":483},{"type":40,"tag":473,"props":829,"children":830},{"style":480},[831],{"type":45,"value":223},{"type":40,"tag":473,"props":833,"children":834},{"style":480},[835],{"type":45,"value":711},{"type":40,"tag":473,"props":837,"children":838},{"style":486},[839],{"type":45,"value":840},"FULL",{"type":40,"tag":473,"props":842,"children":843},{"style":480},[844],{"type":45,"value":845},"\"\n",{"type":40,"tag":473,"props":847,"children":848},{"class":475,"line":23},[849],{"type":40,"tag":473,"props":850,"children":851},{"style":480},[852],{"type":45,"value":656},{"type":40,"tag":473,"props":854,"children":855},{"class":475,"line":27},[856],{"type":40,"tag":473,"props":857,"children":858},{"style":480},[859],{"type":45,"value":513},{"type":40,"tag":473,"props":861,"children":863},{"class":475,"line":862},16,[864,868,872,876,880,884,888,893,897],{"type":40,"tag":473,"props":865,"children":866},{"style":480},[867],{"type":45,"value":522},{"type":40,"tag":473,"props":869,"children":870},{"style":525},[871],{"type":45,"value":528},{"type":40,"tag":473,"props":873,"children":874},{"style":480},[875],{"type":45,"value":483},{"type":40,"tag":473,"props":877,"children":878},{"style":480},[879],{"type":45,"value":223},{"type":40,"tag":473,"props":881,"children":882},{"style":480},[883],{"type":45,"value":541},{"type":40,"tag":473,"props":885,"children":886},{"style":480},[887],{"type":45,"value":483},{"type":40,"tag":473,"props":889,"children":890},{"style":486},[891],{"type":45,"value":892},"States.ALL",{"type":40,"tag":473,"props":894,"children":895},{"style":480},[896],{"type":45,"value":483},{"type":40,"tag":473,"props":898,"children":899},{"style":480},[900],{"type":45,"value":559},{"type":40,"tag":473,"props":902,"children":904},{"class":475,"line":903},17,[905,909,913,917,921],{"type":40,"tag":473,"props":906,"children":907},{"style":480},[908],{"type":45,"value":522},{"type":40,"tag":473,"props":910,"children":911},{"style":525},[912],{"type":45,"value":604},{"type":40,"tag":473,"props":914,"children":915},{"style":480},[916],{"type":45,"value":483},{"type":40,"tag":473,"props":918,"children":919},{"style":480},[920],{"type":45,"value":223},{"type":40,"tag":473,"props":922,"children":923},{"style":583},[924],{"type":45,"value":925}," 0\n",{"type":40,"tag":473,"props":927,"children":929},{"class":475,"line":928},18,[930],{"type":40,"tag":473,"props":931,"children":932},{"style":480},[933],{"type":45,"value":934},"  }\n",{"type":40,"tag":473,"props":936,"children":938},{"class":475,"line":937},19,[939],{"type":40,"tag":473,"props":940,"children":941},{"style":480},[942],{"type":45,"value":943},"]\n",{"type":40,"tag":41,"props":945,"children":946},{},[947,951,953,959,961,966,968,974],{"type":40,"tag":217,"props":948,"children":949},{},[950],{"type":45,"value":279},{"type":45,"value":952},": Order retries from specific to general. Use ",{"type":40,"tag":382,"props":954,"children":956},{"className":955},[],[957],{"type":45,"value":958},"JitterStrategy: FULL",{"type":45,"value":960}," to prevent thundering herd. Put ",{"type":40,"tag":382,"props":962,"children":964},{"className":963},[],[965],{"type":45,"value":892},{"type":45,"value":967}," with ",{"type":40,"tag":382,"props":969,"children":971},{"className":970},[],[972],{"type":45,"value":973},"MaxAttempts: 0",{"type":45,"value":975}," last to explicitly catch-and-fail on unexpected errors rather than retrying them.",{"type":40,"tag":266,"props":977,"children":979},{"id":978},"catch-and-error-recovery",[980],{"type":45,"value":981},"Catch and Error Recovery",{"type":40,"tag":462,"props":983,"children":985},{"className":464,"code":984,"language":466,"meta":467,"style":467},"\"Catch\": [\n  {\n    \"ErrorEquals\": [\"PaymentDeclined\"],\n    \"Next\": \"NotifyCustomerPaymentFailed\",\n    \"ResultPath\": \"$.error\"\n  },\n  {\n    \"ErrorEquals\": [\"States.ALL\"],\n    \"Next\": \"GenericErrorHandler\",\n    \"ResultPath\": \"$.error\"\n  }\n]\n",[986],{"type":40,"tag":382,"props":987,"children":988},{"__ignoreMap":467},[989,1013,1020,1060,1097,1130,1137,1144,1183,1219,1250,1257],{"type":40,"tag":473,"props":990,"children":991},{"class":475,"line":476},[992,996,1001,1005,1009],{"type":40,"tag":473,"props":993,"children":994},{"style":480},[995],{"type":45,"value":483},{"type":40,"tag":473,"props":997,"children":998},{"style":486},[999],{"type":45,"value":1000},"Catch",{"type":40,"tag":473,"props":1002,"children":1003},{"style":480},[1004],{"type":45,"value":483},{"type":40,"tag":473,"props":1006,"children":1007},{"style":496},[1008],{"type":45,"value":499},{"type":40,"tag":473,"props":1010,"children":1011},{"style":480},[1012],{"type":45,"value":504},{"type":40,"tag":473,"props":1014,"children":1015},{"class":475,"line":507},[1016],{"type":40,"tag":473,"props":1017,"children":1018},{"style":480},[1019],{"type":45,"value":513},{"type":40,"tag":473,"props":1021,"children":1022},{"class":475,"line":516},[1023,1027,1031,1035,1039,1043,1047,1052,1056],{"type":40,"tag":473,"props":1024,"children":1025},{"style":480},[1026],{"type":45,"value":522},{"type":40,"tag":473,"props":1028,"children":1029},{"style":525},[1030],{"type":45,"value":528},{"type":40,"tag":473,"props":1032,"children":1033},{"style":480},[1034],{"type":45,"value":483},{"type":40,"tag":473,"props":1036,"children":1037},{"style":480},[1038],{"type":45,"value":223},{"type":40,"tag":473,"props":1040,"children":1041},{"style":480},[1042],{"type":45,"value":541},{"type":40,"tag":473,"props":1044,"children":1045},{"style":480},[1046],{"type":45,"value":483},{"type":40,"tag":473,"props":1048,"children":1049},{"style":486},[1050],{"type":45,"value":1051},"PaymentDeclined",{"type":40,"tag":473,"props":1053,"children":1054},{"style":480},[1055],{"type":45,"value":483},{"type":40,"tag":473,"props":1057,"children":1058},{"style":480},[1059],{"type":45,"value":559},{"type":40,"tag":473,"props":1061,"children":1062},{"class":475,"line":562},[1063,1067,1072,1076,1080,1084,1089,1093],{"type":40,"tag":473,"props":1064,"children":1065},{"style":480},[1066],{"type":45,"value":522},{"type":40,"tag":473,"props":1068,"children":1069},{"style":525},[1070],{"type":45,"value":1071},"Next",{"type":40,"tag":473,"props":1073,"children":1074},{"style":480},[1075],{"type":45,"value":483},{"type":40,"tag":473,"props":1077,"children":1078},{"style":480},[1079],{"type":45,"value":223},{"type":40,"tag":473,"props":1081,"children":1082},{"style":480},[1083],{"type":45,"value":711},{"type":40,"tag":473,"props":1085,"children":1086},{"style":486},[1087],{"type":45,"value":1088},"NotifyCustomerPaymentFailed",{"type":40,"tag":473,"props":1090,"children":1091},{"style":480},[1092],{"type":45,"value":483},{"type":40,"tag":473,"props":1094,"children":1095},{"style":480},[1096],{"type":45,"value":591},{"type":40,"tag":473,"props":1098,"children":1099},{"class":475,"line":594},[1100,1104,1109,1113,1117,1121,1126],{"type":40,"tag":473,"props":1101,"children":1102},{"style":480},[1103],{"type":45,"value":522},{"type":40,"tag":473,"props":1105,"children":1106},{"style":525},[1107],{"type":45,"value":1108},"ResultPath",{"type":40,"tag":473,"props":1110,"children":1111},{"style":480},[1112],{"type":45,"value":483},{"type":40,"tag":473,"props":1114,"children":1115},{"style":480},[1116],{"type":45,"value":223},{"type":40,"tag":473,"props":1118,"children":1119},{"style":480},[1120],{"type":45,"value":711},{"type":40,"tag":473,"props":1122,"children":1123},{"style":486},[1124],{"type":45,"value":1125},"$.error",{"type":40,"tag":473,"props":1127,"children":1128},{"style":480},[1129],{"type":45,"value":845},{"type":40,"tag":473,"props":1131,"children":1132},{"class":475,"line":624},[1133],{"type":40,"tag":473,"props":1134,"children":1135},{"style":480},[1136],{"type":45,"value":656},{"type":40,"tag":473,"props":1138,"children":1139},{"class":475,"line":650},[1140],{"type":40,"tag":473,"props":1141,"children":1142},{"style":480},[1143],{"type":45,"value":513},{"type":40,"tag":473,"props":1145,"children":1146},{"class":475,"line":659},[1147,1151,1155,1159,1163,1167,1171,1175,1179],{"type":40,"tag":473,"props":1148,"children":1149},{"style":480},[1150],{"type":45,"value":522},{"type":40,"tag":473,"props":1152,"children":1153},{"style":525},[1154],{"type":45,"value":528},{"type":40,"tag":473,"props":1156,"children":1157},{"style":480},[1158],{"type":45,"value":483},{"type":40,"tag":473,"props":1160,"children":1161},{"style":480},[1162],{"type":45,"value":223},{"type":40,"tag":473,"props":1164,"children":1165},{"style":480},[1166],{"type":45,"value":541},{"type":40,"tag":473,"props":1168,"children":1169},{"style":480},[1170],{"type":45,"value":483},{"type":40,"tag":473,"props":1172,"children":1173},{"style":486},[1174],{"type":45,"value":892},{"type":40,"tag":473,"props":1176,"children":1177},{"style":480},[1178],{"type":45,"value":483},{"type":40,"tag":473,"props":1180,"children":1181},{"style":480},[1182],{"type":45,"value":559},{"type":40,"tag":473,"props":1184,"children":1185},{"class":475,"line":667},[1186,1190,1194,1198,1202,1206,1211,1215],{"type":40,"tag":473,"props":1187,"children":1188},{"style":480},[1189],{"type":45,"value":522},{"type":40,"tag":473,"props":1191,"children":1192},{"style":525},[1193],{"type":45,"value":1071},{"type":40,"tag":473,"props":1195,"children":1196},{"style":480},[1197],{"type":45,"value":483},{"type":40,"tag":473,"props":1199,"children":1200},{"style":480},[1201],{"type":45,"value":223},{"type":40,"tag":473,"props":1203,"children":1204},{"style":480},[1205],{"type":45,"value":711},{"type":40,"tag":473,"props":1207,"children":1208},{"style":486},[1209],{"type":45,"value":1210},"GenericErrorHandler",{"type":40,"tag":473,"props":1212,"children":1213},{"style":480},[1214],{"type":45,"value":483},{"type":40,"tag":473,"props":1216,"children":1217},{"style":480},[1218],{"type":45,"value":591},{"type":40,"tag":473,"props":1220,"children":1221},{"class":475,"line":727},[1222,1226,1230,1234,1238,1242,1246],{"type":40,"tag":473,"props":1223,"children":1224},{"style":480},[1225],{"type":45,"value":522},{"type":40,"tag":473,"props":1227,"children":1228},{"style":525},[1229],{"type":45,"value":1108},{"type":40,"tag":473,"props":1231,"children":1232},{"style":480},[1233],{"type":45,"value":483},{"type":40,"tag":473,"props":1235,"children":1236},{"style":480},[1237],{"type":45,"value":223},{"type":40,"tag":473,"props":1239,"children":1240},{"style":480},[1241],{"type":45,"value":711},{"type":40,"tag":473,"props":1243,"children":1244},{"style":486},[1245],{"type":45,"value":1125},{"type":40,"tag":473,"props":1247,"children":1248},{"style":480},[1249],{"type":45,"value":845},{"type":40,"tag":473,"props":1251,"children":1252},{"class":475,"line":756},[1253],{"type":40,"tag":473,"props":1254,"children":1255},{"style":480},[1256],{"type":45,"value":934},{"type":40,"tag":473,"props":1258,"children":1259},{"class":475,"line":784},[1260],{"type":40,"tag":473,"props":1261,"children":1262},{"style":480},[1263],{"type":45,"value":943},{"type":40,"tag":41,"props":1265,"children":1266},{},[1267,1279],{"type":40,"tag":217,"props":1268,"children":1269},{},[1270,1272,1277],{"type":45,"value":1271},"Always use ",{"type":40,"tag":382,"props":1273,"children":1275},{"className":1274},[],[1276],{"type":45,"value":1108},{"type":45,"value":1278}," in Catch",{"type":45,"value":1280}," to preserve the original input alongside the error. Without it, the error replaces your entire state input.",{"type":40,"tag":48,"props":1282,"children":1284},{"id":1283},"pattern-saga-compensating-transactions",[1285],{"type":45,"value":1286},"Pattern: Saga (Compensating Transactions)",{"type":40,"tag":41,"props":1288,"children":1289},{},[1290,1292,1298],{"type":45,"value":1291},"For distributed transactions across services where you need to undo completed steps on failure. Each step has a compensating action, compensations run in reverse order, and compensations must be idempotent. See ",{"type":40,"tag":382,"props":1293,"children":1295},{"className":1294},[],[1296],{"type":45,"value":1297},"references\u002Fpatterns.md",{"type":45,"value":1299}," for the full ASL example with compensating transaction flow.",{"type":40,"tag":48,"props":1301,"children":1303},{"id":1302},"pattern-human-approval-callback",[1304],{"type":45,"value":1305},"Pattern: Human Approval (Callback)",{"type":40,"tag":41,"props":1307,"children":1308},{},[1309,1311,1317,1319,1325,1327,1333,1335,1348,1350,1355],{"type":45,"value":1310},"Use ",{"type":40,"tag":382,"props":1312,"children":1314},{"className":1313},[],[1315],{"type":45,"value":1316},".waitForTaskToken",{"type":45,"value":1318}," to pause execution until an external system sends a callback via ",{"type":40,"tag":382,"props":1320,"children":1322},{"className":1321},[],[1323],{"type":45,"value":1324},"send-task-success",{"type":45,"value":1326}," or ",{"type":40,"tag":382,"props":1328,"children":1330},{"className":1329},[],[1331],{"type":45,"value":1332},"send-task-failure",{"type":45,"value":1334},". ",{"type":40,"tag":217,"props":1336,"children":1337},{},[1338,1340,1346],{"type":45,"value":1339},"Always set ",{"type":40,"tag":382,"props":1341,"children":1343},{"className":1342},[],[1344],{"type":45,"value":1345},"TimeoutSeconds",{"type":45,"value":1347}," on callback tasks.",{"type":45,"value":1349}," Without it, the execution waits forever (up to 1 year for Standard). See ",{"type":40,"tag":382,"props":1351,"children":1353},{"className":1352},[],[1354],{"type":45,"value":1297},{"type":45,"value":1356}," for the full ASL and CLI examples.",{"type":40,"tag":48,"props":1358,"children":1360},{"id":1359},"pattern-distributed-map",[1361],{"type":45,"value":1362},"Pattern: Distributed Map",{"type":40,"tag":41,"props":1364,"children":1365},{},[1366,1368,1373],{"type":45,"value":1367},"Process millions of items from S3 using Express child executions for massive parallelism. See ",{"type":40,"tag":382,"props":1369,"children":1371},{"className":1370},[],[1372],{"type":45,"value":1297},{"type":45,"value":1374}," for the ASL example with S3 CSV reader configuration.",{"type":40,"tag":48,"props":1376,"children":1378},{"id":1377},"common-cli-commands",[1379],{"type":45,"value":1380},"Common CLI Commands",{"type":40,"tag":462,"props":1382,"children":1386},{"className":1383,"code":1384,"language":1385,"meta":467,"style":467},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Create state machine\naws stepfunctions create-state-machine \\\n  --name my-workflow \\\n  --definition file:\u002F\u002Fdefinition.json \\\n  --role-arn arn:aws:iam::123456789:role\u002Fstep-functions-role\n\n# Start execution\naws stepfunctions start-execution \\\n  --state-machine-arn arn:aws:states:us-east-1:123456789:stateMachine:my-workflow \\\n  --input '{\"orderId\": \"12345\"}'\n\n# List executions\naws stepfunctions list-executions \\\n  --state-machine-arn arn:aws:states:us-east-1:123456789:stateMachine:my-workflow \\\n  --status-filter FAILED\n\n# Get execution details\naws stepfunctions describe-execution \\\n  --execution-arn arn:aws:states:us-east-1:123456789:execution:my-workflow:exec-123\n\n# Get execution history (debug step-by-step)\naws stepfunctions get-execution-history \\\n  --execution-arn arn:aws:states:us-east-1:123456789:execution:my-workflow:exec-123 \\\n  --query 'events[?type==`TaskFailed` || type==`ExecutionFailed`]'\n\n# Update state machine\naws stepfunctions update-state-machine \\\n  --state-machine-arn arn:aws:states:us-east-1:123456789:stateMachine:my-workflow \\\n  --definition file:\u002F\u002Fdefinition.json\n\n# Test a state (local testing)\naws stepfunctions test-state \\\n  --definition '{\"Type\":\"Task\",\"Resource\":\"arn:aws:states:::dynamodb:getItem\",\"Parameters\":{\"TableName\":\"Orders\",\"Key\":{\"orderId\":{\"S\":\"123\"}}}}' \\\n  --role-arn arn:aws:iam::123456789:role\u002Fstep-functions-role \\\n  --input '{\"orderId\": \"123\"}'\n","bash",[1387],{"type":40,"tag":382,"props":1388,"children":1389},{"__ignoreMap":467},[1390,1399,1422,1439,1456,1469,1478,1486,1506,1523,1546,1553,1561,1581,1596,1609,1616,1624,1644,1657,1665,1674,1695,1712,1734,1742,1751,1772,1788,1801,1809,1818,1839,1865,1882],{"type":40,"tag":473,"props":1391,"children":1392},{"class":475,"line":476},[1393],{"type":40,"tag":473,"props":1394,"children":1396},{"style":1395},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1397],{"type":45,"value":1398},"# Create state machine\n",{"type":40,"tag":473,"props":1400,"children":1401},{"class":475,"line":507},[1402,1407,1412,1417],{"type":40,"tag":473,"props":1403,"children":1405},{"style":1404},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1406],{"type":45,"value":22},{"type":40,"tag":473,"props":1408,"children":1409},{"style":486},[1410],{"type":45,"value":1411}," stepfunctions",{"type":40,"tag":473,"props":1413,"children":1414},{"style":486},[1415],{"type":45,"value":1416}," create-state-machine",{"type":40,"tag":473,"props":1418,"children":1419},{"style":496},[1420],{"type":45,"value":1421}," \\\n",{"type":40,"tag":473,"props":1423,"children":1424},{"class":475,"line":516},[1425,1430,1435],{"type":40,"tag":473,"props":1426,"children":1427},{"style":486},[1428],{"type":45,"value":1429},"  --name",{"type":40,"tag":473,"props":1431,"children":1432},{"style":486},[1433],{"type":45,"value":1434}," my-workflow",{"type":40,"tag":473,"props":1436,"children":1437},{"style":496},[1438],{"type":45,"value":1421},{"type":40,"tag":473,"props":1440,"children":1441},{"class":475,"line":562},[1442,1447,1452],{"type":40,"tag":473,"props":1443,"children":1444},{"style":486},[1445],{"type":45,"value":1446},"  --definition",{"type":40,"tag":473,"props":1448,"children":1449},{"style":486},[1450],{"type":45,"value":1451}," file:\u002F\u002Fdefinition.json",{"type":40,"tag":473,"props":1453,"children":1454},{"style":496},[1455],{"type":45,"value":1421},{"type":40,"tag":473,"props":1457,"children":1458},{"class":475,"line":594},[1459,1464],{"type":40,"tag":473,"props":1460,"children":1461},{"style":486},[1462],{"type":45,"value":1463},"  --role-arn",{"type":40,"tag":473,"props":1465,"children":1466},{"style":486},[1467],{"type":45,"value":1468}," arn:aws:iam::123456789:role\u002Fstep-functions-role\n",{"type":40,"tag":473,"props":1470,"children":1471},{"class":475,"line":624},[1472],{"type":40,"tag":473,"props":1473,"children":1475},{"emptyLinePlaceholder":1474},true,[1476],{"type":45,"value":1477},"\n",{"type":40,"tag":473,"props":1479,"children":1480},{"class":475,"line":650},[1481],{"type":40,"tag":473,"props":1482,"children":1483},{"style":1395},[1484],{"type":45,"value":1485},"# Start execution\n",{"type":40,"tag":473,"props":1487,"children":1488},{"class":475,"line":659},[1489,1493,1497,1502],{"type":40,"tag":473,"props":1490,"children":1491},{"style":1404},[1492],{"type":45,"value":22},{"type":40,"tag":473,"props":1494,"children":1495},{"style":486},[1496],{"type":45,"value":1411},{"type":40,"tag":473,"props":1498,"children":1499},{"style":486},[1500],{"type":45,"value":1501}," start-execution",{"type":40,"tag":473,"props":1503,"children":1504},{"style":496},[1505],{"type":45,"value":1421},{"type":40,"tag":473,"props":1507,"children":1508},{"class":475,"line":667},[1509,1514,1519],{"type":40,"tag":473,"props":1510,"children":1511},{"style":486},[1512],{"type":45,"value":1513},"  --state-machine-arn",{"type":40,"tag":473,"props":1515,"children":1516},{"style":486},[1517],{"type":45,"value":1518}," arn:aws:states:us-east-1:123456789:stateMachine:my-workflow",{"type":40,"tag":473,"props":1520,"children":1521},{"style":496},[1522],{"type":45,"value":1421},{"type":40,"tag":473,"props":1524,"children":1525},{"class":475,"line":727},[1526,1531,1536,1541],{"type":40,"tag":473,"props":1527,"children":1528},{"style":486},[1529],{"type":45,"value":1530},"  --input",{"type":40,"tag":473,"props":1532,"children":1533},{"style":480},[1534],{"type":45,"value":1535}," '",{"type":40,"tag":473,"props":1537,"children":1538},{"style":486},[1539],{"type":45,"value":1540},"{\"orderId\": \"12345\"}",{"type":40,"tag":473,"props":1542,"children":1543},{"style":480},[1544],{"type":45,"value":1545},"'\n",{"type":40,"tag":473,"props":1547,"children":1548},{"class":475,"line":756},[1549],{"type":40,"tag":473,"props":1550,"children":1551},{"emptyLinePlaceholder":1474},[1552],{"type":45,"value":1477},{"type":40,"tag":473,"props":1554,"children":1555},{"class":475,"line":784},[1556],{"type":40,"tag":473,"props":1557,"children":1558},{"style":1395},[1559],{"type":45,"value":1560},"# List executions\n",{"type":40,"tag":473,"props":1562,"children":1563},{"class":475,"line":813},[1564,1568,1572,1577],{"type":40,"tag":473,"props":1565,"children":1566},{"style":1404},[1567],{"type":45,"value":22},{"type":40,"tag":473,"props":1569,"children":1570},{"style":486},[1571],{"type":45,"value":1411},{"type":40,"tag":473,"props":1573,"children":1574},{"style":486},[1575],{"type":45,"value":1576}," list-executions",{"type":40,"tag":473,"props":1578,"children":1579},{"style":496},[1580],{"type":45,"value":1421},{"type":40,"tag":473,"props":1582,"children":1583},{"class":475,"line":23},[1584,1588,1592],{"type":40,"tag":473,"props":1585,"children":1586},{"style":486},[1587],{"type":45,"value":1513},{"type":40,"tag":473,"props":1589,"children":1590},{"style":486},[1591],{"type":45,"value":1518},{"type":40,"tag":473,"props":1593,"children":1594},{"style":496},[1595],{"type":45,"value":1421},{"type":40,"tag":473,"props":1597,"children":1598},{"class":475,"line":27},[1599,1604],{"type":40,"tag":473,"props":1600,"children":1601},{"style":486},[1602],{"type":45,"value":1603},"  --status-filter",{"type":40,"tag":473,"props":1605,"children":1606},{"style":486},[1607],{"type":45,"value":1608}," FAILED\n",{"type":40,"tag":473,"props":1610,"children":1611},{"class":475,"line":862},[1612],{"type":40,"tag":473,"props":1613,"children":1614},{"emptyLinePlaceholder":1474},[1615],{"type":45,"value":1477},{"type":40,"tag":473,"props":1617,"children":1618},{"class":475,"line":903},[1619],{"type":40,"tag":473,"props":1620,"children":1621},{"style":1395},[1622],{"type":45,"value":1623},"# Get execution details\n",{"type":40,"tag":473,"props":1625,"children":1626},{"class":475,"line":928},[1627,1631,1635,1640],{"type":40,"tag":473,"props":1628,"children":1629},{"style":1404},[1630],{"type":45,"value":22},{"type":40,"tag":473,"props":1632,"children":1633},{"style":486},[1634],{"type":45,"value":1411},{"type":40,"tag":473,"props":1636,"children":1637},{"style":486},[1638],{"type":45,"value":1639}," describe-execution",{"type":40,"tag":473,"props":1641,"children":1642},{"style":496},[1643],{"type":45,"value":1421},{"type":40,"tag":473,"props":1645,"children":1646},{"class":475,"line":937},[1647,1652],{"type":40,"tag":473,"props":1648,"children":1649},{"style":486},[1650],{"type":45,"value":1651},"  --execution-arn",{"type":40,"tag":473,"props":1653,"children":1654},{"style":486},[1655],{"type":45,"value":1656}," arn:aws:states:us-east-1:123456789:execution:my-workflow:exec-123\n",{"type":40,"tag":473,"props":1658,"children":1660},{"class":475,"line":1659},20,[1661],{"type":40,"tag":473,"props":1662,"children":1663},{"emptyLinePlaceholder":1474},[1664],{"type":45,"value":1477},{"type":40,"tag":473,"props":1666,"children":1668},{"class":475,"line":1667},21,[1669],{"type":40,"tag":473,"props":1670,"children":1671},{"style":1395},[1672],{"type":45,"value":1673},"# Get execution history (debug step-by-step)\n",{"type":40,"tag":473,"props":1675,"children":1677},{"class":475,"line":1676},22,[1678,1682,1686,1691],{"type":40,"tag":473,"props":1679,"children":1680},{"style":1404},[1681],{"type":45,"value":22},{"type":40,"tag":473,"props":1683,"children":1684},{"style":486},[1685],{"type":45,"value":1411},{"type":40,"tag":473,"props":1687,"children":1688},{"style":486},[1689],{"type":45,"value":1690}," get-execution-history",{"type":40,"tag":473,"props":1692,"children":1693},{"style":496},[1694],{"type":45,"value":1421},{"type":40,"tag":473,"props":1696,"children":1698},{"class":475,"line":1697},23,[1699,1703,1708],{"type":40,"tag":473,"props":1700,"children":1701},{"style":486},[1702],{"type":45,"value":1651},{"type":40,"tag":473,"props":1704,"children":1705},{"style":486},[1706],{"type":45,"value":1707}," arn:aws:states:us-east-1:123456789:execution:my-workflow:exec-123",{"type":40,"tag":473,"props":1709,"children":1710},{"style":496},[1711],{"type":45,"value":1421},{"type":40,"tag":473,"props":1713,"children":1715},{"class":475,"line":1714},24,[1716,1721,1725,1730],{"type":40,"tag":473,"props":1717,"children":1718},{"style":486},[1719],{"type":45,"value":1720},"  --query",{"type":40,"tag":473,"props":1722,"children":1723},{"style":480},[1724],{"type":45,"value":1535},{"type":40,"tag":473,"props":1726,"children":1727},{"style":486},[1728],{"type":45,"value":1729},"events[?type==`TaskFailed` || type==`ExecutionFailed`]",{"type":40,"tag":473,"props":1731,"children":1732},{"style":480},[1733],{"type":45,"value":1545},{"type":40,"tag":473,"props":1735,"children":1737},{"class":475,"line":1736},25,[1738],{"type":40,"tag":473,"props":1739,"children":1740},{"emptyLinePlaceholder":1474},[1741],{"type":45,"value":1477},{"type":40,"tag":473,"props":1743,"children":1745},{"class":475,"line":1744},26,[1746],{"type":40,"tag":473,"props":1747,"children":1748},{"style":1395},[1749],{"type":45,"value":1750},"# Update state machine\n",{"type":40,"tag":473,"props":1752,"children":1754},{"class":475,"line":1753},27,[1755,1759,1763,1768],{"type":40,"tag":473,"props":1756,"children":1757},{"style":1404},[1758],{"type":45,"value":22},{"type":40,"tag":473,"props":1760,"children":1761},{"style":486},[1762],{"type":45,"value":1411},{"type":40,"tag":473,"props":1764,"children":1765},{"style":486},[1766],{"type":45,"value":1767}," update-state-machine",{"type":40,"tag":473,"props":1769,"children":1770},{"style":496},[1771],{"type":45,"value":1421},{"type":40,"tag":473,"props":1773,"children":1775},{"class":475,"line":1774},28,[1776,1780,1784],{"type":40,"tag":473,"props":1777,"children":1778},{"style":486},[1779],{"type":45,"value":1513},{"type":40,"tag":473,"props":1781,"children":1782},{"style":486},[1783],{"type":45,"value":1518},{"type":40,"tag":473,"props":1785,"children":1786},{"style":496},[1787],{"type":45,"value":1421},{"type":40,"tag":473,"props":1789,"children":1791},{"class":475,"line":1790},29,[1792,1796],{"type":40,"tag":473,"props":1793,"children":1794},{"style":486},[1795],{"type":45,"value":1446},{"type":40,"tag":473,"props":1797,"children":1798},{"style":486},[1799],{"type":45,"value":1800}," file:\u002F\u002Fdefinition.json\n",{"type":40,"tag":473,"props":1802,"children":1804},{"class":475,"line":1803},30,[1805],{"type":40,"tag":473,"props":1806,"children":1807},{"emptyLinePlaceholder":1474},[1808],{"type":45,"value":1477},{"type":40,"tag":473,"props":1810,"children":1812},{"class":475,"line":1811},31,[1813],{"type":40,"tag":473,"props":1814,"children":1815},{"style":1395},[1816],{"type":45,"value":1817},"# Test a state (local testing)\n",{"type":40,"tag":473,"props":1819,"children":1821},{"class":475,"line":1820},32,[1822,1826,1830,1835],{"type":40,"tag":473,"props":1823,"children":1824},{"style":1404},[1825],{"type":45,"value":22},{"type":40,"tag":473,"props":1827,"children":1828},{"style":486},[1829],{"type":45,"value":1411},{"type":40,"tag":473,"props":1831,"children":1832},{"style":486},[1833],{"type":45,"value":1834}," test-state",{"type":40,"tag":473,"props":1836,"children":1837},{"style":496},[1838],{"type":45,"value":1421},{"type":40,"tag":473,"props":1840,"children":1842},{"class":475,"line":1841},33,[1843,1847,1851,1856,1861],{"type":40,"tag":473,"props":1844,"children":1845},{"style":486},[1846],{"type":45,"value":1446},{"type":40,"tag":473,"props":1848,"children":1849},{"style":480},[1850],{"type":45,"value":1535},{"type":40,"tag":473,"props":1852,"children":1853},{"style":486},[1854],{"type":45,"value":1855},"{\"Type\":\"Task\",\"Resource\":\"arn:aws:states:::dynamodb:getItem\",\"Parameters\":{\"TableName\":\"Orders\",\"Key\":{\"orderId\":{\"S\":\"123\"}}}}",{"type":40,"tag":473,"props":1857,"children":1858},{"style":480},[1859],{"type":45,"value":1860},"'",{"type":40,"tag":473,"props":1862,"children":1863},{"style":496},[1864],{"type":45,"value":1421},{"type":40,"tag":473,"props":1866,"children":1868},{"class":475,"line":1867},34,[1869,1873,1878],{"type":40,"tag":473,"props":1870,"children":1871},{"style":486},[1872],{"type":45,"value":1463},{"type":40,"tag":473,"props":1874,"children":1875},{"style":486},[1876],{"type":45,"value":1877}," arn:aws:iam::123456789:role\u002Fstep-functions-role",{"type":40,"tag":473,"props":1879,"children":1880},{"style":496},[1881],{"type":45,"value":1421},{"type":40,"tag":473,"props":1883,"children":1885},{"class":475,"line":1884},35,[1886,1890,1894,1899],{"type":40,"tag":473,"props":1887,"children":1888},{"style":486},[1889],{"type":45,"value":1530},{"type":40,"tag":473,"props":1891,"children":1892},{"style":480},[1893],{"type":45,"value":1535},{"type":40,"tag":473,"props":1895,"children":1896},{"style":486},[1897],{"type":45,"value":1898},"{\"orderId\": \"123\"}",{"type":40,"tag":473,"props":1900,"children":1901},{"style":480},[1902],{"type":45,"value":1545},{"type":40,"tag":48,"props":1904,"children":1906},{"id":1905},"workflow-studio",[1907],{"type":45,"value":1908},"Workflow Studio",{"type":40,"tag":41,"props":1910,"children":1911},{},[1912],{"type":45,"value":1913},"Use Workflow Studio in the AWS Console for:",{"type":40,"tag":225,"props":1915,"children":1916},{},[1917,1922,1927],{"type":40,"tag":229,"props":1918,"children":1919},{},[1920],{"type":45,"value":1921},"Visual design and prototyping (drag-and-drop states)",{"type":40,"tag":229,"props":1923,"children":1924},{},[1925],{"type":45,"value":1926},"Understanding existing workflows",{"type":40,"tag":229,"props":1928,"children":1929},{},[1930],{"type":45,"value":1931},"Quick iteration on state machine logic",{"type":40,"tag":41,"props":1933,"children":1934},{},[1935,1939],{"type":40,"tag":217,"props":1936,"children":1937},{},[1938],{"type":45,"value":279},{"type":45,"value":1940},": Start in Workflow Studio for prototyping, then export to ASL (Amazon States Language) JSON and manage in version control. Never rely solely on the console for production workflows.",{"type":40,"tag":48,"props":1942,"children":1944},{"id":1943},"inputoutput-processing",[1945],{"type":45,"value":1946},"Input\u002FOutput Processing",{"type":40,"tag":41,"props":1948,"children":1949},{},[1950,1952],{"type":45,"value":1951},"Data flows through each state as: ",{"type":40,"tag":382,"props":1953,"children":1955},{"className":1954},[],[1956],{"type":45,"value":1957},"InputPath -> Parameters -> Task -> ResultSelector -> ResultPath -> OutputPath",{"type":40,"tag":41,"props":1959,"children":1960},{},[1961,1965,1967,1972,1974,1980,1982,1987],{"type":40,"tag":217,"props":1962,"children":1963},{},[1964],{"type":45,"value":279},{"type":45,"value":1966},": Use ",{"type":40,"tag":382,"props":1968,"children":1970},{"className":1969},[],[1971],{"type":45,"value":1108},{"type":45,"value":1973}," generously to accumulate data through states. Use ",{"type":40,"tag":382,"props":1975,"children":1977},{"className":1976},[],[1978],{"type":45,"value":1979},"ResultSelector",{"type":45,"value":1981}," to trim large API responses down to only what you need (saves state size and cost on Standard workflows). See ",{"type":40,"tag":382,"props":1983,"children":1985},{"className":1984},[],[1986],{"type":45,"value":387},{"type":45,"value":1988}," for detailed examples of each processing stage.",{"type":40,"tag":48,"props":1990,"children":1992},{"id":1991},"anti-patterns",[1993],{"type":45,"value":1994},"Anti-Patterns",{"type":40,"tag":1996,"props":1997,"children":1998},"ol",{},[1999,2009,2019,2029,2039,2056,2066,2076,2086,2104],{"type":40,"tag":229,"props":2000,"children":2001},{},[2002,2007],{"type":40,"tag":217,"props":2003,"children":2004},{},[2005],{"type":45,"value":2006},"Lambda wrappers for AWS API calls",{"type":45,"value":2008},": Step Functions integrates directly with 200+ services. Don't write a Lambda just to call DynamoDB PutItem or SQS SendMessage.",{"type":40,"tag":229,"props":2010,"children":2011},{},[2012,2017],{"type":40,"tag":217,"props":2013,"children":2014},{},[2015],{"type":45,"value":2016},"No error handling on Task states",{"type":45,"value":2018},": Every Task state should have Retry (for transient errors) and Catch (for permanent failures). No exceptions.",{"type":40,"tag":229,"props":2020,"children":2021},{},[2022,2027],{"type":40,"tag":217,"props":2023,"children":2024},{},[2025],{"type":45,"value":2026},"Ignoring state payload limits",{"type":45,"value":2028},": Standard workflows have a 256 KB payload limit per state. Store large data in S3 and pass references.",{"type":40,"tag":229,"props":2030,"children":2031},{},[2032,2037],{"type":40,"tag":217,"props":2033,"children":2034},{},[2035],{"type":45,"value":2036},"Using Standard for high-volume short tasks",{"type":45,"value":2038},": If you're running >100K executions\u002Fday with \u003C5 min duration, Express workflows are dramatically cheaper.",{"type":40,"tag":229,"props":2040,"children":2041},{},[2042,2047,2049,2054],{"type":40,"tag":217,"props":2043,"children":2044},{},[2045],{"type":45,"value":2046},"Missing TimeoutSeconds on callback tasks",{"type":45,"value":2048},": Without a timeout, ",{"type":40,"tag":382,"props":2050,"children":2052},{"className":2051},[],[2053],{"type":45,"value":1316},{"type":45,"value":2055}," tasks will hang for up to 1 year if the callback never arrives.",{"type":40,"tag":229,"props":2057,"children":2058},{},[2059,2064],{"type":40,"tag":217,"props":2060,"children":2061},{},[2062],{"type":45,"value":2063},"Not using Distributed Map for large datasets",{"type":45,"value":2065},": Inline Map processes items sequentially or with limited concurrency within one execution. Distributed Map scales to millions of items.",{"type":40,"tag":229,"props":2067,"children":2068},{},[2069,2074],{"type":40,"tag":217,"props":2070,"children":2071},{},[2072],{"type":45,"value":2073},"Putting business logic in the state machine",{"type":45,"value":2075},": ASL is for orchestration, not computation. Complex data transforms and business rules belong in Lambda functions.",{"type":40,"tag":229,"props":2077,"children":2078},{},[2079,2084],{"type":40,"tag":217,"props":2080,"children":2081},{},[2082],{"type":45,"value":2083},"Not enabling logging for Express workflows",{"type":45,"value":2085},": Express workflows have no built-in execution history. You MUST configure CloudWatch Logs or you'll have zero visibility.",{"type":40,"tag":229,"props":2087,"children":2088},{},[2089,2094,2096,2102],{"type":40,"tag":217,"props":2090,"children":2091},{},[2092],{"type":45,"value":2093},"Monolith state machines",{"type":45,"value":2095},": A 50-state workflow is hard to understand and test. Break large workflows into nested state machines using ",{"type":40,"tag":382,"props":2097,"children":2099},{"className":2098},[],[2100],{"type":45,"value":2101},"arn:aws:states:::states:startExecution.sync:2",{"type":45,"value":2103},".",{"type":40,"tag":229,"props":2105,"children":2106},{},[2107,2119],{"type":40,"tag":217,"props":2108,"children":2109},{},[2110,2112,2117],{"type":45,"value":2111},"Not using ",{"type":40,"tag":382,"props":2113,"children":2115},{"className":2114},[],[2116],{"type":45,"value":823},{"type":45,"value":2118}," on retries",{"type":45,"value":2120},": Without jitter, retried tasks create thundering herd effects that amplify the original failure.",{"type":40,"tag":48,"props":2122,"children":2124},{"id":2123},"cost-optimization",[2125],{"type":45,"value":2126},"Cost Optimization",{"type":40,"tag":225,"props":2128,"children":2129},{},[2130,2139,2148,2158,2168],{"type":40,"tag":229,"props":2131,"children":2132},{},[2133,2137],{"type":40,"tag":217,"props":2134,"children":2135},{},[2136],{"type":45,"value":76},{"type":45,"value":2138},": $0.025 per 1,000 state transitions. Minimize states. Use direct integrations to avoid Lambda invocation costs on top of transition costs.",{"type":40,"tag":229,"props":2140,"children":2141},{},[2142,2146],{"type":40,"tag":217,"props":2143,"children":2144},{},[2145],{"type":45,"value":81},{"type":45,"value":2147},": Priced by number of requests and duration. Cheaper for high-volume, short workflows.",{"type":40,"tag":229,"props":2149,"children":2150},{},[2151,2156],{"type":40,"tag":217,"props":2152,"children":2153},{},[2154],{"type":45,"value":2155},"Pass states are not free",{"type":45,"value":2157}," in Standard (they count as transitions). Eliminate unnecessary Pass states.",{"type":40,"tag":229,"props":2159,"children":2160},{},[2161,2166],{"type":40,"tag":217,"props":2162,"children":2163},{},[2164],{"type":45,"value":2165},"Combine simple sequential tasks",{"type":45,"value":2167}," where possible to reduce transition count.",{"type":40,"tag":229,"props":2169,"children":2170},{},[2171,2172,2177],{"type":45,"value":1310},{"type":40,"tag":382,"props":2173,"children":2175},{"className":2174},[],[2176],{"type":45,"value":1979},{"type":45,"value":2178}," to trim response payloads -- smaller payloads mean faster processing.",{"type":40,"tag":48,"props":2180,"children":2182},{"id":2181},"reference-files",[2183],{"type":45,"value":2184},"Reference Files",{"type":40,"tag":225,"props":2186,"children":2187},{},[2188,2197],{"type":40,"tag":229,"props":2189,"children":2190},{},[2191,2195],{"type":40,"tag":217,"props":2192,"children":2193},{},[2194],{"type":45,"value":1297},{"type":45,"value":2196}," -- Saga, callback, and Distributed Map patterns with full ASL examples",{"type":40,"tag":229,"props":2198,"children":2199},{},[2200,2204],{"type":40,"tag":217,"props":2201,"children":2202},{},[2203],{"type":45,"value":387},{"type":45,"value":2205}," -- Direct service integration examples (DynamoDB, SQS, SNS, EventBridge, ECS, Bedrock), state type ASL, and input\u002Foutput processing pipeline details",{"type":40,"tag":48,"props":2207,"children":2209},{"id":2208},"related-skills",[2210],{"type":45,"value":2211},"Related Skills",{"type":40,"tag":225,"props":2213,"children":2214},{},[2215,2226,2237,2248,2259],{"type":40,"tag":229,"props":2216,"children":2217},{},[2218,2224],{"type":40,"tag":382,"props":2219,"children":2221},{"className":2220},[],[2222],{"type":45,"value":2223},"aws-plan",{"type":45,"value":2225}," -- Architecture planning that may include Step Functions workflows",{"type":40,"tag":229,"props":2227,"children":2228},{},[2229,2235],{"type":40,"tag":382,"props":2230,"children":2232},{"className":2231},[],[2233],{"type":45,"value":2234},"lambda",{"type":45,"value":2236}," -- Lambda functions used as Task state targets",{"type":40,"tag":229,"props":2238,"children":2239},{},[2240,2246],{"type":40,"tag":382,"props":2241,"children":2243},{"className":2242},[],[2244],{"type":45,"value":2245},"api-gateway",{"type":45,"value":2247}," -- API Gateway to Step Functions direct integrations (StartExecution, StartSyncExecution)",{"type":40,"tag":229,"props":2249,"children":2250},{},[2251,2257],{"type":40,"tag":382,"props":2252,"children":2254},{"className":2253},[],[2255],{"type":45,"value":2256},"observability",{"type":45,"value":2258}," -- CloudWatch Logs, X-Ray tracing, and monitoring for Step Functions",{"type":40,"tag":229,"props":2260,"children":2261},{},[2262,2268],{"type":40,"tag":382,"props":2263,"children":2265},{"className":2264},[],[2266],{"type":45,"value":2267},"aws-debug",{"type":45,"value":2269}," -- Debugging failed Step Functions executions",{"type":40,"tag":2271,"props":2272,"children":2273},"style",{},[2274],{"type":45,"value":2275},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2277,"total":2374},[2278,2292,2307,2319,2331,2344,2359],{"slug":2279,"name":2279,"fn":2280,"description":2281,"org":2282,"tags":2283,"stars":23,"repoUrl":24,"updatedAt":2291},"agentcore","design Amazon Bedrock AgentCore architectures","Deep-dive into Amazon Bedrock AgentCore platform design, service selection, deployment, and production operations. This skill should be used when the user asks to \"design an AgentCore architecture\", \"deploy agents on AgentCore\", \"configure AgentCore Runtime\", \"set up AgentCore Memory\", \"use AgentCore Gateway\", \"configure AgentCore Identity\", \"set up AgentCore Policy\", \"plan agent observability\", \"evaluate agent quality\", \"move agent PoC to production\", or mentions AgentCore, AgentCore Runtime, AgentCore Memory, AgentCore Gateway, AgentCore Identity, AgentCore Policy, AgentCore Evaluations, AgentCore Code Interpreter, AgentCore Browser, A2A protocol, or multi-agent orchestration on AWS.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2284,2287,2290],{"name":2285,"slug":2286,"type":16},"Agents","agents",{"name":2288,"slug":2289,"type":16},"Architecture","architecture",{"name":21,"slug":22,"type":16},"2026-07-12T08:40:11.108951",{"slug":2293,"name":2293,"fn":2294,"description":2295,"org":2296,"tags":2297,"stars":23,"repoUrl":24,"updatedAt":2306},"aidlc-lite","develop AI applications on AWS","Lightweight AI development lifecycle for building on AWS. A simplified take on the AI-DLC philosophy — think together, then build fast. Acts as a design partner that understands intent, proposes alternatives with trade-offs, and ships working code without the ceremony of full requirements\u002Fdesign\u002Fspec documents. Use when a founder says \"build X on AWS\", \"add Y to my stack\", \"scaffold an API\", or \"write the CDK for Z\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2298,2299,2302,2303],{"name":2285,"slug":2286,"type":16},{"name":2300,"slug":2301,"type":16},"AI Infrastructure","ai-infrastructure",{"name":21,"slug":22,"type":16},{"name":2304,"slug":2305,"type":16},"Engineering","engineering","2026-07-12T08:40:40.204103",{"slug":2308,"name":2308,"fn":2309,"description":2310,"org":2311,"tags":2312,"stars":23,"repoUrl":24,"updatedAt":2318},"architect-for-startups","advise on AWS architecture for startups","AWS architecture advisor tailored specifically for startups. Alters AWS architecture recommendations based on startup stage (pre-revenue through Series B+), team size, runway, and credits. ALWAYS use when asked about building on AWS, choosing services, planning infrastructure, managing costs with credits, or preparing architecture for fundraising.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2313,2314,2315],{"name":2288,"slug":2289,"type":16},{"name":21,"slug":22,"type":16},{"name":2316,"slug":2317,"type":16},"Strategy","strategy","2026-07-12T08:41:33.557354",{"slug":2320,"name":2320,"fn":2321,"description":2322,"org":2323,"tags":2324,"stars":23,"repoUrl":24,"updatedAt":2330},"aws-architect","design and review AWS architectures","Design and review AWS architectures following Well-Architected Framework principles. Use when planning new infrastructure, reviewing existing architectures, evaluating trade-offs between AWS services, or when asked about AWS best practices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2325,2326,2327],{"name":2288,"slug":2289,"type":16},{"name":21,"slug":22,"type":16},{"name":2328,"slug":2329,"type":16},"Infrastructure","infrastructure","2026-07-12T08:40:57.630086",{"slug":2332,"name":2332,"fn":2333,"description":2334,"org":2335,"tags":2336,"stars":23,"repoUrl":24,"updatedAt":2343},"aws-compare","compare AWS architecture options","Compare 2-3 AWS architecture options side-by-side across cost, complexity, performance, security, and operational burden. Use when evaluating trade-offs between approaches or when the user is deciding between options.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2337,2338,2339,2340],{"name":2288,"slug":2289,"type":16},{"name":21,"slug":22,"type":16},{"name":2126,"slug":2123,"type":16},{"name":2341,"slug":2342,"type":16},"Security","security","2026-07-12T08:40:23.960287",{"slug":2267,"name":2267,"fn":2345,"description":2346,"org":2347,"tags":2348,"stars":23,"repoUrl":24,"updatedAt":2358},"debug AWS infrastructure and deployment failures","Debug AWS infrastructure issues, deployment failures, and runtime errors. Use when troubleshooting CloudFormation stack failures, Lambda errors, ECS task failures, permission issues, networking problems, or any AWS service misbehavior.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2349,2350,2353,2356],{"name":21,"slug":22,"type":16},{"name":2351,"slug":2352,"type":16},"Debugging","debugging",{"name":2354,"slug":2355,"type":16},"Deployment","deployment",{"name":2357,"slug":2256,"type":16},"Observability","2026-07-12T08:40:16.767171",{"slug":2360,"name":2360,"fn":2361,"description":2362,"org":2363,"tags":2364,"stars":23,"repoUrl":24,"updatedAt":2373},"aws-diagram","generate AWS architecture diagrams","Generate AWS architecture diagrams in Mermaid or ASCII from a description, existing IaC, or conversation context. Use when the user wants to visualize an architecture.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2365,2366,2367,2370],{"name":2288,"slug":2289,"type":16},{"name":21,"slug":22,"type":16},{"name":2368,"slug":2369,"type":16},"Diagrams","diagrams",{"name":2371,"slug":2372,"type":16},"Visualization","visualization","2026-07-12T08:40:43.26341",42,{"items":2376,"total":2546},[2377,2392,2413,2423,2436,2449,2459,2469,2488,2503,2518,2531],{"slug":2378,"name":2378,"fn":2379,"description":2380,"org":2381,"tags":2382,"stars":2389,"repoUrl":2390,"updatedAt":2391},"agentcore-investigation","investigate Bedrock AgentCore runtime sessions","Investigate Bedrock AgentCore runtime sessions via CloudWatch Logs Insights — resolve session\u002Ftrace IDs, query OTEL spans, filter noise, build timelines. Use when debugging AgentCore agent sessions, tracing tool calls, or analyzing latency.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2383,2384,2385,2388],{"name":21,"slug":22,"type":16},{"name":2351,"slug":2352,"type":16},{"name":2386,"slug":2387,"type":16},"Logs","logs",{"name":2357,"slug":2256,"type":16},9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":2393,"name":2394,"fn":2395,"description":2396,"org":2397,"tags":2398,"stars":2389,"repoUrl":2390,"updatedAt":2412},"amazon-aurora-dsql","amazon aurora dsql","build applications with Aurora DSQL","Build with Aurora DSQL — manage schemas, execute queries, handle migrations, diagnose query plans, load data, and develop applications with a serverless, distributed SQL database. Covers IAM auth, multi-tenant patterns, MySQL-to-DSQL and PostgreSQL-to-DSQL schema conversion, FK replacement code generation, OCC retry patterns, ORM migration (Django\u002FHibernate\u002FRails), DDL operations, query plan explainability, SQL compatibility validation, and bulk data loading. Triggers on phrases like: DSQL, Aurora DSQL, create DSQL table, DSQL schema, migrate to DSQL, distributed SQL database, serverless PostgreSQL-compatible database, DSQL query plan, DSQL EXPLAIN ANALYZE, why is my DSQL query slow, DSQL foreign key, DSQL OCC retry, DSQL multi-region, load into DSQL, load CSV into DSQL, bulk load DSQL, aurora-dsql-loader.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2399,2402,2403,2406,2409],{"name":2400,"slug":2401,"type":16},"Aurora","aurora",{"name":21,"slug":22,"type":16},{"name":2404,"slug":2405,"type":16},"Database","database",{"name":2407,"slug":2408,"type":16},"Serverless","serverless",{"name":2410,"slug":2411,"type":16},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":2414,"name":2415,"fn":2395,"description":2396,"org":2416,"tags":2417,"stars":2389,"repoUrl":2390,"updatedAt":2422},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2418,2419,2420,2421],{"name":21,"slug":22,"type":16},{"name":2404,"slug":2405,"type":16},{"name":2407,"slug":2408,"type":16},{"name":2410,"slug":2411,"type":16},"2026-07-12T08:36:42.694299",{"slug":2424,"name":2425,"fn":2395,"description":2396,"org":2426,"tags":2427,"stars":2389,"repoUrl":2390,"updatedAt":2435},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2428,2429,2430,2433,2434],{"name":21,"slug":22,"type":16},{"name":2404,"slug":2405,"type":16},{"name":2431,"slug":2432,"type":16},"Migration","migration",{"name":2407,"slug":2408,"type":16},{"name":2410,"slug":2411,"type":16},"2026-07-12T08:36:38.584057",{"slug":2437,"name":2438,"fn":2395,"description":2396,"org":2439,"tags":2440,"stars":2389,"repoUrl":2390,"updatedAt":2448},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2441,2442,2443,2446,2447],{"name":21,"slug":22,"type":16},{"name":2404,"slug":2405,"type":16},{"name":2444,"slug":2445,"type":16},"PostgreSQL","postgresql",{"name":2407,"slug":2408,"type":16},{"name":2410,"slug":2411,"type":16},"2026-07-12T08:36:46.530743",{"slug":2450,"name":2451,"fn":2395,"description":2396,"org":2452,"tags":2453,"stars":2389,"repoUrl":2390,"updatedAt":2458},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2454,2455,2456,2457],{"name":21,"slug":22,"type":16},{"name":2404,"slug":2405,"type":16},{"name":2407,"slug":2408,"type":16},{"name":2410,"slug":2411,"type":16},"2026-07-12T08:36:48.104182",{"slug":2460,"name":2460,"fn":2395,"description":2396,"org":2461,"tags":2462,"stars":2389,"repoUrl":2390,"updatedAt":2468},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2463,2464,2465,2466,2467],{"name":21,"slug":22,"type":16},{"name":2404,"slug":2405,"type":16},{"name":2431,"slug":2432,"type":16},{"name":2407,"slug":2408,"type":16},{"name":2410,"slug":2411,"type":16},"2026-07-12T08:36:36.374512",{"slug":2470,"name":2470,"fn":2471,"description":2472,"org":2473,"tags":2474,"stars":2485,"repoUrl":2486,"updatedAt":2487},"cost-efficiency-analyzer","analyze cost efficiency and expenses","Analyzes cost structure, cost efficiency, and expense management from P&L data. Use when the user asks about costs, expenses, COGS, operating expenses, cost ratios, cost control, spending efficiency, margin compression from cost side, or wants to understand where money is going. Also use for \"are we spending too much\", \"cost breakdown\", \"expense analysis\", or \"how efficient are our operations\". NOT for revenue or top-line analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2475,2478,2481,2482],{"name":2476,"slug":2477,"type":16},"Accounting","accounting",{"name":2479,"slug":2480,"type":16},"Analytics","analytics",{"name":2126,"slug":2123,"type":16},{"name":2483,"slug":2484,"type":16},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":2489,"name":2489,"fn":2490,"description":2491,"org":2492,"tags":2493,"stars":2485,"repoUrl":2486,"updatedAt":2502},"executive-financial-briefing","generate executive financial briefings","Generates a concise executive-level financial briefing or summary suitable for a CEO, CFO, or board presentation. Use when the user asks for a summary, briefing, executive summary, board update, financial overview, financial health check, or \"how is the business doing\". Covers the full P&L picture in one page. Also use for \"give me the highlights\", \"what do I need to know\", or \"quick financial update\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2494,2495,2496,2499],{"name":21,"slug":22,"type":16},{"name":2483,"slug":2484,"type":16},{"name":2497,"slug":2498,"type":16},"Management","management",{"name":2500,"slug":2501,"type":16},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":2504,"name":2504,"fn":2505,"description":2506,"org":2507,"tags":2508,"stars":2485,"repoUrl":2486,"updatedAt":2517},"multi-quarter-trend-analysis","analyze multi-quarter financial trends","Analyzes financial trends across multiple quarters by comparing P&L metrics over time. Use when the user wants to see trends, patterns, trajectories, or directional movement across 3 or more quarters. Also use for \"how are we trending\", \"show me the trend\", \"track performance over time\", \"quarter over quarter comparison across all quarters\", or any multi-period longitudinal analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2509,2510,2511,2514],{"name":2479,"slug":2480,"type":16},{"name":2483,"slug":2484,"type":16},{"name":2512,"slug":2513,"type":16},"Financial Statements","financial-statements",{"name":2515,"slug":2516,"type":16},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":2519,"name":2519,"fn":2520,"description":2521,"org":2522,"tags":2523,"stars":2485,"repoUrl":2486,"updatedAt":2530},"pdf","process and manipulate PDF documents","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2524,2525,2528],{"name":14,"slug":15,"type":16},{"name":2526,"slug":2527,"type":16},"Documents","documents",{"name":2529,"slug":2519,"type":16},"PDF","2026-07-12T08:41:44.135656",{"slug":2532,"name":2532,"fn":2533,"description":2534,"org":2535,"tags":2536,"stars":2485,"repoUrl":2486,"updatedAt":2545},"quarterly-kpi-calculator","calculate quarterly financial KPIs","Calculates quarterly financial KPIs from P&L data. P&L figures can be provided directly by the user or fetched from the financial data MCP server. Use when the user wants KPI calculations such as Gross Margin %, EBITDA Margin %, Operating Expense Ratio, or Revenue Growth % QoQ. Also use for quarterly performance review, P&L analysis, or interpreting financial ratios against benchmarks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2537,2538,2541,2542],{"name":2476,"slug":2477,"type":16},{"name":2539,"slug":2540,"type":16},"Data Analysis","data-analysis",{"name":2483,"slug":2484,"type":16},{"name":2543,"slug":2544,"type":16},"KPI","kpi","2026-07-12T08:39:59.54971",150]