本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
MicroVM 映像
本節說明如何建置、設定、更新和管理 MicroVM 映像。
MicroVM 映像是定義 MicroVM 檔案系統和應用程式環境的資源。MicroVM 映像包含您的執行時間環境、應用程式程式碼和支援程式,例如背景程序和可觀測性代理程式。若要建立 MicroVM 映像,請提供 zip 套件,其中包含您上傳至 Amazon S3 的 Dockerfile和應用程式成品。您的 Dockerfile 定義應用程式的封裝方式。Lambda 透過在 Lambda 受管 MicroVM 基礎映像提供的作業系統環境Dockerfile上執行 ,來建置您的應用程式容器映像。MicroVM 基礎映像如下所述,請參閱標題為 – 的章節MicroVM 基礎映像。
您可以更新 MicroVM 基礎映像,以更新 MicroVMs的應用程式程式碼或組態。您觸發的每個更新都會建立新的 MicroVM 映像版本。
Lambda 如何建置 MicroVM 映像
當您建立 MicroVM 映像時,Lambda:
-
從 Amazon S3 擷取您的封裝成品。
-
從 Lambda 受管基礎映像啟動新的 MicroVM。
-
執行 中的指示
Dockerfile。 -
使用
ENTRYPOINT或CMD指示啟動您的應用程式。 -
等待初始化完成,由您的生命週期掛鉤發出訊號。
-
擷取磁碟和記憶體狀態的快照。
一旦快照程序完成,您的 MicroVM 映像就會進入 CREATED 狀態。您現在可以使用此 MicroVM 映像來建立 MicroVM,而且每個 MicroVM 映像都可以用來建立多個獨立的 MicroVMs。從 MicroVM 映像執行的 MicroVM 會直接從快照狀態繼續,提供快速的啟動時間。每個 MicroVM 映像都可以用來執行多個 MicroVMs,最高可達您帳戶的可用限制。
如需封裝程式碼和建立第一個 MicroVM 映像的step-by-step演練,請參閱 建立您的第一個 MicroVM。
MicroVM 大小
Lambda MicroVMs 使用基準峰值模型,無需為峰值活動調整每個運算環境的大小。您可以設定 MicroVM 的基準運算資源。在尖峰活動期間,您的 MicroVM 可以自動垂直擴展至基準的 4 倍。您在 MicroVM 執行時支付基準費率,並且只支付您主動使用超過基準的項目,每秒計費。
您可以在建立 MicroVM 映像時,透過 memory 參數設定基準。vCPU 會隨記憶體按比例擴展 (2 GB = 1 vCPU)。預設基準為 2 GB/1 vCPU。
下表列出可用的大小:
| 基準 | 峰值 | 最大磁碟空間 |
|---|---|---|
| 0.5 GB 記憶體、0.25 vCPU | 2 GB 記憶體、1 個 vCPU | 8 GB |
| 1 GB 記憶體、0.5 vCPU | 4 GB 記憶體、2 個 vCPU | 8 GB |
| 2 GB 記憶體、1 個 vCPU (預設) | 8 GB 記憶體、4 個 vCPU | 8 GB |
| 4 GB 記憶體、2 個 vCPU | 16 GB 記憶體、8 個 vCPU | 16 GB |
| 8 GB 記憶體、4 個 vCPU | 32 GB 記憶體、16 個 vCPU | 32 GB |
MicroVM 基礎映像
MicroVM 基礎映像是 MicroVM 映像的基礎。Lambda 發佈 MicroVM 基礎映像,提供執行 MicroVMs 所需的 Amazon Linux 2023 作業系統和服務元件。當您建立或更新 MicroVM 映像時,Lambda 會從此基礎映像啟動新的 MicroVM,並在此作業系統環境中執行您的Dockerfile指示。
Lambda 會定期發行服務受管 MicroVM 基礎映像的新版本,例如在套用安全修補程式時,以更新作業系統或服務元件。根據預設,建立/更新您自己的 MicroVM 映像時,會套用服務受管基礎映像的最新版本。對於疑難排解或偵錯,您可以在使用 base-image-version 參數建立您自己的 MicroVM 映像時,選擇性地覆寫服務受管型映像的版本。
基礎映像版本遵循棄用生命週期:
-
AVAILABLE– 目前,建議使用。 -
DEPRECATED(60 天) – 存在較新的版本。您仍然可以建置和執行 。 -
EXPIRING(30 天) – 無法建立新映像。現有的映像仍然可以執行。 -
EXPIRED– 無法建置或執行。在支援的版本上重建映像。 -
RECALLED– 因重大安全問題 (罕見) 而立即無法使用。
若要保持最新狀態,請監控 是否有棄用通知,並在發行新的基礎映像版本時重建 MicroVM 映像。
請注意,MicroVM 基礎映像與您在 Dockerfiles 中指定的容器基礎映像不同。雖然前者定義 MicroVMs的作業系統環境,後者則定義封裝應用程式以搭配 Lambda MicroVMs使用時要使用的基本容器映像。如需詳細資訊,請參閱「容器基礎映像」一節。
使用下列 APIs來探索可用的受管 MicroVM 基礎映像及其版本:
# List all managed MicroVM base images aws lambda-microvms list-managed-microvm-images # List the versions of a specific managed MicroVM base image aws lambda-microvms list-managed-microvm-image-versions \ --image-identifier arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1
MicroVM 映像建置掛鉤
Lambda 提供 MicroVM 映像建置掛鉤,可讓您驗證應用程式正確性,並在 MicroVM 映像建立期間最佳化效能。勾點會在 Lambda 取得用於初始化每個 MicroVM 的快照之前執行。每個勾點都是您的應用程式公開的 HTTP 端點,Lambda 會在建置期間呼叫該端點。透過回應這些請求,您可以控制和驗證 MicroVM 映像建置程序。Lambda 使用 HTTP 狀態碼來判斷勾點是否成功完成。
重要
如果您設定任何勾點,則必須指定應用程式接聽勾點請求的連接埠。
| 勾點 | 路徑 | 詳細資訊 | HTTP 狀態碼 | Timeout (逾時) |
|---|---|---|---|---|
| /ready | /aws/lambda-microvms/runtime/v1/ready |
在您的應用程式透過 ENTRYPOINT或 啟動之後,在 MicroVM 映像建置期間呼叫 CMD。表示您的應用程式已準備好進行快照的訊號。 |
HTTP 503:尚未就緒;Lambda 會重試直到逾時。HTTP 200:初始化完成;Lambda 拍攝快照。 | 1–3600 秒 (readyTimeoutInSeconds) |
| /驗證 | /aws/lambda-microvms/runtime/v1/validate |
在建置完成後,在從建立的映像啟動的新 MicroVM 上呼叫。確認應用程式在繼續時可正常運作。 | HTTP 503:驗證需要更多時間來完成;Lambda 會重試直到逾時。HTTP 200:已通過驗證。 | 1–3600 秒 (validateTimeoutInSeconds) |
重要
傳回 HTTP 503 時,請立即傳回,而不是在您等待時保持請求開啟。如果在請求保持開啟時逾時,Lambda 會結束建置。
注意
您也可以使用 /validate hook 來最佳化啟動時間。若要這樣做,請在驗證期間執行模擬承載。這可讓 Lambda 追蹤快照的存取區域,並在 MicroVM 啟動期間最佳化其擷取。
更新 MicroVM 映像
您可以呼叫 update-microvm-image API 來更新現有的 MicroVM 映像。每次更新都會觸發新的 MicroVM 映像版本建置。您通常會將 MicroVM 映像更新為:
-
部署新的應用程式程式碼 – 指向新的程式碼成品 (上傳至 Amazon S3 的新 zip),以運送應用程式的新版本。
-
移至較新的 MicroVM 基礎映像 – 變更 MicroVM 基礎映像 ARN 以升級至較新的 Lambda MicroVM 基礎映像版本。如需詳細資訊,請參閱 MicroVM 映像修補 和 MicroVM 基礎映像。
-
變更建置角色 – 當 Lambda 在建置變更期間需要的許可時,例如當您的程式碼成品移至不同的 Amazon S3 儲存貯體,或您開始從私有 ECR 儲存庫提取時,更新建置角色 ARN。
-
調整執行時間組態 – 變更勾點、環境變數或功能,以重新設定 MicroVM 映像的建置和執行方式。
-
更新描述 – 變更 MicroVM 映像描述,以記錄此版本中的變更。
下列 CLI 命令顯示如何更新 MicroVM 映像。每個觸發新建置的update-microvm-image呼叫都需要 --base-image-arn和 --build-role-arn 參數,即使您只變更程式碼成品 - 省略它們會導致 ValidationException:
aws lambda-microvms update-microvm-image \ --image-identifierarn:aws:lambda:us-east-1:123456789012:microvm-image:my-microvm-image\ --code-artifact uri=s3://my-bucket/deployments/app-v2.zip \ --base-image-arn arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1 \ --build-role-arn arn:aws:iam::123456789012:role/MicrovmBuildRole \ --description "Updated with v2 application code"
影像狀態和建置狀態
每次建立或更新 MicroVM 映像時,Lambda 都會從程式碼成品和基礎映像產生新版本。MicroVM 映像可以隨著時間有許多版本,而您從特定版本執行 MicroVMs。
三個獨立狀態會追蹤生命週期的不同層面:
-
映像狀態 – MicroVM 映像資源的整體生命週期 (建立、準備使用、更新、失敗或刪除)。
-
版本狀態 – 特定版本的建置進度 (待定、建置、成功或失敗)。檢查
stateReason或 CloudWatch 日誌 (/aws/lambda/microvms/<image-name>) 以取得失敗詳細資訊。 -
版本啟用 – 是否允許成功建置的版本執行 MicroVMs。Lambda
ACTIVE會自動將新版本設定為 ;您可以將版本設定為INACTIVE以停用它,而不將其刪除。
| State | 可能的值 | 由 控制的轉換 |
|---|---|---|
| 影像狀態 | CREATING, CREATED,
CREATION_FAILED, UPDATING,
UPDATED, UPDATE_FAILED,
DELETING, DELETED,
DELETION_FAILED |
Lambda (自動) |
| 版本狀態 | PENDING, IN_PROGRESS,
SUCCESSFUL, FAILED |
Lambda (自動) |
| 版本啟用 | ACTIVE, INACTIVE |
您 (update-microvm-image-version --state) |
若要從版本執行 MicroVM,映像狀態必須為 CREATED或 UPDATED,版本狀態必須為 SUCCESSFUL,且版本必須為 ACTIVE。
注意
這些狀態是獨立的。狀態的影像CREATED可以包含狀態為 的版本FAILED。
# De-activate a version aws lambda-microvms update-microvm-image-version \ --image-identifier my-image \ --image-version 1.0 \ --state INACTIVE
環境變數
環境變數是透過 environmentVariables 欄位在 MicroVM 映像建置時間設定 (最多 50 個變數)。這些會在快照建置程序期間注入容器。您可以在執行新的 MicroVM 時動態傳遞設定承載。如需進一步了解,請參閱執行 MicroVM 的一節。
MicroVM 映像修補
有新的 MicroVM 基礎映像可用時,您可以發出update-microvm-image呼叫來觸發具有最新修補程式的 MicroVM 映像組建:省略 base-image-version引數 (最新) 或使用最新版本指定 引數。
容器基礎映像
Lambda MicroVMs 會以容器的形式在 MicroVM 作業系統環境中執行您的應用程式。您可以使用 定義該容器Dockerfile,而 中的 FROM 指示會為您的應用程式Dockerfile設定容器基礎映像。
您可以從 Amazon Linux 2023 (public.ecr.aws/lambda/microvms:al2023-minimal) 的 Lambda 基礎容器映像開始,並在上面新增您的Dockerfile指示,或使用您自己的基礎容器映像。使用您自己的容器映像時,請驗證下列需求:
要求
-
容器基礎映像必須與目標 CPU 架構相容。
-
來自私有 AWS ECR 儲存庫的容器基礎映像需要建置角色具有
ecr:GetAuthorizationToken和ecr:BatchGetImage許可。 -
容器基礎映像必須以 Linux 作業系統為基礎。
-
容器基礎映像必須可從 Lambda 建置基礎設施 (相同 AWS 帳戶中的公有網際網路或 ECR 儲存庫) 存取。
-
容器基礎映像必須與快照相容,請參閱以下說明。
快照相容的基礎映像
隨著 Lambda MicroVMs 從預先初始化的快照啟動每個 MicroVM,基礎映像必須與快照相容。我們建議您在搭配 Lambda MicroVMs 使用您自己的基礎映像相容性考量時,檢閱 的 章節。
使用私有 ECR 映像
在 FROM的指示中參考您的私有 ECR 容器基礎映像Dockerfile:
FROM 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-base:latest WORKDIR /app COPY . . CMD ["./my-app"]
將下列許可新增至您的建置角色:
{ "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" }
作業系統功能
根據預設,Lambda MicroVMs會使用一組標準 Linux 功能執行。您可以在建立或更新 MicroVM 映像時使用 additionalOsCapabilities 欄位授予提升的 Linux 功能。唯一支援的值為 ["ALL"]。提升的功能可啟用掛載檔案系統、建立網路命名空間或執行 eBPF 程式等操作。功能會在 VM 隔離界限內套用,不會影響主機或其他 MicroVMs。
aws lambda-microvms create-microvm-image \ --name my-network-tool \ --code-artifact uri=s3://my-bucket/app.zip \ --base-image-arn arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1 \ --build-role-arn arn:aws:iam::123456789012:role/BuildRole \ --additional-os-capabilities '["ALL"]'