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?" }
针对你的疑问逐一解释:
"Payload.$":"$"的作用是什么?
这是给Step Functions的lambda:invoke内置资源指定传给Lambda函数的输入数据。$代表当前Task执行前的状态机全局上下文数据,因为这是状态机第一步,上下文是空对象{}。这条配置就是把空上下文作为输入传给你的Lambda——刚好匹配你这个Lambda不需要输入的需求。"OutputPath":"$.Payload"的作用是什么?
当lambda:invoke执行完成后,会返回一个包含元数据的完整结果(比如请求ID、执行状态码、Lambda返回值等),其中Payload字段就是你的Lambda函数实际生成的JSON数据(也就是带body属性的对象)。OutputPath的作用是过滤当前Task的输出结果,只把指定部分传递给下一个状态。这里设置为$.Payload,就是把Lambda返回结果里的核心业务数据单独摘出来,作为下一个状态的输入,所以下一个状态才能直接用$.body.username读取用户信息。Payload来自哪里?是内置值吗?
要区分两个不同场景的Payload:
- Parameters里的
Payload.$:这是lambda:invoke这个Step Functions内置资源要求的固定字段名,你要传给Lambda的输入必须放在这个字段下,Step Functions才会正确把数据转发给Lambda函数。 - Lambda执行返回结果里的
Payload:这完全由你的Lambda代码生成,就是你写的生成随机数和模拟用户信息的JSON,不是什么内置固定值,内容完全取决于你的Lambda业务逻辑。
内容的提问来源于stack exchange,提问作者MJM
相关产品推荐
相关产品推荐

