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à.
Acquisizione dei dati di modifica per DynamoDB Streams
DynamoDB Streams acquisisce una sequenza cronologica di modifiche a livello di elemento in una tabella DynamoDB qualsiasi e le archivia in un log per un massimo di 24 ore. Le applicazioni possono accedere a questo log e visualizzare gli elementi di dati nel rispettivo stato prima e dopo la modifica, praticamente in tempo reale.
La crittografia a riposo crittografa i dati in DynamoDB Streams. Per ulteriori informazioni, consulta Crittografia a riposo per DynamoDB.
Un flusso DynamoDB è un flusso ordinato di informazioni sulle modifiche apportate agli elementi in una tabella DynamoDB. Quando si abilita un flusso in una tabella, DynamoDB acquisisce informazioni su ogni modifica apportata agli elementi di dati nella tabella.
Ogni volta che un'applicazione crea, aggiorna o elimina elementi nella tabella, DynamoDB Streams scrive un record di flusso con gli attributi della chiave primaria degli elementi che sono stati modificati. Un record di flusso contiene informazioni su una modifica di dati apportata a un singolo elemento in una tabella DynamoDB. Puoi configurare il flusso in modo che i record di flusso acquisiscano informazioni aggiuntive, come le immagini "prima" e "dopo" degli elementi modificati.
DynamoDB Streams garantisce quanto segue:
-
Ogni record di flusso viene visualizzato esattamente una volta nel flusso.
-
Per ogni elemento modificato in una tabella DynamoDB, i record di flusso vengono visualizzati nella stessa sequenza delle modifiche effettive apportate all'elemento.
DynamoDB Streams scrive i record di flusso praticamente in tempo reale per permettere di creare applicazioni che utilizzano questi flussi e agiscono in base al contenuto.
Argomenti
Endpoint per DynamoDB Streams
AWS mantiene endpoint separati per DynamoDB e DynamoDB Streams. Per usare tabelle e indici di database, l'applicazione deve accedere a un endpoint DynamoDB. Per leggere ed elaborare i record di DynamoDB Streams, l'applicazione deve accedere a un endpoint DynamoDB Streams nella stessa regione.
La convenzione di denominazione per gli endpoint DynamoDB Streams è streams.dynamodb.
. Ad esempio, se si utilizza l'endpoint <region>
.amazonaws.com.rproxy.goskope.comdynamodb.us-west-2.amazonaws.com
per accedere a DynamoDB, l'endpoint streams.dynamodb.us-west-2.amazonaws.com
sarà utilizzato per accedere a DynamoDB Streams.
Nota
Per l'elenco completo delle regioni e degli endpoint di DynamoDB e DynamoDB Streams, consulta Regioni ed endpoint in Riferimenti generali di AWS.
AWS SDKsForniscono client separati per DynamoDB e DynamoDB Streams. A seconda dei requisiti, l'applicazione può accedere a un endpoint DynamoDB, a un endpoint DynamoDB Streams o a entrambi contemporaneamente. Per connettersi a entrambi gli endpoint, l'applicazione deve creare un'istanza di due client, uno per DynamoDB e uno per DynamoDB Streams.
Abilitazione di un flusso
È possibile abilitare uno stream su una nuova tabella quando lo si crea utilizzando o uno dei AWS CLI . AWS SDKs È inoltre possibile abilitare o disabilitare un flusso in una tabella esistente oppure modificare le impostazioni di un flusso. DynamoDB Streams opera in modo asincrono, pertanto non vi è alcun impatto sulle prestazioni di una tabella se si abilita un flusso.
Il modo più semplice per gestire DynamoDB Streams consiste nell'usare la AWS Management Console.
Accedi AWS Management Console e apri la console DynamoDB all'indirizzo. https://console.aws.amazon.com/dynamodb/
-
Nel pannello di controllo della console DynamoDB, scegli Tabelle e seleziona una tabella esistente.
-
Scegli la scheda Exports and streams (Esportazioni e flussi).
-
Nella sezione dei dettagli del flusso DynamoDB, scegli Attiva.
-
Nella pagina Attiva lo stream DynamoDB, scegli le informazioni che verranno scritte nello stream ogni volta che i dati nella tabella vengono modificati:
-
Key attributes only (Solo attributi chiave): solo gli attributi chiave dell'elemento modificato.
-
Nuova immagine: l'intero elemento, così come visualizzato dopo che è stato modificato.
-
Vecchia immagine: l'intero elemento, così come visualizzato prima della modifica.
-
Immagini nuove e vecchie: le immagini dell'elemento nuove e vecchie.
Quando le impostazioni sono quelle che desideri, scegli Attiva lo streaming.
-
-
(Facoltativo) Per disabilitare uno stream esistente, seleziona Disattiva nella sezione Dettagli del flusso DynamoDB.
Puoi anche utilizzare le UpdateTable
API operazioni CreateTable
or per abilitare o modificare uno stream. Il parametro StreamSpecification
determina la configurazione del flusso:
-
StreamEnabled
: specifica se un flusso è abilitato (true
) o disabilitato (false
) per la tabella. -
StreamViewType
: specifica le informazioni che verranno scritte nel flusso a ogni modifica dei dati nella tabella:-
KEYS_ONLY
: solo gli attributi chiave dell'elemento modificato. -
NEW_IMAGE
: l'intero elemento, così come visualizzato dopo che è stato modificato. -
OLD_IMAGE
: l'intero elemento, così come visualizzato prima della modifica. -
NEW_AND_OLD_IMAGES
: le immagini dell'elemento nuove e vecchie.
-
Puoi abilitare o disabilitare un flusso in qualsiasi momento. Tuttavia, se provi ad abilitare un flusso in una tabella che include già un flusso riceverai un'eccezione ValidationException
. Riceverai un ValidationException
messaggio anche se provi a disabilitare uno stream su una tabella che non ha uno stream.
Quando StreamEnabled
viene impostato su true
, DynamoDB crea un nuovo flusso con un descrittore di flusso univoco assegnato. Se disabiliti e quindi riabiliti un flusso nella tabella, viene creato un nuovo flusso con un descrittore di flusso diverso.
Ogni stream è identificato in modo univoco da un Amazon Resource Name (ARN). Di seguito è riportato un ARN esempio di flusso su una tabella DynamoDB denominata. TestTable
arn:aws:dynamodb:us-west-2:111122223333:table/TestTable/stream/2015-05-11T21:21:33.291
Per determinare l'ultimo descrittore di flusso per una tabella, inviare una richiesta DescribeTable
DynamoDB e cercare l'elemento LatestStreamArn
nella risposta.
Nota
Non è possibile modificare un StreamViewType
una volta configurato un flusso. Se è necessario apportare modifiche a un flusso dopo che è stato configurato, è necessario disabilitare il flusso corrente e crearne uno nuovo.
Lettura ed elaborazione di un flusso
Per leggere ed elaborare uno stream, l'applicazione deve connettersi a un endpoint DynamoDB Streams ed emettere richieste. API
Un flusso è costituito da record di flusso. Ogni record di flusso rappresenta una singola modifica dei dati nella tabella DynamoDB cui appartiene il flusso. A ogni record di flusso è assegnato un numero in sequenza, corrispondente all'ordine in cui il record è stato pubblicato nel flusso.
I record di flusso sono organizzati in gruppi o shard. Ogni shard funge da container per più record di flusso e contiene le informazioni necessarie per l'accesso e l'iterazione attraverso i record. I record di flusso all'interno di uno shard vengono automaticamente rimossi dopo 24 ore.
Gli shard sono effimeri, ovvero vengono creati ed eliminati automaticamente in base alle necessità. Qualsiasi shard può anche essere suddiviso in più nuovi shard e anche questa operazione viene eseguita automaticamente. È anche possibile che per uno shard padre esista un solo shard figlio. Uno shard può essere suddiviso in risposta a livelli elevati di attività di scrittura nella tabella padre corrispondente, in modo che le applicazioni possano elaborare record da più shard in parallelo.
Se disabiliti un flusso, tutti gli shard aperti verranno chiusi. I dati nel flusso continueranno a essere leggibili per 24 ore.
Poiché gli shard hanno una derivazione (padre e figlio), un'applicazione deve sempre elaborare uno shard padre prima dello shard figlio. In questo modo, anche l'elaborazione dei record di flusso avviene sicuramente in base all'ordine corretto. Se si utilizza DynamoDB Streams Kinesis Adapter, questa operazione viene gestita automaticamente. L'applicazione elabora le partizioni e i record di flusso nell'ordine corretto e gestisce automaticamente partizioni nuove o scadute, nonché le partizioni che vengono suddivise durante l'esecuzione dell'applicazione. Per ulteriori informazioni, consultareUtilizzo dell'adattatore DynamoDB Streams Kinesis per elaborare i record di flusso.
Il diagramma seguente mostra la relazione tra un flusso, gli shard nel flusso e i record di flusso negli shard.
Nota
Se si esegue un'operazione PutItem
o UpdateItem
che non modifica alcun dato in un elemento, DynamoDB Streams non scrive un record di flusso per tale operazione.
Per accedere a un flusso ed elaborare i record di flusso al suo interno, devi eseguire queste operazioni:
-
Determina l'ARNunivocità dello stream a cui desideri accedere.
-
Determinare quali shard nel flusso contengono i record di flusso che ti interessano.
-
Accedi alle partizioni e recupera i record di flusso desiderati.
Nota
Non più di due processi devono leggere dalla stessa partizione di flussi contemporaneamente. La presenza di più di due lettori per shard può causare il throttling.
DynamoDB API Streams fornisce le seguenti azioni per l'uso da parte dei programmi applicativi:
-
ListStreams
: restituisce un elenco dei descrittori di flusso per il conto corrente e l'endpoint. Puoi facoltativamente richiedere solo i descrittori di flusso per un nome di tabella specifico. -
DescribeStream
: restituisce informazioni dettagliate su un determinato flusso. L'output include un elenco di shard associati allo stream, incluso lo shard. IDs -
GetShardIterator
: restituisce un iteratore di partizioni, che descrive una posizione all'interno di una partizione. Puoi richiedere che l'iterazione fornisca accesso al punto meno recente, al punto più recente o a un punto particolare nel flusso. -
GetRecords
: restituisce i record di flusso in una determinata partizione. Devi specificare l'iterazione shard restituita da una richiestaGetShardIterator
.
Per una descrizione completa di queste API operazioni, incluse richieste e risposte di esempio, consulta Amazon DynamoDB Streams Reference API.
Limite di conservazione dei dati per DynamoDB Streams
Tutti i dati in DynamoDB Streams hanno una durata di 24 ore. Puoi recuperare e analizzare le ultime 24 ore di attività per qualsiasi tabella specifica. Tuttavia, i dati più vecchi di 24 ore sono soggetti a taglio (rimozione) in qualsiasi momento.
Se disabiliti un flusso in una tabella, i dati nel flusso restano leggibili per 24 ore. Dopo questo intervallo di tempo, i dati scadono e i record di flusso vengono automaticamente eliminati. Non esiste un meccanismo per eliminare manualmente un flusso esistente. Devi attendere fino allo scadere del limite di conservazione (24 ore) perché tutti i record di flusso vengano eliminati.