Azure Container アプリを API としてインポートする

適用対象: すべての API Management レベル

この記事では、Azure portal を使って Azure Container アプリを Azure API Management にインポートし、インポートした API をテストする方法について説明します。 この記事では、次のことについて説明します。

  • Web API を公開する Container アプリをインポートする
  • Azure Portal での API のテスト

API Management を使って Container アプリを使って Container アプリを公開する

Azure Container Apps を使うと、複雑なインフラストラクチャを管理することなく、コンテナー化されたアプリをデプロイできます。 API 開発者は、好みのプログラミング言語やフレームワークを使ってコードを記述し、Distributed Application Runtime (Dapr) を完全にサポートしてマイクロサービスを構築し、HTTP トラフィックやその他のイベントに基づいてスケーリングすることができます。

Container アプリでホストされる Web API を公開するための環境としては、次のような理由から API Management が推奨されます。

  • API 利用者に公開されるフロントエンドの管理とセキュリティによる保護を、バックエンド Web API の管理と監視から分離します
  • Container アプリとしてホストされる Web API を、他の API と同じ環境で管理します
  • ポリシーを適用して、呼び出しレート制限などの API の動作を変更します
  • API 利用者は API Management のカスタマイズ可能な開発者ポータルに誘導され、そこで API を検索し、情報を入手し、アクセスを申請し、試用することができます

詳細については、「API Management について」を参照してください。

OpenAPI 仕様とワイルドカード操作

API Management は、OpenAPI 仕様 (Swagger 定義) を用意する Container アプリのインポートをサポートしています。 ただし、OpenAPI 仕様は必須ではありません。 OpenAPI 仕様を用意することをお勧めします。 API Management を使うと、個々の操作をインポートし、各操作の構成を個別に検証、管理、保護、更新することができます。

OpenAPI 仕様を公開している Container アプリの場合、定義に直接マップされる API 操作が API Management によって作成されます。 API Management により、複数の場所で OpenAPI 仕様が検索されます。

  • Container アプリの構成。
  • /openapi.json
  • /openapi.yml
  • /swagger/v1/swagger.json

OpenAPI 仕様が提供されない場合、一般的な HTTP 動詞 (GET、PUT など) のワイルドカード操作が API Management によって生成されます。 同じ API Management 機能を引き続き利用できますが、操作は同じ詳細レベルで定義されていません。

いずれの場合も、インポート後に API の操作を編集または追加できます。

バックエンド Container アプリで、次の 2 つの GET 操作をサポートしているとします。

  • https://myappservice.azurewebsites.net/customer/{id}
  • https://myappservice.azurewebsites.net/customers

https://contosoapi.azure-api.net/store のようなパスで、Container アプリを API Management サービスにインポートします。 次の表では、OpenAPI 仕様がある場合とない場合のそれぞれについて、API Management にインポートされる操作を示しています。

タイプ インポートされる操作 サンプルの要求
OpenAPI の仕様 GET /customer/{id}

GET /customers
GET https://contosoapi.azure-api.net/store/customer/1

GET https://contosoapi.azure-api.net/store/customers
ワイルドカード GET /* GET https://contosoapi.azure-api.net/store/customer/1

GET https://contosoapi.azure-api.net/store/customers

ワイルドカード操作によって、OpenAPI 仕様の操作と同じ要求をバックエンド サービスに対して実行できます。 ただし、OpenAPI が指定された操作は、API Management で個別に管理できます。

前提条件

API Management インスタンスに移動します。

  1. Azure portal で、[API Management サービス] を検索して選択します。

    [API Management サービス] を選択する

  2. [API Management サービス] ページで、ご自身の API Management インスタンスを選択します。

    API Management インスタンスを選択する

バックエンド API のインポートと発行

  1. Azure portal で API Management サービスに移動し、メニューから [API] を選択します。

  2. 一覧から [Container App](Container アプリ) を選びます。

    [Container App]\(Container アプリ\) から作成する

  3. [参照] をクリックして、サブスクリプション内の Container アプリの一覧を表示します。

  4. Container アプリを選びます。 選んだ Container アプリに OpenAPI 定義が関連付けられている場合、API Management によって取得およびインポートされます。 OpenAPI 定義が見つからない場合、API Management では、一般的な HTTP 動詞のワイルドカード操作を生成して API を公開します。

  5. API URL サフィックスを追加します。 サフィックスは、この API Management インスタンスでこの特定の API を識別する名前です。 この API Management インスタンス内で一意である必要があります。

  6. API を成果物に関連付けることで API を公開します。 この場合、"無制限" の成果物が使用されます。 API を公開して開発者が利用できるようにするには、その API を成果物に追加します。

    Note

    製品には、1 つまたは複数の API が関連付けられています。 多数の API を組み込み、開発者ポータルを通じてそれらを開発者に提供できます。 開発者は、まず製品をサブスクライブして API へのアクセス権を取得する必要があります。 サブスクライブすると、その製品の API に適したサブスクリプション キーを受け取ります。 API Management インスタンスを作成した場合は、管理者になっているため、既定ですべての製品にサブスクライブされます。

    すべての API Management インスタンスは、作成時に次の 2 つのサンプル成果物を備えています。

    • スターター
    • 無制限
  7. 他の API 設定を入力します。 値は、作成時に設定することも、後で [設定] タブに移動して構成することもできます。設定については、「最初の API のインポートと発行」のチュートリアルで説明されています。

  8. [作成] を選択します

    [Container App]\(Container アプリ\) から API を作成する

Azure portal での新しい API のテスト

Azure Portal には、API の操作を表示およびテストするための便利な環境が用意されており、操作を直接呼び出すことができます。 開発者ポータルで、または独自の REST クライアント ツールを使用して API をテストすることもできます。

  1. 前の手順で作成した API を選びます。

  2. [テスト] タブを選びます。

  3. 操作を選択します。

    ページに、クエリ パラメーターのフィールドとヘッダーのフィールドが表示されます。 この API に関連付けられている成果物のサブスクリプション キーの場合、ヘッダーの 1 つは Ocp-Apim-Subscription-Key です。 API Management インスタンスを作成した場合は、既に管理者になっているので、キーが自動的に入力されます。

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

    テストが成功すると、バックエンドから 200 OK といくつかのデータが応答として返されます。

ポータルでワイルドカード操作をテストする

ワイルドカード操作が生成されるとき、操作がバックエンド API に直接マップしない場合があります。 たとえば、API Management にインポートされるワイルドカード GET 操作では、パス / を既定で使用します。 ただし、バックエンド API では、次のパスで GET 操作をサポートしている場合があります。

/api/TodoItems

パス /api/TodoItems は次のようにしてテストできます。

  1. 作成した API を選択し、操作を選択します。

  2. [テスト] タブを選びます。

  3. [テンプレート パラメーター] で、ワイルドカード (*) 名の横にある値を更新します。 たとえば、「api/TodoItems」と入力します。 この値が、ワイルドカード操作のパス / の後に追加されます。

    ワイルドカード操作のテスト

  4. [Send] を選択します。

その他の API の追加

次のように、各種サービスで公開される API を構成できます。

  • OpenAPI の仕様
  • SOAP API
  • GraphQL API
  • Azure App Service でホストされる Web アプリ
  • Azure Function App
  • Azure Logic Apps
  • Azure Service Fabric

次の手順に従って、既存の API に別の API を追加します。

Note

別の API をインポートすると、操作が現在の API に追加されます。

  1. Azure portal で Azure API Management インスタンスに移動します。

    Azure API Management インスタンスに移動する

  2. [概要] ページまたは左側のメニューから [API] を選択します。

    [API] を選択する

  3. 別の API を追加する API の隣の [...] をクリックします。

  4. ドロップダウン メニューから [インポート] を選択します。

    [インポート] を選択する

  5. API のインポート元のサービスを選択します。

    サービスを選択する

次のステップ