View a markdown version of this page

Utilizzo degli snapshot - AWS Lambda

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo degli snapshot

Quando AWS Lambda MicroVMS crea un'immagine MicroVM, acquisisce un'istantanea Firecracker dell'applicazione completamente inizializzata. Questa pagina descrive cosa contiene un'istantanea, come gestire l'unicità tra le microVM che condividono la stessa istantanea e le best practice per le applicazioni compatibili con le istantanee.

Cosa cattura un'istantanea

Un'istantanea di Firecracker acquisisce il seguente stato dalla microVM nel momento in cui viene completata la creazione dell'immagine:

  • Stato della memoria dei processi in esecuzione: tutti i processi avviati daENTRYPOINT/CMD, inclusi i demoni in background, i cron job e i processi secondari.

  • Stato del disco: il filesystem principale che include tutti i file scritti durante la fase di compilazione (pacchetti installati, file binari compilati, file di configurazione).

  • Connessioni di rete e descrittori di file: eventuali connessioni di rete inizializzate, handle di file, pipe e altri descrittori.

Quando si esegue una microVM, Lambda la ripristina da questa istantanea. L'applicazione riprende esattamente da dove era stata interrotta la creazione della versione dell'immagine di MicroVM.

Considerazioni sulla compatibilità

Poiché tutte le MicroVM avviate dalla stessa versione di immagine condividono lo stesso stato iniziale, considera quanto segue quando crei applicazioni con Lambda MicroVMS:

  • Unicità: se il codice genera contenuti univoci durante la fase di creazione della versione dell'immagine (ID univoci, segreti o entropia per pseudorandomness), tale contenuto viene condiviso tra tutte le MicroVM eseguite dalla stessa versione dell'immagine. Genera contenuti unici dopo l'avvio di una nuova MicroVM, non durante la creazione dell'immagine. Usa l'hook del /run ciclo di vita per reimpostare i contenuti unici generati in precedenza.

  • Connessioni di rete: le connessioni stabilite durante la fase di creazione della versione dell'immagine potrebbero dover essere ristabilite quando una MicroVM viene eseguita dalla versione dell'immagine. Convalida lo stato della connessione e ristabilisci le connessioni se necessario. Nella maggior parte dei casi, le connessioni create dagli AWS SDK vengono ristabilite automaticamente.

Gestire l'unicità con le istantanee

Tutte le MicroVM eseguite dalla stessa immagine condividono lo stesso stato iniziale. Per mantenere l'unicità tra le MicroVMS:

  • Genera ID univoci, segreti e valori casuali dopo l'avvio di una microVM e non durante la creazione della versione dell'immagine. Usa l'hook del /run ciclo di vita per reimpostare qualsiasi stato univoco.

  • Usa generatori di numeri pseudocasuali (CSPRNG) crittograficamente sicuri per il tuo linguaggio di programmazione. Verifica che la libreria crittografica standard del tuo linguaggio riceva l'entropia dal dispositivo o dal dispositivo. /dev/random /dev/urandom Questo è il comportamento predefinito per le librerie crittografiche per i linguaggi di programmazione più diffusi come Java 11+ (SecureRandom libreria), (libreria Crypto.randomBytes), Node.js Python 3.12+ (libreria) e Dotnet8+ (libreria). Secrets.SystemRandom Cryptography.RandomNumberGenerator Software che legge o mantiene la casualità se utilizzato con istantanee di immagini MicroVM. /dev/random /dev/urandom

  • Se il codice dell'applicazione utilizza OpenSSL, utilizza l'immagine del contenitore di base AWS fornita da per creare l'immagine MicroVM. public.ecr.aws/lambda/microvms:al2023-minimal Questa immagine contiene una versione aggiornata di AWS OpenSSL compatibile con lo snapshotting. Se desideri utilizzare la tua immagine di base con OpenSSL, utilizza la versione patchata di OpenSSL (openssl-snapsafe-libs) elencata nell'elenco dei pacchetti di Amazon Linux 2023. https://docs.aws.amazon.com/linux/al2023/release-notes/all-packages.html