如何在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的调用场景。
具体用法示例:
- 静态参数传递
直接传入固定的键值对作为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 }) )
- 引用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" # }) )
- 结合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
相关产品推荐
相关产品推荐

