You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复AWS Step Functions中的States.ReferencePathConflict错误

问题:AWS Step Function 遭遇「States.ReferencePathConflict」错误无法遍历交易列表

错误原因

  1. 路径引用错误:你的Map状态CheckPersonalLabelExistence中ItemsPath配置为$.testPersonalClassifierOutput.body.transactions,但TestPersonalClassifier Lambda的输出直接是包含statusCode和body的顶层对象,不存在testPersonalClassifierOutput这个层级,导致Step Function无法解析路径,抛出States.ReferencePathConflict错误。
  2. 缺失状态码校验:原流程未实现需求中「先判断Lambda返回statusCode=200」的逻辑,直接进入Map状态处理交易。

修正后的Step Function定义

{
  "Comment": "Iterate through each transaction block and check if personal label exists",
  "StartAt": "TestPersonalClassifier",
  "States": {
    "TestPersonalClassifier": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:**********:function:testPersonalClassifier",
      "ResultPath": "$.testPersonalClassifierOutput",
      "Next": "CheckLambdaStatus"
    },
    "CheckLambdaStatus": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.testPersonalClassifierOutput.statusCode",
          "NumericEquals": 200,
          "Next": "CheckPersonalLabelExistence"
        }
      ],
      "Default": "LambdaFailed"
    },
    "CheckPersonalLabelExistence": {
      "Type": "Map",
      "ItemsPath": "$.testPersonalClassifierOutput.body.transactions",
      "Iterator": {
        "StartAt": "CheckSingleTransactionPersonalLabel",
        "States": {
          "CheckSingleTransactionPersonalLabel": {
            "Type": "Choice",
            "Choices": [
              {
                "Variable": "$.personal_label",
                "IsPresent": true,
                "Next": "SuccessState"
              }
            ],
            "Default": "PostgresWithNoLabels"
          },
          "PostgresWithNoLabels": {
            "Type": "Task",
            "Resource": "arn:aws:lambda:*********:function:testSaveNoLabelAtPostgresDB",
            "ResultPath": "$.postgresOutput",
            "End": true
          },
          "SuccessState": {
            "Type": "Pass",
            "End": true
          }
        }
      },
      "Next": "Done"
    },
    "LambdaFailed": {
      "Type": "Fail",
      "Error": "LambdaNon200Response",
      "Cause": "TestPersonalClassifier returned non-200 status code"
    },
    "Done": {
      "Type": "Succeed"
    }
  }
}

关键修改说明

  • 存储Lambda输出:给TestPersonalClassifier任务添加ResultPath: "$.testPersonalClassifierOutput",将Lambda的返回结果明确存储到指定字段,避免路径歧义。
  • 新增状态码校验:添加CheckLambdaStatus Choice状态,先验证Lambda返回的statusCode是否为200,符合需求中的前置判断逻辑;非200时进入LambdaFailed失败状态(可根据实际需求调整该状态的处理逻辑)。
  • 修正Map路径:将Map状态的ItemsPath修正为$.testPersonalClassifierOutput.body.transactions,对应存储后的Lambda输出结构,确保能正确读取交易列表。

内容的提问来源于stack exchange,提问作者Boolean007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 07:07:14