ゲートウェイルート - AWS App Mesh

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ゲートウェイルート

ゲートウェイルートは、仮想ゲートウェイにアタッチされ、トラフィックを既存の仮想サービスにルーティングします。ルートは、リクエストと一致すると、トラフィックをターゲットの仮想サービスに分散できます。このトピックは、サービスメッシュ内のゲートウェイルートの操作に役立ちます。

ゲートウェイルートの作成

AWS Management Console
AWS Management Console を使用して ゲートウェイルートを作成するには
  1. App Mesh コンソールを https://console.aws.amazon.com/appmesh/ で開きます。

  2. ゲートウェイルートを作成するメッシュを選択します。自分が所有しているメッシュや、共有されているメッシュがすべて一覧表示されます。

  3. 左側のナビゲーションで [仮想ルーター] を選択します。

  4. 新しいゲートウェイルートを関連付ける仮想ゲートウェイを選択します。何も表示されていない場合は、最初に仮想ゲートウェイを作成する必要があります。アカウントがリソース所有者として一覧されている仮想ゲートウェイのゲートウェイルートのみを作成できます。

  5. [ゲートウェイルート] テーブルで、[ゲートウェイルートを作成] を選択します。

  6. [ゲートウェイルート名] に、ゲートウェイルートに使用する名前を指定します。

  7. [ゲートウェイルートタイプ] で、httphttp2grpc のいずれかを選択します。

  8. 既存の仮想サービス名を選択します。何も表示されない場合は、最初に仮想サービスを作成する必要があります。

  9. [仮想サービスプロバイダーポート] のターゲットに対応するポートを選択します。仮想サービスプロバイダーポートは、選択した仮想サービスのプロバイダー (ルーターまたはノード) に複数のリスナーが含まれる場合に必要です。

  10. (オプション) [優先度] で、このゲートウェイルートの優先度を指定します。

  11. [一致] で、次を指定します。

    • http/http2 を選択したタイプは、次のとおりです。

      • (オプション) [メソッド] - 着信した http/http2 リクエストと照合するメソッドヘッダーを指定します。

      • (オプション) [ポートの一致] - 受信トラフィックのポートを照合します。この仮想ルーターに複数のリスナーがある場合は、ポートを一致させる必要があります

      • (オプション) [完全一致/サフィックスのホスト名] - ターゲット仮想サービスにルーティングするために、着信リクエストで一致する必要があるホスト名を指定します。

      • (オプション) [プレフィックス/完全一致/正規表現パス] - URL のパスを照合する方法です。

        • [プレフィックスの一致] - デフォルトでは、ゲートウェイルートによって一致したリクエストがターゲット仮想サービスの名前に書き換えられ、一致したプレフィックスが / に書き換えられます。仮想サービスの設定方法によっては、仮想ルーターを使用して、特定のプレフィクスまたはヘッダーに基づいて、異なる仮想ノードにリクエストをルーティングできます。

          重要
          • /aws-appmesh* または /aws-app-mesh* のどちらも、プレフィックスの一致に対して指定できません これらのプレフィックスは、将来の App Mesh 内部で使用するために予約されています。

          • 複数のゲートウェイルートが定義されている場合、リクエストは最長のプレフィックスを持つルートと一致されます。例えば、2 つのゲートウェイルートが存在し、一方が /chapter のプレフィックスを持ち、一方が / のプレフィックスを持つ場合、www.example.com/chapter/ へのリクエストは /chapter のプレフィックスを持つゲートウェイルートに一致されることになります。

          注記

          有効にするとパス/プレフィックスベースの一致を有効化すると、App Mesh は、パスの正規化 (normalizemerge_slashes) を有効化して、パス混乱の脆弱性を最小限に抑えることができます。

          パス混乱の脆弱性は、リクエストに参加している当事者が異なるパス表現を使用する場合に発生します。

        • [完全一致] - exact パラメータは、ルートの部分一致を無効にし、パスが現在の URL と完全一致である場合にのみルートを返すようにします。

        • [正規表現一致] - 複数の URL がウェブサイト上の 1 つのページを実際に識別する可能性のあるパターンを記述するために使用します。

      • (オプション) [クエリパラメータ] - このフィールドでは、クエリパラメータで照合できます。

      • (オプション) [ヘッダー] - httphttp2 のヘッダーを指定します。受信したリクエストに一致させて、対象の仮想サービスにルーティングする必要があります。

    • grpc が選択されたタイプの場合:

      • [ホスト名の一致タイプ] と (オプション) [完全一致/サフィックス一致] - ターゲット仮想サービスにルーティングするために、着信リクエストで照合するホスト名を指定します。

      • [grpc サービス名] - grpc サービスはアプリケーションの API として機能し、ProtoBuf で定義されます。

        重要

        サービス名に対して /aws.app-mesh* または aws.appmesh は指定できません これらのサービス名は、将来の App Mesh の内部使用のために予約されています。

      • (オプション) [メタデータ] - grpc のメタデータを指定します。ターゲット仮想サービスにルーティングする着信リクエストと一致する必要があります。

  12. (オプション) 書き換えに対して、次を設定します。

    • http/http2 が選択されたタイプの場合:

      • プレフィックス が選択された一致タイプの場合:

        • [ホスト名の自動書き換えを上書き] - デフォルトでは、ホスト名はターゲット仮想サービスの名前に書き換えられます。

        • プレフィックスの自動書き換えを上書きする ‐ オンにすると、プレフィックス書き換えは、書き換えられたプレフィクスの値を指定します。

      • [完全一致] が選択された一致タイプの場合:

        • [ホスト名の自動書き換えを上書き] - デフォルトでは、ホスト名はターゲット仮想サービスの名前に書き換えられます。

        • [パスの書き換え] - 書き換えられたパスの値を指定します。デフォルトパスはありません。

      • [正規表現] が選択された一致タイプの場合:

        • [ホスト名の自動書き換えを上書き] - デフォルトでは、ホスト名はターゲット仮想サービスの名前に書き換えられます。

        • [パスの書き換え] - 書き換えられたパスの値を指定します。デフォルトパスはありません。

    • gRPC が選択されたタイプの場合:

      • [ホスト名の自動書き換えを上書き] - デフォルトでは、ホスト名はターゲット仮想サービスの名前に書き換えられます。

  13. [ゲートウェイルートを作成] を選択して終了します。

AWS CLI

AWS CLI を使用して ゲートウェイルートを作成するには

以下のコマンドと入力 JSON ファイル (赤色の値を独自の値に置き換えてください) を使用して、ゲートウェイルートを作成します。

  1. aws appmesh create-virtual-gateway \ --mesh-name meshName \ --virtual-gateway-name virtualGatewayName \ --gateway-route-name gatewayRouteName \ --cli-input-json file://create-gateway-route.json
  2. create-gateway-route.json のの内容:

    { "spec": { "httpRoute" : { "match" : { "prefix" : "/" }, "action" : { "target" : { "virtualService": { "virtualServiceName": "serviceA.svc.cluster.local" } } } } } }
  3. 出力例:

    { "gatewayRoute": { "gatewayRouteName": "gatewayRouteName", "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualGateway/virtualGatewayName/gatewayRoute/gatewayRouteName", "createdAt": "2022-04-06T11:05:32.100000-05:00", "lastUpdatedAt": "2022-04-06T11:05:32.100000-05:00", "meshOwner": "123456789012", "resourceOwner": "210987654321", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 1 }, "spec": { "httpRoute": { "action": { "target": { "virtualService": { "virtualServiceName": "serviceA.svc.cluster.local" } } }, "match": { "prefix": "/" } } }, "status": { "status": "ACTIVE" }, "virtualGatewayName": "gatewayName" } }

App Mesh の AWS CLI を使用してゲートウェイルートを作成する方法の詳細については、AWS CLI リファレンスの create-gateway-route コマンドを参照してください。

ゲートウェイルートの削除

AWS Management Console
AWS Management Console 使用してゲートウェイルートを削除するには
  1. App Mesh コンソールを https://console.aws.amazon.com/appmesh/ で開きます。

  2. ゲートウェイルートを削除するメッシュを選択します。自分が所有しているメッシュや、共有されているメッシュがすべて一覧表示されます。

  3. 左側のナビゲーションで [仮想ルーター] を選択します。

  4. ゲートウェイルートを削除する仮想ゲートウェイを選択します。

  5. [ゲートウェイルート] テーブルで、削除するゲートウェイルートを選択し、[削除]を選択します。アカウントがリソース所有者として一覧表示されている場合にのみ、ゲートウェイルートを削除できます。

  6. 確認ボックスで、「delete」と入力し、[削除] をクリックします。

AWS CLI
AWS CLI 使用してゲートウェイルートを削除するには
  1. 以下のコマンドを使用してゲートウェイルートを削除します (赤色の値を独自の値に置き換えてください)。

    aws appmesh delete-gateway-route \ --mesh-name meshName \ --virtual-gateway-name virtualGatewayName \ --gateway-route-name gatewayRouteName
  2. 出力例:

    { "gatewayRoute": { "gatewayRouteName": "gatewayRouteName", "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualGateway/virtualGatewayName/gatewayRoute/gatewayRouteName", "createdAt": "2022-04-06T11:05:32.100000-05:00", "lastUpdatedAt": "2022-04-07T10:36:33.191000-05:00", "meshOwner": "123456789012", "resourceOwner": "210987654321", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 2 }, "spec": { "httpRoute": { "action": { "target": { "virtualService": { "virtualServiceName": "serviceA.svc.cluster.local" } } }, "match": { "prefix": "/" } } }, "status": { "status": "DELETED" }, "virtualGatewayName": "virtualGatewayName" } }

App Mesh の AWS CLI を使用してゲートウェイルートを削除する方法の詳細については、AWS CLI リファレンスの delete-gateway-route コマンドを参照してください。