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

AWS Step Functions动态调用Lambda触发参数验证错误求助

问题原因及解决方案

问题根源

你的状态机定义未使用Step Functions服务集成的动态参数引用语法,导致"$.function"、"$.qualifier"这些路径字符串被直接传递给Lambda服务,而非解析为输入中的对应字段值,触发了Lambda函数名和版本qualifier的格式验证错误。

修正后的状态机定义

需将Parameters中的参数名后缀加上.$,以此告知Step Functions解析JSONPath路径获取输入值:

{
    "Comment": "Manage a lambda invoke. Inputs: timeout_seconds, function, qualifier, payload.",
    "StartAt": "Lambda function",
    "States": {
        "Lambda function": {
            "Type": "Task",
            "TimeoutSecondsPath": "$.timeout_seconds",
            "Resource": "arn:aws:states:::lambda:invoke",
            "Parameters": {
                "FunctionName.$": "$.function",
                "Qualifier.$": "$.qualifier",
                "Payload.$": "$.payload"
            },
            "End": true
        }
    }
}

关键修改说明

  • FunctionName.$: 改为该格式后,Step Functions会从输入的function字段提取值,作为Lambda函数名/ARN传递
  • Qualifier.$: 动态获取输入中的qualifier值,支持空字符串或合法的版本/别名名称
  • Payload.$: 确保输入中的payload内容被正确解析传递给Lambda(兼容JSON对象或字符串格式的payload)

输入使用注意事项

  1. 当使用函数名(如lambda_a)而非ARN时,需确保Step Functions执行角色有权限调用该Lambda,且函数与状态机在同一AWS区域
  2. 若qualifier为空字符串,输入中保持"qualifier": ""即可,符合Lambda的格式要求
  3. 若payload是JSON对象,输入可直接写为"payload": {},无需包裹成字符串

内容的提问来源于stack exchange,提问作者Medical physicist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:48:22