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 EventBridge con 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 l'integrazione nativa con Amazon DynamoDB EventBridge tramite Pipes, permettendo un flusso di dati senza interruzioni da DynamoDB a un bus. 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 EventBridge e pipe utilizza DynamoDB Streams per acquisire una sequenza ordinata nel tempo di modifiche a livello di elemento in una tabella DynamoDB. Ogni record acquisito in questo modo contiene i dati modificati nella tabella.
Una EventBridge pipe consuma gli eventi da DynamoDB Streams e li indirizza verso una destinazione come un bus ( EventBridge un bus di eventi è un router che riceve eventi e li invia a destinazioni, chiamate anche destinazioni). 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 target, una scelta comune quando si implementa un design 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 consumatori potrebbero essere funzioni Lambda, DynamoDB Global Tables, integrazioni Amazon DynamoDB Zero-ETL con OpenSearch Amazon Service o applicazioni che leggono direttamente dai flussi, ad esempio tramite l'adattatore DynamoDB Streams Kinesis.
-
Crea un bus di EventBridge eventi seguendo i passaggi nella sezione Creazione di un bus di EventBridge eventi Amazon della guida per l' EventBridge utente.
-
Durante la creazione del router di eventi abilita Individuazione schema.
-
-
Crea una EventBridge pipe seguendo i passaggi nella sezione Creazione di una EventBridge pipe Amazon della guida per l' EventBridge utente.
-
Durante la configurazione dell’origine, nel campo Origine seleziona DynamoDB e nel campo Flussi DynamoDB seleziona il nome del flusso della tabella di origine.
-
Quando configuri il target, nel campo Target service seleziona EventBridge Event bus e nel Event bus come campo target seleziona il bus di eventi creato nel passaggio 2.
-
-
Scrivi un elemento di esempio nella tabella DynamoDB di origine per attivare un evento, Ciò consentirà di EventBridge dedurre lo schema dall'elemento di esempio. 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. Quando viene richiamato, stamperà l'
NewImagee loOldImagericeveranno con l'evento che può essere visualizzato nei CloudWatch registri.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 EventBridge regola che indirizzerà gli eventi alla tua nuova funzione Lambda seguendo i passaggi nella sezione Guida per l'utente Creare una regola che reagisce agli eventi 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"] } -
Quando selezioni gli obiettivi, segui la guida per l'assistenza. AWS Nel campo Seleziona una destinazione scegli “Funzione Lambda”. Nel campo Funzione seleziona la funzione Lambda creata nella fase 5.
-
-
Ora puoi interrompere la scoperta dello schema sul tuo event bus seguendo i passaggi nella sezione Avvio o arresto del rilevamento dello schema sui bus degli eventi della guida per l' EventBridge utente.
-
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 CloudWatch metrica PutEventsApproximateSuccessCountper il tuo event bus seguendo la EventBridge sezione Monitoring Amazon della guida per l' EventBridge utente.
-
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, dovresti vedere l'
NewImageand di DynamoDBOldImageStreams stampato nel gruppo di log Logs. CloudWatch -
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.
-
Fasi successive
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 creazione di più destinazioni, l'integrazione con altri servizi e l'arricchimento degli eventi, consulta la guida per l'utente completa: Guida introduttiva. EventBridge EventBridge
Nota
Fai attenzione alle EventBridge quote che potrebbero essere pertinenti alla tua applicazione. Sebbene la capacità di DynamoDB Streams sia scalabile in base alla tabella, le quote sono separate. EventBridge Le quote più comuni da tenere in considerazione in un'applicazione di grandi dimensioni sono il limite di accelerazione di Invocations nelle transazioni al secondo e il limite di accelerazione nelle transazioni al secondo. PutEvents 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.