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 da altre funzioni. Quando esegui 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.

Puoi anche fornire un codice di inizializzazione che venga eseguito una sola volta, dopo la creazione del contenitore, ma prima che il gestore venga AWS Lambda eseguito per la prima volta. La funzione Lambda mostrata in Fase 4: creazione e test di una funzione Lambda ha un codice di inizializzazione che importa l'SDK for JavaScript in e crea un Node.js client per Amazon 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 chiamate 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' AWS Lambda utilizzo dei trigger 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 te.

Un consumatore Lambda per un flusso DynamoDB fornisce almeno una consegna: non garantisce la consegna esattamente una volta e potrebbe elaborare lo stesso record più di una volta (ad esempio, quando viene ritentata una chiamata di funzione). Si distingue dalla garanzia DynamoDB Streams che prevede che ogni record di stream compaia esattamente una volta nello stream: tale garanzia descrive i record archiviati nel flusso, 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 Best practice per lavorare con le AWS Lambda funzioni nella Developer Guide.AWS Lambda