API Management ポリシー定義でポリシー構成を再利用する
適用対象: すべての API Management レベル
この記事では、API Management ポリシー定義で ''ポリシー フラグメント'' を作成して使用する方法を示します。 ポリシー フラグメントは、1 つまたは複数の API Management ポリシー構成を含む、一元管理される再利用可能な XML スニペットです。
ポリシー フラグメントは、ポリシーを一貫して構成し、XML コードを繰り返したり、再入力したりする必要なくポリシー定義を維持するのに役立ちます。
ポリシー フラグメント:
- 1 つまたは複数のポリシー構成を含む有効な XML である必要があります
- 参照されるポリシーでサポートされている場合は、ポリシー式を含めることができます
- include-fragment ポリシーを使用してポリシー定義にそのまま挿入されます
制限事項:
- ポリシー フラグメントには、ポリシー セクション識別子 (
<inbound>
、<outbound>
など) や<base/>
要素を含めることはできません。 - 現在、ポリシー フラグメントでは別のポリシー フラグメントを入れ子にすることはできません。
- ポリシー フラグメントの最大サイズは 32 KB です。
前提条件
API Management インスタンスとバックエンド API がまだない場合は、次をご覧ください。
必須ではありませんが、1 つまたは複数のポリシー定義を構成する必要がある場合があります。 ポリシー フラグメントを作成するときに、これらの定義からポリシー要素をコピーできます。
API Management インスタンスに移動します。
Azure portal で、[API Management サービス] を検索して選択します。
[API Management サービス] ページで、ご自身の API Management インスタンスを選択します。
ポリシー フラグメントを作成する
API Management インスタンスの左側のナビゲーションにある [API] で、[ポリシー フラグメント]>[+ 作成] を選択します。
[新しいポリシー フラグメントの作成] ウィンドウで、ポリシー フラグメントの [名前] とオプションの [説明] を入力します。 名前は、API Management インスタンス内で一意である必要があります。
名前の例: ForwardContext
XML ポリシー フラグメント エディターで、1 つまたは複数のポリシー XML 要素を
<fragment>
と</fragment>
タグの間に入力するか貼り付けます。たとえば、次のフラグメントには、バックエンド サービスにコンテキスト情報を転送する
set-header
ポリシー構成が含まれています。 このフラグメントは受信ポリシー セクションに含まれます。 この例のポリシー式では、組み込みのcontext
変数にアクセスします。<fragment> <set-header name="x-request-context-data" exists-action="override"> <value>@(context.User.Id)</value> <value>@(context.Deployment.Region)</value> </set-header> </fragment>
[作成] を選択します フラグメントがポリシー フラグメントの一覧に追加されます。
ポリシー定義にフラグメントを含める
ポリシー定義にポリシー フラグメントを挿入するように include-fragment
ポリシーを構成します。 ポリシー定義の詳細については、「ポリシーの設定または編集」をご覧ください。
- フラグメント内の基になるポリシーでその使用がサポートされている限り、任意のスコープで任意のポリシー セクションにフラグメントを含めることができます。
- ポリシー定義には複数のポリシー フラグメントを含めることができます。
たとえば、受信ポリシー セクションに ForwardContext という名前のポリシー フラグメントを挿入します。
<policies>
<inbound>
<include-fragment fragment-id="ForwardContext" />
<base />
</inbound>
[...]
ヒント
ポリシー定義に表示される含まれているフラグメントの内容を確認するには、ポリシー エディターで [有効なポリシーの計算] を選択します。
ポリシー フラグメントを管理する
ポリシー フラグメントを作成した後は、いつでもポリシー フラグメントのプロパティを表示し、更新し、ポリシー フラグメントを削除できます。
ポリシー フラグメントのプロパティを表示するには:
- API Management インスタンスの左側のナビゲーションで、[API] の下にある [ポリシー フラグメント] を選択します。 フラグメントの名前を選択します。
- [概要] ページで、ポリシー ドキュメントの参照を確認し、フラグメントを含むポリシー定義を確かめます。
- [プロパティ] ページで、ポリシー フラグメントの名前と説明を確認します。 名前を変更することはできません。
ポリシー フラグメントを編集するには:
- API Management インスタンスの左側のナビゲーションで、[API] の下にある [ポリシー フラグメント] を選択します。 フラグメントの名前を選択します。
- [ポリシー エディター] を選択します。
- フラグメント内のステートメントを更新してから、[適用] を選択します。
注意
更新は、フラグメントが含まれるすべてのポリシー定義に影響します。
ポリシー フラグメントを削除するには:
- API Management インスタンスの左側のナビゲーションで、[API] の下にある [ポリシー フラグメント] を選択します。 フラグメントの名前を選択します。
- フラグメントを含むポリシー定義に関するポリシー ドキュメントの参照を確認します。 フラグメントを削除するには、事前にすべてのポリシー定義からフラグメント参照を削除する必要があります。
- すべての参照が削除された後、[削除] を選択します。
関連するコンテンツ
ポリシーに対する処理の詳細については、次のトピックを参照してください。
- チュートリアル: API を変換および保護する
- ポリシーの設定または編集
- ポリシー ステートメントの完全な一覧に関するポリシー の参照
- ポリシー スニペットのリポジトリ
- Azure で Microsoft Copilot を使用してポリシーを作成する