FlowCallout 政策运行时错误问题排查

您正在查看 ApigeeApigee Hybrid 文档。
查看 Apigee Edge 文档。

SharedFlowNotFound

错误代码

flow.SharedFlowNotFound

错误响应正文

{
    "fault": {
        "faultstring": "Shared Flow shared_flow_name Not Found",
        "detail": {
            "errorcode": "flow.SharedFlowNotFound"
        }
    }
}

可能的原因

造成此错误的可能原因包括:

原因 说明
共享流不可用 共享流不存在。
未部署共享流 共享流存在,但未部署。

原因:共享流不可用

在“流调出”政策中,如果环境中不存在 <SharedFlowBundle> 元素中所定义的共享流,则会发生此错误。

例如,如果“流调出”政策中的 <SharedFlowBundle> 元素包含名为 SharedFlow_Sample 的共享流,且环境中不存在此共享流,则会发生错误。

错误消息示例

{
    "fault": {
        "faultstring": "Shared Flow SharedFlow_Sample Not Found",
        "detail": {
            "errorcode": "flow.SharedFlowNotFound"
        }
    }
}

诊断

  1. 识别不存在的共享流。您可以在错误响应的 faultstring 元素中找到此信息。例如,在以下 faultstring 中,共享流名称为 SharedFlow_Sample

    "faultstring": "Shared Flow SharedFlow_Sample Not Found"

  2. 检查发生故障的特定 API 代理中的所有“流调出”政策。检查是否存在任何“流调用”政策,其中的 <SharedFlowBundle> 元素是使用上述第 1 步中指定的流名称指定的。

    例如,以下政策将 <SharedFlowBundle> 指定为 SharedFlow_Sample,后者与错误字符串中的内容匹配:

    <FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout">
       <DisplayName>Auth Flow Callout</DisplayName>
       <SharedFlowBundle>SharedFlow_Sample</SharedFlowBundle>
    </FlowCallout>
    
  3. 在界面中,检查开发 > 共享流下是否存在此共享流。如果此共享流不存在,就会导致错误。(请注意,在新界面中“共享流”位于“开发”标签页下。)

    例如,在下面的屏幕截图中,共享流 SharedFlow_Sample 不存在。

    共享流 SharedFlow_Sample 并未列在“共享流”列中。

    由于此共享流不存在,因此您会收到错误代码:

    flow.SharedFlowNotFound
    

解决方法

确保“流调出”政策的 <SharedFlowBundle> 元素中指定的共享流存在且已部署在执行 API 请求的特定环境中。

您可以选择以下某种方法来解决该问题:

  1. 创建名为 SharedFlow_Sample 的共享流,并按照如下所示将它部署在测试环境中:

    共享流 SharedFlow_Sample 已列在“共享流”列中。

  2. 使用“流调出”政策中已存在且已部署在测试环境中的“共享流”例如,您可以在“流调出”政策中指定 SharedFlow_demo

    <FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout">
      <DisplayName>Auth Flow Callout</DisplayName>
      <SharedFlowBundle>SharedFlow_demo</SharedFlowBundle>
    </FlowCallout>
    

    如果您对测试环境发出 API 调用,将不会再看到此错误,因为“流调出”也会部署到测试环境中。

原因:未部署共享流

如果在“流调出”政策的 <SharedFlowBundle> 元素中指定的共享流未部署,则会出现此错误。

例如,如果“流调出”政策中的 <SharedFlowBundle> 元素包含名为 Shared-Flow_example 的共享流,但该共享流并未部署在发出 API 请求的特定环境中,则会发生错误。

错误消息示例

{
    "fault": {
        "faultstring": "Shared Flow Shared-Flow_example Not Found",
        "detail": {
            "errorcode": "flow.SharedFlowNotFound"
        }
    }
}

诊断

  1. 识别未部署的共享流。您可以在错误响应的 faultstring 元素中找到此信息。例如,在以下 faultstring 中,共享流名称为 Shared-Flow_example

    "faultstring": "Shared Flow Shared-Flow_example Not Found"

  2. 在界面中,检查此共享流是否已部署。

    例如,在以下屏幕截图中,您可以看到共享流 Shared-Flow_example 存在但未部署。

    共享流 Shared-Flow_example 已存在但并未部署。

    由于此共享流未部署,因此您会收到错误代码:

    flow.SharedFlowNotFound
    

解决方法

确保“流调出”政策的 <SharedFlowBundle> 元素中指定的共享流存在且已部署在执行 API 请求的特定环境中。

要更正上述示例,请在测试环境中部署名为 Shared-Flow_example 的共享流。以下屏幕截图显示已部署共享流 SharedFlow_Sample

共享流 SharedFlow_Sample 已部署在测试环境中。

如果您对测试环境发出 API 调用,将不会再看到此错误,因为“流调出”也会部署到测试环境中。