ポリシーとリソースを組み合わせて、複数の 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 プロキシにより共有フローを呼び出します。
共有フローを開発する手順の概要は、次のとおりです。
- 一連の共有機能に必要な内容を把握します。
たとえば、トラフィック管理機能(トラフィックの急増の抑制など)を組み合わせることが必要になる場合があります。こうすることで、基幹業務ロジックを実装するチームのワークフロー外部で構成を管理できます。
- 共有フローを開発するには、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
-
環境に共有フローをデプロイしてから、その共有フローを使用するプロキシや共有フローをデプロイします。共有フローは、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
- 使用する 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 プロキシや共有フローから共有フローを呼び出すをご覧ください。
- 使用する API プロキシをデプロイして、共有フローの使用を開始します(一般的なデプロイの詳細については、デプロイについてをご覧ください)。
- API プロキシの場合のように、トレースを繰り返して開発します。
API プロキシでのように、必要なロジックが得られるまで、呼び出しとトレースを繰り返すことにより共有フローを開発します。この場合、共有フローは自動的には実行されないため、プロキシ エンドポイントを呼び出してプロキシをトレースします。
手順は次のとおりです。
- 共有フローと Flow Callout ポリシーを使用して共有フローを呼び出す API プロキシの両方が、同じ組織内に存在し、同じ環境にデプロイされていることを確認します。
- API プロキシの [Trace] タブで、API プロキシのトレースを開始します。
- API プロキシ内のプロキシ エンドポイントにリクエストを送信します。エンドポイントからのフローには、共有フローを呼び出す Flow Callout ポリシーが含まれている必要があります。
- [Trace] タブで、API プロキシから共有フローへのフローを調べます。
トレースでは、共有フローは一連のステップやポリシーとして表され、グレーのボックス内に表示されることに注意してください。Flow Callout ポリシーを表すアイコンは、共有フローの前に配置されます(トレースの詳細については、Trace ツールの使用をご覧ください)。
Edge UI での共有フローの作成
Apigee Edge UI を使用して共有フローを作成する場合、ゼロから作成することも、フローバンドルの .zip ファイルとして既存のフローソースをインポートすることもできます。
- 下記の手順に従って [Shared Flows] ページにアクセスします。[Shared Flows] ページでは、組織内の共有フローのリスト表示できます。また、リスト内のフローの編集や削除を行うことができます。
Edge
Edge UI を使用して [Shared Flows] ページにアクセスするには:
- apigee.com/edge にログインします。
- 共有フローを含む組織を選択します。組織の切り替えをご覧ください。
共有フローは、この組織からの環境にデプロイされたすべての API プロキシと共有フローで使用できます。この組織外部からは使用できません。
- 左側のナビゲーション バーで [Develop] > [Shared Flows] を選択します。
Classic Edge(Private Cloud)
Classic Edge UI を使用して [Shared Flows] ページにアクセスするには:
http://ms-ip:9000
にログインします。ここで、ms-ip は、Management Server ノードの IP アドレスまたは DNS 名です。- 共有フローを含む組織を選択します。組織の切り替えをご覧ください。
共有フローは、この組織からの環境にデプロイされたすべての API プロキシと共有フローで使用できます。この組織外部からは使用できません。
- 上部のナビゲーション バーで [APIs] > [Shared Flows] を選択します。
- 新しい共有フローの追加を開始するには、[+ Shared Flow] ボタンをクリックします。
- [Build a Shared Flow] ページで、新しいフローの作成方法を選択します。
- 新しいフローをゼロから作成します。フロー内のステップのように、ポリシーとリソースを構成できます。
- [Empty Shared Flow] を選択します。
- 名前の値を入力します。これは、API プロキシと他の共有フローでこの共有フローを参照する際に使用する名前となります。この名前は、フローを使用するデベロッパーがわかりやすい名前にする必要があります。
- フローの実行内容に関する詳細を提供する説明を入力します。
- [Next] をクリックします。
- 必要に応じて、新しいフローをデプロイする環境を選択します。
たとえば、テスト環境にデプロイされた API プロキシから共有フローをテストする場合は、共有フローをテストにデプロイします。
-
[Build and Deploy] をクリックして、新しい共有フローを作成し、選択した環境にデプロイします。環境を選択しなかった場合、共有フローは作成されますがデプロイされません。
- フローバンドルをアップロードして、既存ソースから共有フローを作成します。
- [Shared Flow Bundle] を選択して、新しいフローに組み込むアーティファクトを含む .zip ファイルを指定します。
共有フローバンドルには、共有フローのソース アーティファクトが含まれます。たとえば、Edge UI から共有フローをダウンロードした場合、.zip ファイルにはフローバンドルが含まれます。
- [Next] をクリックします。
- [Choose File] をクリックして、インポートする共有フローソースを含む .zip ファイルを選択します。
- [Shared Flow Name] ボックスで、インポートされたフローの名前を入力します。これは、API プロキシと他の共有フローでこの共有フローを参照する際に使用する名前となります。この名前は、フローを使用するデベロッパーがわかりやすい名前にする必要があります。
- [Next] をクリックします。
- [Build] をクリックして、インポートするソースから新しいフローを作成します。
- [Shared Flow Bundle] を選択して、新しいフローに組み込むアーティファクトを含む .zip ファイルを指定します。
- 新しいフローをゼロから作成します。フロー内のステップのように、ポリシーとリソースを構成できます。
API プロキシや共有フローから共有フローを呼び出す
FlowCallout ポリシーを使用して、共有フローをプロキシや別の共有フローから呼び出すことができます。
- Edge UI で、共有フローの呼び出し元となるプロキシか別の共有フローを見つけます。
- [Navigator] で、[Policies] の横にある + ボタンをクリックします。
- ポリシーのリストで、[Extension] の下にある [Flow Callout] をクリックします。
- 表示名と名前(一意の ID)を入力してから、このポリシーにより呼び出す共有フローを選択します。
- [Add] をクリックします。
- 呼び出しを行うプロキシに、新しい Flow Callout ポリシーを追加します。