CDK中如何在数组内使用Step Functions的JsonPath变量配置EMR Step
问题原因
AWS CDK 的 Step Functions 集成限制了不能直接在数组字面量中插入JsonPath表达式,你直接写上下文路径字符串时,会被当成普通文本传递,不会被 Step Functions 运行时解析替换。
解决方案
方案1:使用JsonPath.array构造参数数组
直接用JsonPath.array方法包裹整个参数列表,告诉 CDK 该数组包含需要运行时解析的 JsonPath 表达式:
import { JsonPath } from 'aws-cdk-lib/aws-stepfunctions'; const emrTask = new EmrAddStep( stack, name, { name: name, jar: jar, args: JsonPath.array( '--arg_1', JsonPath.stringAt('$$.Execution.StartTime') ), clusterId: clusterId, } );
方案2:使用addOverride兜底修改状态定义
如果方案1不适用你的 CDK 版本,可以直接覆盖生成的状态机参数配置,这种方式不需要依赖类型校验,直接写入原生路径即可:
const emrTask = new EmrAddStep( stack, name, { name: name, jar: jar, args: [], // 此处留空,后续覆盖 clusterId: clusterId, } ); // 直接覆盖参数数组,原生路径会在Step Functions运行时自动解析 emrTask.addOverride('Parameters.Arguments', [ '--arg_1', '$$.Execution.StartTime' ]);
内容的提问来源于stack exchange,提问作者Obada
相关产品推荐
相关产品推荐

