チュートリアル:API を変換および保護する
適用対象: すべての API Management レベル
このチュートリアルでは、API を保護または変換するためのポリシーの構成について説明します。 ポリシーは、API の動作を変更するステートメントのコレクションであり、API の要求または応答に対して順番に実行されます。
たとえば、カスタム応答ヘッダーの設定が必要な場合があります。 または、開発者が API を使いすぎないように、レート制限ポリシーを構成してバックエンド API を保護します。 これらは、API Management ポリシーがどのようなものかを示す簡単な例です。 その他のポリシー オプションについては、「API Management ポリシー」をご覧ください。
Note
既定では、API Management はグローバル forward-request
ポリシーを構成します。 ゲートウェイがバックエンド サービスへの要求を完了するには、forward-request
ポリシーが必要です。
このチュートリアルでは、次の作業を行う方法について説明します。
- カスタム応答ヘッダーを設定するように API を変換する
- レート制限ポリシー (スロットリング) を追加して API を保護する
- 変換をテストする
前提条件
- Azure API Management の用語について学習します。
- Azure API Management のポリシーの概念を理解します。
- 次のクイック スタートを完了すること:Azure API Management インスタンスを作成する。 このチュートリアルでは、Developer レベルや Basic v2 レベルなど、クラシックまたは v2 のいずれかのレベルを使うことをお勧めします。 従量課金レベルでは、このチュートリアルで使うすべてのポリシーはサポートされていません。
- また、次のチュートリアルを完了すること: 最初の API のインポートと発行。
API Management インスタンスに移動します。
Azure portal で、[API Management サービス] を検索して選択します。
[API Management サービス] ページで、ご自身の API Management インスタンスを選択します。
元の応答をテストする
元の応答を表示するには:
- API Management サービス インスタンスで、 [API] を選択します。
- API の一覧から Swagger Petstore を選びます。
- 画面の上部にある [テスト] タブを選択します。
- [GET Finds pets by status] を選び、必要に応じて、status クエリ パラメーターの別の値を選びます。 [Send] を選択します。
元の API 応答は、次に示す応答のようになります。
カスタム応答ヘッダーを追加するように API を変換する
API Management には変換ポリシーがいくつか含まれており、要求または応答のペイロード、ヘッダー、状態コードを変更するために使用できます。 この例では、API の応答でカスタム応答ヘッダーを設定します。
変換ポリシーを設定する
このセクションでは、set-header
ポリシーを使ってカスタム応答ヘッダーを構成する方法を説明します。 ここでは、ポリシーを簡単に構成できるフォーム ベースのポリシー エディターを使います。
[Swagger Petstore]>[デザイン]>[すべての操作] を選びます。
[送信処理] セクションで、[ポリシーの追加] を選択します。
[送信ポリシーの追加] ウィンドウで、[ヘッダーの設定] を選択します。
ヘッダーの設定ポリシーを構成するには、次の操作を行います。
- [名前] に「カスタム」と入力します。
- [値] で [+ 値の追加] を選びます。 「カスタムの値」と入力します。
- [保存] を選択します。
構成が済むと、[送信処理] セクションに set-header ポリシー要素が表示されます。
レート制限ポリシー (調整) を追加して API を保護する
このセクションでは、開発者が API を使いすぎないように、レート制限を構成してバックエンド API に保護を追加する方法について説明します。 この例では、コード エディターを使って rate-limit-by-key
ポリシーを構成する方法を示します。 この例では、制限を 15 秒あたり 3 回の呼び出しに設定します。 15 秒後、開発者は、API の呼び出しを再試行できます。
Note
このポリシーは従量課金レベルではサポートされていません。
[Swagger Petstore]>[デザイン]>[すべての操作] を選びます。
[受信処理] セクションで、コード エディター (</>) アイコンを選択します。
空の行で
<inbound>
要素内にカーソルを配置します。 次に、画面の右上隅にある [スニペットの表示] を選択します。右側のウィンドウの [アクセス制限ポリシー] で、[Limit call rate per key](キーごとの呼び出しレートの制限) を選択します。
<rate-limit-by-key />
要素は、カーソル位置に追加されます。<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>
このセクションの残りの部分では、この記事で設定したポリシー変換をテストします。
カスタム応答ヘッダーをテストする
[Swagger Petstore]>[テスト] を選びます。
[GET Finds pets by status] を選び、必要に応じて、status クエリ パラメーターの別の値を選びます。 [Send] を選択します。
ご覧のように、カスタム応答ヘッダーが追加されています。
レート制限 (調整) をテストする
[Swagger Petstore]>[テスト] を選びます。
[GET Finds Pets by Status] 操作を選びます。 [送信] を数回続けて選びます。
構成された期間内に送信された要求が多すぎると、429 Too Many Requests 応答が返されます。
15 秒以上待ってから [送信] をもう一度選択します。 今度は "200 OK" 応答が返されます。
まとめ
このチュートリアルでは、次の作業を行う方法を学びました。
- カスタム応答ヘッダーを設定するように API を変換する
- レート制限ポリシー (スロットリング) を追加して API を保護する
- 変換をテストする
次のステップ
次のチュートリアルに進みます。