View a markdown version of this page

Utilizzo dell'adattatore Kinesis DynamoDB Streams per leggere i record da un timestamp - 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à.

Utilizzo dell'adattatore Kinesis DynamoDB Streams per leggere i record da un timestamp

Con l'elaborazione dello stream basata su timestamp, puoi iniziare a leggere i record di DynamoDB Streams da un momento specifico. Questa guida spiega come configurare la funzionalità con l'adattatore Kinesis DynamoDB Streams e come si comporta in diversi scenari.

Prerequisiti

Per leggere i record di DynamoDB Streams da un momento specifico, assicurati che l'applicazione utilizzi quanto segue:

  • DynamoDB Streams Kinesis Adapter versione 2.5.0 o successiva.

  • Lo stesso AWS Identity and Access Management autorizzazioni (IAM) richieste da un'applicazione adattatore esistente. Questa funzionalità non richiede autorizzazioni API aggiuntive.

Per ulteriori informazioni sulla configurazione dell'adattatore, vedere Utilizzo dell'adattatore DynamoDB Streams Kinesis per elaborare i record di flusso.

Configura il timestamp iniziale

  1. Crea un InitialPositionInStreamExtended istanza con il timestamp desiderato.

  2. Passalo a StreamsSchedulerFactory.createSingleStreamTracker.

  3. Aggiungi il restituito StreamTracker al ConfigsBuilder per l'applicazione Kinesis Client Library (KCL).

Il seguente esempio Java mostra come configurare il timestamp iniziale:

// Create the initial position with the desired timestamp InitialPositionInStreamExtended initialPosition = InitialPositionInStreamExtended.newInitialPositionAtTimestamp( Date.from(Instant.ofEpochMilli(1790467200000L))); // Create the stream tracker StreamTracker streamTracker = StreamsSchedulerFactory.createSingleStreamTracker( streamArn, initialPosition); // Register the stream tracker, so that the scheduler uses the configured timestamp to read shards configsBuilder.streamTracker(streamTracker);

L'adattatore inizializza ogni nuovo contratto di locazione con AT_TIMESTAMP come posizione iniziale. Per ogni contratto di locazione, chiama GetShardIterator con il timestamp specificato per ottenere un iteratore. Quindi passa l'iteratore a GetRecords, che restituisce i record che iniziano con il primo record di cui ApproximateCreationDateTime è uguale o successivo al timestamp specificato.

Scenari con timestamp

Il timestamp è più vecchio dei record di streaming conservati

L'applicazione inizia dal record più vecchio ancora disponibile in ogni frammento. Non restituisce un errore. Non è possibile recuperare i record che hanno superato la finestra di conservazione di 24 ore di DynamoDB Streams.

Il timestamp è nel futuro

L'adattatore convalida il timestamp durante l'inizializzazione. Se il timestamp è futuro, l'adattatore lo rifiuta senza effettuare alcuna chiamata API e l'elaborazione non può iniziare. Utilizza un timestamp uguale o precedente all'ora corrente. Tieni conto delle differenze di clock tra l'host dell'applicazione e il servizio quando scegli un timestamp vicino all'ora corrente.

Modifica del timestamp o della posizione iniziale con una tabella di leasing esistente

Non modificare il timestamp né passare da uno all'altro AT_TIMESTAMP, TRIM_HORIZON, e LATEST in un'applicazione in esecuzione il cui stato è memorizzato nella tabella di leasing. I frammenti che memorizzano i numeri di sequenza come checkpoint nella tabella di leasing continuano da quei checkpoint. Gli shard che non sono stati avviati possono utilizzare la nuova configurazione o fallire se è incompatibile con i leasing esistenti. L'applicazione può quindi elaborare diversi frammenti da diverse posizioni di partenza.

Per applicare entrambe le modifiche in modo sicuro, interrompi l'applicazione esistente e scegli uno dei seguenti approcci:

  1. Eliminare la tabella dei lease e riavviare l'applicazione (scelta consigliata): arresta tutti i lavoratori, elimina la tabella di leasing esistente, aggiorna la configurazione e quindi riavvia l'applicazione.

  2. Usa un nuovo nome per l'applicazione: l'adattatore crea una nuova tabella di leasing e applica il nuovo timestamp o la nuova posizione iniziale all'avvio dell'applicazione. Per impostazione predefinita, KCL utilizza il nome dell'applicazione come nome della tabella di leasing a meno che non venga esplicitamente sovrascritto. La tabella di leasing esistente rimane disponibile se è necessario eseguire il rollback.

Prezzi

Non è previsto alcun costo aggiuntivo per la lettura dei record di streaming da un timestamp diverso da quello standard GetRecords addebiti. Per ulteriori informazioni, vedere Prezzi di DynamoDB.

Consulta anche