次の方法で共有


API Management ポリシー定義でポリシー構成を再利用する

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

この記事では、Azure API Management ポリシー定義で ポリシー フラグメントを 作成して使用する方法について説明します。 ポリシー フラグメントは、1 つ以上の API Management ポリシー 構成を含む、一元的に管理された再利用可能な XML スニペットです。

ポリシー フラグメントは、ポリシーを一貫して構成し、XML コードを繰り返したり、再入力したりする必要なくポリシー定義を維持するのに役立ちます。

ポリシー フラグメント:

  • 1 つ以上のポリシー構成を含む有効な XML である必要があります。
  • 参照される ポリシーでサポートされている場合は、ポリシー式を含めることができます。
  • include-fragment ポリシーを使用してポリシー定義に as-is 挿入されます。

制限事項:

  • ポリシー フラグメントには、ポリシー セクション識別子 (<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 サービス] ページの API Management インスタンスを示すスクリーンショット。

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

  1. API Management インスタンスの左側のウィンドウで、[API] [ ポリシー フラグメント] を選択します。 [ ポリシー フラグメント ] ウィンドウで、[ + 作成] を選択します。

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

    名前の例: ForwardContext

  3. XML ポリシー フラグメント エディターで、<fragment>タグと </fragment> タグの間に 1 つ以上のポリシー XML 要素を入力するか貼り付けます。

    [新しいポリシー フラグメントの作成] ウィンドウを示すスクリーンショット。

    たとえば、次のフラグメントには、バックエンド サービスにコンテキスト情報を転送する 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. すべての参照が削除された後、[削除] を選択します。

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