次の方法で共有


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

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

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

ヒント

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

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

Note

既定では、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 インスタンスを選択する

元の応答をテストする

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

  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 の呼び出しを再試行できます。

Note

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

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

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

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

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

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

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

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

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

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

    <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" 応答が返されます。

まとめ

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

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

次のステップ

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