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

AWS Step Functions Map状态Task报RtInfo字段不支持错误排查

根因分析

报错和Map State逻辑、输入大小限制无关,核心问题是你使用arn:aws:states:::lambda:invoke标准Lambda集成时,参数结构不符合Step Functions的强制规范:

  • 该集成模式的Parameters顶层仅允许传入官方定义的保留字段,包括FunctionName、Qualifier、ClientContext、InvocationType、Payload
  • 你把自定义业务字段RtInfo、ExecutionId、InitTime直接放在了Parameters顶层,这些字段不在保留字段列表内,Step Functions在启动任务前做参数校验时就会拦截,抛出「字段不被Step Functions支持」的错误。
    你之前尝试把RtInfo包装为数组属于排错方向错误,没有定位到参数层级的核心问题。
修复方法

所有需要传递给目标Lambda函数的自定义业务参数,必须统一放在顶层的Payload字段下,调整后的状态定义如下:

"WriteRteToDB": {
    "Comment": "Write Rte to DB. Also records the risk calculations in the same table.",
    "Type": "Task",
    "Resource": "arn:aws:states:::lambda:invoke",
    "End": true,
    "Parameters": {
        "FunctionName": "logger-lambda",
        "Payload": {
            "RtInfo.$": "$",
            "ExecutionId.$": "$$.Execution.Id",
            "InitTime.$": "$$.Execution.StartTime"
        }
    }
}

注意事项:

  • 不需要额外用States.Array($)将Map迭代项包装为数组,除非你的Lambda业务逻辑明确要求RtInfo是数组类型,直接用$引用当前Map迭代的输入对象即可
  • 调整后Step Functions会将Payload下的全部内容作为事件入参传给logger-lambda,Lambda代码中可以直接从事件对象读取RtInfo、ExecutionId、InitTime字段,参数校验阶段不会再报错。

内容的提问来源于stack exchange,提问作者Vivek Puurkayastha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 04:18:23