本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
什麼是 AWS App Mesh?
重要
支援終止通知:在 2026 年 9 月 30 日, AWS 將停止對 的支援 AWS App Mesh。2026 年 9 月 30 日之後,您將無法再存取 AWS App Mesh 主控台或 AWS App Mesh 資源。如需詳細資訊,請參閱此部落格文章從 遷移 AWS App Mesh 至 Amazon ECS Service Connect
AWS App Mesh 是一種服務網格,可讓您輕鬆監控和控制服務。服務網格是專門處理service-to-service通訊的基礎設施層,通常透過與應用程式程式碼一起部署的一系列輕量型網路代理。App Mesh 將服務通訊方式標準化,為您提供端對端可見性,並有助於確保應用程式的高可用性。App Mesh 對應用程式中的每個服務提供一致的可見性和網路流量控制。
將 App Mesh 新增至範例應用程式
重要
支援終止通知:在 2026 年 9 月 30 日, AWS 將停止對 的支援 AWS App Mesh。2026 年 9 月 30 日之後,您將無法再存取 AWS App Mesh 主控台或 AWS App Mesh 資源。如需詳細資訊,請參閱此部落格文章從 遷移 AWS App Mesh 至 Amazon ECS Service Connect
請考慮以下不使用 App Mesh 的簡單範例應用程式。這兩個服務可以在 Amazon Elastic Container Service (Amazon ECS) AWS Fargate、Amazon Elastic Kubernetes Service (Amazon EKS)、Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上的 Kubernetes,或使用 Docker 的 Amazon EC2 執行個體上執行。

在此圖中, serviceA
和 serviceB
都可以透過 apps.local
命名空間探索。例如,假設您決定部署serviceb.apps.local
名為 的新版本servicebv2.apps.local
。接下來,您想要將一定百分比的流量從 引導servicea.apps.local
至 serviceb.apps.local
,並將一定百分比引導至 servicebv2.apps.local
。當您確定 servicebv2
效能良好時,您想要將 100% 的流量傳送至其中。
App Mesh 可協助您執行此操作,而無需變更任何應用程式碼或註冊的服務名稱。如果您搭配此範例應用程式使用 App Mesh,則網格看起來可能會如下圖所示。

在此組態中,服務不會再直接彼此通訊。相反地,它們會透過代理彼此通訊。使用 servicea.apps.local
服務部署的代理會讀取 App Mesh 組態,並根據組態servicebv2.apps.local
將流量傳送至 serviceb.apps.local
或 。
App Mesh 的元件
App Mesh 由下列元件組成,如先前範例所示:
-
服務網格 – 服務網格是位於其中之服務之間的網路流量邏輯界限。在此範例中,網格名為
apps
,其中包含網格的所有其他資源。如需詳細資訊,請參閱服務網格。 -
虛擬服務 – 虛擬服務是由虛擬節點直接或間接透過虛擬路由器提供的實際服務抽象。在圖中,兩個虛擬服務代表兩個實際服務。虛擬服務的名稱是實際服務的可探索名稱。當虛擬服務和實際服務具有相同的名稱時,多個服務可以使用在實作 App Mesh 之前所使用的相同名稱彼此通訊。如需詳細資訊,請參閱虛擬服務。
-
虛擬節點 – 虛擬節點可做為可探索服務的邏輯指標,例如 Amazon ECS 或 Kubernetes 服務。對於每個虛擬服務,您至少會有一個虛擬節點。在圖中,
servicea.apps.local
虛擬服務會取得名為 之虛擬節點的組態資訊serviceA
。serviceA
虛擬節點是以服務探索servicea.apps.local
的名稱設定。serviceb.apps.local
虛擬服務設定為透過名為 的serviceBv2
虛擬路由器將流量路由到serviceB
和虛擬節點serviceB
。如需詳細資訊,請參閱虛擬節點。 -
虛擬路由器和路由 – 虛擬路由器會處理網格中一或多個虛擬服務的流量。路由會與虛擬路由器相關聯。路由用於比對虛擬路由器的請求,並將流量分配到其相關聯的虛擬節點。在上圖中,
serviceB
虛擬路由器的路由會將一定百分比的流量導向虛擬serviceB
節點,以及將一定百分比的流量導向serviceBv2
虛擬節點。您可以設定路由到特定虛擬節點的流量百分比,並隨時間變更。您可以根據 HTTP 標頭、URL 路徑或 gRPC 服務和方法名稱等條件路由流量。如果回應中發生錯誤,您可以設定重試政策以重試連線。例如,在圖中,如果serviceb.apps.local
傳回特定類型的錯誤,則路由的重試政策可以指定serviceb.apps.local
對 的連線重試五次,重試嘗試之間間隔十秒。如需詳細資訊,請參閱虛擬路由器及路由。 -
Proxy – 您可以在建立網格及其資源後,將服務設定為使用 Proxy。代理會讀取 App Mesh 組態,並適當地引導流量。在圖中,從
servicea.apps.local
到 的所有通訊serviceb.apps.local
都會經過與每個服務一起部署的代理。服務會使用與導入 App Mesh 之前相同的服務探索名稱彼此通訊。由於代理會讀取 App Mesh 組態,因此您可以控制兩個 服務如何互相通訊。當您想要變更 App Mesh 組態時,您不需要自行或代理變更或重新部署服務。如需詳細資訊,請參閱Envoy 影像。
如何開始
若要使用 App Mesh,您必須擁有執行於 的現有服務 AWS Fargate、Amazon ECS、Amazon EKS、Amazon EC2 上的 Kubernetes 或 Amazon EC2 搭配 Docker。
若要開始使用 App Mesh,請參閱下列其中一個指南:
存取 App Mesh
您可以透過下列方式使用 App Mesh:
- AWS Management Console
-
主控台是瀏覽器型界面,可用來管理 App Mesh 資源。您可以在 https://https://console.aws.amazon.com/appmesh/
開啟 App Mesh 主控台。 - AWS CLI
-
為廣泛的 AWS 產品提供命令,並支援 Windows、Mac 和 Linux。若要開始使用,請參閱《AWS Command Line Interface 使用者指南》。如需 App Mesh 命令的詳細資訊,請參閱《 AWS CLI 命令參考》中的 appmesh。
- AWS Tools for Windows PowerShell
-
為在 PowerShell 環境中編寫指令碼的人員提供廣泛的 AWS 產品命令。若要開始使用,請參閱《AWS Tools for Windows PowerShell 使用者指南》。如需有關 App Mesh 的 cmdlet 的詳細資訊,請參閱AWS 《 Tools for PowerShell Cmdlet Reference》中的 App Mesh。
- AWS CloudFormation
-
可讓您建立範本,描述您想要的所有 AWS 資源。使用 範本,為您 AWS CloudFormation 佈建和設定 資源。若要開始使用,請參閱《AWS CloudFormation 使用者指南》。如需 App Mesh 資源類型的詳細資訊,請參閱 範本參考中的 App Mesh 資源類型AWS CloudFormation 參考。
- AWS SDKs
-
我們也提供 SDKs,可讓您從各種程式設計語言存取 App Mesh。SDKs會自動處理下列任務:
加密簽署服務請求
重試請求
處理錯誤回應
如需可用 SDK 的詳細資訊,請參閱 Amazon Web Services 適用工具
。 如需 App Mesh APIs的詳細資訊,請參閱 AWS App Mesh API 參考。