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 filesystem e l'ambiente applicativo di una MicroVM. L'immagine MicroVM include l'ambiente di runtime, il codice dell'applicazione e programmi di supporto come processi in background e agenti di osservabilità. Per creare un'immagine MicroVM, fornisci un pacchetto zip che contiene a Dockerfile e gli artefatti dell'applicazione, che carichi su Amazon S3. Your Dockerfile definisce il modo in cui l'applicazione è pacchettizzata. Lambda crea l'immagine del contenitore dell'applicazione eseguendola Dockerfile su un ambiente di sistema operativo fornito da un'immagine di base Lambda-managed MicroVM. Le immagini di base MicroVM sono descritte di seguito, nella sezione intitolata —. Immagini di base MicroVM
È possibile aggiornare le immagini di base MicroVM per aggiornare il codice dell'applicazione o la configurazione per le microVMS. Ogni aggiornamento attivato crea una nuova versione dell'immagine MicroVM.
Come Lambda crea un'immagine MicroVM
Quando crei un'immagine MicroVM, Lambda:
-
Recupera gli artefatti impacchettati da Amazon S3.
-
Avvia una nuova MicroVM dall'immagine di base. Lambda-managed
-
Esegue le istruzioni contenute nel tuo.
Dockerfile -
Avvia l'applicazione utilizzando l'istruzione
ENTRYPOINTorCMD. -
Attende il completamento dell'inizializzazione, segnalato dal tuo Lifecycle Hook.
-
Acquisisce un'istantanea dello stato del disco e 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. Un'esecuzione MicroVM dall'immagine MicroVM riprende direttamente dallo stato di snapshot, garantendo tempi di avvio rapidi. Ogni immagine MicroVM può essere utilizzata per eseguire più microVM, fino al limite disponibile per l'account.
Per una procedura dettagliata su come impacchettare il codice e creare la 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 le attività di picco. Puoi configurare le risorse di elaborazione di base per la tua microVM. Durante i picchi di attività, la 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 per ciò che utilizzi attivamente al di sopra della linea di base, fatturato al secondo.
La linea di base viene impostata tramite 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:
| Linea 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 di 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 si crea o si aggiorna un'immagine MicroVM, Lambda avvia una nuova MicroVM da questa immagine di base ed esegue Dockerfile le istruzioni all'interno di questo ambiente del sistema operativo.
Lambda rilascia periodicamente nuove versioni di immagini di base MicroVM gestite dai servizi, ad esempio quando si applicano 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 dai servizi si applica quando si utilizzano immagini MicroVM proprie. creating/updating Per la risoluzione dei problemi o il debug, è possibile facoltativamente sovrascrivere la versione delle immagini basate sui servizi quando si crea un'immagine MicroVM personalizzata 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 creare 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 immagini MicroVM quando viene rilasciata una nuova versione dell'immagine di base.
Tieni presente che l'immagine di base MicroVM è distinta dall'immagine di base del contenitore che specifichi nei tuoi Dockerfile. Mentre la prima definisce l'ambiente del sistema operativo per le microVMS, la seconda definisce l'immagine del contenitore di base da utilizzare per il pacchetto dell'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
Hook 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, puoi controllare e convalidare 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 ascolta le richieste di hook.
| Gancio | Path | Informazioni | HTTP Status Codes (Codici di stato HTTP) | Timeout |
|---|---|---|---|---|
| /pronto | /aws/lambda-microvms/runtime/v1/ready |
Chiamato durante la creazione dell'immagine MicroVM, dopo l'avvio dell'applicazione tramite o. ENTRYPOINT CMD Segnala che l'applicazione è pronta per essere scattata un'istantanea. |
HTTP 503: non ancora pronto; Lambda riprova fino al timeout. HTTP 200: inizializzazione completata; Lambda scatta l'istantanea. | 1—3600 secondi () readyTimeoutInSeconds |
| /convalidare | /aws/lambda-microvms/runtime/v1/validate |
Chiamato dopo il completamento della build, su una nuova MicroVM 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 durante l'attesa. Se il timeout scade mentre una richiesta è tenuta aperta, Lambda termina la compilazione.
Nota
Puoi anche usare l'hook /validate per ottimizzare i tempi di avvio. A tale scopo, esegui payload fittizi durante la convalida. Ciò consente a Lambda di tenere traccia delle aree a cui si accede dello snapshot e di 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 la creazione di una nuova versione dell'immagine MicroVM. In genere si aggiorna un'immagine MicroVM per:
-
Implementa un nuovo codice applicativo: punta su un nuovo elemento di codice (un nuovo file zip caricato su Amazon S3) per spedire una nuova versione della tua applicazione.
-
Passa a un'immagine di base MicroVM più recente: modifica l'ARN dell'immagine di base MicroVM per eseguire l'aggiornamento alle versioni più recenti dell'immagine di base Lambda MicroVM. Per ulteriori informazioni, consulta Applicazione di patch alle immagini MicroVM e Immagini di base MicroVM.
-
Modifica il ruolo di compilazione: aggiorna l'ARN del ruolo di compilazione quando le autorizzazioni necessarie a Lambda durante la compilazione cambiano, ad esempio quando il tuo elemento di codice si sposta in un altro bucket Amazon S3 o inizi a estrarre da un repository ECR privato.
-
Modifica la configurazione di 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 le modifiche apportate 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'elemento del codice: omettendoli si ottiene un: 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 compilazione
Ogni volta che crei o aggiorni un'immagine MicroVM, Lambda produce una nuova versione creata dal tuo artefatto di codice e dall'immagine di base. Un'immagine MicroVM può avere molte versioni nel tempo e si esegue MicroVMS 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, non riuscita o in fase di eliminazione).
-
Stato della versione: lo stato di avanzamento della compilazione di una versione specifica (in sospeso, in fase di compilazione, riuscita o non riuscita). Controlla
stateReasono CloudWatch registra (/aws/lambda/microvms/<image-name>) per i dettagli sull'errore. -
Attivazione della versione: indica se una versione creata correttamente è autorizzata a eseguire microVMS. Lambda imposta
ACTIVEautomaticamente le nuove versioni; puoi impostare una versione perINACTIVEdisabilitarla senza eliminarla.
| Stato | Valori possibili | Transizione controllata da |
|---|---|---|
| Stato dell'immagine | CREATING, CREATED,
CREATION_FAILED, UPDATING,
UPDATED, UPDATE_FAILED,
DELETING, DELETED,
DELETION_FAILED |
Lambda (automatica) |
| Stato della versione | PENDING, IN_PROGRESS,
SUCCESSFUL, FAILED |
Lambda (automatica) |
| 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 vengono impostate al momento della creazione dell'immagine MicroVM tramite il environmentVariables campo (massimo 50 variabili). Queste vengono iniettate nel contenitore durante il processo di creazione dell'istantanea. È possibile passare payload impostati dinamicamente durante l'esecuzione di una nuova microVM. Per ulteriori informazioni, consulta la sezione sull'esecuzione di microVM.
Applicazione di patch alle immagini MicroVM
Quando è disponibile una nuova immagine di base MicroVM, è possibile effettuare una update-microvm-image chiamata per attivare la creazione di un'immagine MicroVM con le patch più recenti, omettendo l'base-image-versionargomento (per la versione più recente) 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 il tuo Dockerfile e le FROM istruzioni in esso contenute Dockerfile impostano l'immagine di base del contenitore per l'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 tue istruzioni oppure utilizzare la tua immagine del contenitore di base. Quando utilizzi immagini di container personalizzate, 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 necessarie. -
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 build Lambda (Internet pubblico o un repository ECR nello stesso account). AWS
-
Le immagini di base del contenitore devono essere compatibili con le istantanee, consulta 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 relativa all'Considerazioni sulla compatibilitàutilizzo delle tue immagini di base con Lambda MicroVMS.
Utilizzo di un'immagine ECR privata
Fai riferimento all'immagine base del tuo contenitore ECR privato nelle FROM istruzioni del tuo: 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, le microVM Lambda vengono eseguite 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 all'interno del 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"]'