Azure Container アプリを API としてインポートする
適用対象: すべての API Management レベル
この記事では、Azure portal を使って Azure Container アプリを Azure API Management にインポートし、インポートした API をテストする方法について説明します。
Note
現在、この機能はワークスペースでは利用できません。
この記事では、次のことについて説明します。
- 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 で個別に管理できます。
前提条件
- 次のクイック スタートを完了すること:Azure API Management インスタンスを作成する。
- サブスクリプション内に Web API を公開する Container アプリがあることを確認してください。 詳細については、Container Apps のドキュメントを参照してください。
API Management インスタンスに移動します。
Azure portal で、[API Management サービス] を検索して選択します。
[API Management サービス] ページで、ご自身の API Management インスタンスを選択します。
バックエンド API のインポートと発行
Azure portal で API Management サービスに移動し、メニューから [API] を選択します。
一覧から [Container App](Container アプリ) を選びます。
[参照] をクリックして、サブスクリプション内の Container アプリの一覧を表示します。
Container アプリを選びます。 選んだ Container アプリに OpenAPI 定義が関連付けられている場合、API Management によって取得およびインポートされます。 OpenAPI 定義が見つからない場合、API Management では、一般的な HTTP 動詞のワイルドカード操作を生成して API を公開します。
API URL サフィックスを追加します。 サフィックスは、この API Management インスタンスでこの特定の API を識別する名前です。 この API Management インスタンス内で一意である必要があります。
API を成果物に関連付けることで API を公開します。 この場合、"無制限" の成果物が使用されます。 API を公開して開発者が利用できるようにするには、その API を成果物に追加します。
Note
製品には、1 つまたは複数の API が関連付けられています。 多数の API を組み込み、開発者ポータルを通じてそれらを開発者に提供できます。 開発者は、まず製品をサブスクライブして API へのアクセス権を取得する必要があります。 サブスクライブすると、その製品の API に適したサブスクリプション キーを受け取ります。 API Management インスタンスを作成した場合は、管理者になっているため、既定ですべての製品にサブスクライブされます。
すべての API Management インスタンスは、作成時に次の 2 つのサンプル成果物を備えています。
- スターター
- 無制限
他の API 設定を入力します。 値は、作成時に設定することも、後で [設定] タブに移動して構成することもできます。設定については、「最初の API のインポートと発行」のチュートリアルで説明されています。
[作成] を選択します
Azure portal での新しい API のテスト
Azure Portal には、API の操作を表示およびテストするための便利な環境が用意されており、操作を直接呼び出すことができます。 開発者ポータルで、または独自の REST クライアント ツールを使用して API をテストすることもできます。
前の手順で作成した API を選びます。
[テスト] タブを選びます。
操作を選択します。
ページに、クエリ パラメーターのフィールドとヘッダーのフィールドが表示されます。 この API に関連付けられている成果物のサブスクリプション キーの場合、ヘッダーの 1 つは
Ocp-Apim-Subscription-Key
です。 API Management インスタンスを作成した場合は、既に管理者になっているので、キーが自動的に入力されます。[送信] をクリックします。
テストが成功すると、バックエンドから 200 OK といくつかのデータが応答として返されます。
ポータルでワイルドカード操作をテストする
ワイルドカード操作が生成されるとき、操作がバックエンド API に直接マップしない場合があります。 たとえば、API Management にインポートされるワイルドカード GET 操作では、パス /
を既定で使用します。 ただし、バックエンド API では、次のパスで GET 操作をサポートしている場合があります。
/api/TodoItems
パス /api/TodoItems
は次のようにしてテストできます。
作成した API を選択し、操作を選択します。
[テスト] タブを選びます。
[テンプレート パラメーター] で、ワイルドカード (*) 名の横にある値を更新します。 たとえば、「
api/TodoItems
」と入力します。 この値が、ワイルドカード操作のパス/
の後に追加されます。[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 に追加されます。
Azure portal で Azure API Management インスタンスに移動します。
[概要] ページまたは左側のメニューから [API] を選択します。
別の API を追加する API の隣の [...] をクリックします。
ドロップダウン メニューから [インポート] を選択します。
API のインポート元のサービスを選択します。
関連トピック
- API のインポートの制限事項
- OpenAPI 仕様のインポート
- SOAP API のインポート
- SOAP API のインポートと REST への変換
- App Service API をインポートする
- コンテナー アプリ API をインポートする
- Websocket API のインポート
- GraphQL API のインポート
- GraphQL スキーマをインポートし、フィールド リゾルバーを設定する
- Azure 関数アプリをインポートする
- Azure ロジック アプリをインポートする
- Service Fabric サービスをインポートする
- Azure OpenAI API をインポートする
- OData API をインポートする
- SAP OData メタデータをインポートする
- gRPC API をインポートする
- API の編集