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 インスタンスに移動します。

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

    [API Management サービス] を選択する

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

    API Management インスタンスを選択する

ポリシー フラグメントを作成する

  1. API Management インスタンスの左側のナビゲーションにある [API] で、[ポリシー フラグメント]>[+ 作成] を選択します。

  2. [新しいポリシー フラグメントの作成] ウィンドウで、ポリシー フラグメントの [名前] とオプションの [説明] を入力します。 名前は、API Management インスタンス内で一意である必要があります。

    名前の例: ForwardContext

  3. 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>
    
  4. [作成] を選択します フラグメントがポリシー フラグメントの一覧に追加されます。

ポリシー定義にフラグメントを含める

ポリシー定義にポリシー フラグメントを挿入するように include-fragment ポリシーを構成します。 ポリシー定義の詳細については、「ポリシーの設定または編集」をご覧ください。

  • フラグメント内の基になるポリシーでその使用がサポートされている限り、任意のスコープで任意のポリシー セクションにフラグメントを含めることができます。
  • ポリシー定義には複数のポリシー フラグメントを含めることができます。

たとえば、受信ポリシー セクションに ForwardContext という名前のポリシー フラグメントを挿入します。

<policies>
    <inbound>
        <include-fragment fragment-id="ForwardContext" />
        <base />
    </inbound>
[...]

ヒント

ポリシー定義に表示される含まれているフラグメントの内容を確認するには、ポリシー エディターで [有効なポリシーの計算] を選択します。

ポリシー フラグメントを管理する

ポリシー フラグメントを作成した後は、いつでもポリシー フラグメントのプロパティを表示し、更新し、ポリシー フラグメントを削除できます。

ポリシー フラグメントのプロパティを表示するには:

  1. API Management インスタンスの左側のナビゲーションで、[API] の下にある [ポリシー フラグメント] を選択します。 フラグメントの名前を選択します。
  2. [概要] ページで、ポリシー ドキュメントの参照を確認し、フラグメントを含むポリシー定義を確かめます。
  3. [プロパティ] ページで、ポリシー フラグメントの名前と説明を確認します。 名前を変更することはできません。

ポリシー フラグメントを編集するには:

  1. API Management インスタンスの左側のナビゲーションで、[API] の下にある [ポリシー フラグメント] を選択します。 フラグメントの名前を選択します。
  2. [ポリシー エディター] を選択します。
  3. フラグメント内のステートメントを更新してから、[適用] を選択します。

注意

更新は、フラグメントが含まれるすべてのポリシー定義に影響します。

ポリシー フラグメントを削除するには:

  1. API Management インスタンスの左側のナビゲーションで、[API] の下にある [ポリシー フラグメント] を選択します。 フラグメントの名前を選択します。
  2. フラグメントを含むポリシー定義に関するポリシー ドキュメントの参照を確認します。 フラグメントを削除するには、事前にすべてのポリシー定義からフラグメント参照を削除する必要があります。
  3. すべての参照が削除された後、[削除] を選択します。

ポリシーに対する処理の詳細については、次のトピックを参照してください。