---
schema_version: "1"
id: d60065ecb5b3e9e708e831586ee2720a642f7df9c35df80bb35ded7bd14ab8f8
title: 外部処理ポリシー
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/gateway/1.9/policies-included-external-processing.md
canonical_url: https://docs.mulesoft.com/jp/gateway/1.9/policies-included-external-processing
source_site: docs.mulesoft.com
content_type: documentation
content_hash: c87981dac1a4cca2218243c692bc40433ae0428297b3dc45da81d03595d0b760
description: MuleSoft Documentation Site
release: "1.9"
latest: false
---
# 外部処理ポリシー

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>ポリシー名</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">外部処理</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>Summary (概要)</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">追加処理を行うために、受信 HTTP 要求または送信 HTTP 応答要求を外部 gRPC サービスに送信します</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>カテゴリ</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">変換</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>使用可能な最小 Flex Gateway バージョン</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v1.6.0</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-middle"><p class="tableblock"><strong>返される状況コード</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">403 - IP は拒否されました</p></td>
</tr>
</tbody>
</table>

## [](#概要)概要

外部処理ポリシーでは、ヘッダー、トレーラー、本文、またはこの 3 つのいずれかの組み合わせを変更するために、受信 HTTP 要求または送信 HTTP 応答を外部 gRPC サービスに転送します。要求、応答、またはその両方を処理するようにこのポリシーを設定することもできます。

さらに、外部処理サービスでは最初の gRPC 要求が Flex Gateway によって外部処理サーバーに送信された後に HTTP 要求または応答の別の部分を要求できます。これにより、必要最小限の量のデータを送信できます。たとえば、Flex Gateway では最初に HTTP リクエストヘッダーのみを送信できます。その後、何らかの処理を行った後で、外部プロセッサーが Flex Gateway からの HTTP 要求の本文またはトレーラーを要求できます。

HTTP ヘッダー、トレーラー、本文について設定するパラメーターでは、最初に送信される内容のみが設定されます。外部処理サービスは、設定ないように関係なく、HTTP 要求または応答のすべての部分にアクセスできます。処理サービスがすべての受信 HTTP 要求または応答に必要なすべての情報を送信するようにパラメーターを設定します。たとえば、処理サービスにすべてのリクエストヘッダーが必要だが一部の要求の本文しか必要ない場合は、ヘッダーで確認できる情報に応じて、ヘッダーを送信するパラメーターのみを設定します。

外部処理ポリシーは、Envoy に対してネイティブな外部処理検索条件の拡張機能です。外部処理検索条件に付いての詳細は、 [「External Processing Filter (外部処理検索条件)」](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ext_proc/v3/ext_proc.proto)​を参照してください。すべての外部処理検索条件パラメーターが外部処理ポリシーで使用できるとは限りません。設定可能なパラメーターを確認するには、​[「ポリシーのパラメーターの設定」](#configuring-policy-parameters)​を参照してください。

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">他のポリシーで HTTP 要求または応答が変更される場合は、要求が処理サービスまたはアップストリームサービスに送信されるときにこれらの変更が存在している必要があるかどうかに応じて確実にポリシーを並び替えてください。ポリシーの並び替えについての詳細は、<a href="https://docs.mulesoft.com/jp/gateway/1.9/policies-reorder" class="xref page">ポリシーの順序付け</a>を参照してください。</td></tr></tbody></table>

## [](#ポリシーのパラメーターの設定)ポリシーのパラメーターの設定

### [](#local-mode)Flex Gateway のローカルモード

ローカルモードでは、宣言型の設定ファイルを使用してポリシーを API に適用します。以下のポリシー定義とパラメーターの表を参照してください。

```yaml
- policyRef:
    name: native-ext-proc-flex
  config:
    uri: <string> // REQUIRED
    messageTimeout: <integer> // OPTIONAL, default: 1000
    requestHeaderMode: <string> // OPTIONAL, default: "send"
    responseHeaderMode: <string> // OPTIONAL, default: "send"
    requestBodyMode: <string> // OPTIONAL, default: "none"
    responseBodyMode: <string> // OPTIONAL, default: "none"
    requestTrailerMode: <string> // OPTIONAL, default: "skip"
    responseTrailerMode: <string> // OPTIONAL, default: "skip"
    failureModeAllow: <boolean> // OPTIONAL, default: false
    maxMessageTimeout: <integer> // OPTIONAL, default: 0
    allowModeOverride: <boolean> // OPTIONAL, default: true
```

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">必須または省略可能</th>
<th class="tableblock halign-left valign-top">デフォルト値</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>uri</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>必須</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>なし</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>外部処理サーバー URI。gRPC 種別のサーバーでは、​<code>\h2://&lt;ext.authz.com&gt;:&lt;port&gt;</code>​ として URI を定義します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>messageTimeout</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>1000</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>処理サーバーのメッセージタイムアウト (ミリ秒)。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>maxMessageTimeout</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>0</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>処理サーバーが ​<code>messageTimeout</code>​ を上書きできる上限を指定します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>failureModeAllow</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>false</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>true</code>​ の場合、gRPC ストリームが早期に終了するか、開始できないと、要求の処理がエラーなしで続行されます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>allowModeOverride</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>true</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>処理サーバーがポリシー設定を上書きできるようにします。​<code>true</code>​ の場合、サーバーが ​<code>requestHeaderMode</code>​、​<code>responseHeaderMode</code>​、​<code>requestBodyMode</code>​、​<code>responseBodyMode</code>​、​<code>requestTrailerMode</code>​、​<code>responseTrailerMode</code>​ パラメーターの設定を上書きできます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>observabilityMode</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>false</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>true</code>​ の場合、設定されたヘッダー、本文、トレーラーが外部処理サーバーに送信され、Flex Gateway は処理サーバーからの応答を待ちません。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>requestHeaderMode</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>send</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>HTTP リクエストヘッダーが処理サービスに送信されるかどうか。サポートされている値は ​<code>send</code>​ と ​<code>skip</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>responseHeaderMode</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>send</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>HTTP レスポンスヘッダーが処理サービスに送信されるかどうか。サポートされている値は ​<code>send</code>​ と ​<code>skip</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>requestBodyMode</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>none</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>HTTP 要求の本文が送信されるモード。 サポートされている値は、​<code>none</code>​、​<code>streamed</code>​、​<code>buffered</code>​、​<code>bufferedPartial</code>​ です。​<code>none</code>​ を選択すると、リクエストボディが送信されません。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>responseBodyMode</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>none</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>HTTP 応答の本文が送信されるモード。 サポートされている値は、​<code>none</code>​、​<code>streamed</code>​、​<code>buffered</code>​、​<code>bufferedPartial</code>​ です。​<code>none</code>​ を選択すると、リクエストボディが送信されません。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>requestTrailerMode</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>skip</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>HTTP 要求のトレーラーヘッダーが処理サービスに送信されるかどうか。サポートされている値は ​<code>send</code>​ と ​<code>skip</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>responseTrailerMode</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>skip</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>HTTP 応答のトレーラーヘッダーが処理サービスに送信されるかどうか。サポートされている値は ​<code>send</code>​ と ​<code>skip</code>​ です。</p>
</div></div></td>
</tr>
</tbody>
</table>

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">値を空白のままにすると、パラメーターがデフォルト値を使用して設定されます。必須パラメーターにデフォルト値が設定されていない場合、パラメーターを設定する必要があります。</td></tr></tbody></table>

#### [](#リソースの設定例)リソースの設定例

次の設定では、リクエストヘッダー、トレーラー、本文が外部処理サーバーに送信されます。次の設定では、応答はどの部分も外部処理サーバーに送信されません。

```yaml
- policyRef:
    name: native-ext-proc-flex
  config:
    uri: h2://<ext.authz.com>:<port>
    messageTimeout: <integer> // OPTIONAL
    responseHeaderMode: skip
    requestBodyMode: streamed
    responseTrailerMode: skip
```

### [](#connected-mode)管理 Flex Gateway および Flex Gateway の接続モード

UI からポリシーを API インスタンスに適用するときに、以下のパラメーターが表示されます。

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>External processing server URI (外部処理サーバー URI)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>外部処理サーバー URI。gRPC 種別のサーバーでは、​<code>\h2://&lt;ext.authz.com&gt;:&lt;port&gt;</code>​ として URI を定義します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Message timeout (メッセージタイムアウト)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>処理サーバーのメッセージタイムアウト (ミリ秒)。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Max message timeout (最大メッセージタイムアウト)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>処理サーバーが ​<strong>[Message timeout (メッセージタイムアウト)]</strong>​ を上書きできる上限を指定します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Failure mode allow (障害モードの許可)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>true</code>​ の場合、gRPC ストリームが早期に終了するか、開始できないと、要求の処理がエラーなしで続行されます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Allow mode override (モードの上書きを許可)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>処理サーバーがポリシー設定を上書きできるようにします。​<code>true</code>​ の場合、サーバーは ​<strong>[Request header processing mode (リクエストヘッダーの処理モード)]</strong>​、​<strong>[Response header processing mode (レスポンスヘッダーの処理モード)]</strong>​、​<strong>[Request body processing mode (リクエストボディの処理モード)]</strong>​、​<strong>[Response body processing mode (レスポンスボディの処理モード)]</strong>​、​<strong>[Request trailer processing mode (リクエストトレーラーの処理モード)]</strong>​、​<strong>[Response trailer processing mode (レスポンストレーラーの処理モード)]</strong>​ パラメーターの設定を上書きできます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Observability mode (オブザーバビリティモード)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>有効にすると、設定されたヘッダー、本文、トレーラーが外部処理サーバーに送信され、Flex Gateway は処理サーバーからの応答を待機しません。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Request header processing mode (リクエストヘッダーの処理モード)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>リクエストヘッダーが処理サービスに送信されるかどうか。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Response header processing mode (レスポンスヘッダーの処理モード)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>レスポンスヘッダーが処理サービスに送信されるかどうか。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Request body processing mode (要求の本文の処理モード)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>要求の本文が送信されるモード。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Response body processing mode (応答の本文の処理モード)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>応答の本文が送信されるモード。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Request trailer processing mode (要求のトレーラーの処理モード)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>要求のトレーラーが処理サービスに送信されるかどうか。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Response trailer processing mode (応答のトレーラーの処理モード)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>応答のトレーラーが処理サービスに送信されるかどうか。</p>
</div></div></td>
</tr>
</tbody>
</table>

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">値を空白のままにすると、パラメーターがデフォルト値を使用して設定されます。必須パラメーターにデフォルト値が設定されていない場合、パラメーターを設定する必要があります。</td></tr></tbody></table>

## [](#ポリシーのしくみ)ポリシーのしくみ

次の図は、外部処理ポリシーを適用した場合の要求と応答のフローの順序を示しています。

![API インタラクションを示すフローチャート](/mulesoft/current/ja-jp/gateway/1.9/_images/ext-processing-policy.png)

1. クライアントが Flex Gateway に対する HTTP 要求を行います。
2. Flex Gateway が設定済みのクライアント HTTP 要求の最初の部分を外部処理サービスに転送します。​**\[Observability mode (オブザーバビリティモード)\]**​ が有効になっていると、次のステップはスキップされます。
3. Flex Gateway は変更されたクライアント HTTP 要求を待機します。​**\[Allow mode override (モードの上書きを許可)\]**​ が有効になっていると、外部処理サービスは要求の追加の部分を要求できます。
4. Flex Gateway はクライアント HTTP 要求をアップストリーム API サービスに送信し、HTTP 応答を待機します。
5. Flex Gateway が設定済みの HTTP 応答の最初の部分を外部処理サービスに転送します。​**\[Observability mode (オブザーバビリティモード)\]**​ が有効になっていると、次のステップはスキップされます。
6. Flex Gateway は変更された HTTP 応答を待機します。​**\[Allow mode override (モードの上書きを許可)\]**​ が有効になっていると、外部処理サービスは HTTP 応答の追加の部分を要求できます。
7. Flex Gateway が外部処理サービスからクライアントに変更済みの HTTP 応答を返します。

デフォルトでは、Flex Gateway が gRPC サービスへの接続を確立できない場合、または gRPC サービスでエラーが返される場合は、ポリシーが失敗します。接続やエラー状況に関係なく要求を転送するには、​**\[Failure mode allow (障害モードの許可)\]**​ パラメーターを有効にします。