FlowCallout ポリシー ランタイム エラーのトラブルシューティング

現在、ApigeeApigee ハイブリッドのドキュメントを表示しています。
Apigee Edge のドキュメントを表示する。

SharedFlowNotFound

エラーコード

flow.SharedFlowNotFound

エラー レスポンスの本文

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

考えられる原因

このエラーには、次の原因が考えられます。

原因 説明
共有フローを利用できない 共有フローが存在しません。
共有フローがデプロイされていない 共有フローは存在していますが、デプロイされていません。

原因: 共有フローを利用できない

Flow Callout ポリシーの <SharedFlowBundle> 要素内で定義された共有フローが環境に存在しない場合、このエラーが発生します。

たとえば、Flow Callout ポリシー内の <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 プロキシで、すべての Flow Callout ポリシーを調べます。上記のステップ 1 で特定したフロー名で <SharedFlowBundle> 要素が指定されている Flow Callout ポリシーがあるかどうかを確認します。

    たとえば、次のポリシーでは <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. UI で、[開発] > [共有フロー] の下でこの共有フローが存在しているかどうかを確認します。存在していない場合は、それがエラーの原因です(新しい UI では、[開発] タブに [共有フロー] が表示されます)。

    たとえば、次のスクリーンショットでは、共有フロー SharedFlow_Sample は存在していません。

    共有フロー SharedFlow_Sample は、[共有フロー] 列に表示されていません。

    この共有フローは存在していないため、次のエラーコードを受け取ります。

    flow.SharedFlowNotFound
    

解決策

Flow Callout ポリシーの <SharedFlowBundle> 要素で指定された共有フローが、API リクエストが実行される特定の環境に存在していて、デプロイされていることを確認します。

この問題に対処するために、次のいずれかの方法を選択します。

  1. SharedFlow_Sample という共有フローを作成し、それを次のようにテスト環境にデプロイします。

    共有フロー SharedFlow_Sample は、[共有フロー] 列に表示されています。

  2. テスト環境にデプロイされている既存の共有フローを、Flow Callout ポリシーで使用します。たとえば、Flow Callout ポリシーで SharedFlow_demo を指定できます。

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

    テスト環境への API 呼び出しを行うと、Flow Callout もテスト環境にデプロイされるため、エラーは表示されなくなります。

原因: 共有フローがデプロイされていない

Flow Callout ポリシーの <SharedFlowBundle> 要素で指定されている共有フローがデプロイされていない場合、このエラーが発生します。

たとえば、Flow Callout ポリシーの <SharedFlowBundle> 要素に、API リクエストが行われる特定の環境でデプロイされていない Shared-Flow_example という共有フローが含まれている場合、エラーが発生します。

エラー メッセージの例

{
    "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. UI で、この共有フローがデプロイされているかどうかを確認します。

    たとえば、次のスクリーンショットは、共有フロー Shared-Flow_example が存在しているが、デプロイされていないことを示しています。

    共有フロー Shared-Flow_example が存在していますが、デプロイされていません。

    この共有フローはデプロイされていないため、次のエラーコードを受け取ります。

    flow.SharedFlowNotFound
    

解決策

Flow Callout ポリシーの <SharedFlowBundle> 要素で指定された共有フローが、API リクエストが実行される特定の環境に存在していて、デプロイされていることを確認します。

上記の例を修正するには、Shared-Flow_example という共有フローをテスト環境にデプロイします。次のスクリーンショットは、共有フロー SharedFlow_Sample がデプロイされていることを示しています。

共有フロー SharedFlow_Sample がテスト環境にデプロイされています。

テスト環境への API 呼び出しを行うと、Flow Callout もテスト環境にデプロイされるため、エラーは表示されなくなります。