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

AWS Step Functions中OutputPath、Parameters与Payload的关系解析

AWS Step Functions Lambda任务中OutputPath、Parameters和Payload的关联说明

先看你的状态机Task定义代码:

"Generate dummy limit": {
  "Type": "Task",
  "Resource": "arn:aws:states:::lambda:invoke",
  "OutputPath": "$.Payload",
  "Parameters": {
    "Payload.$": "$",
    "FunctionName": "arn:aws:lambda:us-east-1:000000000000:function:my-function"
  },
  "Next": "Limit greater than 10?"
}

针对你的疑问逐一解释:

  1. "Payload.$":"$"的作用是什么?
    这是给Step Functions的lambda:invoke内置资源指定传给Lambda函数的输入数据。$代表当前Task执行前的状态机全局上下文数据,因为这是状态机第一步,上下文是空对象{}。这条配置就是把空上下文作为输入传给你的Lambda——刚好匹配你这个Lambda不需要输入的需求。

  2. "OutputPath":"$.Payload"的作用是什么?
    当lambda:invoke执行完成后,会返回一个包含元数据的完整结果(比如请求ID、执行状态码、Lambda返回值等),其中Payload字段就是你的Lambda函数实际生成的JSON数据(也就是带body属性的对象)。OutputPath的作用是过滤当前Task的输出结果,只把指定部分传递给下一个状态。这里设置为$.Payload,就是把Lambda返回结果里的核心业务数据单独摘出来,作为下一个状态的输入,所以下一个状态才能直接用$.body.username读取用户信息。

  3. Payload来自哪里?是内置值吗?
    要区分两个不同场景的Payload:

  • Parameters里的Payload.$:这是lambda:invoke这个Step Functions内置资源要求的固定字段名,你要传给Lambda的输入必须放在这个字段下,Step Functions才会正确把数据转发给Lambda函数。
  • Lambda执行返回结果里的Payload:这完全由你的Lambda代码生成,就是你写的生成随机数和模拟用户信息的JSON,不是什么内置固定值,内容完全取决于你的Lambda业务逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:30:07