View a markdown version of this page

Concetti principali - 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à.

Concetti principali

La comprensione dei seguenti concetti fondamentali consente di distribuire e gestire le applicazioni Web in modo efficace. Questa pagina descrive il modello di risorse di una funzione Web, gli stati del ciclo di vita di ogni risorsa e il modo in cui Lambda gestisce le richieste HTTP in entrata.

Il modello di risorse definisce la struttura di una funzione Web. Una funzione Web è la risorsa di primo livello. Contiene revisioni (istantanee immutabili del codice e della configurazione) ed endpoint (punti di accesso alla rete che indirizzano il traffico HTTP verso le revisioni).

Gli stati di revisione e gli stati degli endpoint tengono traccia dell'avanzamento di tali risorse man mano che Lambda le crea, distribuisce ed elimina. Il monitoraggio di questi stati indica quando Lambda ha terminato la creazione, la distribuzione o l'eliminazione di una risorsa e aiuta a diagnosticare gli errori.

Gli ambienti di esecuzione sono le istanze di calcolo isolate in cui vengono eseguiti il server Web e l'applicazione. Ogni ambiente di esecuzione gestisce più richieste HTTP simultanee. Lambda crea e rimuove automaticamente gli ambienti in base alla configurazione e al traffico di Web Function.

Le seguenti sezioni forniscono informazioni dettagliate su ogni concetto fondamentale.

Modello di risorse

Una funzione Web Lambda è composta da tre tipi di risorse in una gerarchia padre-figlio. La funzione Web è la risorsa di primo livello. Le revisioni e gli endpoint sono risorse secondarie della funzione Web. La distribuzione del codice o la modifica della configurazione di revisione crea una nuova revisione. Il diagramma seguente mostra una funzione Web i cui endpoint indirizzano il traffico verso le relative revisioni.

Una funzione Web contiene endpoint e revisioni. L'endpoint prod invia il 90 percento del traffico alla revisione 1 e il 10 percento alla revisione 2. L'endpoint di staging invia tutto il traffico alla revisione 2.
Funzione Web

La risorsa di primo livello che rappresenta la tua applicazione web. Una funzione Web ha un nome, un ARN e il proprio stato del ciclo di vita (In sospeso, Attivo, Non riuscito o Eliminazione). Può contenere revisioni ed endpoint; tutte le revisioni e gli endpoint appartengono a un'unica funzione Web principale.

Revisione

Un'istantanea immutabile del codice e della configurazione dell'applicazione. Si crea una nuova revisione ogni volta che si modifica il codice o la configurazione di revisione, ad esempio il timeout della richiesta, il numero massimo di richieste simultanee per ambiente di esecuzione o le variabili di ambiente. Poiché le revisioni sono immutabili, puoi sempre ripristinare una versione precedente dell'applicazione indirizzando il traffico verso una revisione precedente. È possibile distribuire il traffico tra due revisioni contemporaneamente per le distribuzioni canarie o blu-verdi.

Endpoint

Un punto di ingresso alla rete che indirizza il traffico HTTP verso le tue revisioni. Ogni endpoint ha un nome di dominio univoco con TLS, un tipo di autenticazione che controlla l'accesso e impostazioni di ridimensionamento che definiscono la capacità. Quando si crea un endpoint, si sceglie il tipo di endpoint, che ne imposta l'ambito geografico. HomeRegionserve solo il traffico proveniente dalla regione d'origine. MultiRegionserve il traffico proveniente da diverse regioni all'interno di un unico dominio globale, che indirizza ogni richiesta verso una regione in base alla latenza di rete, nel miglior modo possibile. PerRegionserve il traffico proveniente da diverse regioni, ognuna con il proprio dominio regionale, e tu controlli il modo in cui i clienti raggiungono ciascuna regione. Una funzione Web può avere più endpoint, ciascuno con una configurazione indipendente. È possibile configurare i pesi di revisione su un endpoint per indirizzare il traffico verso una o due revisioni attive.

Stati di revisione

Una revisione passa attraverso i seguenti stati durante il suo ciclo di vita. Puoi controllare lo stato attuale chiamando GetWebFunctionRevision o visualizzando i dettagli della revisione nella console Lambda.

Stato Description Cosa succede dopo
Pending (In attesa) Lambda sta creando la revisione. Ciò include il download del codice da Amazon S3 e la convalida della configurazione. La revisione passa a Attiva quando la creazione ha esito positivo o a Non riuscita se si verifica un errore.
Attivo La revisione è stata creata correttamente ed è pronta per essere inserita in un endpoint. La revisione rimane attiva finché non la elimini, Lambda la elimina durante la pulizia automatica della revisione (Limiti di revisione e pulizia automaticavedi) o non rimuovi l'accesso al codice sorgente. Se Lambda perde l'accesso al codice, ad esempio perché la versione dell'oggetto Amazon S3 di riferimento è stata eliminata, la revisione passa a Failed (vedi). Ciclo di vita dell'oggetto
Non riuscito Lambda non è riuscita a creare la revisione. I problemi rilevati da Lambda quando invii la richiesta non producono una revisione non riuscita. Ad esempio, se la AWS KMS chiave ha autorizzazioni insufficienti, la richiesta ha esito negativo con un'eccezione del client e Lambda non crea una revisione. Controlla il stateReason campo nella GetWebFunctionRevision risposta per i dettagli. Crea una nuova revisione per risolvere il problema. Le revisioni non riuscite non possono servire al traffico.

Stati dell'endpoint

Un endpoint ha due campi di stato: state tiene traccia del ciclo di vita complessivo e tiene updateStatus traccia degli aggiornamenti degli endpoint dopo la creazione iniziale. Puoi controllare entrambi chiamando. GetWebFunctionEndpoint

Stato Description Cosa succede dopo
Pending (In attesa) Lambda sta creando l'endpoint. Ciò include l'allocazione di un nome di dominio, il provisioning di TLS e la configurazione del routing. Per MultiRegion gli PerRegion endpoint, ciò include anche la replica della configurazione su altri. Regioni AWS L'endpoint passa a Attivo quando la creazione ha esito positivo in tutte le regioni di destinazione o a Failed se si verifica un errore.
Attivo L'endpoint è pronto a ricevere il traffico HTTP sul suo nome di dominio. I client possono inviare richieste all'endpoint. L'endpoint rimane attivo. Lambda tiene traccia dei successivi aggiornamenti degli endpoint sul updateStatus campo senza modificare lo stato generale dell'endpoint.
Non riuscito Creazione non riuscita. Per MultiRegion gli PerRegion endpoint, ciò può indicare un errore in una o più regioni di destinazione. Controlla il stateReason campo per i dettagli. Per MultiRegion gli PerRegion endpoint, controlla le regionalEndpoints voci relative alla fine state stateReason di ogni regione.
Eliminazione in corso Lambda sta eliminando l'endpoint e ritirando il relativo nome di dominio. Per MultiRegion gli PerRegion endpoint, Lambda rimuove l'endpoint da tutte le regioni. Una volta completata l'eliminazione, l'endpoint viene rimosso definitivamente. Il suo nome di dominio viene ritirato e Lambda non lo assegna mai a un altro endpoint in nessun account. Questa operazione non può essere annullata.

Per un endpoint esistente, Lambda state rimane impostato su Active durante un aggiornamento dell'endpoint. Verifica updateStatus se l'aggiornamento più recente èInProgress, Successful o. Failed Ad esempio, quando modifichi i pesi di revisione di un endpoint, updateStatus è InProgress while stays. state Active Quando i nuovi pesi sono in vigore, cambia in. updateStatus Successful

InProgress

Lambda sta applicando l'aggiornamento dell'endpoint.

Riuscito

L'aggiornamento dell'endpoint più recente è stato completato ed è in vigore.

Non riuscito

L'aggiornamento più recente dell'endpoint non è riuscito. Controlla il updateStatusReason campo e regionalEndpoints i dettagli. Per MultiRegion gli PerRegion endpoint, alcune regioni potrebbero utilizzare la configurazione precedente mentre altre regioni utilizzano la configurazione richiesta. Correggi la causa segnalata, quindi richiama UpdateWebFunctionEndpoint con la configurazione desiderata per riconciliare l'endpoint.

Lo stato della funzione Web, gli stati di revisione e gli stati dell'endpoint sono indipendenti. Una funzione Web può essere nello stato Attivo mentre uno dei suoi endpoint è ancora In sospeso o ha avuto esito negativo. Analogamente, una revisione può essere attiva anche se nessun endpoint sta attualmente indirizzando il traffico verso di essa.

Una revisione attiva, un endpoint attivo o un aggiornamento dell'endpoint riuscito non confermano l'avvio del server. Lambda non verifica che il server ascolti quando crea o aggiorna un endpoint per utilizzare una revisione. Dopo ogni implementazione, invia una richiesta di test e controlla i log delle applicazioni.

Ambienti di esecuzione

Un ambiente di esecuzione è un'istanza di calcolo isolata in cui vengono eseguiti il server Web e l'applicazione. Quando il traffico arriva all'endpoint, Lambda indirizza le richieste agli ambienti di esecuzione che eseguono il codice della revisione attiva.

Lambda gestisce automaticamente gli ambienti di esecuzione:

  1. Scalabilità: quando il traffico aumenta, Lambda crea ambienti di esecuzione aggiuntivi e avvia il server HTTP in ognuno di essi. Lambda è in grado di scalare i nuovi ambienti in anticipo rispetto alla domanda per garantire margini di crescita, quindi le richieste raramente attendono l'avvio di un nuovo ambiente (avvio a freddo). Quando una funzione Web viene scalata da zero (la prima richiesta dopo un periodo di assenza di traffico), si verifica un breve ritardo di avvio a freddo mentre Lambda crea un ambiente di esecuzione. La richiesta attende mentre l'ambiente di esecuzione viene inizializzato. La richiesta potrebbe comunque avere esito negativo se l'applicazione non si avvia o se si applica una frequenza di richiesta, un ambiente di esecuzione o un limite di account. Per informazioni dettagliate, vedi Comportamento di scalabilità per Lambda Web Functions.

  2. Ridimensionamento: quando il traffico diminuisce, Lambda rimuove gli ambienti di esecuzione di cui non ha più bisogno, dopo che le richieste in corso sono state completate con la massima diligenza. Lambda è scalabile fino a zero ambienti in assenza di traffico.

Il numero di ambienti di esecuzione e la loro concorrenza sono controllati da due impostazioni:

  • maxEnvironments(impostazione dell'endpoint) — Il numero massimo di ambienti di esecuzione che Lambda può creare per l'endpoint in ciascuna regione. Questa impostazione è facoltativa. Quando non è impostato, Lambda ridimensiona gli ambienti di esecuzione in base alle esigenze, in base alle quote dell'account.

  • maxConcurrencyPerEnvironment(impostazione di revisione): il numero massimo di richieste HTTP gestite contemporaneamente da un singolo ambiente di esecuzione. I valori validi sono 1—128. Il valore predefinito è 64.

Lambda imposta un limite di concorrenza dinamico per ogni ambiente di esecuzione. Questo limite non viene mai superato. maxConcurrencyPerEnvironment Un limite superiore per la concorrenza degli endpoint viene maxEnvironments moltiplicato per questo limite dinamico. La capacità effettiva potrebbe essere inferiore perché Lambda regola la concorrenza per ambiente in base all'utilizzo delle risorse e applica i limiti di endpoint e account. Ad esempio, supponiamo di impostare su 20 e su 64. maxEnvironments maxConcurrencyPerEnvironment L'endpoint gestisce quindi fino a 1.280 richieste simultanee in una regione. Ne gestisce meno se Lambda imposta il limite dinamico al di sotto di 64. Per informazioni su queste impostazioni, consulta Comportamento di scalabilità per Lambda Web Functions.

Gestione delle richieste

Il codice Web Function viene eseguito come un server HTTP standard che ascolta su una porta. Lambda invia le richieste HTTP in entrata al server e restituisce le risposte ai client. Puoi utilizzare qualsiasi framework Node.js web, middleware o router.

Il ciclo di vita della richiesta funziona come segue:

  1. Un client invia una richiesta HTTP al nome di dominio dell'endpoint.

  2. Lambda autentica la richiesta (per gli IamAuthendpoint) o la trasmette (per gli endpoint). ApplicationManaged

  3. Lambda indirizza la richiesta a un ambiente di esecuzione in base ai pesi di revisione dell'endpoint.

  4. Il server HTTP dell'ambiente di esecuzione elabora la richiesta e restituisce una risposta.

  5. Lambda restituisce la risposta al client.

Ogni richiesta può essere eseguita per un massimo di 900 secondi (15 minuti). È possibile configurare il timeout da 3 a 900 secondi utilizzando l'impostazione della timeoutSeconds revisione. Il timeout predefinito è 30 secondi.

Ogni ambiente di esecuzione di Web Function gestisce più richieste simultanee, quindi il codice dell'applicazione deve essere sicuro per l'uso simultaneo. Per i dettagli sul modello di concorrenza, vedere. Node.js modello di esecuzione