虛擬服務 - AWS 應用程式網格

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

虛擬服務

重要

支援終止通知:2026 年 9 月 30 日 AWS 將停止對 的支援 AWS App Mesh。2026 年 9 月 30 日後,您將無法再存取 AWS App Mesh 主控台或 AWS App Mesh 資源。如需詳細資訊,請造訪此部落格文章,從 遷移 AWS App Mesh 至 Amazon ECS Service Connect

虛擬服務是實際服務的抽象化,由虛擬節點直接提供,或透過虛擬路由器間接提供。相依服務會以 virtualServiceName 呼叫您的虛擬服務,而且這些請求會路由傳送到虛擬節點或虛擬路由器 (指定為虛擬服務的提供者)。

建立虛擬服務

AWS Management Console
使用 建立虛擬服務 AWS Management Console
  1. 在 開啟 App Mesh 主控台https://console.aws.amazon.com/appmesh/

  2. 選擇您要在其中建立虛擬服務的網格。會列出您擁有和已與您共用的所有網格。

  3. 在左側導覽中,選擇 Virtual services (虛擬服務)

  4. 選擇 Create virtual service (建立虛擬服務)

  5. 對於 Virtual service name (虛擬服務名稱),為您的虛擬服務選擇名稱。您可以選擇任何名稱,但建議您目標為實際服務的服務探索名稱,例如 my-service.default.svc.cluster.local,以便更輕鬆地將虛擬服務與實際服務建立關聯。如此一來,您不需要變更程式碼來參考與目前程式碼不同的名稱。您指定的名稱必須解析為非退信 IP 地址,因為應用程式容器必須先成功解析名稱,才能將請求傳送至 Envoy 代理。您可以使用任何非退信 IP 地址,因為應用程式或代理容器都無法與此 IP 地址通訊。代理透過您在 App Mesh 中為它們設定的名稱與其他虛擬服務通訊,而不是透過名稱解析的 IP 地址。

  6. 針對 Provider (提供者),為您的虛擬服務選擇提供者類型:

    • 如果您希望虛擬服務將流量分散到多個虛擬節點,請選取 Virtual router (虛擬路由器),然後從下拉式功能表選擇要使用的虛擬路由器。

    • 如果您希望虛擬服務在沒有虛擬路由器的情況下直接到達虛擬節點,請選取虛擬節點,然後從下拉式功能表中選擇要使用的虛擬節點。

      注意

      App Mesh 可能會為您在 2020 年 7 月 29 日當天或之後定義的每個虛擬節點提供者自動建立預設 Envoy 路由重試政策,即使您無法透過 App Mesh 定義此類政策API。如需詳細資訊,請參閱預設路由重試政策

    • 如果您此時不想讓虛擬服務路由傳送流量 (例如,如果您的虛擬節點或虛擬路由器尚不存在),請選擇 None (無)。您稍後可以更新此虛擬服務的提供者。

  7. 選擇 Create virtual service (建立虛擬服務) 以完成。

AWS CLI

使用 建立虛擬服務 AWS CLI。

使用下列命令和輸入JSON檔案 (取代 red 您自己的值):

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

如需使用 AWS CLI for App Mesh 建立虛擬服務的詳細資訊,請參閱 AWS CLI 參考中的 create-virtual-service命令。

刪除虛擬服務

注意

您無法刪除閘道路由參考的虛擬服務。您需要先刪除閘道路由。

AWS Management Console
若要使用 刪除虛擬服務 AWS Management Console
  1. 在 開啟 App Mesh 主控台https://console.aws.amazon.com/appmesh/

  2. 選擇您想要從中刪除虛擬服務的網格。會列出您擁有和已與您共用的所有網格。

  3. 在左側導覽中,選擇 Virtual services (虛擬服務)

  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 CLI for App Mesh 刪除虛擬服務的詳細資訊,請參閱 AWS CLI 參考中的 delete-virtual-service命令。