再利用可能な共有フロー

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

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

次の動画は、Edge UI で共有フローを作成してトレースする方法を示しています。

次の 5 分間の動画は、Classic Edge UI(Edge for Private Cloud のみ)で共有フローを作成してトレースする方法を示しています。

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

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

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

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

次の図では、2 つの API プロキシにより、受信ユーザー リクエストを認証するために、(FlowCallout ポリシーを使用して)共有フローを呼び出しています。AuthSharedFlow は、プロキシからのリクエストをサポートできるよう、プロキシの前に組織に別途デプロイされています。共有フローは、企業の広範なポリシーについて責任を負うチームが開発と管理を行うことができ、その後、より専門的なアプリを作成する基幹業務チームがプロキシで共有フローを使用できます。

共有フローの開発

共有フローを開発する場合、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 ポリシーをアタッチできます。ポリシーは、共有フローを呼び出すすべての API プロキシについて実行されます。

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

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

    API プロキシの場合のように、共有フローのソース アーティファクトを含む ZIP ファイルをインポートできます(プロキシのインポートの詳細については、新しい API プロキシのインポートをご覧ください)。次に、Management API を使用して共有フローをインポートする方法を示します。

    curl -X POST -F "file=@/path/to/zip/file.zip" \ 'https://api.enterprise.apigee.com/v1/o/{org_name}/sharedflows?action=import&name=shared-flow-name' \
    -u email:password
  3. 環境に共有フローをデプロイしてから、その共有フローを使用するプロキシや共有フローをデプロイします。共有フローは、API プロキシをデプロイするのと同じ方法でデプロイします(詳細については、デプロイについてをご覧ください)。

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

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

    curl -X POST --header "Content-Type: application/octet-stream" \
    https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/sharedflows/{shared_flow_name}/revisions/{revision_number}/deployments \
    -u email:password

    また、現在デプロイされている共有フローをダウンタイムなしで置き換えることもできます(これは API プロキシとよく似ています。詳細については、Management API を使用した API プロキシのデプロイをご覧ください)。次に、Management API を使用したリクエスト フォームを示します。

    curl -X POST --header "Content-Type:application/x-www-form-urlencoded" \
    https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/sharedflows/{shared_flow_name}/revisions/{revision_number}/deployments?"override=true" \
    -u email:password
  4. 使用する API プロキシを開発して、API プロキシ独自のフローの一部として共有フローを呼び出すことができるようにします。

    API プロキシから、Flow Callout ポリシーを使用して共有フローを呼び出します(フローフックを使用した共有フローの接続の説明に従って、フローフックを使用するプロキシに共有フローを接続することもできます)。API プロキシの作成方法を紹介するチュートリアルについては、初めての API プロキシの作成をご覧ください。

    共有フローを使用する場合、それを使用するプロキシや共有フローに Flow Callout ポリシーを追加します。別のサービスを呼び出す際に Service Callout ポリシーを使用するように、Flow Callout により共有フローを呼び出します。使用する API プロキシは、共有フローの後に、共有フローと同じ環境にデプロイする必要があります。Flow Callout ポリシーを使用して共有フローへの呼び出しをテストする際には、共有フローは所定の場所になければなりません。

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

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

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

  5. 使用する API プロキシをデプロイして、共有フローの使用を開始します(一般的なデプロイの詳細については、デプロイについてをご覧ください)。
  6. API プロキシの場合のように、トレースを繰り返して開発します。

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

    手順は次のとおりです。

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

      トレースでは、共有フローは一連のステップやポリシーとして表され、グレーのボックス内に表示されることに注意してください。Flow Callout ポリシーを表すアイコンは、共有フローの前に配置されます(トレースの詳細については、Trace ツールの使用をご覧ください)。

Edge UI での共有フローの作成

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

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

    Edge

    Edge UI を使用して [Shared Flows] ページにアクセスするには:

    1. apigee.com/edge にログインします。
    2. 共有フローを含む組織を選択します。組織の切り替えをご覧ください。

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

    3. 左側のナビゲーション バーで [Develop] > [Shared Flows] を選択します。

    Classic Edge(Private Cloud)

    Classic Edge UI を使用して [Shared Flows] ページにアクセスするには:

    1. http://ms-ip:9000 にログインします。ここで、ms-ip は、Management Server ノードの IP アドレスまたは DNS 名です。
    2. 共有フローを含む組織を選択します。組織の切り替えをご覧ください。

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

    3. 上部のナビゲーション バーで [APIs] > [Shared Flows] を選択します。
  2. 新しい共有フローの追加を開始するには、[+ Shared Flow] ボタンをクリックします。
  3. [Build a Shared Flow] ページで、新しいフローの作成方法を選択します。
    • 新しいフローをゼロから作成します。フロー内のステップのように、ポリシーとリソースを構成できます。
      1. [Empty Shared Flow] を選択します。
      2. 名前の値を入力します。これは、API プロキシと他の共有フローでこの共有フローを参照する際に使用する名前となります。この名前は、フローを使用するデベロッパーがわかりやすい名前にする必要があります。
      3. フローの実行内容に関する詳細を提供する説明を入力します。
      4. [Next] をクリックします。
      5. 必要に応じて、新しいフローをデプロイする環境を選択します。

        たとえば、テスト環境にデプロイされた API プロキシから共有フローをテストする場合は、共有フローをテストにデプロイします。

      6. [Build and Deploy] をクリックして、新しい共有フローを作成し、選択した環境にデプロイします。環境を選択しなかった場合、共有フローは作成されますがデプロイされません。

    • フローバンドルをアップロードして、既存ソースから共有フローを作成します。
      1. [Shared Flow Bundle] を選択して、新しいフローに組み込むアーティファクトを含む .zip ファイルを指定します。

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

      2. [Next] をクリックします。
      3. [Choose File] をクリックして、インポートする共有フローソースを含む .zip ファイルを選択します。
      4. [Shared Flow Name] ボックスで、インポートされたフローの名前を入力します。これは、API プロキシと他の共有フローでこの共有フローを参照する際に使用する名前となります。この名前は、フローを使用するデベロッパーがわかりやすい名前にする必要があります。
      5. [Next] をクリックします。
      6. [Build] をクリックして、インポートするソースから新しいフローを作成します。

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

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

  1. Edge UI で、共有フローの呼び出し元となるプロキシか別の共有フローを見つけます。
  2. [Navigator] で、[Policies] の横にある + ボタンをクリックします。
  3. ポリシーのリストで、[Extension] の下にある [Flow Callout] をクリックします。
  4. 表示名と名前(一意の ID)を入力してから、このポリシーにより呼び出す共有フローを選択します。
  5. [Add] をクリックします。
  6. 呼び出しを行うプロキシに、新しい Flow Callout ポリシーを追加します。