成为赞助商——支持中文 Agent 生态

了解赞助
库Agent场景库
← 返回用例列表

Step Functions Retry/Catch 错误处理简报

按内置错误名、States.ALL 限制、Retry/Catch 适用范围与不可重试 Runtime,生成状态机错误处理配置简报;不代改状态机定义。

飞书DeepSeekClaudeChatGPT🛠️ 开发者工具🏢 企业协作

场景说明

面向企业自动化与独立开发者:把「一失败整单挂掉」写成 Retry/Catch 对照清单,区别于 n8n Error workflow 或通用 Lambda 重试。

案例叙事

01他们做了什么

状态机默认「一处 Task 炸,整次执行失败」。业务要的是可重试的瞬时错误与可降级的业务错误,却常把 States.ALL 乱用或漏掉 Lambda 服务异常。

AWS Step Functions《Handling errors in Step Functions workflows》说明:除 Pass、Wait 外,状态都可能运行时出错(定义问题如 Choice 无匹配、Task 失败如 Lambda 异常、瞬时网络分区等)。状态报错时默认失败整次执行;也可配置捕获错误、重试失败状态。Catcher 可用于 Task、Parallel、Map,但不能捕获顶层状态机执行失败;对预期可能失败的执行,可由调用方处理,或嵌套为子工作流在父流程捕获,或对 Standard 工作流监听 EventBridge 的 TIMED_OUT 再处置。错误以区分大小写的错误名标识;ASL 内置名以 `States.` 前缀开头,自定义名不得使用该前缀。须能处理 `Lambda.ServiceException` / `Lambda.SdkClientException` 等。`States.ALL` 为通配,须单独出现在 Catcher,且不能捕获终端错误 `States.DataLimitExceeded` 或 `States.Runtime`;后者可显式写在 ErrorEquals 中捕获/重试。`States.Runtime` 不可重试,且对 `States.ALL` 的 retry/catch 也抓不住。`States.TaskFailed` 在 retry/catch 中可作通配(除 `States.Timeout` 外)。Task/Parallel/Map 可含 Retry 数组(retrier,通常递增间隔)。未处理的 Lambda 历史上常报 `Lambda.Unknown`,较新运行时超时可能为 `Sandbox.Timedout`;匹配时建议同时考虑这些与 `States.TaskFailed`,或单独使用置于列表末尾的 `States.ALL`。本场景据此输出配置简报。禁止声称「已零失败」。

02实际效果

  • 源未披露量化「重试后成功率」;公开文只描述错误名、Catch/Retry 范围与例外。
  • 能避免「States.ALL 以为包打天下」却漏掉 Runtime/DataLimitExceeded。
  • 与工作流产品(n8n)错误处理话术可区分。

03值得知道

  • Express/Standard 与事件集成细节以当前配额与文档为准。
  • 嵌套状态机超时时父级可能看到 TaskFailed 而非 Timeout,排障时注意映射。
  • 上面写的是文档能力说明,不是你的执行历史统计。

04可复制提示词

SFN Retry/Catch 配置简报

你是 Step Functions 错误处理助手。只根据 ASL 摘要给简报,不要编造已部署成功。

状态机摘要:{{sfn_summary}}
失败错误名样例:{{error_names}}
现有 Retry/Catch:{{existing_handlers}}

输出 Markdown:
1. 默认真失败 vs 可配置点
2. 错误名对照(含 ALL/DataLimitExceeded/Runtime/TaskFailed/Timeout 注意)
3. 建议的 Retry/Catch 提问(仅建议,不直接改生产 JSON)
4. Lambda 瞬时异常是否覆盖
禁止代部署;禁止索要云密钥。

状态机失败复盘提纲

Step Functions 执行失败且重试未达预期,请写复盘提纲。

execution Arn/摘要:{{execution_brief}}
错误输出:{{error_output}}
时间线:{{timeline}}

输出:
1. 根因分层(未 Catch、ALL 限制、Runtime、超时映射)
2. 证据
3. 临时缓解
4. 防再发
不要伪造「已自动恢复」。

怎么做

  1. 粘贴状态机关键状态类型、已有 Retry/Catch 片段与失败错误名
  2. Agent 输出:默认真失败含义、可 Catch 的状态、错误名对照、States.ALL/DataLimitExceeded/Runtime 注意点
  3. 人工改 ASL;Agent 不代部署状态机

实用提示

  • States.ALL 须单独出现且抓不住 DataLimitExceeded 与 Runtime;Runtime 不可重试
  • 与 n8n-workflow-error-handling-brief 不同:本条是 ASL Retry/Catch 与 States.* 错误名,不是 n8n Error Trigger
#Step Functions#Retry#Catch#错误处理#状态机