View a markdown version of this page

Best practice per l’utilizzo dei flussi DynamoDB con Lambda - Amazon DynamoDB

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

Best practice per l’utilizzo dei flussi DynamoDB con Lambda

Una AWS Lambda funzione viene eseguita all'interno di un contenitore, un ambiente di esecuzione isolato dalle altre funzioni. Quando si esegue una funzione per la prima volta, AWS Lambda crea un nuovo contenitore e inizia a eseguire il codice della funzione.

Una funzione Lambda dispone di un gestore che viene eseguito a ogni richiamo. Il gestore contiene la logica di business principale della funzione. Ad esempio, la funzione Lambda illustrata in Fase 4: creazione e test di una funzione Lambda dispone di un gestore in grado di elaborare record in un flusso DynamoDB.

È inoltre possibile fornire un codice di inizializzazione che viene eseguito una sola volta, dopo la creazione del contenitore, ma prima dell' AWS Lambda esecuzione del gestore per la prima volta. La funzione Lambda mostrata in Fase 4: creazione e test di una funzione Lambda contiene un codice di inizializzazione che importa l'SDK for JavaScript in e crea un client per Amazon Node.js SNS. Questi oggetti dovrebbero essere definiti una sola volta, esternamente al gestore.

Dopo l'esecuzione della funzione, AWS Lambda potrebbe scegliere di riutilizzare il contenitore per le successive invocazioni della funzione. In questo caso, il gestore della funzione potrebbe essere in grado di utilizzare nuovamente le risorse definite nel codice di inizializzazione. (Non puoi controllare per quanto tempo AWS Lambda conserva il container, né se questo verrà nuovamente utilizzato o meno).

Per l'utilizzo AWS Lambda dei trigger di DynamoDB, consigliamo quanto segue:

  • AWS i client di servizio devono essere istanziati nel codice di inizializzazione, non nel gestore. Ciò consente di AWS Lambda riutilizzare le connessioni esistenti, per tutta la durata del contenitore.

  • In generale, non è necessario gestire in modo esplicito le connessioni o implementare il pool di connessioni perché lo AWS Lambda gestisce per conto dell'utente.

Un consumer Lambda per uno stream DynamoDB fornisce una consegna almeno una volta: non garantisce la consegna una volta esatta e potrebbe elaborare lo stesso record più di una volta (ad esempio, quando si ritenta di invocare una funzione). Ciò è diverso dalla garanzia di DynamoDB Streams secondo cui ogni record di stream appare esattamente una volta nello stream: tale garanzia descrive i record archiviati nello stream, non il numero di volte in cui un consumatore li elabora. Per evitare problemi imprevisti dovuti all'elaborazione duplicata, assicurati che il codice della funzione Lambda sia idempotente.

Per ulteriori informazioni, consulta le best practice per l'utilizzo delle AWS Lambda funzioni nella Developer Guide. AWS Lambda