- リソース: HttpRoute
- RouteRule
- RouteMatch
- HeaderMatch
- IntegerRange
- QueryParameterMatch
- RouteAction
- Destination
- HeaderModifier
- Redirect
- ResponseCode
- FaultInjectionPolicy
- Delay
- Abort
- URLRewrite
- RetryPolicy
- RequestMirrorPolicy
- CorsPolicy
- StatefulSessionAffinityPolicy
- HttpDirectResponse
- メソッド
リソース: HttpRoute
HttpRoute は、Mesh または Gateway リソースによる HTTP トラフィックのルーティング方法を定義するリソースです。
JSON 表現 |
---|
{
"name": string,
"selfLink": string,
"description": string,
"createTime": string,
"updateTime": string,
"hostnames": [
string
],
"meshes": [
string
],
"gateways": [
string
],
"labels": {
string: string,
...
},
"rules": [
{
object ( |
フィールド | |
---|---|
name |
必須。HttpRoute リソースの名前。パターン |
selfLink |
出力専用。このリソースのサーバー定義 URL |
description |
省略可。リソースのフリーテキストの説明。最大長は 1,024 文字です。 |
createTime |
出力専用。リソース作成時のタイムスタンプ。 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: |
updateTime |
出力専用。リソース更新時のタイムスタンプ。 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: |
hostnames[] |
必須。ホスト名は、リクエストを処理する HttpRoute を選択するために HTTP ホストヘッダーと照合する一連のホストを定義します。ホスト名は、RFC 1123 で定義されているネットワーク ホストの完全修飾ドメイン名です。ただし、IP は許可されません。- ホスト名の先頭にワイルドカード ラベル( ホスト名は、ネットワーク ホストの末尾にドットを付けない「正確」なドメイン名(例: なお、RFC1035 および RFC1123 に従い、ラベルを小文字の英数字と「-」で作成して、先頭と末尾を英数字にする必要があります。その他の句読点は使用できません。 メッシュまたはゲートウェイに関連付けられたルートには一意のホスト名が必要です。ホスト名が競合する複数のルートを接続しようとすると、構成は拒否されます。 たとえば、ホスト名の |
meshes[] |
省略可。メッシュは、この HttpRoute が接続されているメッシュのリストを、メッシュによって処理されるリクエストをルーティングするルーティング ルールの一つとして定義します。 各メッシュの参照は、パターン 接続するメッシュはのタイプは SIDECAR である必要があります |
gateways[] |
省略可。ゲートウェイは、この HttpRoute が接続されるゲートウェイのリストを定義します。これは、ゲートウェイによって処理されるリクエストをルーティングするルーティング ルールの一つです。 各ゲートウェイの参照は、パターン |
labels |
省略可。HttpRoute リソースに関連付けられたラベルタグのセット。
|
rules[] |
必須。トラフィックのルーティング方法と処理方法を定義するルール。ルールは、そのルールに対して指定された RouteMatch に基づいて順番に照合されます。 |
RouteRule
トラフィックをマッチングする方法と、トラフィックが一致した場合にトラフィックをルーティングする方法を指定します。
JSON 表現 |
---|
{ "matches": [ { object ( |
フィールド | |
---|---|
matches[] |
一致のリストは、受信 HTTP リクエストとルールを照合するために使用される条件を定義します。それぞれの一致は独立しています。つまり、一致のいずれかが満たされると、このルールが一致します。 一致フィールドが指定されていない場合、このルールは無条件にトラフィックをマッチングします。 デフォルト ルールを構成する場合、一致が指定されていないルールをルールリストの末尾に追加します。 |
action |
マッチングしたトラフィックのルーティング方法を定義する詳細なルール。 |
RouteMatch
RouteMatch は、リクエストの一致に使用する仕様を定義します。複数の一致タイプが設定されている場合、すべての種類の一致が満たされる場合にこの RouteMatch が一致します。
JSON 表現 |
---|
{ "ignoreCase": boolean, "headers": [ { object ( |
フィールド | |
---|---|
ignoreCase |
prefixMatch と fullPathMatch の一致で大文字と小文字を区別するかどうかを指定します。デフォルト値は false です。 |
headers[] |
照合する HTTP リクエスト ヘッダーのリストを指定します。指定されたすべてのヘッダーが一致する必要があります。 |
queryParameters[] |
照合するクエリ パラメータのリストを指定します。すべてのクエリ パラメータが一致する必要があります。 |
共用体フィールド
|
|
fullPathMatch |
HTTP リクエストパスの値は、この値と完全に一致する必要があります。 fullPathMatch、prefixMatch、regexMatch のいずれか 1 つだけを使用する必要があります。 |
prefixMatch |
HTTP リクエストパスの値は、指定された prefixMatch で始まる必要があります。prefixMatch は / で始まる必要があります。 fullPathMatch、prefixMatch、regexMatch のいずれか 1 つだけを使用する必要があります。 |
regexMatch |
HTTP リクエストパスの値は、元の URL で指定されたクエリ パラメータとアンカーを削除した後、regexMatch で指定された正規表現を満たす必要があります。正規表現の文法については、https://github.com/google/re2/wiki/Syntax をご覧ください。 fullPathMatch、prefixMatch、regexMatch のいずれか 1 つだけを使用する必要があります。 |
HeaderMatch
HTTP リクエスト ヘッダーに基づいてルートルールを選択する方法を指定します。
JSON 表現 |
---|
{ "header": string, "invertMatch": boolean, // Union field |
フィールド | |
---|---|
header |
照合する HTTP ヘッダーの名前。 |
invertMatch |
指定すると、一致結果はチェック前に反転されます。デフォルト値は false に設定されています。 |
共用体フィールド
|
|
exactMatch |
ヘッダーの値は、exactMatch のコンテンツと完全に一致している必要があります。 |
regexMatch |
ヘッダーの値は、regexMatch で指定された正規表現と一致する必要があります。正規表現の文法については、https://github.com/google/re2/wiki/Syntax をご覧ください。 |
prefixMatch |
ヘッダーの値は、prefixMatch の内容で始まる必要があります。 |
presentMatch |
headerName を含むヘッダーが存在する必要があります。ヘッダーに値があるかどうかにかかわらず、照合が行われます。 |
suffixMatch |
ヘッダーの値は、suffixMatch の内容で終わる必要があります。 |
rangeMatch |
指定すると、リクエスト ヘッダー値が範囲内にある場合にルールが一致します。 |
IntegerRange
整数値の範囲を表します。
JSON 表現 |
---|
{ "start": integer, "end": integer } |
フィールド | |
---|---|
start |
範囲の開始(端を含む) |
end |
範囲の終了(端を含まない) |
QueryParameterMatch
リクエストのクエリ パラメータに一致する仕様。
JSON 表現 |
---|
{ "queryParameter": string, // Union field |
フィールド | |
---|---|
queryParameter |
一致するクエリ パラメータの名前。 |
共用体フィールド
|
|
exactMatch |
クエリ パラメータの値は、exactMatch の内容と完全に一致する必要があります。 exactlyMatch、regexMatch、presentationMatch のいずれか 1 つだけを設定する必要があります。 |
regexMatch |
クエリ パラメータの値は、regexMatch で指定された正規表現と一致する必要があります。正規表現の文法については、https://github.com/google/re2/wiki/Syntax をご覧ください。 exactlyMatch、regexMatch、presentationMatch のいずれか 1 つだけを設定する必要があります。 |
presentMatch |
パラメータに値があるかどうかに関係なく、リクエストにクエリ パラメータが含まれている場合に、QueryParameterMatcher が一致することを指定します。 exactlyMatch、regexMatch、presentationMatch のいずれか 1 つだけを設定する必要があります。 |
RouteAction
トラフィックのルーティングと関連ポリシーの適用のための仕様。
JSON 表現 |
---|
{ "destinations": [ { object ( |
フィールド | |
---|---|
destinations[] |
トラフィックの転送先。 |
redirect |
設定されている場合、リクエストはこのフィールドで構成されているように転送されます。 |
faultInjectionPolicy |
バックエンド サービスの障害に対するクライアントの復元性をテストするために、トラフィックに導入されたフォールト インジェクションの仕様。フォールト インジェクションの一環として、クライアントがバックエンド サービスにリクエストを送信する際、リクエストをバックエンド サービスに送信する前に、一定の割合のリクエストに遅延が生じる可能性があります。同様に、クライアントからのリクエストも一定の割合で中止される可能性があります。 timeout と retryPolicy は、faultInjectionPolicy で構成されているクライアントで無視されます |
requestHeaderModifier |
リクエストを宛先に配信する前に、一致するリクエストのヘッダーを変更するための仕様。HeaderModifiers が宛先と RouteAction の両方に設定されている場合、マージされます。両者の間の競合は構成上で解決されません。 |
responseHeaderModifier |
クライアントにレスポンスを返す前にレスポンスのヘッダーを変更するための仕様。HeaderModifiers が宛先と RouteAction の両方に設定されている場合、マージされます。両者の間の競合は構成上で解決されません。 |
urlRewrite |
リクエストを宛先に転送する前の書き換え URL の仕様。 |
timeout |
選択したルートのタイムアウトを指定します。リクエストが完全に処理されてから(つまり、ストリームの終了時点)、レスポンスが完全に処理されるまでのタイムアウトが計算されます。タイムアウトにはすべての再試行が含まれます。
|
retryPolicy |
このルートに関連付けられた再試行ポリシーを指定します。 |
requestMirrorPolicy |
ルートの宛先に対するリクエストを、別のミラーリング対象の宛先にシャドーイングする方法に関するポリシーを指定します。プロキシは、シャドウの宛先の応答を待たずにレスポンスを返します。シャドウ サービスにトラフィックを送信する前に、host/authority ヘッダーの末尾に -Shadow が付けられます。 |
corsPolicy |
クライアント側のクロスオリジン リクエストを許可するための仕様。 |
statefulSessionAffinity |
省略可。Cookie ベースのステートフル セッション アフィニティを指定します。 |
directResponse |
省略可。リクエストに関係なく返される静的 HTTP レスポンス オブジェクト。 |
idleTimeout |
省略可。選択したルートのタイムアウトを指定します。アイドル タイムアウトは、アップストリーム接続とダウンストリーム接続のいずれにおいても送受信されるバイトがない期間として定義されます。設定しない場合、デフォルトのアイドル タイムアウトは 1 時間です。0 秒に設定すると、タイムアウトは無効になります。
|
目的地
リクエストのルーティング先となる宛先の仕様。
JSON 表現 |
---|
{ "serviceName": string, "weight": integer, "requestHeaderModifier": { object ( |
フィールド | |
---|---|
serviceName |
トラフィックのルーティング先となる BackendService の URL。 |
weight |
serviceName フィールドで参照されるバックエンドに転送されるリクエストの割合を指定します。これは、- weight/Sum(この宛先リストの重み)として計算されます。ゼロ以外の値の場合、実装がサポートする精度によりますが、ここで定義された正確な割合からのイプシロンが存在する可能性があります。 serviceName が 1 つだけ指定されていて、その重みが 0 より大きい場合、トラフィックの 100% がそのバックエンドに転送されます。 いずれかのサービス名に重みが指定される場合、すべてのサービス名に重みを指定する必要があります。 すべてのサービスに重み付けを指定しない場合は、トラフィックがすべてのサービスに均等に分散されます。 |
requestHeaderModifier |
省略可。リクエストを宛先に配信する前に、一致するリクエストのヘッダーを変更するための仕様。HeaderModifiers が宛先と RouteAction の両方に設定されている場合、マージされます。両者の間の競合は構成上で解決されません。 |
responseHeaderModifier |
省略可。クライアントにレスポンスを返す前にレスポンスのヘッダーを変更するための仕様。HeaderModifiers が宛先と RouteAction の両方に設定されている場合、マージされます。両者の間の競合は構成上で解決されません。 |
HeaderModifier
HTTP リクエストと HTTP レスポンス内の HTTP ヘッダーを変更するための仕様。
JSON 表現 |
---|
{ "set": { string: string, ... }, "add": { string: string, ... }, "remove": [ string ] } |
フィールド | |
---|---|
set |
指定されたマップでヘッダーを完全に上書きするか置き換えます。ここで、key はヘッダーの名前、value はヘッダーの値です。
|
add |
指定されたマップでヘッダーを追加します。ここで、key はヘッダーの名前、value はヘッダーの値です。
|
remove[] |
リストで指定されたヘッダー(ヘッダー名での一致)を削除します。 |
リダイレクト
トラフィックのリダイレクトの仕様。
JSON 表現 |
---|
{
"hostRedirect": string,
"pathRedirect": string,
"prefixRewrite": string,
"responseCode": enum ( |
フィールド | |
---|---|
hostRedirect |
リクエストで指定されたパスではなく、リダイレクト レスポンスで使用されるホストです。 |
pathRedirect |
リクエストで指定されたパスではなく、リダイレクト レスポンスで使用されるパスです。pathRedirect を prefixRedirect と一緒に指定することはできません。いずれか 1 つを指定するか、またはどちらも指定しません。どちらも指定されていない場合は、元のリクエストのパスがリダイレクトに使用されます。 |
prefixRewrite |
リダイレクト中に、一致した接頭辞(またはパス)をこの値と交換する必要があることを示します。このオプションを使用すると、リクエストに基づいて URL を動的に作成できます。 |
responseCode |
リダイレクトに使用する HTTP ステータス コード。 |
httpsRedirect |
true に設定すると、リダイレクトされるリクエストの URL スキームが https に設定されます。false に設定した場合、リダイレクトされたリクエストの URL スキームはリクエストのものと同じになります。 デフォルトは false に設定されています。 |
stripQuery |
true に設定すると、リクエストがリダイレクトされる前に、元の URL に付随するクエリ部分が削除されます。false に設定すると、元の URL のクエリ部分が保持されます。 デフォルトは false に設定されています。 |
portRedirect |
リクエストで指定されるポートではなく、リダイレクトされるリクエストで使用されるポート。 |
ResponseCode
サポートされている HTTP レスポンス コード
列挙型 | |
---|---|
RESPONSE_CODE_UNSPECIFIED |
デフォルト値 |
MOVED_PERMANENTLY_DEFAULT |
301 に対応しています。 |
FOUND |
302 に対応しています。 |
SEE_OTHER |
303 に対応しています。 |
TEMPORARY_REDIRECT |
307 に対応しています。この場合、リクエスト メソッドは保持されます。 |
PERMANENT_REDIRECT |
308 に対応しています。この場合、リクエスト メソッドは保持されます。 |
FaultInjectionPolicy
宛先サービスの障害に対するクライアントの復元性をテストするために、トラフィックに導入されたフォールト インジェクションの仕様。フォールト インジェクションの一環として、クライアントがリンク先にリクエストを送信する際、リクエストをリンク先サービスに送信する前に、一定の割合のリクエストに遅延が生じる可能性があります。同様に、リクエストがクライアント プロキシにより一定の割合で中止される可能性があります。
JSON 表現 |
---|
{ "delay": { object ( |
フィールド | |
---|---|
delay |
クライアント リクエストに遅延を挿入するための仕様。 |
abort |
クライアント リクエストを中止するための仕様。 |
Delay
宛先に送信される前にクライアント リクエストをフォールト インジェクションの一環として遅延させる方法の仕様。
JSON 表現 |
---|
{ "fixedDelay": string, "percentage": integer } |
フィールド | |
---|---|
fixedDelay |
リクエストを転送する前に固定の遅延を指定します。
|
percentage |
遅延を挿入するトラフィックの割合。 値は [0, 100] の範囲にする必要があります。 |
中止
宛先に送信される前にクライアント リクエストをフォールト インジェクションの一環として中止する方法の仕様。
JSON 表現 |
---|
{ "httpStatus": integer, "percentage": integer } |
フィールド | |
---|---|
httpStatus |
リクエストの中止に使用される HTTP ステータス コード。 値は 200 以上 599 以下である必要があります。 |
percentage |
中止されるトラフィックの割合。 値は [0, 100] の範囲にする必要があります。 |
URLRewrite
リクエストを宛先に転送する前に、リクエストの URL を変更するための仕様。
JSON 表現 |
---|
{ "pathPrefixRewrite": string, "hostRewrite": string } |
フィールド | |
---|---|
pathPrefixRewrite |
リクエストを選択した宛先に転送する前に、リクエストパスの一致する部分がこの値に置き換えられます。 |
hostRewrite |
選択した宛先にリクエストを転送する前に、リクエストのホストヘッダーはこの値に置き換えられます。 |
RetryPolicy
再試行の仕様。
JSON 表現 |
---|
{ "retryConditions": [ string ], "numRetries": integer, "perTryTimeout": string } |
フィールド | |
---|---|
retryConditions[] |
この再試行ポリシーが適用されるときの条件を 1 つ以上指定します。Valid values are: 5xx: プロキシは、宛先サービスが 5xx レスポンス コードで応答した場合、宛先サービスがまったく応答しない場合に再試行します(切断、リセット、読み取りタイムアウト、接続エラー、拒否されたストリームなど)。 gateway-error: 5xx に似ていますが、レスポンス コード 502、503、504 にのみ適用されます。 reset: 宛先サービスがまったく応答しない場合(切断/リセット/読み取りタイムアウト)に、プロキシが再試行します connect-failure: プロキシは、接続タイムアウトなどにより宛先への接続に失敗すると再試行します。 retriable-4xx: 再試行可能な 4xx レスポンス コードの場合、プロキシは再試行します。現在、再試行可能なエラーとしてサポートされているのは 409 のみです。 refused-stream: 宛先が REFUSED_STREAM エラーコードでストリームをリセットすると、プロキシが再試行します。このリセットタイプは、再試行しても安全であることを示します。 |
numRetries |
許可される再試行回数を指定します。0 より大きい値である必要があります。指定しない場合、デフォルトで 1 になります。 |
perTryTimeout |
再試行ごとのタイムアウトをゼロ以外で指定します。
|
RequestMirrorPolicy
ミラーリング対象の別の宛先サービスにリクエストをシャドーイングする方法に関するポリシーを指定します。プロキシはシャドウ サービスからのレスポンスを待ちません。シャドウ サービスにトラフィックを送信する前に、host/authority ヘッダーの末尾に -Shadow が付けられます。
JSON 表現 |
---|
{
"destination": {
object ( |
フィールド | |
---|---|
destination |
リクエストがミラーリングされる宛先。宛先のウェイトは無視されます。 |
mirrorPercent |
省略可。目的の宛先にミラーリングされるリクエストの割合。 |
CorsPolicy
クライアント側のクロスオリジン リクエストを許可するための仕様。
JSON 表現 |
---|
{ "allowOrigins": [ string ], "allowOriginRegexes": [ string ], "allowMethods": [ string ], "allowHeaders": [ string ], "exposeHeaders": [ string ], "maxAge": string, "allowCredentials": boolean, "disabled": boolean } |
フィールド | |
---|---|
allowOrigins[] |
CORS リクエストを行えるよう許可するオリジンのリストを指定します。オリジンは、allowOrigins 内の項目または allowOriginRegexes 内の項目のいずれかに一致する場合に許可されます。 |
allowOriginRegexes[] |
許可されたオリジンと一致する正規表現パターンを指定します。正規表現の文法については、https://github.com/google/re2/wiki/Syntax をご覧ください。 |
allowMethods[] |
Access-Control-Allow-Methods ヘッダーの内容を指定します。 |
allowHeaders[] |
Access-Control-Allow-Headers ヘッダーの内容を指定します。 |
exposeHeaders[] |
Access-Control-Expose-Headers ヘッダーの内容を指定します。 |
maxAge |
プリフライト リクエストの結果をキャッシュに保存できる期間を秒単位で指定します。これは Access-Control-Max-Age ヘッダーに変換されます。 |
allowCredentials |
プリフライト リクエストに応じて、これを true に設定すると、実際のリクエストにユーザー認証情報が含まれている可能性があることが示されます。これが Access-Control-Allow-Credentials ヘッダーに変換されます。 デフォルト値は false です。 |
disabled |
true の場合、CORS ポリシーは無効になります。デフォルト値は false で、CORS ポリシーが有効であることを示します。 |
StatefulSessionAffinityPolicy
Cookie ベースのステートフル セッション アフィニティの仕様。日付プレーンは「GSSA」という名前の「セッション Cookie」を提供し、特定の宛先ホストをエンコードします。その Cookie を含む各リクエストは、宛先ホストが残っていて正常に機能している限り、そのホストに転送されます。
gRPC プロキシレス メッシュ ライブラリまたはサイドカー プロキシがセッション Cookie を管理しますが、セッション内の各 RPC から次の RPC への Cookie のコピーは、クライアント アプリケーション コードが担います。
JSON 表現 |
---|
{ "cookieTtl": string } |
フィールド | |
---|---|
cookieTtl |
必須。データプレーンで生成された Set-Cookie ヘッダーの Cookie TTL 値。Cookie の有効期間は、1 秒以上 86,400 秒(24 時間)以下の値に設定できます。
|
HttpDirectResponse
返される静的 HTTP レスポンス オブジェクト。
JSON 表現 |
---|
{ "status": integer, // Union field |
フィールド | |
---|---|
status |
必須。HTTP レスポンスの一部として返されるステータス。正の整数で指定する必要があります。 |
共用体フィールド HttpBody 。HTTP レスポンスの一部として返される本文。HttpBody は次のいずれかになります。 |
|
stringBody |
省略可。文字列としてのレスポンス本文。本文の最大文字数は 1,024 文字です。 |
bytesBody |
省略可。バイトとしてのレスポンス本文。本文の最大サイズは 4,096 B です。 Base64 でエンコードされた文字列。 |
メソッド |
|
---|---|
|
指定されたプロジェクトとロケーションで新しい HttpRoute を作成します。 |
|
1 つの HttpRoute を削除します。 |
|
1 つの HttpRoute の詳細を取得します。 |
|
リソースのアクセス制御ポリシーを取得します。 |
|
指定されたプロジェクトとロケーションの HttpRoute を一覧表示します。 |
|
単一の HttpRoute のパラメータを更新します。 |
|
指定したリソースにアクセス制御ポリシーを設定します。 |
|
指定されたリソースに対して呼び出し元が持っている権限を返します。 |