仮想サービス - AWS App Mesh

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

仮想サービス

仮想サービスは、仮想ノードが仮想ルーターを使用して直接または間接的に提供する実際のサービスを抽象化したものです。依存サービスが virtualServiceName を使用して仮想サービスを呼び出し、それらのリクエストが仮想サービスのプロバイダーとして指定されている仮想ノードまたは仮想ルーターにルーティングされます。

仮想サービスを作成する

AWS Management Console
AWS Management Console を使用して仮想サービスを作成するには
  1. https://console.aws.amazon.com/appmesh/ で App Mesh コンソールを開きます。

  2. 仮想サービスを作成するメッシュを選択します。所有し、共有されているすべてのメッシュが一覧表示されます。

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

  4. [仮想サービスの作成] を選択します。

  5. [仮想サービス名] で仮想サービスの名前を選択します。任意の名前を選択できますが、ターゲットとする実際のサービスのサービス検出名 (my-service.default.svc.cluster.local など) にして、仮想サービスを実際のサービスに簡単に関連付けることができるようにすることをお勧めします。このようにすると、現在参照されているコードとは異なる名前を参照するようにコードを変更する必要はありません。リクエストが Envoy プロキシに送信される前に、アプリケーションコンテナが名前を正常に解決できる必要があるため、指定する名前は非ループバックIPアドレスに解決される必要があります。アプリまたはプロキシコンテナは、この IP アドレスと通信しないため、非ループバックの任意の IP アドレスを使用できます。プロキシは、App Mesh で設定した名前で他の仮想サービスと通信し、名前が解決される IP アドレスを介しては通信しません。

  6. [プロバイダー] で、仮想サービスのプロバイダータイプを選択します。

    • 仮想サービスでトラフィックを複数の仮想ノードに分散させる場合は、[仮想ルーター] を選択してから、使用する仮想ルーターをドロップダウンメニューから選択します。

    • 仮想ルーターを使用せずに仮想サービスを仮想ノードに直接到達させる場合は、[仮想ノード] を選択してから、使用する仮想ノードをドロップダウンメニューから選択します。

      注記

      App Mesh API を介してそのようなポリシーを定義できない場合でも、App Mesh は、2020 年 7 月 29 日以降に定義した仮想ノードプロバイダーごとにデフォルトの Envoy ルート再試行ポリシーを自動的に作成する場合があります。詳細については、「デフォルトのルート再試行ポリシー」を参照してください。

    • この時点で仮想サービスにトラフィックをルーティングさせないようにする場合 (例えば、仮想ノードまたは仮想ルーターがまだ存在していない場合) は、[なし] を選択します。この仮想サービスのプロバイダーは後から更新できます。

  7. [仮想サービスの作成] を選択して終了します。

AWS CLI

AWS CLI を使用して仮想サービスを作成するには

以下のコマンドと入力 JSON ファイル (赤色の値を独自の値に置き換えてください) を使用して、仮想サービスと仮想ノードプロバイダーを作成します。

  1. aws appmesh create-virtual-service \ --cli-input-json file://create-virtual-service-virtual-node.json
  2. create-virtual-service-virtual-node.json のの内容:

    { "meshName": "meshName", "spec": { "provider": { "virtualNode": { "virtualNodeName": "nodeName" } } }, "virtualServiceName": "serviceA.svc.cluster.local" }
  3. 出力例:

    { "virtualService": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualService/serviceA.svc.cluster.local", "createdAt": "2022-04-06T09:45:35.890000-05:00", "lastUpdatedAt": "2022-04-06T09:45:35.890000-05:00", "meshOwner": "123456789012", "resourceOwner": "210987654321", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 1 }, "spec": { "provider": { "virtualNode": { "virtualNodeName": "nodeName" } } }, "status": { "status": "ACTIVE" }, "virtualServiceName": "serviceA.svc.cluster.local" } }

App Mesh の AWS CLI を使用して仮想サービスを作成する方法の詳細については、AWS CLI リファレンスの create-virtual-service コマンドを参照してください。

仮想サービスを削除する

注記

ゲートウェイルートで参照されている仮想サービスは削除できません。最初にゲートウェイルートを削除する必要があります。

AWS Management Console
AWS Management Console を使用して仮想サービスを削除するには
  1. https://console.aws.amazon.com/appmesh/ で App Mesh コンソールを開きます。

  2. 仮想サービスを削除するメッシュを選択します。所有し、共有されているすべてのメッシュが一覧表示されます。

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

  4. 削除する仮想サービスを選択し、右上隅の [削除] をクリックします。アカウントがリソース所有者として一覧されている仮想ゲートウェイのみを削除できます。

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

AWS CLI
AWS CLI を使用して仮想サービスを削除するには
  1. 以下のコマンドを使用して仮想サービスを削除します (赤色の値を独自の値に置き換えてください)。

    aws appmesh delete-virtual-service \ --mesh-name meshName \ --virtual-service-name serviceA.svc.cluster.local
  2. 出力例:

    { "virtualService": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:210987654321:mesh/meshName/virtualService/serviceA.svc.cluster.local", "createdAt": "2022-04-06T09:45:35.890000-05:00", "lastUpdatedAt": "2022-04-07T10:39:42.772000-05:00", "meshOwner": "123456789012", "resourceOwner": "210987654321", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 2 }, "spec": { "provider": { "virtualNode": { "virtualNodeName": "nodeName" } } }, "status": { "status": "DELETED" }, "virtualServiceName": "serviceA.svc.cluster.local" } }

App Mesh の AWS CLI を使用して仮想サービスを削除する方法の詳細については、AWS CLI リファレンスの delete-virtual-service コマンドを参照してください。