Informazioni su come Lambda gestisce gli aggiornamenti delle versioni di runtime - 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à.

Informazioni su come Lambda gestisce gli aggiornamenti delle versioni di runtime

Lambda mantiene aggiornato ogni runtime gestito con aggiornamenti di sicurezza, correzioni di bug, nuove funzionalità, miglioramenti delle prestazioni e supporto per versioni minori. Questi aggiornamenti di runtime vengono pubblicati come versioni di runtime. Lambda applica gli aggiornamenti di runtime alle funzioni migrando la funzione da una versione di runtime precedente a una nuova versione di runtime.

Per impostazione predefinita, Lambda applica automaticamente gli aggiornamenti di runtime alle funzioni che utilizzano runtime gestiti. Con gli aggiornamenti automatici del runtime, Lambda si assume l'onere operativo dell'applicazione di patch alle versioni di runtime. Per la maggior parte dei clienti, gli aggiornamenti automatici sono la scelta ideale. È possibile modificare questo comportamento predefinito configurando le impostazioni di gestione del runtime.

Lambda pubblica inoltre ogni nuova versione di runtime come immagine di container. Per aggiornare le versioni di runtime per le funzioni basate su container, è necessario creare una nuova immagine di container dall'immagine di base aggiornata e implementare nuovamente la funzione.

Ogni versione di runtime è associata a un numero di versione e a un nome della risorsa Amazon (ARN). I numeri di versione di runtime utilizzano uno schema numerico definito da Lambda indipendente dai numeri di versione utilizzati dal linguaggio di programmazione. I numeri di versione di runtime non sono sempre sequenziali. Ad esempio, la versione 42 potrebbe essere seguita dalla versione 45. L'ARN della versione di runtime è un identificatore univoco per ogni versione di runtime. È possibile visualizzare l'ARN della versione di runtime corrente della funzione nella console Lambda o nella riga INIT_START dei log della funzione.

Le versioni di runtime non devono essere confuse con gli identificatori di runtime. Ogni runtime ha un identificatore di runtime univoco, ad esempio python3.13 o nodejs22.x. Questi corrispondono a ciascuna delle principali versioni del linguaggio di programmazione. Le versioni di runtime descrivono la versione patch di un singolo runtime.

Nota

L'ARN per lo stesso numero di versione di runtime può variare tra le architetture Regioni AWS della CPU.

Compatibilità con le versioni precedenti

Lambda fornisce aggiornamenti di runtime compatibili con le versioni precedenti delle funzioni esistenti. Tuttavia, come nel caso delle patch software, ci sono rari casi in cui un aggiornamento del runtime può influire negativamente su una funzione esistente. Ad esempio, le patch di sicurezza possono evidenziare un problema di fondo di una funzione esistente che dipende dal comportamento precedente e non sicuro.

Quando si crea e si distribuisce una funzione, è importante capire come gestire le dipendenze per evitare potenziali incompatibilità con un futuro aggiornamento di runtime. Ad esempio, supponiamo che la funzione dipenda dal pacchetto A, che a sua volta dipende dal pacchetto B. Entrambi i pacchetti sono inclusi nel runtime Lambda (ad esempio, potrebbero far parte dell'SDK o delle sue dipendenze o parti delle librerie del sistema di runtime).

Considerare i seguenti scenari:

Implementazione Compatibile con le patch Motivo
  • Package A: utilizzo dal runtime

  • Package B: utilizzo dal runtime

I futuri aggiornamenti di runtime ai pacchetti A e B sono compatibili con le versioni precedenti.
  • Package A: nel pacchetto di distribuzione

  • Package B: nel pacchetto di distribuzione

La tua distribuzione ha la precedenza, quindi i futuri aggiornamenti di runtime ai pacchetti A e B non hanno alcun effetto.
  • Package A: nel pacchetto di distribuzione

  • Package B: utilizzo dal runtime

Sì*

I futuri aggiornamenti di runtime al pacchetto B sono compatibili con le versioni precedenti.

*Se A e B sono strettamente accoppiati, possono verificarsi problemi di compatibilità. Ad esempio, i botocore pacchetti boto3 and nell' AWS SDK per Python devono essere distribuiti insieme.

  • Package A: utilizzo dal runtime

  • Package B: nel pacchetto di distribuzione

No I futuri aggiornamenti di runtime del pacchetto A potrebbero richiedere una versione aggiornata del pacchetto B. Tuttavia, la versione distribuita del pacchetto B ha la precedenza e potrebbe non essere compatibile con la versione aggiornata del pacchetto A.

Per mantenere la compatibilità con i futuri aggiornamenti di runtime, segui queste best practice:

  • Quando possibile, impacchetta tutte le dipendenze: includi tutte le librerie richieste, incluso l' AWS SDK e le sue dipendenze, nel pacchetto di distribuzione. Ciò garantisce un set di componenti stabile e compatibile.

  • Usa SDKs con moderazione i pacchetti forniti in fase di esecuzione: affidati all'SDK fornito in fase di esecuzione solo quando non puoi includere pacchetti aggiuntivi (ad esempio, quando usi l'editor di codice della console Lambda o il codice in linea in un modello). AWS CloudFormation

  • Evita di sovrascrivere le librerie di sistema: non distribuire librerie di sistemi operativi personalizzate che potrebbero entrare in conflitto con i futuri aggiornamenti di runtime.

Modalità di aggiornamento del runtime

Lambda fornisce aggiornamenti di runtime compatibili con le versioni precedenti delle funzioni esistenti. Tuttavia, come nel caso delle patch software, ci sono rari casi in cui un aggiornamento del runtime può influire negativamente su una funzione esistente. Ad esempio, le patch di sicurezza possono evidenziare un problema di fondo di una funzione esistente che dipende dal comportamento precedente e non sicuro. I controlli di gestione del runtime Lambda aiutano a ridurre il rischio di impatto sui carichi di lavoro nel raro caso di incompatibilità delle versioni di runtime. Per ogni versione della funzione ($LATESTo versione pubblicata), è possibile scegliere una delle seguenti modalità di aggiornamento del runtime:

  • Auto (default) (Automatico [impostazione predefinita]): esegue automaticamente l'aggiornamento alla versione di runtime più recente e sicura tramite una Rollout della versione runtime in due fasi. Consigliamo questa modalità alla maggior parte dei clienti in modo da beneficiare sempre degli aggiornamenti di runtime.

  • Aggiornamento delle funzioni: aggiorna alla versione di runtime più recente e sicura quando aggiorni la funzione. Quando aggiorni la funzione, Lambda aggiorna il runtime della funzione alla versione più recente e sicura. Questo approccio sincronizza gli aggiornamenti del runtime con le implementazioni delle funzioni, dando all'utente il controllo su quando Lambda applica gli aggiornamenti del runtime. Con questa modalità, è possibile rilevare e mitigare tempestivamente le rare incompatibilità degli aggiornamenti del runtime. Quando si utilizza questa modalità, è necessario aggiornare regolarmente le funzioni in modo da mantenerne aggiornato il runtime.

  • Manuale: aggiorna manualmente la versione del runtime. Specifica una versione di runtime nella configurazione della funzione. La funzione utilizzerà questa versione di runtime a tempo indeterminato. Nel raro caso in cui una nuova versione di runtime non sia compatibile con una funzione esistente, ciò consente di ripristinare la funzione a una versione di runtime precedente. Si consiglia di non utilizzare la modalità Manual (Manuale) per cercare di ottenere la coerenza del runtime tra le varie implementazioni. Per ulteriori informazioni, consulta Rollback di una versione di runtime Lambda.

La responsabilità dell'applicazione degli aggiornamenti di runtime alle funzioni varia in base alla modalità di aggiornamento del runtime scelta. Per ulteriori informazioni, consulta Informazioni sul modello di responsabilità condivisa per la gestione del runtime Lambda.

Rollout della versione runtime in due fasi

Lambda introduce nuove versioni di runtime nel seguente ordine:

  1. Nella prima fase Lambda utilizza la nuova versione di runtime ogni volta che crei o aggiorni una funzione. Una funzione viene aggiornata quando si chiamano le operazioni UpdateFunctionCodeo l'UpdateFunctionConfigurationAPI.

  2. Nella seconda fase, Lambda aggiorna qualsiasi funzione che utilizza la modalità di aggiornamento del runtime Auto e che non è già stata aggiornata alla nuova versione di runtime.

La durata complessiva del processo di rollout varia in base a diversi fattori, tra cui la gravità di eventuali patch di sicurezza incluse nell'aggiornamento del runtime.

Se si stanno sviluppando e implementando attivamente le funzioni, è molto probabile che vengano acquistate nuove versioni di runtime durante la prima fase. Ciò sincronizza gli aggiornamenti del runtime con gli aggiornamenti delle funzioni. Nel raro caso in cui l'ultima versione di runtime abbia un impatto negativo sull'applicazione, questo approccio ti permette di intraprendere azioni correttive in maniera tempestiva. Le funzioni che non sono in fase di sviluppo attivo ricevono comunque i vantaggi operativi degli aggiornamenti automatici del runtime durante la seconda fase.

Questo approccio non influisce sulle funzioni impostate sulla modalità Function update (Aggiornamento della funzione) o Manual (Manuale). Le funzioni che utilizzano la modalità Function update (Aggiornamento della funzione) ricevono gli aggiornamenti di runtime più recenti solo quando vengono create o aggiornate. Le funzioni che utilizzano la modalità Manual (Manuale) non ricevono aggiornamenti di runtime.

Lambda pubblica nuove versioni di runtime in modo graduale e continuo nelle Regioni AWS. Se le funzioni sono impostate sulle modalità Auto (Aggiornamento automatico) o Function update (Aggiornamento della funzione), è possibile che le funzioni implementate nello stesso momento in regioni diverse o in momenti diversi nella stessa regione abbiano versioni di runtime diverse. I clienti che richiedono una coerenza delle versioni di runtime garantita nei propri ambienti devono utilizzare le immagini di container per implementare le proprie funzioni Lambda. La modalità Manuale è concepita come mitigazione temporanea per consentire il rollback della versione di runtime nel raro caso in cui una versione di runtime non sia compatibile con la tua funzione.