状态机默认「一处 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`。本场景据此输出配置简报。禁止声称「已零失败」。