再利用可能な共有フローの作成

このページの内容は ApigeeApigee ハイブリッドに該当します。

Apigee Edge のドキュメントを表示する。

ポリシーとリソースを組み合わせて 1 つの共有フローにします。このフローは、複数の API プロキシや、他の共有フローからでも利用可能です。共有フローはプロキシのようなものですが、エンドポイントがありません。共有フロー自体と同じ組織内にある API プロキシや共有フローからのみ使用できます。

複数の場所で有効な機能を 1 つの場所で取得することで、共有フローは、整合性を確保し、開発時間を短縮化して、より簡単にコードを管理するのに役立ちます。

次の動画は、Apigee UI で共有フローを作成してデバッグする方法を示しています。

FlowCallout ポリシーを使用して共有フローを呼び出すことができます。また、フローフックに共有フローを接続することで、プロキシやターゲットのリクエストの前、またはプロキシやターゲットのレスポンスの後に共有フローを実行できます。

FlowCallout ポリシーについては、FlowCallout ポリシーをご覧ください。フローフックの詳細については、フローフックを使用した共有フローの接続をご覧ください。

たとえば、複数の場所で使用される機能、または組織内の API 全体で標準化が必要な機能分野があるとします。各カテゴリについて、次のような共有フローを作成できます。

  • セキュリティ: OAuth と API キー検証を使用する認証コードと脅威保護コードを使用します。
  • ロギング: 標準的なエラー メッセージを生成します。
  • メディエーション: XML と JSON のメッセージ形式を変換します。

次の図では、2 つの API プロキシが(FlowCallout ポリシーで)共有フローを呼び出して、受信ユーザー リクエストを認証します。AuthSharedFlow は、プロキシの前の組織に個別にデプロイされており、プロキシからのリクエストのサポートに利用できます。共有フローは、企業の広範なポリシーを担当するチームによって開発、管理された後、より専門的なアプリを作成する企業部門のチームがプロキシで使用できます。

AuthSharedFlow への POST /menus ポリシーに対する POST /foodcars ポリシーを示すフロー図。
          吹き出しのテキスト: a)複数の API プロキシが FlowCallouts を介して共有フローを利用します。
          b)FlowCallout ポリシーは、API プロキシから共有フローを呼び出します。
          c)共有フローバンドルには、再利用可能なロジックがポリシーとリソースとして含まれています。

共有フローを開発する

共有フローを開発する場合、API プロキシに送信された呼び出しを使用して共有フローをテストする必要があります。つまり、API プロキシの場合のように、共有フローに直接リクエストを送信することはできません。 代わりに、API プロキシにリクエストを送信し、API プロキシにより共有フローを呼び出します。

共有フローを開発する手順の概要は、次のとおりです。

  1. 一連の共有機能に必要な内容を把握します。

    たとえば、トラフィック管理機能(トラフィックの急増の抑制など)を組み合わせることが必要になる場合があります。こうすることで、基幹業務ロジックを実装するチームのワークフロー外部で構成を管理できます。

  2. 共有フローの開発では、API プロキシを開発するときと同じように、ポリシーを実装してリソースをサポートします。

    共有フローは、一連の条件ステップです。このため、条件フローの開発は、API プロキシの開発に似ています。プロキシに組み込む可能性のあるポリシーとリソースを組み込むことができます。

    たとえば、トラフィック管理サポートの一部として、次の例のように、1 秒あたり 30 個のリクエストのみを許可する Spike Arrest ポリシーを実装できます。

    <SpikeArrest async="false" continueOnError="false" enabled="true" name="Spike-Arrest">
        <DisplayName>Spike Arrest</DisplayName>
        <Properties/>
        <Identifier ref="request.header.some-header-name"/>
        <MessageWeight ref="request.header.weight"/>
        <Rate>30ps</Rate>
    </SpikeArrest>

    次に、トラフィック管理の共有フローに対して、ステップとして Spike Arrest ポリシーを接続できます。Spike Arrest ポリシーは、共有フローを呼び出すすべての API プロキシに対して実行されます。

    <SharedFlow name="default">
        <Step>
            <Name>Spike-Arrest</Name>
        </Step>
    </SharedFlow>

    管理コンソールで共有フローを開始する方法については、Apigee UI での共有フローの作成をご覧ください。

    API プロキシの場合と同様に、共有フロー作成 API を使用して、共有フローのソース アーティファクトを含む zip ファイルをインポートできます。Apigee API で共有フローをインポートする方法は次のとおりです。

    curl "https://apigee.googleapis.com/v1/organizations/$ORG/sharedflows?action=import&sharedFlowID=mySharedFlow" \
      -X POST \
      -F "file=@sharedflow.zip" \
      -H "Authorization: Bearer $TOKEN"

    ここで、OAuth 2.0 アクセス トークンの取得で説明されているように、$TOKEN は OAuth 2.0 アクセス トークンに設定されます。この例で使用されている curl オプションの詳細については、curl の使用をご覧ください。使用される環境変数の説明については、Apigee API リクエストの環境変数の設定をご覧ください。

  3. 環境に共有フローをデプロイしてから、その共有フローを使用するプロキシまたは共有フローをデプロイします。共有フローは、API プロキシのデプロイと同じ方法でデプロイします(詳細については、デプロイの概要をご覧ください)。

    共有フローは、同じ組織に配置し、これを使用する API プロキシやその他の共有フローと同じ環境にデプロイする必要があります。プロキシの前に共有フローをデプロイすると、デプロイ時に共有フローに対するプロキシの依存関係を解決できます。

    共有フローは、次のように Apigee API 呼び出しを使用してデプロイできます。

    curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/sharedflows/$SHAREDFLOW/revisions/$REV/deployments \
      -X POST \
      -H "Authorization: Bearer $TOKEN"

    API プロキシと同様に、すべての Apigee への効果的な共有フローのデプロイはゼロ ダウンタイム デプロイメントです。

  4. 使用する API プロキシを開発して、API プロキシ独自のフローの一部として共有フローを呼び出すことができるようにします。

    API プロキシから、Flow Callout ポリシーを使用して共有フローを呼び出します(フローフックを使用して、共有フローをプロキシに接続することもできます)。

    共有フローを使用するには、そのフローを使用するプロキシまたは共有フローに FlowCallout ポリシーを追加します。別のサービスの呼び出しに使用する Service Callout ポリシーと同様、FlowCallout は共有フローを呼び出します。使用元の API プロキシは、共有フローの後に、共有フローと同じ環境にデプロイする必要があります。共有フローは、FlowCallout ポリシーを使用した共有呼び出しをテストする場合に必要です。

    次のコードでは、FlowCallout ポリシーで traffic-management-shared という共有フローを呼び出します。

    <FlowCallout async="false" continueOnError="false" enabled="true" name="Traffic-Management-Flow-Callout">
        <DisplayName>Traffic Management FlowCallout</DisplayName>
        <Properties/>
        <SharedFlowBundle>traffic-management-shared</SharedFlowBundle>
    </FlowCallout>

    詳細については、API プロキシまたは共有フローから共有フローを呼び出すをご覧ください。

  5. 使用元の API プロキシをデプロイして、共有フローの使用を開始します(デプロイ全般の詳細については、デプロイの概要をご覧ください)。
  6. API プロキシの場合と同様に、トレースによって反復的に開発します。

    API プロキシの場合と同様に、必要なロジックが得られるまで、呼び出しとトレースを繰り返すことにより共有フローを開発します。この場合、共有フローは自動的には実行されないため、プロキシ エンドポイントを呼び出してプロキシをデバッグします。

    手順は次のとおりです。

    1. 共有フローと、FlowCallout ポリシーで呼び出す API プロキシの両方が同じ組織内に存在し、同じ環境にデプロイされているかを確認します。
    2. API プロキシの [Trace] タブで、API プロキシのトレースを開始します。
    3. API プロキシ内のプロキシ エンドポイントにリクエストを送信します。エンドポイントからのフローには、共有フローに呼び出す FlowCallout ポリシーを含める必要があります。
    4. [Trace] タブで、API プロキシから共有フローへのフローを確認します。

      トレース処理では、共有フローが一連のステップまたはポリシーとして表され、グレーのボックス内に表示されます。FlowCallout ポリシーを表すアイコンは、共有フローの前に表示されます(トレースの詳細については、Debug ツールをご覧ください)。

      トランザクション マップ。吹き出しのテキスト: a)FlowCallout ポリシーは共有フローを呼び出します。
            b)共有フローには SpikeArrest ポリシーと FlowCallout ポリシーが含まれます。
            FlowCallout ポリシーは、VerifyAPIKey ポリシーを使用して別の共有フローを呼び出します。

Apigee UI で共有フローを作成する

Apigee API を使用して共有フローを作成する場合、ゼロから作成することも、フローバンドル zip ファイルとして既存のフローソースをインポートすることもできます。

下記の手順に沿って [Shared Flows] ページにアクセスします。[Shared Flows] ページでは、組織内の共有フローのリストを表示したり、リスト内のフローの編集や削除を行ったりすることができます。

Apigee UI で共有フローを作成するには:

  1. Apigee UI にログインします。
  2. 共有フローがある組織を選択します。組織の切り替えをご覧ください。

    共有フローは、この組織から環境にデプロイされたすべての API プロキシと共有フローで使用できます。この組織外からは使用できません。

  3. 左側のナビゲーション バーで [Develop] > [Shared Flows] を選択します。
  4. 共有フローを作成またはアップロードします。
    • [Create New] をクリックして、新しいフローを最初から作成します。ポリシーとリソースは、フローのステップとして構成できます。

      [Create a Shared Flow] ダイアログが表示されます。

      1. 共有フローの名前を入力します。

        これは、API プロキシや他の共有フローがこの共有フローを参照するために使用する名前になります。この名前は、フローを使用するデベロッパーにとってわかりやすいものにする必要があります。

      2. フローの内容についての詳細説明を入力します。
      3. [Create] をクリックします。

        共有フローが作成されます。

      4. 次に、共有フロー機能を開発し、目的の環境にデプロイします
    • [Upload bundle] をクリックしてからフローバンドルをアップロードし、既存のソースから共有フローを作成します。

      共有フローバンドルには、共有フローのソース アーティファクトが含まれます。たとえば、Apigee UI から共有フローをダウンロードした場合、フローバンドルを含む zip ファイルが作成されます。

      [Create a Shared Flow] ダイアログが表示されます。

      1. 新しいフローに含めるアーティファクトを含む zip ファイルを選択します。
      2. [Open] をクリックします。
      3. インポートされた共有フローの名前を入力します。

        これは、API プロキシや他の共有フローがこの共有フローを参照するために使用する名前になります。この名前は、フローを使用するデベロッパーにとってわかりやすいものにする必要があります。

      4. [Create] をクリックします。

        共有フローはバンドルから作成されます。

      5. 次に、共有フロー機能を開発し、目的の環境にデプロイします

API プロキシまたは共有フローから共有フローを呼び出す

FlowCallout ポリシーを使用して、共有フローをプロキシや別の共有フローから呼び出すことができます。

  1. Apigee UI で、共有フローの呼び出し元の API プロキシまたは共有フローを開きます。
  2. [Develop] タブをクリックします。
  3. [Navigator] で、[Policies] の横にある + をクリックします。
  4. ポリシーのリストで、[Extension] の下にある [FlowCallout] をクリックします。
  5. 表示名と名前(固有識別子)を入力してから、このポリシーが呼び出す共有フローを選択します。
  6. [Add] をクリックします。
  7. 呼び出しを行うプロキシに新しい FlowCallout ポリシーを追加します。

関連情報

API プロキシのチェーン接続