このページの内容は Apigee と Apigee ハイブリッドに該当します。
Apigee Edge のドキュメントを表示する。
ポリシーとリソースを組み合わせて 1 つの共有フローにします。このフローは、複数の API プロキシや、他の共有フローからでも利用可能です。共有フローはプロキシのようなものですが、エンドポイントがありません。共有フロー自体と同じ組織内にある API プロキシや共有フローからのみ使用できます。
複数の場所で有効な機能を 1 つの場所で取得することで、共有フローは、整合性を確保し、開発時間を短縮化して、より簡単にコードを管理するのに役立ちます。
次の動画は、Apigee UI で共有フローを作成してデバッグする方法を示しています。
FlowCallout ポリシーを使用して共有フローを呼び出すことができます。また、フローフックに共有フローを接続することで、プロキシやターゲットのリクエストの前、またはプロキシやターゲットのレスポンスの後に共有フローを実行できます。
FlowCallout
ポリシーについては、FlowCallout ポリシーをご覧ください。フローフックの詳細については、フローフックを使用した共有フローの接続をご覧ください。
たとえば、複数の場所で使用される機能、または組織内の 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 ポリシーを接続できます。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 リクエストの環境変数の設定をご覧ください。 -
環境に共有フローをデプロイしてから、その共有フローを使用するプロキシまたは共有フローをデプロイします。共有フローは、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 への効果的な共有フローのデプロイはゼロ ダウンタイム デプロイメントです。
-
使用する 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 プロキシまたは共有フローから共有フローを呼び出すをご覧ください。
- 使用元の API プロキシをデプロイして、共有フローの使用を開始します(デプロイ全般の詳細については、デプロイの概要をご覧ください)。
-
API プロキシの場合と同様に、トレースによって反復的に開発します。
API プロキシの場合と同様に、必要なロジックが得られるまで、呼び出しとトレースを繰り返すことにより共有フローを開発します。この場合、共有フローは自動的には実行されないため、プロキシ エンドポイントを呼び出してプロキシをデバッグします。
手順は次のとおりです。
- 共有フローと、
FlowCallout
ポリシーで呼び出す API プロキシの両方が同じ組織内に存在し、同じ環境にデプロイされているかを確認します。 - API プロキシの [Trace] タブで、API プロキシのトレースを開始します。
- API プロキシ内のプロキシ エンドポイントにリクエストを送信します。エンドポイントからのフローには、共有フローに呼び出す
FlowCallout
ポリシーを含める必要があります。 - [Trace] タブで、API プロキシから共有フローへのフローを確認します。
トレース処理では、共有フローが一連のステップまたはポリシーとして表され、グレーのボックス内に表示されます。
FlowCallout
ポリシーを表すアイコンは、共有フローの前に表示されます(トレースの詳細については、Debug ツールをご覧ください)。
- 共有フローと、
Apigee UI で共有フローを作成する
Apigee API を使用して共有フローを作成する場合、ゼロから作成することも、フローバンドル zip ファイルとして既存のフローソースをインポートすることもできます。
下記の手順に沿って [Shared Flows] ページにアクセスします。[Shared Flows] ページでは、組織内の共有フローのリストを表示したり、リスト内のフローの編集や削除を行ったりすることができます。
Apigee UI で共有フローを作成するには:
- Apigee UI にログインします。
-
共有フローがある組織を選択します。組織の切り替えをご覧ください。
共有フローは、この組織から環境にデプロイされたすべての API プロキシと共有フローで使用できます。この組織外からは使用できません。
- 左側のナビゲーション バーで [Develop] > [Shared Flows] を選択します。
-
共有フローを作成またはアップロードします。
-
[Create New] をクリックして、新しいフローを最初から作成します。ポリシーとリソースは、フローのステップとして構成できます。
[Create a Shared Flow] ダイアログが表示されます。
-
共有フローの名前を入力します。
これは、API プロキシや他の共有フローがこの共有フローを参照するために使用する名前になります。この名前は、フローを使用するデベロッパーにとってわかりやすいものにする必要があります。
- フローの内容についての詳細説明を入力します。
-
[Create] をクリックします。
共有フローが作成されます。
- 次に、共有フロー機能を開発し、目的の環境にデプロイします
-
共有フローの名前を入力します。
- [Upload bundle] をクリックしてからフローバンドルをアップロードし、既存のソースから共有フローを作成します。
共有フローバンドルには、共有フローのソース アーティファクトが含まれます。たとえば、Apigee UI から共有フローをダウンロードした場合、フローバンドルを含む zip ファイルが作成されます。
[Create a Shared Flow] ダイアログが表示されます。
- 新しいフローに含めるアーティファクトを含む zip ファイルを選択します。
- [Open] をクリックします。
-
インポートされた共有フローの名前を入力します。
これは、API プロキシや他の共有フローがこの共有フローを参照するために使用する名前になります。この名前は、フローを使用するデベロッパーにとってわかりやすいものにする必要があります。
-
[Create] をクリックします。
共有フローはバンドルから作成されます。
- 次に、共有フロー機能を開発し、目的の環境にデプロイします
-
[Create New] をクリックして、新しいフローを最初から作成します。ポリシーとリソースは、フローのステップとして構成できます。
API プロキシまたは共有フローから共有フローを呼び出す
FlowCallout ポリシーを使用して、共有フローをプロキシや別の共有フローから呼び出すことができます。
- Apigee UI で、共有フローの呼び出し元の API プロキシまたは共有フローを開きます。
- [Develop] タブをクリックします。
- [Navigator] で、[Policies] の横にある + をクリックします。
- ポリシーのリストで、[Extension] の下にある [FlowCallout] をクリックします。
- 表示名と名前(固有識別子)を入力してから、このポリシーが呼び出す共有フローを選択します。
- [Add] をクリックします。
- 呼び出しを行うプロキシに新しい
FlowCallout
ポリシーを追加します。