Integrazione con Amazon EventBridge - 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à.

Integrazione con Amazon EventBridge

Amazon DynamoDB offre DynamoDB Streams per l'acquisizione dei dati di modifica, che consente l'acquisizione di modifiche a livello di elemento nelle tabelle DynamoDB. DynamoDB Streams può richiamare le funzioni Lambda per elaborare tali modifiche, permettendo l'integrazione basata sugli eventi con altri servizi e applicazioni. DynamoDB Streams supporta anche il filtraggio, che consente un'elaborazione degli eventi efficiente e mirata.

DynamoDB Streams supporta fino a due consumatori simultanei per shard e supporta il filtraggio tramite il filtro degli eventi Lambda in modo che vengano elaborati solo gli elementi che soddisfano criteri specifici. Alcuni clienti potrebbero avere l'esigenza di supportare più di due consumatori. Altri potrebbero dover arricchire gli eventi di modifica prima che vengano elaborati o utilizzare filtri e routing 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 bus può quindi essere esteso a più applicazioni e servizi attraverso una serie di regole e obiettivi.

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.

Immagine che mostra come DynamoDB Streams si integra con un bus Amazon. EventBridge

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 consegna si basa sulle regole che corrispondono al contenuto dell'evento. Facoltativamente, la pipe include anche la possibilità di filtrare eventi specifici ed 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 dimostra un'integrazione con un target di funzione Lambda.

Creazione di un'integrazione tramite la console

Segui i passaggi seguenti per creare un'integrazione tramite AWS Management Console.

  1. Abilita DynamoDB Streams nella tabella dei sorgenti seguendo i passaggi nella Abilitazione di un flusso sezione della guida per sviluppatori di DynamoDB. Se DynamoDB Streams è già abilitato nella tabella di origine, verifica che attualmente ci siano meno di due consumatori. 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.

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

    1. Quando crei il bus degli eventi, abilita l'individuazione dello schema.

  3. Crea una EventBridge pipe seguendo i passaggi nella sezione Creazione di una EventBridge pipe Amazon della guida per l' EventBridge utente.

    1. Quando configuri l'origine, nel campo Origine seleziona DynamoDB e nel campo DynamoDB Streams seleziona il nome del flusso della tabella di origine.

    2. Quando configuri la destinazione, nel campo Servizio Target seleziona EventBridge Event bus e nel Event bus come campo target seleziona il bus degli eventi creato nel passaggio 2.

  4. 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 usato per creare regole per il routing degli eventi. Ad esempio, se state implementando un modello di progettazione che prevede il sovraccarico degli attributi, potreste voler attivare regole diverse a seconda del valore della chiave di ordinamento. I dettagli su come scrivere un elemento in DynamoDB sono disponibili nella sezione Lavorare con elementi e attributi della guida per sviluppatori di DynamoDB.

  5. Crea un esempio di funzione Python Lambda da utilizzare come destinazione seguendo i passaggi nella sezione Creazione di funzioni Lambda con Python della guida per sviluppatori Lambda. Durante la creazione della funzione, è possibile utilizzare il codice di esempio riportato di seguito per dimostrare l'integrazione. Quando viene richiamato, stamperà l'NewImagee lo OldImage riceveranno 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)}
  6. 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 .

    1. Quando definisci i dettagli della regola, seleziona il nome del bus degli eventi che hai creato nel passaggio 2 come bus degli eventi.

    2. Quando crei il modello di eventi, segui la guida per lo schema esistente. Qui puoi selezionare il registro degli schemi scoperti e lo schema scoperto per il tuo evento. Ciò consente di configurare un modello di evento specifico per il caso d'uso che indirizza solo i messaggi che corrispondono a attributi specifici. Ad esempio, se desideri creare una corrispondenza solo sugli elementi di DynamoDB “user#” con cui inizia SK, utilizzerai una configurazione come questa.

      Immagine che mostra una EventBridge regola in cui vengono visualizzati solo gli elementi di DynamoDB con una chiave di ordinamento che inizia con «user#».
    3. Fai clic su Genera pattern di eventi in JSON dopo aver finito di progettare un pattern in base al tuo schema. Se invece desideri abbinare tutti gli eventi che appaiono su DynamoDB Streams, usa il seguente codice JSON per il modello di evento.

      { "source": ["aws.dynamodb"] }
    4. Quando selezioni gli obiettivi, segui la guida per l'assistenza. AWS Nel campo Seleziona un obiettivo, scegli «Funzione Lambda». Nel campo Funzione, seleziona la funzione Lambda creata nel passaggio 5.

  7. Ora puoi interrompere il rilevamento dello schema sul tuo bus degli eventi seguendo i passaggi nella sezione Avvio o arresto del rilevamento dello schema sui bus degli eventi della guida per l' EventBridge utente.

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

    1. Visualizza il PutEventsApproximateSuccessconteggio CloudWatch metrico per il tuo event bus seguendo la EventBridge sezione Monitoring Amazon della guida per l' EventBridge utente.

    2. Visualizza i registri delle funzioni per la tua funzione Lambda seguendo la sezione Monitoraggio e risoluzione dei problemi delle funzioni Lambda della guida per sviluppatori Lambda. Se la funzione Lambda utilizza il codice di esempio fornito, dovresti vedere l'NewImageand di DynamoDB OldImage Streams stampato nel gruppo di log Logs. CloudWatch

    3. Visualizza il conteggio degli errori e la percentuale di successo (%) per la tua funzione Lambda seguendo la sezione Monitoraggio e risoluzione dei problemi delle funzioni Lambda della guida per sviluppatori Lambda.

Passaggi successivi

Questo esempio fornisce 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' EventBridge utente completa: Guida introduttiva a. 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 chiamate che possono essere inviate alle destinazioni e il numero di eventi che possono essere inseriti nel bus al secondo.