

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

# 使用快照
<a name="microvms-images-snapshots"></a>

當 AWS Lambda MicroVMs 建置 MicroVM 映像時，它會擷取完全初始化應用程式的 Firecracker 快照。此頁面說明快照包含的內容、如何處理共用相同快照MicroVMs 的唯一性，以及快照相容應用程式的最佳實務。

## 快照擷取的內容
<a name="microvms-snapshots-what-is-captured"></a>

Firecracker 快照會在映像建置完成時，從您的 MicroVM 擷取下列狀態：
+ **執行中程序的記憶體狀態** – `ENTRYPOINT`/ 啟動的所有程序`CMD`，包括背景精靈、cron 任務和子程序。
+ **磁碟狀態** – 根檔案系統，包括建置階段期間寫入的所有檔案 （已安裝套件、編譯的二進位檔、組態檔案）。
+ **網路連線和檔案描述項** – 任何初始化的網路連線、檔案控點、管道和其他描述項。

當您執行 MicroVM 時，Lambda 會從此快照還原它。您的應用程式會在 MicroVM 映像版本建置中斷的確切位置繼續。

## 相容性考量
<a name="microvms-images-snapshots-compatibility"></a>

由於從相同映像版本啟動的所有 MicroVMs都共用相同的初始狀態，因此在使用 Lambda MicroVMs建置應用程式時，請考慮下列事項：
+ **唯一性** – 如果您的程式碼在映像版本建置階段產生唯一內容 （唯一 IDs、秘密或虛擬隨機性熵），則該內容會跨所有從相同映像版本執行MicroVMs 共用。在新的 MicroVM 啟動後產生唯一內容，而不是在映像建置期間。使用 `/run` lifecycle hook 重設先前產生的唯一內容。
+ **網路連線** – 從映像版本執行 MicroVM 時，可能需要重新建立映像版本建置階段期間建立的連線。驗證連線狀態並視需要重新建立連線。在大多數情況下， AWS SDKs連線會自動重新建立。

## 使用快照處理唯一性
<a name="microvms-images-snapshots-uniqueness"></a>

所有 MicroVMs相同的映像執行，共用相同的初始狀態。若要在 MicroVMs之間維持唯一性：
+ 在 MicroVM 啟動後而非在映像版本建置期間產生唯一 IDs、秘密和隨機值。使用 `/run` lifecycle hook 重設任何唯一狀態。
+ 針對您的程式設計語言使用密碼編譯安全虛擬隨機數字產生器 (CSPRNGs)。確認您的語言標準密碼編譯程式庫從`/dev/random`裝置或`/dev/urandom`裝置接收其熵。這是 Java 11\+ (SecureRandom 程式庫）、Node.js (crypto.randomBytes 程式庫）、Python 3.12\+ (Secrets.SystemRandom 程式庫） 和 Dotnet8\+ (Cryptography.RandomNumberGenerator 程式庫） 等熱門程式設計語言的密碼編譯程式庫的預設行為。與 MicroVM 映像快照搭配使用時，從 讀取`/dev/random`或`/dev/urandom`維持隨機性的軟體。
+ 如果您的應用程式程式碼使用 OpenSSL，請使用 AWS提供的基礎容器映像`public.ecr.aws/lambda/microvms:al2023-minimal`來建置 MicroVM 映像。此映像包含與快照相容的 OpenSSL AWS修補版本。如果您想要使用自己的基礎映像搭配 OpenSSL，請使用 [Amazon Linux 2023 套件清單中](https://docs.aws.amazon.com/linux/al2023/release-notes/all-packages.html)列出的 OpenSSL 修補版本 (openssl-snapsafe-libs)。