如何在CDK中为LambdaInvoke保留完整InputPath并注入executionId?
在AWS CDK中实现LambdaInvoke同时保留完整输入与新增executionId
直接使用JsonPath.merge方法,将原有完整输入与新增的executionId字段合并,无需手动指定原有字段:
TypeScript示例
import { LambdaInvoke } from 'aws-cdk-lib/aws-stepfunctions-tasks'; import { JsonPath } from 'aws-cdk-lib/aws-stepfunctions'; // 假设myLambda是你已定义的Lambda函数 new LambdaInvoke(this, 'MyLambdaInvokeTask', { lambdaFunction: myLambda, payload: JsonPath.merge( JsonPath.entirePayload, // 引用完整的原有输入 JsonPath.object({ executionId: JsonPath.stringAt('$$.Execution.Id') // 注入Step Functions执行ID }) ) });
Python示例
from aws_cdk import aws_stepfunctions as sfn from aws_cdk import aws_stepfunctions_tasks as tasks # 假设my_lambda是你已定义的Lambda函数 tasks.LambdaInvoke(self, "MyLambdaInvokeTask", lambda_function=my_lambda, payload=sfn.JsonPath.merge( sfn.JsonPath.entire_payload, sfn.JsonPath.object_(execution_id=sfn.JsonPath.string_at("$$.Execution.Id")) ) )
关键说明
JsonPath.merge会自动合并两个JSON结构,原有输入的所有字段都会被保留,同时新增executionId字段$$.Execution.Id是Step Functions的内置上下文变量,用于获取当前执行的ID- 确保任务的
inputPath保持默认值$(传递完整输入),这样merge的基础才是完整的原有数据
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

