Step Functions工作流使用InputPath选取输入时报属性不存在错误
问题根本原因
报错的核心原因是对Step Functions的输入处理顺序理解有误,错误配置了InputPath字段:
- Step Functions状态的输入处理有固定执行顺序:先执行
InputPath从当前状态的原始输入中筛选子集,再基于筛选后的结果解析Parameters字段,前序步骤执行失败会直接中断,不会走到后续逻辑。 - 进入
Step4(Parallel并行状态)时,状态的原始输入是上游Step3系列步骤传递的输出,这个输入的根节点下不存在identity属性。你在Verify identity任务中配置了InputPath: "$.identity",会在解析硬编码的Parameters之前,先尝试从原始输入中提取identity字段,找不到就直接抛出路径不存在的错误。 - 同个并行分支下的
Verify address任务没有配置额外的InputPath,使用默认值$(即选取全部原始输入),因此可以正常解析你在Parameters中写死的静态参数,不会触发同类报错。
触发的报错信息:
An error occurred while executing the state 'Verify identity' (entered at the event id #19). Invalid path '$.identity' : Property ['identity'] not found in path $
修复方案
根据你的实际业务需求二选一即可:
- 如果你就是要传递硬编码的固定身份校验参数,不需要从上游输入动态取值:直接删除
Verify identity任务下的InputPath: "$.identity"配置即可,让InputPath使用默认值$,后续会正常解析你写在Parameters里的静态参数。 - 如果后续需要结合上游动态传入的identity字段和静态配置参数:同样删除错误的
InputPath配置,在Parameters中通过.suffix后缀的字段名引用路径取值即可,比如要引用上游输入中的identity手机号字段,可以和硬编码字段并列配置"mobile.$": "$.identity.mobile"。
修复后Verify identity任务的核心配置参考如下:
"Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "Payload": { "identity": { "email": "jdoe@example.com", "ssn": "123-45-6789" }, "firstName": "Jane", "lastName": "Doe" }, "FunctionName": "{Lambda ARN}" }, "End": true }
配置时可以记住Step Functions固定的输入输出处理顺序,避免同类错误:InputPath → Parameters → 任务实际执行 → ResultSelector → ResultPath → OutputPath,所有路径类配置都要基于当前步骤拿到的输入结构编写。
内容的提问来源于stack exchange,提问作者Tectonic
相关产品推荐
相关产品推荐

