AWS Step Functions CDK配置$$.Job.Id路径找不到报错排查
问题原因
这个报错是JSONPath取值路径和实际数据结构不匹配导致的:
- 以
$$.开头的路径是用来取Step Functions内置上下文对象的,从报错信息里打印的完整上下文结构可以看到,上下文对象顶层只有Execution、StateMachine、State三个属性,不存在Job字段,自然找不到$$.Job.Id对应的值。 - 你通过POST请求传入的自定义
job_id参数不属于上下文对象范畴,它存放在工作流的执行输入里。从报错打印的内容可以看到,你的API Gateway触发层对原始请求做了包装,把请求体放到了执行输入的data字段下。
修复方法
根据你实际要取的字段选择对应配置即可:
场景1:取POST请求传入的业务job_id
不要用上下文对象路径,直接从执行输入取值,修改payload配置:
tasks.LambdaInvoke(self, "my_step_function", lambda_function=my_lambda, output_path="$.Payload", payload=stepfunctions.TaskInput.from_object({ "payload.$": "$", "job_id.$": "$.data.job_id" }) )
如果不想保留API Gateway包装的data层级,可以修改API Gateway集成Step Functions的请求映射模板,直接将原始请求体作为执行输入,此时取值路径改为$.job_id即可。
场景2:取Step Functions生成的执行唯一ID
如果你要的是工作流执行自动生成的ID(即报错中fd51a151-70d4-4d8a-b203-fe3ea5ce7269这类值),使用正确的上下文对象路径:
"job_id.$": "$$.Execution.Id"
排查这类路径问题最直接的方式就是看报错里打印的完整输入/上下文JSON结构,严格按照实际存在的层级写路径即可,Step Functions没有内置
Job相关的上下文字段,不要和其他工作流引擎的字段规则混淆。
内容的提问来源于stack exchange,提问作者back-new
相关产品推荐
相关产品推荐

