Flex Gateway API インスタンスの追加

Design Center またはその他のアプリケーションを使用して API を作成したら、API インスタンスを追加して、API Manager でその API を管理できます。API は、削除するまで API Manager の管理下に置かれます。

分散およびマイクロサービス環境で動作し、CI/CD 環境に適合する柔軟で高性能の API ゲートウェイを必要とする API の場合、Flex Gateway を使用します。

API インスタンスを追加するには、次の 3 つのオプションがあります。

API インスタンスを昇格またはインポートするときに、設定を変更するオプションはありません。ただし、新しい API インスタンスを追加する場合、ダウンストリームとアップストリームの設定を定義する必要があります。

次の図は、アップストリームおよびダウンストリームの設定と、アップストリームサービスおよびダウンストリームコンシューマーアプリケーションとの関係を示しています。この設定では、ダウンストリームサービスは、アップストリームサービスによって完了される API 要求を行うサービスです。これらの用語は、情報の方向ではなく、連動関係の方向を表します。ダウンストリームサービスは、アップストリームサービスに情報を提供する ​POST​ 要求を行うことができます。ただし、ダウンストリームサービスは、要求の完了には引き続きアップストリームサービスに連動します。

API インスタンスは、アップストリーム設定とダウンストリーム設定の間のゲートウェイにデプロイされます。

新しい API を追加する

  1. [Anypoint Platform]​ > ​[API Manager]​ に移動します。

  2. [API Administration (API 管理)]​ で、​[Add API (API を追加)]​ をクリックし、​[Add new API (新しい API を追加)]​ をクリックします。

  3. [Flex Gateway]​ を選択します。

  4. [Select a gateway (ゲートウェイを選択)]​ の下のリストから、インストールして登録した接続済み Flex Gateway を選択します。

    Flex Gateway がリストに表示されない場合、または Flex Gateway が表示されていて状況が [Disconnected (切断済み)] の場合、​「Flex Gateway のインストール」​および​「接続モードでの登録と実行」​を参照してください。

  5. [Next (次へ)]​ をクリックします。

  6. 以下のオプションから API を選択します。

    • 管理する API を Exchange を介して共有している場合、​[Select API from Exchange (Exchange から API を選択)]​ をクリックします。

      1. [Select API (API を選択)]​ の下のリストから API をクリックします。必要に応じて、特定の API を検索できます。

      2. 最新バージョンを使用していない場合は、​[Asset type (アセットタイプ)]​、​[API version (API バージョン)]​、および ​[Asset version (アセットバージョン)]​ を更新します。

        Exchange でのバージョンについての詳細は、アセットバージョンを参照してください。

      3. [RAML/OAS]​ アセットタイプを選択した場合は、API の ​[Conformance Status (準拠状況)]​ を表示して、API が準拠していることを確認します。​[Conformance Status (準拠状況)]​ が非準拠の場合、デプロイ後に​ガバナンスレポート​を表示して、準拠の問題を見つけて修正します。​ガバナンスレポート​についての詳細は、API インスタンスの管理を参照してください。

    • [Create new API (新しい API を作成)]​ をクリックします。

      1. 新しい API アセットの​名前​を入力します。

      2. 以下のオプションから​アセットタイプ​を選択します。

        • REST API:​ アセットに含める RAML または OAS API 定義ファイルがある場合は、このオプションを選択します。

          REST API の RAML または OAS ファイルをアップロードします。バージョン 2.0.0 以降ではネイティブ OAS サポートが追加されるので、OAS または RAML 仕様に推奨されるバージョンです。OAS API 仕様を API プロキシバージョン 1.0 以前にアップロードすると、API 仕様は RAML に変換されます。

        • HTTP API:​ アセットに含める API 定義ファイルがない場合は、このオプションを選択します。

      3. 最新バージョンを使用していない場合は、​[Asset type (アセットタイプ)]​、​[API version (API バージョン)]​、および ​[Asset version (アセットバージョン)]​ を更新します。

        Exchange でのバージョンについての詳細は、アセットバージョンを参照してください。

      4. [RAML/OAS]​ アセットタイプを選択した場合は、API の ​[Conformance Status (準拠状況)]​ を表示して、API が準拠していることを確認します。[Conformance Status (準拠状況)] が非準拠の場合、デプロイ後に​ガバナンスレポート​を表示して、準拠の問題を見つけて修正します。​ガバナンスレポート​についての詳細は、API インスタンスの管理を参照してください。

  7. [Next (次へ)]​ をクリックします。

  8. ダウンストリーム設定を定義します。

    項目名 説明 必須 注意事項

    Protocol (プロトコル)

    HTTP と HTTPS のどちらを使用するかを指定します。

    はい

    HTTPS を選択する場合、インバウンドトラフィックの TLS コンテキストを指定します。

    Inbound TLS (インバウンド TLS)

    HTTPS API のインバウンドトラフィックで使用する TLS コンテキスト。

    いいえ

    TLS コンテキストを API に追加する前に ​Flex Gateway の TLS コンテキストを設定します​。Flex 1.4.0 以降でのみ使用できます。

    Port (ポート)

    表示されたポートが正しくない場合に使用する番号を指定します。

    いいえ

    API インスタンスは、​ベースパス​が両方のインスタンスで異なる場合、同じ対象間で同じポートを共有できます。Flex 1.2.0 以降でのみ使用できます。

    Base Path (ベースパス)

    ホストルートに相対的なすべての API パスの URL プレフィックスを指定します。スラッシュ ​/​ で始まる必要があります。

    はい

    Instance label (インスタンス表示ラベル)

    API の表示ラベルを指定します。

    いいえ

    同じ API の複数の管理インスタンスがある場合、各インスタンスを他のインスタンスと区別するための表示ラベルを追加します。

    Advanced Options (詳細オプション)

    Consumer endpoint (コンシューマーエンドポイント)

    コンシューマーが要求の送信に使用するプロキシアプリケーションのアドレスを指定します。

    いいえ

    Client provider (クライアントプロバイダー)

    API のクライアントプロバイダーを指定します。

    いいえ

    Anypoint Platform はデフォルトではクライアントプロバイダーとして機能します。外部クライアントプロバイダーを設定するには、​「クライアントプロバイダー」​を参照してください。

  9. [Next (次へ)]​ をクリックします。

  10. 次のいずれかのアップストリーム設定を定義します。

    • 1 つのアップストリームサービス
      Flex Gateway バージョン 1.4.x 以前、または1 つのアップストリームサービスを使用する Flex Gateway バージョン 1.5.x の場合、次のアップストリーム設定を定義します。

      項目名 説明 必須 注意事項

      Upstream URL (アップストリーム URL)

      プロキシまたは API にアクセスするための URL。​/​ で終了する必要があります。

      はい

      たとえば、Exchange の API アセットの URL を使用できます。

      Outbound TLS (アウトバウンド TLS)

      アップストリームサービスへのアウトバウンドトラフィックに使用される TLS コンテキスト。

      いいえ

      TLS コンテキストを API に追加する前に ​Flex Gateway の TLS コンテキストを設定します​。Flex 1.4.0 以降でのみ使用できます。

    • 複数のアップストリームサービス
      Flex Gateway バージョン 1.5.x 以降は、1 つのコンシューマーエンドポイントを通じて複数のアップストリームサービスを公開する API インスタンスがサポートされます。
      複数のアップストリームサービスを設定するには、​接続モードで実行されている Flex Gateway での複数のアップストリームサービス​を参照してください。

  11. [Next (次へ)]​ をクリックします。

  12. 選択内容を確認し、必要に応じて編集します。

  13. デプロイする準備ができたら、​[Save & Deploy (保存してデプロイ)]​ をクリックします。または、​[Save (保存)]​ を選択して API インスタンスを保存し、後でデプロイします。

接続モードで実行されている Flex Gateway での複数のアップストリームサービス

Flex Gateway バージョン 1.5.x 以降は、1 つのコンシューマーエンドポイントを通じて複数のアップストリームサービスを公開する API インスタンスがサポートされます。

Flex Gateway は、トラフィックを複数のアップストリームサービスに転送できるさまざまなルートを使用して要求トラフィックを管理します。Flex Gateway はルート順と各ルートのルールを使用してトラフィックをルートに転送します。さらに、ルート内の各アップストリームサービスに加重率を追加してアップストリームサービスに送信される要求の割合を管理できます。

次の図では、さまざまなルートでフライト情報データベースへの要求やカスタマーサービスアプリケーションへの要求を管理しています。ルート 1 には 2 つのアップストリームサービスが定義されており、要求の 70% は安定したデータベースに送信され、要求の 30% はベータデータベースに送信されます。

Flex Gateway は複数のアップストリームへのトラフィックを管理する

ルート

各 API インスタンスは最大 10 個のルートをサポートし、各ルートは最大 10 個のアップストリームサービスをサポートできます。ルートのルールと順序を定義して、ルートが受信できる要求を設定します。API インスタンスごとに少なくとも 1 つのルートが必要です。

ルートを追加する前に、わかりやすくするために省略可能な​ルートの表示ラベル​を入力します。

ルートを追加するには ​[Add Route (ルートを追加)]​ をクリックし、ルートを削除するには​ゴミ箱​ アイコン (​2%​) をクリックします。1 つのルートのみ設定されている場合、そのルートは削除できません。

ルートルール

ルートルールを使用して、要求をさまざまなルートに転送できます。

ルートルールを表示および編集するには、​[Route Rules (ルートルール)]​ をクリックします。

すべてのルールは省略可能です。ルールに値がない場合、そのルールは無視されます。たとえば、ホストを指定しないと、要求が他のルートルールを満たす場合にルートは任意のホストをサービスできます。ルールを定義しないと、ルートはすべての要求をサービスできます。

異なるルートで同じアップストリームサービスをサポートできます。1 つのルートルールセットでアップストリームサービスの特定のセットに対するすべての要求を取得できない場合は、完全にカバーするために異なるルールを使用して複数のルートを定義できます。

ルールセットで定義されたルールをすべて満たす要求のみがそのルートに送られます。要求がどのルートのルールも満たさないと、Flex Gateway によって ​404​ エラーコードが返されます。

Flex Gateway では以下のルートルールがサポートされます。

Method

ルートでサービスを提供できる要求メソッドの種別を定義します。

各ルート内に複数のメソッドを選択できます。定義されたメソッドのいずれかの要求のみがこのルートに送信されます。

サポートされるメソッドを選択する手順は、次のとおりです。

  1. [Method (メソッド)]​ ドロップダウンリストを展開します。

  2. すべてのサポートされるメソッドを選択します。

  3. ドロップダウンリストを折りたたみます。

Path

ルートでサービスを提供できる要求パスを定義します。

ルートに対して定義できる「URI テンプレート正規表現」パスは 1 つのみです。定義済みのパスがある要求しかこのルートには送信できません。

[Path (パス)]​ ルールを定義する手順は、次のとおりです。

  1. [Path (パス)]​ 設定項目にパステンプレートを入力します。

Host

ルートでサービスを提供できる要求ホストを定義します。

各ルートに定義できるホスト URL は 1 つのみです。定義済みのホストから行われる要求しかこのルートには送信できません。

[Host (ホスト)]​ ルールを定義する手順は、次のとおりです。

  1. [Host (ホスト)]​ 設定項目にホストを入力します。

Header

このルートで要求を処理するために必要なヘッダーと正規表現値を定義します。

このルールでは、ヘッダー名と正規表現値を定義します。指定されたすべてのヘッダー要件を満たす要求しかこのルートには送信できません。ルールで特に定義されていない要求に存在する追加のヘッダーは無視されます。

最大 10 個のヘッダーを定義できます。

[Headers (ヘッダー)]​ ルールを定義する手順は、次のとおりです。

  1. これが最初のヘッダーではない場合は、​[Add header (ヘッダーを追加)]​ をクリックします。

  2. 最初のボックスにヘッダー名を入力します。

  3. 2 番目のボックスにヘッダーの正規表現値を入力します。

    ヘッダーを削除するには、​ゴミ箱​アイコン (​2%​) をクリックします。

ルート順序

ルートルールの使用に加えて、Flex Gateway はページにルートが表示される順序の上から順番に、要求をさまざまなルートに送信します。

要求がルートルールを満たしている場合、Flex Gateway は要求を最初のルートに送ります。

ルートの順序を定義するには、上矢印と下矢印を使用してルートを配置します。

要求が複数のルートのルートルールを満たすことができる場合、ルートの順序付けが非常に重要です。最初に、より複雑なルートルールを使用してルートを順序付ける必要があります。ルートの順序を定義しない場合、ルートは作成された順序で並び替えられます。

たとえば、ルート 1 でルールとして ​GET​ メソッドが定義されていて、ルート 2 でルートルールが定義されていない場合、すべての ​GET​ 要求はルート 1 に送信され、他のすべての要求はルート 2 に送信されます。ルート順序が逆で、ルート 1 にルートルールがなかったとしたら、Flex Gateway は ​GET​ 要求がルート 2 に達する前にすべての要求をルート 1 に転送します。

アップストリームサービス

1 つのルートで複数のアップストリームサービスを使用し、要求を似たサービスに転送できます。たとえば、すべてのトラフィックを新しいサービスに送信せずに新しいベータアップストリームサービスのパフォーマンスをテストするには、半分のトラフィックを安定アップストリームサービスに転送し、半分を新しいアップストリームサービスに転送できます。

各 API インスタンスルートは最大 10 個のアップストリームサービスをサポートできますが、各ルートに少なくとも 1 つのアップストリームサービスが必要です。

各要求がルート内のどのアップストリームサービスに送信されるかはランダムであり、以前の要求とは無関係です。アップストリームの ​[Weight (加重)]​ で、要求が特定のアップストリームサービスに送信される確率を定義します。

ルート内のアップストリームサービスはどの要求でも受信できるため、同じルート内のすべてのアップストリームサービスは同じ API コントラクトに準拠している必要があります。

アップストリームサービスを追加するには ​[Add Upstream (アップストリームを追加)]​ をクリックし、アップストリームを削除するには​ゴミ箱​ アイコン (​2%​) をクリックします。1 つのアップストリームサービスのみ設定されている場合、そのアップストリームサービスは削除できません。

各アップストリームサービスに対して次の項目を設定します。

項目名 説明 必須 注意事項

Upstream URL (アップストリーム URL)

プロキシまたは API にアクセスするための URL。​/​ で終了する必要があります。

はい

たとえば、Exchange の API アセットの URL を使用できます。

Upstream Label (アップストリームの表示ラベル)

アップストリームサービスの表示ラベル。

いいえ

複数のアップストリームサービスインスタンスがある場合は、それぞれに表示ラベルを追加して、他のインスタンスと区別します。

TLS

アップストリームサービスへのアウトバウンドトラフィックに使用される TLS コンテキスト。

いいえ

TLS コンテキストを API に追加する前に ​Flex Gateway の TLS コンテキストを設定します​。TLS コンテキストを追加するには、​[Add TLS Context (TLS コンテキストを追加)]​ をクリックします。

Weight (重み)

アップストリームサービスに送信する要求の割合。

はい

この値は、複数のアップストリームサービスがある場合にのみ設定可能です。すべてのアップストリームの加重の合計は ​100%​ である必要があります。

別の環境への API インスタンスの昇格

  1. [Anypoint Platform]​ > ​[API Manager]​ に移動します。

  2. [API Administration (API 管理)]​ で、​[Add API (API を追加)]​ をクリックし、​[Promote API from environment (環境から API を昇格)]​ を選択します。

  3. [Source Environment (ソース環境)]​ を選択します。

  4. 検索項目に API の名前を入力して、​[API]​ を選択します。

  5. [API Version (API バージョン)]​ を選択します。

  6. [API instance label (API インスタンスの表示ラベル)]​ を選択します。

  7. 必要に応じて、除外する ​[Include in Promotion (昇格に含める)]​ オプションをオフにます。

  8. [Promote (昇格)]​ をクリックします。

  9. 必要に応じて、[Runtime & Endpoint Configuration (ランタイムとエンドポイント設定)] の詳細を確認して更新し、​[Save (保存)]​ をクリックします。

Zip ファイルから API をインポートする

  1. [Anypoint Platform]​ > ​[API Manager]​ に移動します。

  2. [API Administration (API 管理)]​ で、​[Add API (API を追加)]​ をクリックし、​[Import API from zip file (zip ファイルから API をインポート)]​ を選択します。

  3. [Choose file (ファイルを選択)]​ をクリックし、API インスタンス設定 zip ファイルを選択します。

  4. [Next (次へ)]​ をクリックします。

  5. 必要に応じて API 設定の詳細を確認して更新し、​[Save (保存)]​ をクリックします。

注意事項

  • OpenAPI 仕様 (OAS) 3.0 はサポートされていますが、コールバック機能はサポートされていません。この問題を回避するには、Mule Runtime Engine ドメインの外部でコールバックを処理するか、コールバックを使用しない OAS 3.0 仕様を使用します。