本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 映像已版本化。每個版本代表從特定程式碼成品和基礎映像產生的單一組建。版本會進行建置狀態 (
PENDING→IN_PROGRESS→SUCCESSFUL或FAILED),而成功的版本可以設定為ACTIVE或INACTIVE。如需映像狀態和管理的詳細資訊,請參閱 MicroVM 映像。 - 網路連接器
-
網路連接器是控制流量如何到達 MicroVM 以及 MicroVM 如何到達外部服務的資源。您可以在執行時間將連接器與 MicroVM 建立關聯,以獨立設定傳入和傳出存取。
建置時間和執行期連接器可能會有所不同,讓您的 MicroVM 在映像建置期間與執行期之間到達不同的環境。
針對傳入連接埠存取 (使用 JWE 身分驗證)、殼層存取和公有網際網路輸出,使用 Lambda 提供的預設值。建立您自己的網路連接器,透過 VPC 路由傳出流量。
Lambda 如何建置您的映像
當您建立或更新 MicroVM 映像時,Lambda 會執行產生 Firecracker 快照的建置程序。此快照會擷取應用程式的完整初始化狀態,為從中執行MicroVMs 啟用近乎即時的啟動和恢復。
建置程序:
-
Lambda 會使用您指定的受管基礎映像佈建新的 MicroVM。
-
Lambda 會執行您的
Dockerfile指示,以安裝相依性並設定您的環境。 -
Lambda 使用
ENTRYPOINT或CMD命令啟動您的應用程式。 -
如果您啟用
/ready勾點,Lambda 會等待您的應用程式發出準備訊號 (HTTP 200)。 -
Lambda 會擷取磁碟和記憶體狀態的快照,包括所有執行中的程序。
當您執行 MicroVM 時,Lambda 會從此快照還原它。您的應用程式會從其預先初始化狀態繼續,而無需重複啟動。
如果您的應用程式在建置期間產生唯一內容 (例如唯一 IDs、秘密或網路連線),則該內容會跨從相同映像版本執行的所有 MicroVMs共用。若要避免這種情況,請在 MicroVM 開始使用/run生命週期掛鉤後產生唯一內容。如需詳細資訊,請參閱 中的快照相容性一節MicroVM 映像。
MicroVM 生命週期
在執行時間,MicroVM 會轉換下列階段:
-
執行 – 您呼叫
run-microvm。Lambda 會從映像快照還原 MicroVM、指派唯一 ID,以及建立端點。MicroVM 從 轉換PENDING到RUNNING。 -
執行中 – 您的應用程式會透過其端點 URL 接收和處理請求。
-
暫停 – 在可設定的閒置期間 (或透過
suspend-microvmAPI) 之後,MicroVM 會轉換SUSPENDING到SUSPENDED。會保留記憶體和磁碟狀態。 -
繼續 – MicroVM 會在流量到達 (如果
autoResumeEnabled=true) 或您呼叫RUNNING時,從SUSPENDED直接轉換回resume-microvm。 -
終止 – 當您呼叫
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。在掛鉤中實作逾時和錯誤處理,以避免靜音失敗。