仮想サービス - 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 ファイルを使用して、仮想ノードプロバイダーを使用して仮想サービスを作成します (red独自の値を使用して):

  1. aws appmesh create-virtual-service \ --cli-input-json file://create-virtual-service-virtual-node.json
  2. の内容仮想サービス仮想ノード.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" } }

を使用して仮想サービスを作成する方法の詳細については、AWS CLIApp Mesh については、仮想サービスの作成コマンドのAWS CLIリファレンス

仮想サービスを削除する

注記

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

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. 次のコマンドを使用して、仮想サービスを削除します (red独自の値を使用して):

    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" } }

を使用して仮想サービスを削除する方法の詳細については、AWS CLIApp Mesh については、仮想サービスを削除するコマンドのAWS CLIリファレンス