如何在AWS Step Functions的Pass任务中通过Result.fromObject传递前置resultPath
问题:Step Functions Pass任务无法引用前置任务输出值
尝试创建包含静态值与前置任务输出结果的对象时,得到的是字符串"$.skusLength"而非实际值,使用JsonPath.numberAt和JsonPath.stringAt也未成功。当前CDK代码如下:
this.setupIteration = new Pass(this, "Setup Iteration", { result: Result.fromObject({ "count": "$.skusLength", "index": 0, "step": 1 }), resultPath: "$.iterator", });
解决方案
问题出在使用了Result.fromObject——这个方法用于定义静态JSON结果,其中的内容会被直接当作字面量输出,不会解析JsonPath表达式。
正确的做法是使用Pass任务的parameters属性,它支持通过JsonPath引用输入中的值,运行时会自动解析并替换为实际的前置任务输出:
import { JsonPath } from '@aws-cdk/aws-stepfunctions'; this.setupIteration = new Pass(this, "Setup Iteration", { parameters: { "count": JsonPath.numberAt("$.skusLength"), "index": 0, "step": 1 }, resultPath: "$.iterator", });
相关CDK文档说明(翻译)
AWS CDK的Result类用于生成静态任务结果,这些值会直接作为任务输出返回,不会对输入数据进行任何引用或转换。如果需要基于输入数据构造输出对象,必须使用支持JsonPath解析的属性(如Pass任务的parameters),而非Result类。
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

