本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
閘道路由
重要
支援終止通知:2026 年 9 月 30 日, AWS 將停止對 的支援 AWS App Mesh。2026 年 9 月 30 日後,您將無法再存取 AWS App Mesh 主控台或 AWS App Mesh 資源。如需詳細資訊,請造訪此部落格文章,從 遷移 AWS App Mesh 至 Amazon ECS Service Connect
閘道路由會連結至虛擬閘道,並將流量路由傳送至現有的虛擬服務。如果路由符合請求,它可以將流量分配到目標虛擬服務。本主題可協助您在服務網格中使用閘道路由。
建立閘道路由
- AWS Management Console
-
使用 建立閘道路由 AWS Management Console
-
在 開啟 App Mesh 主控台https://console.aws.amazon.com/appmesh/
。 -
選擇您要在其中建立閘道路由的網格。會列出您擁有和與您共用的所有網格。
-
在左側導覽中選擇虛擬閘道。
-
選擇您要與新閘道路由建立關聯的虛擬閘道。如果未列出任何項目,則需要先建立虛擬閘道。您只能為將帳戶列為資源擁有者 的虛擬閘道建立閘道路由。
-
在閘道路由表中,選擇建立閘道路由 。
-
針對閘道路由名稱 ,指定閘道路由要使用的名稱。
-
針對閘道路由類型,選擇 http 、http2 或 grpc 。
-
選取現有的虛擬服務名稱 。如果未列出任何項目,則需要先建立虛擬服務。
-
選擇與虛擬服務供應商連接埠 的目標對應的連接埠。當所選虛擬服務的提供者 (路由器或節點) 具有多個接聽程式時,則需要虛擬服務供應商連接埠。
-
(選用) 針對優先順序 ,指定此閘道路由的優先順序。
-
對於相符組態,請指定:
-
如果 http/http2 是選取的類型:
-
(選用) 方法 - 指定要在傳入 http /http2 請求中比對的方法標頭。
-
(選用) 連接埠比對 - 比對傳入流量的連接埠。如果此虛擬閘道具有多個接聽程式,則需要連接埠相符。
-
(選用) 確切/尾碼主機名稱 - 指定應該在傳入請求上相符的主機名稱,以路由至目標虛擬服務。
-
(選用) 字首/精確/Regex 路徑 - 符合 之路徑的方法URL。
-
字首相符 - 閘道路由相符的請求會重寫至目標虛擬服務的名稱
/
,且相符的字首會預設為重寫至 。視您設定虛擬服務的方式而定,它可以使用虛擬路由器,根據特定字首或標頭,將請求路由至不同的虛擬節點。重要
-
您無法
/aws-app-mesh*
為字首相符 指定/aws-appmesh*
或 。 這些字首保留供未來 App Mesh 內部使用。 -
如果定義了多個閘道路由,則請求會與字首最長的路由相符。例如,如果存在兩個閘道路由,其中一個具有 的字首,
/chapter
另一個具有 的字首/
,則 的請求www.example.com/chapter/
會與具有字/chapter
首的閘道路由相符。
注意
如果您啟用以路徑/字首為基礎的比對,App Mesh 會啟用路徑標準化 (normalize_path
和 merge_slashes ),以將路徑混淆漏洞的可能性降至最低。 當參與請求的各方使用不同的路徑表示法時,會發生路徑混淆漏洞。
-
-
完全相符 - 精確參數會停用路由的部分相符,並確保只有在路徑與目前的 EXACT相符時,才會傳回路由URL。
-
Regex 比對 - 用於描述多個URLs可能實際識別網站上的單一頁面的模式。
-
-
(選用) 查詢參數 - 此欄位可讓您比對查詢參數。
-
(選用) 標頭 - 指定 http 和 http2 的標頭。它應該符合傳入請求,以路由至目標虛擬服務。
-
-
如果 grpc 是選取的類型:
-
主機名稱比對類型和 (選用) 精確/尾碼比對 - 指定應該在傳入請求上比對的主機名稱,以路由至目標虛擬服務。
-
grpc 服務名稱 - grpc 服務可做為API您應用程式的 ,並以 定義 ProtoBuf。
重要
您無法
aws.appmesh
為服務名稱 指定/aws.app-mesh*
或 。 這些服務名稱保留供未來 App Mesh 內部使用。 -
(選用) 中繼資料 - 指定 grpc 的中繼資料。它應該符合傳入請求,以路由至目標虛擬服務。
-
-
-
(選用) 對於重寫組態:
-
如果 http/http2 是選取的類型:
-
如果字首是選取的比對類型:
-
覆寫主機名稱的自動重寫 - 預設情況下,主機名稱會重寫為目標虛擬服務的名稱。
-
覆寫字首的自動重寫 - 開啟時,字首重寫會指定重寫字首的值。
-
-
如果 Exact Path 是選取的比對類型:
-
覆寫主機名稱的自動重寫 - 預設會將主機名稱重寫為目標虛擬服務的名稱。
-
路徑重寫 - 指定重寫路徑的值。沒有預設路徑。
-
-
如果 Regex Path 是選取的比對類型:
-
覆寫主機名稱的自動重寫 - 預設會將主機名稱重寫為目標虛擬服務的名稱。
-
路徑重寫 - 指定重寫路徑的值。沒有預設路徑。
-
-
-
如果 grpc 是選取的類型:
-
覆寫主機名稱的自動重寫 - 預設會將主機名稱重寫為目標虛擬服務的名稱。
-
-
-
選擇建立閘道路由以完成。
-
- AWS CLI
-
使用 建立閘道路由 AWS CLI。
使用下列命令和輸入建立閘道路由 JSON(取代
red
您自己的值):-
aws appmesh create-virtual-gateway \ --mesh-name
meshName
\ --virtual-gateway-namevirtualGatewayName
\ --gateway-route-namegatewayRouteName
\ --cli-input-json file://create-gateway-route.json
-
範例 create-gateway-route.json 的內容:
{ "spec": { "httpRoute" : { "match" : { "prefix" : "/" }, "action" : { "target" : { "virtualService": { "virtualServiceName": "serviceA.svc.cluster.local" } } } } } }
-
輸出範例:
{ "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" } }
如需使用 AWS CLI for App Mesh 建立閘道路由的詳細資訊,請參閱 AWS CLI 參考中的 create-gateway-route命令。
-
刪除閘道路由
- AWS Management Console
-
使用 刪除閘道路由 AWS Management Console
-
在 開啟 App Mesh 主控台https://console.aws.amazon.com/appmesh/
。 -
選擇您要從中刪除閘道路由的網格。會列出您擁有的所有網格,以及已與您共用的所有網格。
-
在左側導覽中選擇虛擬閘道。
-
選擇您想要從中刪除閘道路由的虛擬閘道。
-
在閘道路由表中,選擇您要刪除的閘道路由,然後選擇刪除 。只有在您的帳戶列為資源擁有者 時,您才能刪除閘道路由。
-
在確認方塊中,輸入
delete
,然後按一下刪除 。
-
- AWS CLI
-
使用 刪除閘道路由 AWS CLI
-
使用下列命令來刪除閘道路由 (取代
red
您自己的值):aws appmesh delete-gateway-route \ --mesh-name
meshName
\ --virtual-gateway-namevirtualGatewayName
\ --gateway-route-namegatewayRouteName
-
輸出範例:
{ "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" } }
如需使用 AWS CLI for App Mesh 刪除閘道路由的詳細資訊,請參閱 AWS CLI 參考中的 delete-gateway-route命令。
-