次の方法で共有


チュートリアル:API を変換および保護する

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

このチュートリアルでは、API を保護または変換するためのポリシーの構成について説明します。 ポリシーは、API の動作を変更するステートメントのコレクションであり、API の要求または応答に対して順番に実行されます。

ヒント

API チームは、ワークスペースでこの機能を使用できます。 ワークスペースは、API と独自の API ランタイム環境への分離された管理アクセスを提供します。

たとえば、カスタム応答ヘッダーの設定が必要な場合があります。 または、開発者が API を使いすぎないように、レート制限ポリシーを構成してバックエンド API を保護します。 これらは、API Management ポリシーがどのようなものかを示す簡単な例です。 その他のポリシー オプションについては、「API Management ポリシー」をご覧ください。

既定では、API Management はグローバル forward-request ポリシーを構成します。 ゲートウェイがバックエンド サービスへの要求を完了するには、forward-request ポリシーが必要です。

このチュートリアルでは、次の作業を行う方法について説明します。

  • カスタム応答ヘッダーを設定するように API を変換する
  • レート制限ポリシー (スロットリング) を追加して API を保護する
  • 変換をテストする

ポータルの API Management ポリシーのスクリーンショット。

前提条件

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

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

    検索結果に API Management サービスを示すスクリーンショット。

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

    [API Management サービス] ページの API Management インスタンスを示すスクリーンショット。

元の応答をテストする

元の応答を表示するには:

  1. API Management サービス インスタンスで、 [API] を選択します。
  2. API の一覧から Swagger Petstore を選びます。
  3. 画面の上部にある [テスト] タブを選択します。
  4. [GET Finds pets by status] を選び、必要に応じて、statusクエリ パラメーターの別の値を選びます。 [Send] を選択します。

元の API 応答は、次に示す応答のようになります。

ポータルでの元の API 応答のスクリーンショット。

カスタム応答ヘッダーを追加するように API を変換する

API Management には変換ポリシーがいくつか含まれており、要求または応答のペイロード、ヘッダー、状態コードを変更するために使用できます。 この例では、API の応答でカスタム応答ヘッダーを設定します。

変換ポリシーを設定する

このセクションでは、set-header ポリシーを使ってカスタム応答ヘッダーを構成する方法を説明します。 ここでは、ポリシーを簡単に構成できるフォーム ベースのポリシー エディターを使います。

  1. [Swagger Petstore]>[デザイン]>[すべての操作] を選びます。

  2. [送信処理] セクションで、[ポリシーの追加] を選択します。

    ポータルで送信ポリシーに移動するスクリーンショット。

  3. [送信ポリシーの追加] ウィンドウで、[ヘッダーの設定] を選択します。

    ポータルでヘッダーの設定ポリシーを構成するスクリーンショット。

  4. ヘッダーの設定ポリシーを構成するには、次の操作を行います。

    1. [名前] に「カスタム」と入力します。
    2. [値][+ 値の追加] を選びます。 「カスタムの値」と入力します。
    3. [保存] を選択します。
  5. 構成が済むと、[送信処理] セクションに set-header ポリシー要素が表示されます。

    ポータルの [ヘッダーの設定] 送信ポリシーのスクリーンショット。

レート制限ポリシー (調整) を追加して API を保護する

このセクションでは、開発者が API を使いすぎないように、レート制限を構成してバックエンド API に保護を追加する方法について説明します。 この例では、コード エディターを使って rate-limit-by-key ポリシーを構成する方法を示します。 この例では、制限を 15 秒あたり 3 回の呼び出しに設定します。 15 秒後、開発者は、API の呼び出しを再試行できます。

このポリシーは従量課金レベルではサポートされていません。

  1. [Swagger Petstore]>[デザイン]>[すべての操作] を選びます。

  2. [受信処理] セクションで、コード エディター (</>) アイコンを選択します。

    ポータルで受信ポリシー コード エディターに移動するスクリーンショット。

  3. 空の行で <inbound> 要素内にカーソルを配置します。 次に、画面の右上隅にある [スニペットの表示] を選択します。

    ポータルの受信ポリシー エディターで [スニペットの表示] を選択するスクリーンショット。

  4. 右側のウィンドウの [アクセス制限ポリシー] で、[Limit call rate per key](キーごとの呼び出しレートの制限) を選択します。

    <rate-limit-by-key /> 要素は、カーソル位置に追加されます。

    ポータルにキー ポリシーごとの制限呼び出しレートを挿入するスクリーンショット。

  5. <rate-limit-by-key /> 要素内の <inbound> コードを次のコードに変更します。 次に、 [保存] を選択します。

    <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
    

変換をテストする

この時点でコード エディターのコードを確認すると、ポリシーは次のコードのようになります。

<policies>
     <inbound>
         <rate-limit calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
         <base />
     </inbound>
     <outbound>
         <set-header name="Custom" exists-action="override">
             <value>"My custom value"</value>
           </set-header>
         <base />
     </outbound>
     <on-error>
         <base />
     </on-error>
 </policies>

このセクションの残りの部分では、この記事で設定したポリシー変換をテストします。

カスタム応答ヘッダーをテストする

  1. [Swagger Petstore]>[テスト] を選びます。

  2. [GET Finds pets by status] を選び、必要に応じて、statusクエリ パラメーターの別の値を選びます。 [Send] を選択します。

    ご覧のように、カスタム応答ヘッダーが追加されています。

    ポータルでのカスタム応答ヘッダーを示すスクリーンショット。

レート制限 (調整) をテストする

  1. [Swagger Petstore]>[テスト] を選びます。

  2. [GET Finds Pets by Status] 操作を選びます。 [送信] を数回続けて選びます。

    構成された期間内に送信された要求が多すぎると、429 Too Many Requests 応答が返されます。

    ポータルの応答で [要求が多すぎます] を示すスクリーンショット。

  3. 15 秒以上待ってから [送信] をもう一度選択します。 今度は "200 OK" 応答が返されます。

Copilot のサポートを受ける

Copilot から AI の支援を受けて、API Management ポリシー定義を作成および編集できます。 Copilot を使用すると、XML 構文を知らなくても、特定の要件に一致するポリシーを作成および更新できます。 既存のポリシーの説明を取得することもできます。 また、Copilot は、他の API 管理ソリューションで構成したポリシーを翻訳するのに役立ちます。

  • Azure の Microsoft Copilot は、Azure portal の自然言語プロンプトに対するポリシー作成の支援を提供します。 API Management ポリシー エディターでポリシーを作成し、ポリシー セクションの説明を Copilot に依頼できます。
  • Visual Studio Code の GitHub Copilot for Azure では、Visual Studio Code でポリシー作成の支援が提供され、 Visual Studio Code 用の Azure API Management 拡張機能 を使用してポリシー構成を高速化できます。 自然言語で Copilot Chat または Copilot Edits にプロンプトを表示して、ポリシー定義を作成して調整することができます。

プロンプトの例:

Generate a policy that adds an Authorization header to the request with a Bearer token.

Copilot では AI を利用しているため、想定外のことや間違いが起こる可能性があります。 詳細については、「Copilot の一般的な使用に関する FAQ」を参照してください。

まとめ

このチュートリアルでは、次の作業を行う方法を学びました。

  • カスタム応答ヘッダーを設定するように API を変換する
  • レート制限ポリシー (スロットリング) を追加して API を保護する
  • 変換をテストする

次のステップ

次のチュートリアルに進みます。