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

如何在Python版AWS CDK v2中定义Step Function任务的Parameters参数?

在AWS CDK v2 Python中为LambdaInvoke定义Step Functions参数

可以通过CDK定义对应Step Functions任务的Parameters属性,只是CDK的LambdaInvoke构造用**payload**属性来实现这个功能,而非直接命名为parameters。

原因是:Step Functions中调用Lambda任务的Parameters本质是构造传递给Lambda函数的事件负载(payload),CDK针对LambdaInvoke场景做了封装,用payload属性来对应这部分逻辑,更贴合Lambda的调用场景。

具体用法示例:

  1. 静态参数传递
    直接传入固定的键值对作为Lambda的输入:
self.task = tasks.LambdaInvoke(
    self,
    f"lambdainvoke-{config['name']}",
    lambda_function=my_lambda_fn,
    payload=aws_stepfunctions.TaskInput.from_object({
        "staticKey": "staticValue",
        "anotherKey": 123
    })
)
  1. 引用Step Functions的输入数据
    通过路径引用状态机的输入数据,构造Lambda的payload:
self.task = tasks.LambdaInvoke(
    self,
    f"lambdainvoke-{config['name']}",
    lambda_function=my_lambda_fn,
    payload=aws_stepfunctions.TaskInput.from_json_path_at("$.inputData"),
    # 或者混合静态值和路径引用
    # payload=aws_stepfunctions.TaskInput.from_object({
    #     "originalInput": aws_stepfunctions.JsonPath.string_at("$.inputData"),
    #     "staticParam": "fixed"
    # })
)
  1. 结合InputPath使用
    如果需要先过滤状态机输入再构造payload,可以配合input_path:
self.task = tasks.LambdaInvoke(
    self,
    f"lambdainvoke-{config['name']}",
    lambda_function=my_lambda_fn,
    input_path="$.filterThis", # 先过滤输入
    payload=aws_stepfunctions.TaskInput.from_object({
        "filteredData": aws_stepfunctions.JsonPath.string_at("$"), # 引用过滤后的输入
        "extraParam": "added"
    })
)

补充说明:

  • 当你设置payload后,CDK会自动生成Step Functions任务定义中的Parameters字段,将指定的负载传递给Lambda函数。
  • 如果不指定payload,LambdaInvoke默认会将状态机的输入(经过input_path过滤后)直接作为Lambda的事件输入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:15:29