View a markdown version of this page

MicroVM 映像 - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

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

  • 使用 ENTRYPOINTCMD指示啟動您的應用程式。

  • 等待初始化完成,由您的生命週期掛鉤發出訊號。

  • 擷取磁碟和記憶體狀態的快照。

一旦快照程序完成,您的 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-identifier arn: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,映像狀態必須為 CREATEDUPDATED,版本狀態必須為 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:GetAuthorizationTokenecr: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"]'