You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Step Functions的catch分支中向异常处理函数传递变量

有两种可行方案可以实现item变量的传递:

方案1:将自定义数据嵌入错误信息

该方案适合item是在CreateNewItem函数内部生成的场景,直接修改函数的异常抛出逻辑即可:

  1. 修改CreateNewItem的catch块代码,将item序列化后嵌入错误信息:
catch(e) {
    // 构造包含业务数据的错误元信息
    const errorPayload = JSON.stringify({
        item: item,
        rawErrorMessage: e.message
    })
    const createItemError = new Error(errorPayload);
    createItemError.name = "CreateItemError";
    throw createItemError;
}
  1. 在CreateNewItemFail函数中解析嵌套的JSON字段获取item:
exports.handler = async (event) => {
    // 第一步解析Step Functions传入的Cause字段
    const cause = JSON.parse(event.Cause);
    // 第二步解析错误信息里的自定义元数据
    const errorPayload = JSON.parse(cause.errorMessage);
    const targetItem = errorPayload.item;
    // 后续直接使用targetItem构造邮件内容即可
}

方案2:通过Step Functions状态机配置传递上下文

如果你的item是从Step Functions的上游步骤传入CreateNewItem的,不需要嵌入错误信息,直接修改状态机定义的异常捕获配置即可:
在CreateNewItem对应的状态块中添加ResultPath配置:

"Catch": [
    {
        "ErrorEquals": ["CreateItemError"],
        "ResultPath": "$.errorDetail",
        "Next": "CreateNewItemFail"
    }
]

该配置会把错误信息追加到原始输入数据的errorDetail字段下,传入CreateNewItemFail的参数会同时包含原始输入(含item)和错误信息,直接取值使用即可。

内容的提问来源于stack exchange,提问作者Satoru Kikuchi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:45:05