本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
路由
閘道路由會連結至虛擬閘道,並將流量路由傳送至現有的虛擬服務。如果路由符合請求,它可以將流量分配到目標虛擬服務。本主題可協助您使用服務網格中的路由。
建立路由
- AWS Management Console
-
使用建立路由AWS Management Console
-
在 https://console.aws.amazon.com/appmesh/
開啟 App Mesh 主控台。 -
選擇您要建立 G道路由。會列出您擁有且已與您共用的所有網格。
-
選擇左側導覽列中的 [虛擬閘道]。
-
選擇要與新閘道路由建立關聯的虛擬閘道。如果沒有列出,那麼您需要先建立一個。您只能為虛擬閘道建立閘道路由,而您的帳戶會列為資源擁有者。
-
在「閘道路由」表格中,選擇「建立閘道路由」。
-
對於閘道路由名稱,請指定要用於閘道路由的名稱。
-
對於網關路由類型,請選擇 http,http2 或 grpc。
-
選取現有的虛擬服務名稱。如果沒有列出,那麼您需要先建立一個。
-
選擇與虛擬服務提供者連接埠目標對應的連接埠。當所選虛擬服務的提供者(路由器或節點)具有多個接聽程式時,需要虛擬服務提供者連接埠。
-
(選擇性) 針對「優先順序」,指定此閘道路由的優先順序。
-
對於比對組態,請指定:
-
如果選取的類型為 http/http2:
-
(選擇性) 方法‐指定要在內送 http/http2 要求中比對的方法標頭。
-
(選擇性) 連接埠相符-符合傳入流量的連接埠。如果此虛擬閘道具有多個接聽程式,則需要連接埠相符。
-
(選擇性) 精確 /尾碼主機名稱-指定應與傳入要求相符的主機名稱,以路由傳送至目標虛擬服務。
-
(選擇性) 首碼/正則程式/Regex 路徑-比對 URL 路徑的方法。
-
前綴匹配-通過閘道路由匹配的請求被重寫為目標虛擬服務的名稱
/
,並默認情況下將匹配的前綴重寫為。視您設定虛擬服務的方式而定,它可以使用虛擬路由器,根據特定的首碼或標頭,將要求路由到不同的虛擬節點。重要
-
您不能指定
/aws-appmesh*
或/aws-app-mesh*
為前綴匹配。這些前綴保留供 future App Mesh 內部使用。 -
如果定義了多個閘道路由,則會將要求與具有最長前置詞的路由相符。例如,如果存在兩個閘道路由,其中一個具有前置詞
/chapter
,另一個具有前綴為/
,則的請求www.example.com/chapter/
將與具有/chapter
前綴的閘道路由進行匹配。
注意
如果您啟用基於路徑/前綴的匹配,則 App Mesh 會啟用路徑標準化(規範化路徑
和 merge_slashes ),以最大程度地減少路徑混淆漏洞的可能性。 當參與要求的各方使用不同的路徑表示時,就會發生路徑混淆弱點。
-
-
精確匹配-精確參數禁用路由的部分匹配,並確保僅在路徑與當前 URL 完全匹配時返回路由。
-
正則表達式匹配-用於描述多個 URL 實際識別網站上單個頁面的模式。
-
-
(選擇性) 查詢參數-此欄位可讓您比對查詢參數。
-
(選擇性) 標頭‐指定 http 和 http2 的標頭。它應該與傳入的請求相匹配,以路由到目標虛擬服務。
-
-
如果 grpc 是選取的類型:
-
主機名稱比對類型和 (選用) 完全/尾碼相符-指定應與傳入要求相符的主機名稱,以路由傳送至目標虛擬服務。
-
grpc 服務名稱-grpc 服務充當您應用程式的 API,並使用定義 ProtoBuf。
重要
您無法
aws.appmesh
為服務名稱指定/aws.app-mesh*
或。這些服務名稱保留供 future App Mesh 內部使用。 -
(選擇性) 中繼資料-指定 grpc 的中繼資料。它應該匹配傳入的請求,以路由到目標虛擬服務。
-
-
-
(可選)對於重寫配置:
-
如果選取的類型為 http/http2:
-
如果「字首」為選取的相符類型:
-
覆寫主機名稱的自動重新寫入-依預設,主機名稱會重新寫入目標虛擬服務的名稱。
-
覆寫前綴的自動重寫-當打開時,「前綴重寫」會指定重寫前綴的值。
-
-
如果「精確路徑」為選取的相符類型:
-
覆寫主機名稱的自動重寫-依預設,主機名稱會重寫為目標虛擬服務的名稱。
-
路徑重新寫入-指定重寫路徑的值。沒有預設路徑。
-
-
如果正則表達式路徑是選定的匹配類型:
-
覆寫主機名稱的自動重寫-依預設,主機名稱會重寫為目標虛擬服務的名稱。
-
路徑重新寫入-指定重寫路徑的值。沒有預設路徑。
-
-
-
如果 grpc 是選取的類型:
-
覆寫主機名稱的自動重新寫入-依預設,主機名稱會重新寫入目標虛擬服務的名稱。
-
-
-
選擇 [建立閘道路由] 以完成。
-
- AWS CLI
-
若要使用建立閘道路由AWS CLI。
使用以下命令和輸入 JSON 創建網關路由(用您自己的值替換
紅色
值):-
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" } }
如需使用 for App Mesh 建立閘道路由的AWS CLI詳細資訊,請參閱AWS CLI參考中的create-gateway-route命令。
-
刪除 Gate路由
- AWS Management Console
-
使用刪除 Gate路由AWS Management Console
-
在 https://console.aws.amazon.com/appmesh/
開啟 App Mesh 主控台。 -
選擇您要從中刪除 G道路由。會列出您擁有且已與您共用的所有網格。
-
選擇左側導覽列中的 [虛擬閘道]。
-
選擇您要從中刪除閘道路由的虛擬閘道。
-
在「閘道路由」表格中,選擇要刪除的閘道路由,然後選取「刪除」。如果您的帳號被列為資源擁有者,您才能刪除閘道路由。
-
在確認方塊中,輸入,
delete
然後按一下刪除。
-
- AWS CLI
-
使用刪除 Gate路由AWS CLI
-
使用以下命令刪除您的網關路由(用您自己的值替換
紅色
值):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" } }
如需有關使用 App Mesh 刪除閘道路由的AWS CLI詳細資訊,請參閱AWS CLI參考中的delete-gateway-route命令。
-