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à.
Definire il gestore della funzione Lambda in Node.js
Il gestore di funzioni Lambda è il metodo nel codice della funzione che elabora gli eventi. Quando viene richiamata la funzione, Lambda esegue il metodo del gestore. La funzione viene eseguita fino a quando il gestore non restituisce una risposta, termina o scade.
La funzione di esempio seguente registra il contenuto dell'oggetto evento e restituisce la posizione dei registri.
Nota
Questa pagina mostra esempi di gestori di moduli sia CommonJS sia ES. Per informazioni sulle differenze tra questi due tipi di gestori, consulta Impostazione di un gestore di funzioni come modulo ES.
Quando si configura una funzione, il valore dell'impostazione dell'handler è costituito dal nome del file e dal nome del metodo dell'handler esportato, separati da un punto. L'impostazione predefinita nella console e negli esempi in questa guida è index.handler
. Questo indica il metodo handler
che viene esportato dal file index.js
.
Il runtime trasferisce gli argomenti al metodo del gestore. Il primo argomento è l'oggetto event
, che contiene le informazioni sull'invoker. L'invoker trasferisce queste informazioni come stringa in formato JSON quando chiama Invoke e il runtime le converte in un oggetto. Quando un AWS servizio richiama la funzione, la struttura degli eventi varia in base al servizio.
Il secondo argomento è l'oggetto context, che contiene le informazioni sulla chiamata, la funzione, e l'ambiente di esecuzione. In questo esempio, la funzione ottiene il nome del flusso di log dall'oggetto context e lo restituisce all'invoker.
Inoltre puoi utilizzare un argomento di richiamo, ovvero una funzione che puoi richiamare nei gestori non asincroni per inviare una risposta. È consigliato l'utilizzo di async/await, anziché dei richiami. Async/Await fornisce una migliore leggibilità, gestione degli errori ed efficienza. Per ulteriori informazioni sulla differenza tra async/await e richiami, consulta Utilizzo dei richiami.
Denominazione
Quando si configura una funzione, il valore dell'impostazione dell'handler è costituito dal nome del file e dal nome del metodo dell'handler esportato, separati da un punto. L'impostazione predefinita per le funzioni create nella console e per gli esempi in questa guida è. index.handler
Indica il handler
metodo che viene esportato dal index.mjs
file index.js
or.
Se si crea una funzione nella console utilizzando un nome di file o un nome del gestore di funzione diverso, è necessario modificare il nome del gestore predefinito.
Modifica del nome del gestore funzioni (console)
-
Apri la pagina Funzioni
della console Lambda e scegli la tua funzione. -
Scegli la scheda Codice.
-
Scorri verso il basso fino al riquadro Impostazioni di runtime e scegli Modifica.
-
In Gestore, inserisci il nuovo nome per il tuo gestore di funzioni.
-
Selezionare Salva.
Utilizzo di async/await
Se il codice esegue un'attività asincrona, usa lo schema aync/await per assicurarti che il gestore termini l'esecuzione. Async/await è un modo conciso e leggibile per scrivere codice asincrono in Node.js, senza la necessità di richiami nidificati o di concatenamento di promesse. Con async/await puoi scrivere codice che si legga come codice sincrono, pur rimanendo asincrono e privo di blocchi.
La parola chiave async
contrassegna una funzione come asincrona, mentre la parola chiave await
mette in pausa l'esecuzione della funzione fino alla risoluzione di Promise
.
Nota
Assicurati di attendere il completamento degli eventi asincroni. Se la funzione restituisce un risultato prima del completamento degli eventi asincroni, potrebbe avere esito negativo o causare un comportamento imprevisto nell'applicazione. Ciò può accadere quando un ciclo forEach
contiene un evento asincrono. I loop forEach
prevedono una chiamata sincrona. Per ulteriori informazioni, consulta la sezione Array.prototype.forEach()
Nell'esempio successivo async/await è utilizzato per elencare i bucket Amazon Simple Storage Service.
Nota
Prima di utilizzare questo esempio, assicurati che il ruolo di esecuzione della tua funzione disponga delle autorizzazioni di lettura di Amazon S3.
Utilizzo dei richiami
Per dichiarare il gestore della funzione è consigliato l'utilizzo di async/await, anziché di quello dei richiami. Async/await rappresenta una scelta migliore per diverse ragioni:
-
Leggibilità: il codice async/await è più facile da leggere e comprendere rispetto al codice con richiami, che, invece, può di colpo diventare difficile da seguire e provocare problemi con i richiami.
-
Debug e gestione degli errori: il debug del codice basato su richiami può essere difficile. La pila delle chiamate può diventare difficile da seguire e gli errori possono essere facilmente ingeriti. Con async/await, puoi utilizzare i blocchi try/catch per gestire gli errori.
-
Efficienza: i richiami richiedono spesso il passaggio tra diverse parti del codice. Async/await può ridurre il numero dei passaggi di contesto, realizzando un codice più efficiente.
Quando utilizzi i richiami nel gestore, la funzione continua ad essere eseguita finché il ciclo di eventi
La funzione di callback richiede due argomenti, un Error
e una risposta. L'oggetto risposta deve essere compatibile con JSON.stringify
.
La seguente funzione di esempio controlla un URL e restituisce il codice di stato all'invoker.
Nell'esempio che segue, la risposta da Amazon S3 viene restituita all'invoker non appena disponibile. Il timeout in esecuzione sul ciclo di eventi viene bloccato e l'esecuzione continua la volta successiva in cui la funzione viene richiamata.
Nota
Prima di utilizzare questo esempio, assicurati che il ruolo di esecuzione della tua funzione disponga delle autorizzazioni di lettura di Amazon S3.