このページの内容は Apigee と Apigee ハイブリッドに該当します。
Apigee Edge のドキュメントを表示する。
このトピックでは、トランスポート プロパティについて説明します。トランスポート プロパティは、メッセージングと接続動作を制御するために TargetEndpoint
構成と ProxyEndpoint
構成で設定できます。TargetEndpoint
と ProxyEndpoint
の構成オプションの詳細については、API プロキシ構成リファレンスをご覧ください。
TargetEndpoint トランスポート プロパティ
TargetEndpoint
構成の HTTPTargetConnection
要素では、一連の HTTP トランスポート プロパティを定義します。これらのプロパティは、トランスポート レベルの構成を設定するのに使用できます。
次の構成例に示すように、プロパティは TargetEndpoint
HTTPTargetConnection
要素で設定されます。
<TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <Properties> <Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property> <Property name="retain.queryparams">apikey</Property> </Properties> </HTTPTargetConnection> </TargetEndpoint>
TargetEndpoint トランスポート プロパティの仕様
プロパティ名 | デフォルト値 | 説明 |
---|---|---|
allow.post.without.content.length |
false | 本文にコンテンツのない POST リクエストを送信できます。 |
allow.put.without.content.length |
false | 本文にコンテンツのない PUT リクエストを送信できます。 |
allow.tls.session.resumption |
はい | true (デフォルト)の場合、クライアントはターゲットに新しい接続を行うときに TLS セッションを再利用します。TLS セッションを再利用しない場合は false に設定します。一般的に、セッションの再利用とは接続時間が短くなることを意味しますが、一部のターゲットではセッションの再利用がサポートされていないか、難しい場合があります。 |
keepalive.timeout.millis |
60000 | 接続プール内のターゲット接続の接続アイドル タイムアウト。プール内の接続が指定した上限時間を超えてアイドル状態にあると、その接続は閉じられます。 |
connect.timeout.millis |
3000 |
ターゲット接続のタイムアウト。接続タイムアウトが発生すると、Apigee により HTTP |
ignore.allow.header.for.405 |
true |
405 ステータス コードをクライアントに返すことができます。フラグを有効にすると、Apigee は 502 ではなく 405 のステータス コードを返します。 |
io.timeout.millis |
55000 |
指定したミリ秒間に読み取るデータが存在しない場合、または指定したミリ秒間にソケットでデータ書き込みの準備ができていない場合に、トランザクションはタイムアウトとして処理されます。
|
supports.http11 |
はい | これが true のときにクライアントが 1.1 のリクエストを送信すると、ターゲットにも 1.1 のリクエストが送信されます。それ以外の場合は 1.0 のリクエストがターゲットに送信されます。 |
use.proxy |
true |
API プロキシの転送プロキシを構成するで説明されているとおり、Apigee ハイブリッド オーバーライド ファイルに
|
use.proxy.tunneling |
true |
これを true に設定し、API プロキシの転送プロキシを構成するで説明されているように、プロキシ構成が指定された Apigee ハイブリッド オーバーライド ファイルである場合、指定したトンネルを使用するようにターゲット接続が設定されます。ターゲットが TLS / SSL を使用する場合、このプロパティは無視され、メッセージは常にトンネルを使用して送信されます。 |
request.streaming.enabled |
false |
デフォルト( |
response.streaming.enabled |
false |
デフォルト(false)では、HTTP レスポンスのペイロードがバッファに読み込まれ、ペイロード上で動作可能なポリシーが予期どおりに動作します。ペイロードがバッファのサイズ(Apigee では 10 MB)より大きい場合は、この属性を に設定できます。true の場合、HTTP レスポンスのペイロードはバッファに読み込まれません。そのまま |
success.codes |
該当なし |
デフォルトでは、Apigee は HTTP コード このプロパティを設定すると、デフォルト値が上書きされます。このため、デフォルトの成功コードのリストに HTTP コード
HTTP コード
HTTP コード |
compression.algorithm |
該当なし |
デフォルトでは、Apigee は受信したメッセージに設定された圧縮タイプ(gzip、deflate、なし)を使用します。たとえば gzip 圧縮を使用してクライアントからリクエストを受信した場合、Apigee も gzip 圧縮を使用してリクエストをターゲットに転送します。ターゲットから受信したレスポンスで deflate が使用されている場合は、Apigee も deflate を使用してクライアントにレスポンスを転送します。サポートされている値は次のとおりです。
|
request.retain.headers. |
はい | デフォルトでは、Apigee は送信メッセージ上のすべての HTTP ヘッダーを常に保持します。true に設定すると、受信リクエストに含まれるすべての HTTP ヘッダーが送信リクエストに設定されます。 |
request.retain.headers |
該当なし | ターゲット サービスへの送信リクエストに設定する必要があるリクエストからの特定の HTTP ヘッダーを定義します。たとえば、User-Agent ヘッダーをパススルーするには、request.retain.headers の値を User-Agent に設定します。複数の HTTP ヘッダーは、User-Agent,Referer,Accept-Language のようにカンマ区切りのリストとして指定します。このプロパティは request.retain.headers.enabled をオーバーライドします。request.retain.headers.enabled が false に設定されている場合でも、request.retain.headers プロパティで指定されたヘッダーは送信メッセージに設定されます。 |
response.retain.headers. |
はい | デフォルトでは、Apigee は送信メッセージ上のすべての HTTP ヘッダーを常に保持します。true に設定すると、ターゲット サービスからの受信レスポンスに含まれるすべての HTTP ヘッダーが、ProxyEndpoint に渡される前に送信レスポンス上に設定されます。 |
response.retain.headers |
該当なし | ProxyEndpoint に渡される前に送信レスポンスに設定する必要があるレスポンスからの特定の HTTP ヘッダーを定義します。たとえば、Expires ヘッダーをパススルーするには、response.retain.headers の値を Expires に設定します。複数の HTTP ヘッダーは、Expires,Set-Cookie のようにカンマ区切りのリストとして指定します。このプロパティは response.retain.headers.enabled をオーバーライドします。response.retain.headers.enabled が false に設定されている場合でも、response.retain.headers プロパティで指定されたヘッダーは送信メッセージに設定されます。 |
retain.queryparams. |
はい | デフォルトでは、Apigee は送信リクエスト上のすべてのクエリ パラメータを常に保持します。true に設定すると、受信リクエストに含まれるすべてのクエリ パラメータが、ターゲット サービスへの送信リクエストに設定されます。 |
retain.queryparams |
該当なし | 送信リクエストに設定する特定のクエリ パラメータを定義します。たとえば、リクエスト メッセージのクエリ パラメータ apikey を含めるには、retain.queryparams を apikey に設定します。複数のクエリ パラメータは、apikey,environment のようにカンマ区切りのリストとして指定します。このプロパティは、retain.queryparams.enabled をオーバーライドします。 |
ProxyEndpoint トランスポート プロパティ
ProxyEndpoint
HTTPTargetConnection
要素は、HTTP トランスポート プロパティのセットを定義します。これらのプロパティは、トランスポート レベルの構成の設定に使用できます。
プロパティは、次の構成例に示すように ProxyEndpoint
HTTPProxyConnection
要素で設定されます。
<ProxyEndpoint name="default"> <HTTPProxyConnection> <BasePath>/v1/weather</BasePath> <Properties> <Property name="request.streaming.enabled">true</Property> </Properties> </HTTPProxyConnection> </ProxyEndpoint>
リクエスト ヘッダー
受信した HTTP リクエストには、クライアントから送信された HTTP ヘッダーが含まれています。
名前が X-Apigee-*
パターンに一致するヘッダーは、クライアントが送信した受信リクエストから削除されます。この名前のパターンは Apigee 用に予約されています。
ProxyEndpoint トランスポート プロパティの仕様
プロパティ名 | デフォルト値 | 説明 |
---|---|---|
X-Forwarded-For |
false | true に設定すると、仮想ホストの IP アドレスが HTTP の X-Forwarded-For ヘッダーの値として送信リクエストに追加されます。 |
request.streaming. |
false |
デフォルト(false )では、HTTP リクエストのペイロードがバッファに読み込まれ、ペイロード上で動作可能なポリシーが予期どおりに機能します。ペイロードがバッファのサイズ(Apigee では 10 MB)より大きい場合は、この属性を true に設定できます。true の場合、HTTP リクエストのペイロードはバッファに読み込まれません。そのまま TargetEndpoint のリクエスト フローにストリーミングされます。これに該当する場合、ProxyEndpoint リクエスト フローのペイロードで動作するポリシーのすべてがバイパスされます。リクエストとレスポンスのストリーミングもご覧ください。 |
response.streaming. |
false |
デフォルト(false)では、HTTP レスポンスのペイロードがバッファに読み込まれ、ペイロード上で動作可能なポリシーが予期どおりに動作します。ペイロードがバッファのサイズ(Apigee では 10 MB)より大きい場合は、この属性を true に設定できます。true の場合、HTTP レスポンスのペイロードはバッファに読み込まれません。そのままクライアントにストリーミングされます。これに該当する場合、ProxyEndpoint レスポンス フローのペイロードで動作するポリシーのすべてがバイパスされます。リクエストとレスポンスのストリーミングもご覧ください。 |
compression.algorithm |
該当なし |
デフォルトでは、Apigee は受信したメッセージに設定された圧縮タイプ(gzip、deflate、なし)を使用します。たとえば、クライアントが gzip 圧縮を使用するリクエストを送信すると、Apigee は gzip 圧縮を使用してターゲットにリクエストを転送します。
|
api.timeout |
該当なし |
個々の API プロキシにタイムアウトを構成する(ミリ秒単位) ストリーミングが有効にされている API プロキシも含め、指定した時間が経過すると
たとえば、180,000 ミリ秒(3 分)後にタイムアウトするようにプロキシを構成するには、次のプロパティを <Property name="api.timeout">180000</Property> このプロパティを変数で設定することはできません。 |
HTTPHeader.allowDuplicates |
該当なし | 特定のヘッダーに対する重複したヘッダーを許可する場合は、この設定を使用します。 <HTTPProxyConnection> <Properties> <Property name="HTTPHeader.allowDuplicates">Content-Type,Authorization</Property> </Properties> </HTTPProxyConnection> |
HTTPHeader.multiValued |
該当なし | 特定のヘッダーに対する重複したヘッダーを許可する場合は、この設定を使用します。 <HTTPProxyConnection> <Properties> <Property name="HTTPHeader.multiValued">Content-Type,Authorization</Property> </Properties> </HTTPProxyConnection> |
io.timeout.millis および api.timeout の設定
io.timeout.millis
と api.timeout
のオペレーションは関連しています。API プロキシに対するすべてのリクエストでの動作は次のようになります。
- Ingress(内部ロードバランサ)は、タイムアウト値を Message Processor に送信します。タイムアウトはデフォルトで 300 秒に設定されます。この値は構成できません。
- Message Processor では、
api.timeout
が設定されます。api.timeout
がプロキシレベルで設定されていない場合は、Ingress によって設定されたタイムアウトを使用します。api.timeout
がプロキシレベルで設定されている場合は、Message Processor で Ingress タイムアウトまたはapi.timeout
の値よりも小さい値に設定します。
-
api.timeout
の値によって、API リクエストからレスポンスまでの API プロキシの最大実行時間が指定されます。Message Processor は API プロキシ内で各ポリシーが実行された後、またはターゲット エンドポイントにリクエストを送信する前に、
api.timeout
の値からリクエスト開始時以降の経過時間を差し引いて残り時間を計算します。算出された値が 0 未満の場合、リクエストを処理するための最大許容時間が満了しているため、Message Processor によって
504 Gateway Timeout
が返されます。 -
io.timeout.millis
の値によって、ターゲット エンドポイントが応答するまでの最大許容時間が指定されます。ターゲット エンドポイントに接続する前に、Message Processor によって
api.timeout
の値からリクエストの開始からの経過時間を差し引いた値とio.timeout.millis
の値のどちらが小さいかを判別します。次に、io.timeout.millis
がその値に設定されます。HTTP リクエストの書き込み中または HTTP レスポンスの読み取り中にタイムアウトが発生した場合、
504 Gateway Timeout
が返されます。