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à.
Integrazione di DynamoDB con Amazon EventBridge
Amazon DynamoDB offre i flussi DynamoDB per il Change Data Capture, consentendo l’acquisizione di modifiche a livello di elemento nelle tabelle DynamoDB. I flussi DynamoDB possono invocare funzioni Lambda per elaborare tali modifiche, permettendo l’integrazione basata sugli eventi con altri servizi e applicazioni. Questo servizio supporta anche il filtraggio, che consente un’elaborazione degli eventi efficiente e mirata.
I flussi DynamoDB supportano fino a due consumer simultanei per shard, nonché operazioni di filtro tramite il filtraggio di eventi Lambda, così che vengano elaborati solo gli elementi che soddisfano criteri specifici. Alcuni clienti potrebbero avere l’esigenza di supportare più di due consumer, altri potrebbero dover arricchire gli eventi di modifica prima dell’elaborazione o utilizzare un filtraggio e un instradamento più avanzati.
L’integrazione di DynamoDB con EventBridge può supportare tali requisiti.
Amazon EventBridge è un servizio serverless che utilizza gli eventi per connettere tra loro i componenti delle applicazioni, semplificando la creazione di applicazioni scalabili basate sugli eventi. EventBridge offre un’integrazione nativa con Amazon DynamoDB tramite EventBridge Pipes, permettendo un flusso di dati ottimizzato da DynamoDB a un router EventBridge. Tale router può quindi essere distribuito in modalità fan-out a più applicazioni e servizi attraverso una serie di regole e destinazioni.
Come funziona
L’integrazione tra DynamoDB ed EventBridge Pipes sfrutta i flussi DynamoDB per acquisire una sequenza cronologica di modifiche a livello di elemento in una tabella DynamoDB. Ogni record acquisito in questo modo contiene i dati modificati nella tabella.
Una pipe EventBridge utilizza gli eventi provenienti dai flussi DynamoDB e li instrada verso una destinazione come un router EventBridge (un router di eventi è un router che riceve eventi e li invia a destinazioni, dette anche target). La distribuzione avviene in base alle regole che rispecchiano il contenuto dell’evento. La pipe include anche la possibilità facoltativa di filtrare eventi specifici e di eseguire arricchimenti sui dati degli eventi prima di inviarli alla destinazione.
Sebbene EventBridge supporti più tipi di destinazioni, una scelta comune per l’implementazione di una progettazione di tipo fan-out consiste nell’utilizzare una funzione Lambda come destinazione. L’esempio seguente illustra un’integrazione con una funzione Lambda come destinazione.
Creazione di un’integrazione tramite la console
Segui la procedura riportata di seguito per creare un’integrazione tramite la Console di gestione AWS.
-
Abilita i flussi DynamoDB nella tabella di origine seguendo le istruzioni riportate nella sezione Abilitazione di un flusso della Guida per gli sviluppatori di DynamoDB. Se i flussi DynamoDB sono già abilitati nella tabella di origine, verifica che attualmente siano presenti meno di due consumer. I consumer potrebbero essere funzioni Lambda, tabelle globali DynamoDB, integrazioni Zero-ETL di Amazon DynamoDB con il Servizio OpenSearch di Amazon o applicazioni che eseguono operazioni di lettura direttamente dai flussi, ad esempio tramite l’adattatore Kinesis per i flussi DynamoDB.
-
Crea un router di eventi EventBridge seguendo la procedura riportata nella sezione Creazione di un router di eventi Amazon EventBridge della Guida per l’utente di EventBridge.
-
Durante la creazione del router di eventi abilita Individuazione schema.
-
-
Crea una pipe EventBridge seguendo le istruzioni riportate nella sezione Creazione di una pipe Amazon EventBridge della Guida per l’utente di EventBridge.
-
Durante la configurazione dell’origine, nel campo Origine seleziona DynamoDB e nel campo Flussi DynamoDB seleziona il nome del flusso della tabella di origine.
-
Durante la configurazione della destinazione, nel campo Servizio di destinazione seleziona Router di eventi EventBridge e nel campo Bus di eventi come destinazione seleziona il router di eventi creato nella fase 2.
-
-
Scrivi un elemento di esempio nella tabella DynamoDB di origine per attivare un evento, così che EventBridge possa dedurre lo schema dall’elemento stesso. Questo schema può essere utilizzato per creare regole per l’instradamento degli eventi. Ad esempio, se è in corso l’implementazione di un modello di progettazione che prevede l’overload degli attributi, si potrebbero voler attivare regole diverse a seconda del valore della chiave di ordinamento. I dettagli sulla scrittura di un elemento in DynamoDB sono disponibili nella sezione Utilizzo di elementi e attributi della Guida per gli sviluppatori di DynamoDB.
-
Seguendo la procedura riportata nella sezione Compilazione di funzioni Lambda con Python della Guida per gli sviluppatori di Lambda, crea una funzione Lambda di esempio in Python da utilizzare come destinazione. Durante la creazione della funzione è possibile utilizzare il codice di esempio riportato di seguito per illustrare l’integrazione. Una volta invocata, la funzione stamperà le rappresentazioni
NewImageeOldImagericevute con l’evento e queste risulteranno visibili in CloudWatch Logs.import json def lambda_handler(event, context): dynamodb = event.get('detail', {}).get('dynamodb', {}) new_image = dynamodb.get('NewImage') old_image = dynamodb.get('OldImage') if new_image: print("NewImage:", json.dumps(new_image, indent=2)) if old_image: print("OldImage:", json.dumps(old_image, indent=2)) return {'statusCode': 200, 'body': json.dumps(event)} -
Crea una regola EventBridge che instraderà gli eventi sulla nuova funzione Lambda seguendo la procedura riportata nella sezione Creazione di una regola che reagisce agli eventi della Guida per l’utente di EventBridge.
-
Durante la definizione dei dettagli della regola seleziona il nome del router di eventi creato nella fase 2 come Router di eventi.
-
Durante la creazione del modello di eventi, segui la guida per l’opzione Schema esistente. Qui è possibile selezionare il registro discovered-schemas e lo schema individuato per l’evento. In questo modo sarà possibile configurare un modello di eventi specifico per il caso d’uso, che instrada solo i messaggi corrispondenti ad attributi specifici. Ad esempio, se si desidera creare una corrispondenza solo sugli elementi DynamoDB dove la chiave di ordinamento (SK) inizia con
“user#”, verrà utilizzata una configurazione come questa.
-
Una volta terminata la progettazione del modello in base allo schema, fai clic su Genera un modello di eventi in JSON. Se invece desideri creare una corrispondenza con tutti gli eventi che compaiono nei flussi DynamoDB, usa il seguente codice JSON per il modello di eventi.
{ "source": ["aws.dynamodb"] } -
Per selezionare le destinazioni segui la guida per il servizio AWS. Nel campo Seleziona una destinazione scegli “Funzione Lambda”. Nel campo Funzione seleziona la funzione Lambda creata nella fase 5.
-
-
È ora possibile interrompere l’individuazione degli schemi sul router di eventi seguendo la procedura riportata nella sezione Starting or stopping schema discovery on event buses della Guida per l’utente di EventBridge.
-
Scrivi un secondo elemento di esempio nella tabella DynamoDB di origine per attivare un evento. Verifica che l’evento sia stato elaborato correttamente in ogni fase.
-
Visualizza la metrica CloudWatch PutEventsApproximateSuccessCount per il router di eventi seguendo la sezione Monitoraggio di Amazon EventBridge della Guida per l’utente di EventBridge.
-
Visualizza i log delle funzioni per la funzione Lambda seguendo la sezione Monitoraggio e risoluzione dei problemi delle funzioni Lambda della Guida per gli sviluppatori di Lambda. Se la funzione Lambda utilizza il codice di esempio fornito, nel gruppo di log di CloudWatch Logs dovrebbero risultare stampate e visibili le rappresentazioni
NewImageeOldImageprovenienti dai flussi DynamoDB. -
Visualizza la metrica Numero di errori e percentuale di successo (%) per la funzione Lambda seguendo la sezione Monitoraggio e risoluzione dei problemi delle funzioni Lambda della Guida per gli sviluppatori di Lambda.
-
Passaggi successivi
In questo esempio viene illustrata un’integrazione di base con una singola funzione Lambda come destinazione. Per una migliore comprensione di configurazioni più complesse, come la creazione di più regole, la configurazione di più destinazioni, l’integrazione con altri servizi e l’arricchimento degli eventi, consulta la Guida per l’utente completa di EventBridge: Nozioni di base su EventBridge.
Nota
Tieni presenti le quote EventBridge potenzialmente pertinenti all’applicazione in questione. Sebbene la capacità dei flussi DynamoDB scali in base alla tabella, le quote EventBridge sono separate. Quelle più comuni da tenere in considerazione in un’applicazione di grandi dimensioni sono la Soglia di limitazione (della larghezza di banda della rete) per le invocazioni, espressa in transazioni al secondo e la Soglia di limitazione (della larghezza di banda della rete) di PutEvents, espressa in transazioni al secondo. Queste quote specificano il numero di invocazioni che possono essere inviate alle destinazioni e il numero di eventi che possono essere inseriti nel router al secondo.