本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
聯網
您可以在執行時間將 Network Connector 資源與 AWS Lambda MicroVMs,以設定 MicroVM 的網路存取。網路連接器會在您呼叫 時指定,run-microvm無法在 MicroVM 執行時變更。
概觀
每個 MicroVM 都可以有獨立的輸入 (傳入) 和輸出 (傳出) 網路組態:
-
輸入網路連接器可啟用傳入連線。用戶端連接到服務受管 HTTPS 端點,Lambda 會將流量轉送到您在 MicroVM 中設定的連接埠。輸入連接器 AWS受到管理 – 您在執行 MicroVM 時由 ARN 參考。
-
輸出網路連接器會啟用傳出流量。根據預設,MicroVMs具有公有網際網路存取。您可以建立客戶管理的 VPC 輸出連接器,以改為透過 VPC 路由傳出流量。
單一連接器可以在許多 MicroVMs之間重複使用 – 這是預期的使用模式。
傳入連線
每個 Lambda MicroVM 都可以在唯一的 HTTPS 端點 URL 上連線,在您呼叫 時指派run-microvm。用戶端會透過 HTTPS 傳送請求至此端點。Lambda 會將每個請求路由到 MicroVM 內的連接埠,您的應用程式會在該連接埠中接收請求。
根據預設,端點收到的請求會路由至 MicroVM 內的連接埠 8080。若要路由到不同的連接埠,請參閱 連接埠路由。
傳入端點支援下列通訊協定:
-
HTTP/1.1
-
HTTP/2
-
WebSockets
-
gRPC
-
伺服器傳送事件 (SSE)
注意
用戶端與 MicroVM 端點之間的流量一律使用 TLS 加密。您的應用程式可以在內部透過 HTTP 或 HTTPS 提供請求。
連接埠路由
Lambda 會使用下列優先順序選取 MicroVM 內的目標連接埠:
-
X-aws-proxy-port標頭 – 對於標準 HTTP 請求,請將此標頭包含目標連接埠號碼。 -
WebSocket 子通訊協定 – 如果您的 WebSocket 用戶端無法設定自訂標頭,請將目標連接埠指定為名為 的子通訊協定
lambda-microvms.port.,其中NN是連接埠號碼。您在開啟 WebSocket 連線時提供子通訊協定。如需範例,請參閱 通訊協定。 -
預設 (8080) – 如果兩者皆未指定,則請求路由至連接埠 8080。
重要
目標連接埠必須在身分驗證字符中allowedPorts定義的 內。對未經授權連接埠的請求會收到 403 禁止的回應。
身分驗證
對 MicroVM 端點的所有請求都需要 X-aws-proxy-auth標頭中的有效身分驗證字符。您可以使用 產生權杖create-microvm-auth-token。每個字符都是加密的 JWE (JSON Web Encryption) 字串,範圍為:
-
特定 MicroVM (以 ID 識別)。
-
一組允許的連接埠 (單一連接埠、範圍或所有連接埠)。
-
過期時間 (在權杖建立時設定)。
下列範例會建立字符,並使用它來傳送已驗證的請求:
aws lambda-microvms create-microvm-auth-token \ --microvm-identifiermicrovm-id\ --expiration-in-minutes 30 \ --allowed-ports '[{"port":8080}]'
curl 'https://microvm-endpoint' \ -H 'X-aws-proxy-auth:TOKEN' \ -H 'X-aws-proxy-port: 8080'
如需建立字符並連線至 MicroVM 的完整逐步解說,包括 WebSocket 連線,請參閱 連線至 MicroVM。
錯誤回應
當 MicroVM 端點無法處理或交付請求到您的應用程式時,會傳回下列 HTTP 狀態碼。這些回應來自端點,而不是您的應用程式。
| Code | 狀態 | 原因和解決方法 |
|---|---|---|
| 400 | 錯誤的請求。 | 格式不正確的請求,或無效的連接埠標頭或 WebSocket 子通訊協定。驗證格式。 |
| 403 | 禁止 | 字符遺失、過期或無效;或請求的連接埠不在字符的 中allowedPorts。產生新的字符,或使用允許的連接埠。 |
| 429 | 請求過多 | 超過速率限制 (帳戶層級或每個 MicroVM)。以指數退避重試。 |
| 500 | 內部伺服器錯誤 | 發生內部錯誤。重試 請求。 |
| 502 | 無效的閘道 | 應用程式未回應,或自動繼續未在重試次數上限內成功。請參閱 自動繼續。 |
請求標頭
Lambda 會為請求中繼資料保留X-aws-proxy-*標頭命名空間,例如身分驗證字符 (X-aws-proxy-auth) 和目標連接埠 ()X-aws-proxy-port。Lambda 會在轉送請求到您的應用程式之前移除X-aws-proxy-*標頭。
請求/回應頻寬
每個 Lambda MicroVM 都有一個請求/回應頻寬,可根據其大小線性擴展。此頻寬適用於透過 MicroVM 端點的所有流量,包括傳入請求和傳出回應。
| MicroVM 大小 (基準) | 最大頻寬 |
|---|---|
| 0.5 GB、0.25 vCPU | 1 MB/s (8 Mbps) |
| 1 GB、0.5 vCPU | 2 MB/s (16 Mbps) |
| 2 GB、1 個 vCPU | 4 MB/s (32 Mbps) |
| 4 GB、2 個 vCPU | 8 MB/s (64 Mbps) |
| 8 GB、4 個 vCPU | 16 MB/s (128 Mbps) |
如果您因為網路飽和而遇到請求延遲增加,請減少請求並行或承載大小,或選取較大的 MicroVM 大小來增加可用的頻寬。
HTTP/2 支援
Lambda MicroVMs 在傳入端點上支援 HTTP/2。Lambda 在 TLS 交握期間透過 ALPN (應用程式層通訊協定交涉) 交涉通訊協定,偏好 HTTP/2 並回到 HTTP/1.1。具備 HTTP/2 功能的用戶端會自動使用它。
若要在端點與 MicroVM 內的應用程式之間使用 HTTP/2:
-
您的應用程式提供 TLS – Lambda 透過 ALPN 與您的應用程式交涉 HTTP/2,如果不支援 HTTP/2,則返回 HTTP/1.1。
-
您的應用程式提供純文字 HTTP – 在請求中包含
X-aws-proxy-force-h2: true標頭,以在應用程式的連線上使用 HTTP/2。
傳出連線
根據預設,Lambda MicroVMs輸出路徑上具有公有網際網路存取。若要透過 Direct Connect 或 VPN 將 MicroVMs與私有 VPCs 中的資源連線,例如 RDS、ElastiCache、內部 APIs 和內部部署系統,請使用 VPC 組態建立 Lambda Network Connector。
使用 VPC 輸出時,傳出流量受管理 VPC 中流量的安全群組規則和網路 ACLs 約束。
使用輸出網路連接器
輸出網路連接器會透過 VPC 路由來自 MicroVM 的傳出流量。您建立一次連接器,然後在透過 run-microvm命令啟動 MicroVMs時由 ARN 參考它。
先決條件
在建立網路連接器之前,您需要一個 IAM 角色,允許 Lambda 在 VPC 中建立彈性網路介面 ENIs)。角色需要以下許可:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateENI", "Effect": "Allow", "Action": "ec2:CreateNetworkInterface", "Resource": [ "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Sid": "TagENI", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:ManagedResourceOperator": "network-connectors.lambda.amazonaws.com" } } } ] }
建立網路連接器
透過指定 VPC 子網路、安全群組和網路通訊協定 (IPv4 或 DualStack) 來建立連接器:
aws lambda-core create-network-connector \ --name my-connector \ --configuration '{ "VpcEgressConfiguration": { "SubnetIds": ["subnet-xxx"], "SecurityGroupIds": ["sg-xxx"], "NetworkProtocol": "IPv4", "AssociatedComputeResourceTypes": ["MicroVm"] } }' \ --operator-role arn:aws:iam::123456789012:role/NetworkConnectorOperatorRole
網路連接器狀態
連接器必須處於 ACTIVE 狀態,才能在 中參考它run-microvm。
| State | 說明 |
|---|---|
PENDING |
正在建立連接器 (正在佈建基礎 ENIs)。 |
ACTIVE |
連接器已準備好可供使用。 |
INACTIVE |
連接器暫時處於非作用中狀態。 |
FAILED |
佈建或更新失敗。檢查 StateReason。 |
DELETING |
連接器正在刪除;正在清除 ENIs。 |
DELETE_FAILED |
刪除失敗。 |
使用網路連接器執行 MicroVM
執行 MicroVM 時參考連接器 ARN:
aws lambda-microvms run-microvm \ --image-identifier arn:aws:lambda:us-east-1:123456789012:microvm-image:my-microvm-image \ --egress-network-connectorsconnector-arn\ --idle-policy '{"maxIdleDurationSeconds":900,"suspendedDurationSeconds":1800,"autoResumeEnabled":false}'
注意
更新或刪除連接器之前,請確定所有使用連接器MicroVMs 都已終止。修改正在使用的連接器可能會導致執行 MicroVMs網路連線問題。