チュートリアル:API を変換および保護する
適用対象: すべての API Management レベル
このチュートリアルでは、API を保護または変換するためのポリシーの構成について説明します。 ポリシーは、API の動作を変更するステートメントのコレクションであり、API の要求または応答に対して順番に実行されます。
ヒント
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 を保護する
- 変換をテストする
次のステップ
次のチュートリアルに進みます。