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à.
Immagini MicroVM
Questa sezione descrive come creare, configurare, aggiornare e gestire le immagini MicroVM.
Un'immagine MicroVM è una risorsa che definisce il file system e l'ambiente applicativo di una MicroVM. L'immagine MicroVM include l'ambiente di runtime, il codice dell'applicazione e i programmi di supporto come i processi in background e gli agenti di osservabilità. Per creare un'immagine MicroVM, fornisci un pacchetto zip contenente gli artefatti dell'applicazione, che caricherai su Amazon S3. Dockerfile
Tu Dockerfile definisci come viene impacchettata la tua applicazione. Lambda crea l'immagine del contenitore dell'applicazione eseguendola Dockerfile su un ambiente del sistema operativo fornito da un'immagine di base Lambda-managed MicroVM. Le immagini di base MicroVM sono descritte di seguito, nella sezione intitolata —. Immagini base MicroVM
È possibile aggiornare le immagini di base MicroVM per aggiornare il codice dell'applicazione o la configurazione del MicroVMS. Ogni aggiornamento attivato crea una nuova versione dell'immagine MicroVM.
Come Lambda crea un'immagine MicroVM
Quando si crea un'immagine MicroVM, Lambda:
-
Recupera gli artefatti confezionati da Amazon S3.
-
Avvia una nuova MicroVM dall'immagine di base. Lambda-managed
-
Esegue le istruzioni nel tuo.
Dockerfile -
Avvia l'applicazione utilizzando l'istruzione
ENTRYPOINToCMD. -
Attende il completamento dell'inizializzazione, segnalato dall'hook del ciclo di vita.
-
Acquisisce un'istantanea del disco e dello stato della memoria.
Una volta completato il processo di istantanea, l'immagine MicroVM entra nello stato. CREATED È ora possibile utilizzare questa immagine MicroVM per creare una MicroVM e ogni immagine MicroVM può essere utilizzata per creare più MicroVM indipendenti. Una microVM eseguita dall'immagine MicroVM riprende direttamente dallo stato istantaneo, garantendo tempi di avvio rapidi. Ogni immagine MicroVM può essere utilizzata per eseguire più MicroVM, fino al limite disponibile per il tuo account.
Per una procedura dettagliata sulla creazione del codice e sulla creazione della prima immagine MicroVM, consulta. Crea la tua prima microVM
Dimensionamento delle microVM
Lambda MicroVMS utilizza un modello baseline-peak che elimina la necessità di dimensionare correttamente ogni ambiente di elaborazione per i picchi di attività. Configura le risorse di elaborazione di base per la tua MicroVM. Durante i picchi di attività, la tua microVM può scalare automaticamente verticalmente fino a 4 volte la linea di base. Paghi la tariffa di base mentre la tua MicroVM è in funzione e paghi solo ciò che utilizzi attivamente al di sopra della linea di base, fatturata al secondo.
La linea di base viene impostata utilizzando il memory parametro durante la creazione dell'immagine microVM. La vCPU si ridimensiona proporzionalmente alla memoria (2 GB = 1 vCPU). La linea di base predefinita è 2 GB/1 vCPU.
La tabella seguente elenca le dimensioni disponibili:
| Valore di base | Picco | Spazio massimo su disco |
|---|---|---|
| 0,5 GB di memoria, 0,25 vCPU | 2 GB di memoria, 1 vCPU | 8 GB |
| 1 GB di memoria, 0,5 vCPU | 4 GB di memoria, 2 vCPU | 8 GB |
| 2 GB di memoria, 1 vCPU (impostazione predefinita) | 8 GB di memoria, 4 vCPU | 8 GB |
| 4 GB di memoria, 2 vCPU | 16 GB di memoria, 8 vCPU | 16 GB |
| 8 GB di memoria, 4 vCPU | 32 GB di memoria, 16 vCPU | 32 GB |
Immagini base MicroVM
Un'immagine di base MicroVM funge da base per le immagini MicroVM. Lambda pubblica un'immagine di base MicroVM che fornisce il sistema operativo Amazon Linux 2023 e i componenti di servizio necessari per eseguire MicroVMS. Quando crei o aggiorni un'immagine MicroVM, Lambda avvia una nuova MicroVM da questa immagine di base ed esegue le istruzioni all'interno di questo ambiente del sistema operativo. Dockerfile
Lambda rilascia periodicamente nuove versioni delle immagini di base MicroVM gestite dai servizi, ad esempio quando si applicano le patch di sicurezza, per aggiornare il sistema operativo o i componenti del servizio. Per impostazione predefinita, la versione più recente di un'immagine di base gestita dal servizio si applica quando si utilizzano le proprie immagini MicroVM. creating/updating Per la risoluzione dei problemi o il debug, puoi opzionalmente sovrascrivere la versione delle immagini basate su service managed quando crei la tua immagine MicroVM utilizzando il parametro. base-image-version
Le versioni delle immagini di base seguono un ciclo di vita obsoleto:
-
AVAILABLE— Attuale, consigliato per l'uso. -
DEPRECATED(60 giorni): esiste una versione più recente. Puoi ancora compilare ed eseguire. -
EXPIRING(30 giorni): impossibile creare nuove immagini. Le immagini esistenti possono ancora essere eseguite. -
EXPIRED— Impossibile creare o eseguire. Ricostruisci l'immagine su una versione supportata. -
RECALLED— Immediatamente non disponibile a causa di problemi di sicurezza critici (rari).
Per rimanere aggiornato, monitora le notifiche di obsolescenza e ricostruisci le tue immagini MicroVM quando viene rilasciata una nuova versione dell'immagine di base.
Nota che l'immagine di base di MicroVM è distinta dall'immagine di base del contenitore che specifichi nei tuoi Dockerfile. Mentre la prima definisce l'ambiente del sistema operativo per la microVMS, la seconda definisce l'immagine del contenitore di base da utilizzare per impacchettare l'applicazione da utilizzare con Lambda MicroVMS. Per ulteriori informazioni, consulta la sezione su Immagini di base del contenitore.
Utilizza le seguenti API per scoprire le immagini di base MicroVM gestite disponibili e le relative versioni:
# 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
ganci per la creazione di immagini MicroVM
Lambda fornisce hook per la creazione di immagini MicroVM che consentono di verificare la correttezza delle applicazioni e ottimizzare le prestazioni durante la creazione di immagini MicroVM. Gli hook vengono eseguiti prima che Lambda acquisisca l'istantanea utilizzata per inizializzare ogni MicroVM. Ogni hook è un endpoint HTTP che l'applicazione espone e che Lambda chiama durante la compilazione. Rispondendo a queste richieste, controlli e convalidi il processo di creazione dell'immagine MicroVM. Lambda utilizza i codici di stato HTTP per determinare se gli hook sono stati completati correttamente.
Importante
Se configuri degli hook, devi specificare la porta su cui l'applicazione è in ascolto per le richieste di hook.
| Hook | Path | Informazioni | Codici di stato HTTP | Timeout |
|---|---|---|---|---|
| /pronto | /aws/lambda-microvms/runtime/v1/ready |
Richiamato durante la creazione dell'immagine MicroVM, dopo l'avvio dell'applicazione tramite o. ENTRYPOINT CMD Segnala che l'applicazione è pronta per essere scattata. |
HTTP 503: non ancora pronto; Lambda riprova fino al timeout. HTTP 200: inizializzazione completata; Lambda scatta l'istantanea. | 1—3600 secondi () readyTimeoutInSeconds |
| /convalida | /aws/lambda-microvms/runtime/v1/validate |
Richiamato dopo il completamento della compilazione, su una nuova MicroVM è stata avviata dall'immagine creata. Conferma che l'applicazione funziona correttamente quando viene ripresa. | HTTP 503: la convalida richiede più tempo per essere completata; Lambda riprova fino al timeout. HTTP 200: convalida superata. | 1—3600 secondi () validateTimeoutInSeconds |
Importante
Quando restituisci HTTP 503, restituiscilo immediatamente anziché tenere aperta la richiesta mentre aspetti. Se il timeout scade mentre una richiesta è mantenuta aperta, Lambda termina la compilazione.
Nota
Puoi anche utilizzare l'hook /validate per ottimizzare i tempi di avvio. Per farlo, esegui dei payload fittizi durante la convalida. Ciò consente a Lambda di tracciare le aree a cui si accede dello snapshot e ottimizzarne il recupero durante l'avvio di MicroVM.
Aggiornamento di un'immagine MicroVM
È possibile aggiornare un'immagine MicroVM esistente chiamando l'API. update-microvm-image Ogni aggiornamento attiva una nuova versione dell'immagine MicroVM. In genere si aggiorna un'immagine MicroVM per:
-
Implementa un nuovo codice applicativo: indica un nuovo elemento di codice (un nuovo file zip caricato su Amazon S3) per inviare una nuova versione dell'applicazione.
-
Passa a un'immagine base MicroVM più recente: modifica l'ARN dell'immagine di base MicroVM per eseguire l'upgrade alle versioni più recenti dell'immagine base Lambda MicroVM. Per ulteriori informazioni, consulta Applicazione di patch alle immagini MicroVM e Immagini base MicroVM.
-
Modifica del ruolo di compilazione: aggiorna l'ARN del ruolo di compilazione quando vengono modificate le autorizzazioni necessarie a Lambda durante la compilazione, ad esempio quando l'artefatto del codice si sposta in un altro bucket Amazon S3 o inizi a eseguire l'estrazione da un repository ECR privato.
-
Modifica la configurazione del runtime: modifica gli hook, le variabili di ambiente o le funzionalità per riconfigurare il modo in cui l'immagine MicroVM viene creata ed eseguita.
-
Aggiorna la descrizione: modifica la descrizione dell'immagine MicroVM per registrare cosa è cambiato in questa versione.
Il seguente comando CLI mostra come aggiornare un'immagine MicroVM. I --build-role-arn parametri --base-image-arn and sono obbligatori per ogni update-microvm-image chiamata che attiva una nuova build, anche quando si modifica solo l'artefatto del codice: la loro omissione comporta: ValidationException
aws lambda-microvms update-microvm-image \ --image-identifierarn: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"
Stati dell'immagine e stati di costruzione
Ogni volta che crei o aggiorni un'immagine MicroVM, Lambda produce una nuova versione creata a partire dall'artefatto del codice e dall'immagine di base. Un'immagine MicroVM può avere molte versioni nel tempo ed è possibile eseguire MicroVMS a partire da una versione specifica.
Tre stati indipendenti tengono traccia di diversi aspetti del ciclo di vita:
-
Stato dell'immagine: il ciclo di vita complessivo della risorsa di immagine MicroVM (in fase di creazione, pronta per l'uso, in fase di aggiornamento, errore o eliminazione).
-
Stato della versione: l'avanzamento della compilazione di una versione specifica (in sospeso, in fase di compilazione, completata o non riuscita). Controlla
stateReasono CloudWatch logs (/aws/lambda/microvms/<image-name>) per i dettagli sugli errori. -
Attivazione della versione: se una versione creata correttamente è autorizzata a eseguire MicroVMS. Lambda imposta
ACTIVEautomaticamente le nuove versioni; puoi impostare una versione su per disabilitarla senzaINACTIVEeliminarla.
| Stato | Valori possibili | Transizione controllata da |
|---|---|---|
| Stato dell'immagine | CREATING, CREATED,
CREATION_FAILED, UPDATING,
UPDATED, UPDATE_FAILED,
DELETING, DELETED,
DELETION_FAILED |
Lambda (automatico) |
| Stato della versione | PENDING, IN_PROGRESS,
SUCCESSFUL, FAILED |
Lambda (automatico) |
| Attivazione della versione | ACTIVE, INACTIVE |
Tu (update-microvm-image-version --state) |
Per eseguire una MicroVM da una versione, lo stato dell'immagine deve essere CREATED oUPDATED, lo stato della versione deve essere SUCCESSFUL e la versione deve essere. ACTIVE
Nota
Questi stati sono indipendenti. Un'immagine nello CREATED stato può contenere una versione il cui stato èFAILED.
# De-activate a version aws lambda-microvms update-microvm-image-version \ --image-identifier my-image \ --image-version 1.0 \ --state INACTIVE
Variabili di ambiente
Le variabili di ambiente sono impostate al momento della creazione dell'immagine MicroVM tramite il environmentVariables campo (massimo 50 variabili). Queste vengono inserite nel contenitore durante il processo di creazione dell'istantanea. È possibile trasferire payload impostati dinamicamente quando si esegue una nuova MicroVM. Per ulteriori informazioni, consulta la sezione sull'esecuzione della MicroVM.
Applicazione di patch alle immagini MicroVM
Quando è disponibile una nuova immagine di base MicroVM, puoi inviare una update-microvm-image chiamata per attivare una build dell'immagine MicroVM con le patch più recenti, omettendo l'base-image-versionargomento (per l'ultima) o specificando l'argomento con la versione più recente.
Immagini di base del contenitore
Lambda MicroVMS esegue l'applicazione come contenitore all'interno dell'ambiente del sistema operativo MicroVM. Definisci quel contenitore con la tua e l'FROMistruzione in Dockerfile essa contenuta Dockerfile imposta l'immagine di base del contenitore per la tua applicazione.
Puoi iniziare con l'immagine del contenitore di base Lambda per Amazon Linux 2023 (public.ecr.aws/lambda/microvms:al2023-minimal) e aggiungere Dockerfile le istruzioni sopra, oppure utilizzare la tua immagine del contenitore di base. Quando usi le tue immagini del contenitore, convalida i seguenti requisiti:
Requisiti
-
L'immagine di base del contenitore deve essere compatibile con l'architettura della CPU di destinazione.
-
Le immagini di base del contenitore provenienti da repository AWS ECR privati richiedono il ruolo di compilazione
ecr:GetAuthorizationTokeneecr:BatchGetImagele autorizzazioni. -
L'immagine di base del contenitore deve essere basata su un sistema operativo Linux.
-
Le immagini di base del contenitore devono essere accessibili dall'infrastruttura di compilazione Lambda (Internet pubblico o un repository ECR nello stesso AWS account).
-
Le immagini di base del contenitore devono essere compatibili con le istantanee, vedi le istruzioni riportate di seguito.
Snapshot-compatible immagini di base
Poiché Lambda MicroVMS avvia ogni microVM da un'istantanea preinizializzata, le immagini di base devono essere compatibili con le istantanee. Ti consigliamo di consultare la sezione dedicata all'utilizzo delle tue immagini di base con Lambda Considerazioni sulla compatibilità MicroVMS.
Utilizzo di un'immagine ECR privata
Fai riferimento all'immagine di base del tuo contenitore ECR privato nelle FROM istruzioni di: Dockerfile
FROM 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-base:latest WORKDIR /app COPY . . CMD ["./my-app"]
Aggiungi le seguenti autorizzazioni al tuo ruolo di compilazione:
{ "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" }
Funzionalità del sistema operativo
Per impostazione predefinita, Lambda MicroVMS viene eseguito con un set standard di funzionalità Linux. È possibile concedere funzionalità Linux elevate utilizzando il additionalOsCapabilities campo durante la creazione o l'aggiornamento di un'immagine MicroVM. L’unico valore supportato è ["ALL"]. Le funzionalità elevate consentono operazioni come il montaggio di file system, la creazione di namespace di rete o l'esecuzione di programmi eBPF. Le funzionalità vengono applicate entro il limite di isolamento delle VM e non influiscono sull'host o su altre microVM.
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"]'