View a markdown version of this page

AWS Lambda MicroVMs 核心概念 - AWS Lambda

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

AWS Lambda MicroVMs 核心概念

AWS Lambda MicroVMs會使用您建立和管理的多種資源類型。此頁面說明每種資源類型、Lambda 如何將 MicroVM 映像建置為快照,以及生命週期說明 MicroVM 在執行時間轉換 – 使用 MicroVMs建置應用程式的基礎。

重要概念

MicroVM

MicroVM 是一種資源,代表單一租用戶、使用者工作階段或任務的隔離運算環境。每個 MicroVM 都會執行具有作業系統功能的 Amazon Linux 2023 作業系統,提供近乎即時的啟動和繼續。MicroVMs傳入 HTTPS 連線接收請求,並在閒置時暫停,保留記憶體和磁碟狀態。流量傳回時,暫停的 MicroVM 會繼續。

MicroVM 映像

MicroVM 映像是定義 MicroVM 應用程式環境的資源。當您建立映像時,Lambda 會將映像建置成快照,以啟用近乎即時的啟動 (請參閱Lambda 如何建置您的映像下文)。

若要建立 MicroVM 映像,您需要提供 zip 套件,其中包含上傳至 Amazon S3 的 Dockerfile和應用程式成品。您必須使用 Lambda 發佈的受管基礎映像作為基礎 – 使用 base-image-arn 參數指定它。您的 Dockerfile定義 Lambda 在受管基礎上建置的應用程式層。

MicroVM 映像已版本化。每個版本代表從特定程式碼成品和基礎映像產生的單一組建。版本會進行建置狀態 (PENDINGIN_PROGRESSSUCCESSFULFAILED),而成功的版本可以設定為 ACTIVEINACTIVE。如需映像狀態和管理的詳細資訊,請參閱 MicroVM 映像

網路連接器

網路連接器是控制流量如何到達 MicroVM 以及 MicroVM 如何到達外部服務的資源。您可以在執行時間將連接器與 MicroVM 建立關聯,以獨立設定傳入和傳出存取。

建置時間和執行期連接器可能會有所不同,讓您的 MicroVM 在映像建置期間與執行期之間到達不同的環境。

針對傳入連接埠存取 (使用 JWE 身分驗證)、殼層存取和公有網際網路輸出,使用 Lambda 提供的預設值。建立您自己的網路連接器,透過 VPC 路由傳出流量。

Lambda 如何建置您的映像

當您建立或更新 MicroVM 映像時,Lambda 會執行產生 Firecracker 快照的建置程序。此快照會擷取應用程式的完整初始化狀態,為從中執行MicroVMs 啟用近乎即時的啟動和恢復。

建置程序:

  1. Lambda 會使用您指定的受管基礎映像佈建新的 MicroVM。

  2. Lambda 會執行您的Dockerfile指示,以安裝相依性並設定您的環境。

  3. Lambda 使用 ENTRYPOINTCMD命令啟動您的應用程式。

  4. 如果您啟用/ready勾點,Lambda 會等待您的應用程式發出準備訊號 (HTTP 200)。

  5. Lambda 會擷取磁碟和記憶體狀態的快照,包括所有執行中的程序。

當您執行 MicroVM 時,Lambda 會從此快照還原它。您的應用程式會從其預先初始化狀態繼續,而無需重複啟動。

如果您的應用程式在建置期間產生唯一內容 (例如唯一 IDs、秘密或網路連線),則該內容會跨從相同映像版本執行的所有 MicroVMs共用。若要避免這種情況,請在 MicroVM 開始使用/run生命週期掛鉤後產生唯一內容。如需詳細資訊,請參閱 中的快照相容性一節MicroVM 映像

MicroVM 生命週期

在執行時間,MicroVM 會轉換下列階段:

  1. 執行 – 您呼叫 run-microvm。Lambda 會從映像快照還原 MicroVM、指派唯一 ID,以及建立端點。MicroVM 從 轉換PENDINGRUNNING

  2. 執行中 – 您的應用程式會透過其端點 URL 接收和處理請求。

  3. 暫停 – 在可設定的閒置期間 (或透過 suspend-microvm API) 之後,MicroVM 會轉換SUSPENDINGSUSPENDED。會保留記憶體和磁碟狀態。

  4. 繼續 – MicroVM 會在流量到達 (如果 autoResumeEnabled=true) 或您呼叫 RUNNING時,從SUSPENDED直接轉換回 resume-microvm

  5. 終止 – 當您呼叫 terminate-microvm或超過最長持續時間TERMINATED時,MicroVM 會轉換TERMINATING到 。

州 (States)

下表說明每個 MicroVM 狀態。這些狀態可讓您建置可靠的應用程式,並實作適當的錯誤處理。

State 說明
PENDING 正在佈建 MicroVM。正在配置資源,且正在載入快照。
RUNNING MicroVM 處於作用中狀態,並透過其端點 URL 接受流量。/run 勾點已完成。
SUSPENDING MicroVM 正在暫停。/suspend 勾點正在執行。正在檢查點磁碟和記憶體。
SUSPENDED MicroVM 已暫停。狀態會保留。不會產生運算費用。可以繼續或終止。
TERMINATING MicroVM 正在終止。/terminate 勾點正在執行。正在釋出資源。
TERMINATED MicroVM 已終止。這是一個終端狀態。MicroVM 無法繼續或重新啟動。

狀態轉換

下表顯示 MicroVM 狀態之間的有效轉換,以及每次轉換的觸發條件。

Initial state (初始狀態) 目標狀態 觸發條件
PENDING RUNNING 佈建完成,/run勾點成功。
RUNNING SUSPENDING 超過閒置持續時間或明確 suspend-microvm API 呼叫。
SUSPENDING SUSPENDED /suspend 勾點已完成,記憶體和磁碟狀態已檢查點。
SUSPENDED RUNNING 流量抵達 (autoResumeEnabled=true) 或明確的 resume-microvm API 呼叫。
RUNNING TERMINATING 明確 terminate-microvm API 呼叫,或maximumDurationInSeconds超過 。
SUSPENDED TERMINATING suspendedDurationSeconds 或明確 terminate-microvm API 呼叫。
TERMINATING TERMINATED /terminate 勾點已完成,所有資源都已釋放。
重要

如果您的/run勾點失敗或逾時,MicroVM 可能會直接轉換為 ,TERMINATING而不會到達 RUNNING。在掛鉤中實作逾時和錯誤處理,以避免靜音失敗。