View a markdown version of this page

Menggunakan DynamoDB Streams Kinesis Adapter untuk membaca catatan dari stempel waktu - Amazon DynamoDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan DynamoDB Streams Kinesis Adapter untuk membaca catatan dari stempel waktu

Dengan pemrosesan aliran berbasis stempel waktu, Anda dapat mulai membaca catatan Streams DynamoDB dari titik waktu tertentu. Panduan ini menjelaskan cara mengonfigurasi fitur dengan DynamoDB Streams Kinesis Adapter dan bagaimana perilakunya dalam skenario yang berbeda.

Prasyarat

Untuk membaca catatan Streams DynamoDB dari titik waktu tertentu, pastikan aplikasi Anda menggunakan yang berikut ini:

  • DynamoDB Streaming Kinesis Adapter versi 2.5.0 atau yang lebih baru.

  • Sama AWS Identity and Access Management (IAM) izin yang diperlukan oleh aplikasi adaptor yang ada. Fitur ini tidak memerlukan izin API tambahan.

Untuk informasi selengkapnya tentang pengaturan adaptor, lihat Menggunakan adaptor DynamoDB Streams Kinesis untuk memproses catatan aliran.

Konfigurasikan stempel waktu awal

  1. Buat InitialPositionInStreamExtended contoh dengan stempel waktu yang diinginkan.

  2. Berikan ke StreamsSchedulerFactory.createSingleStreamTracker.

  3. Tambahkan yang dikembalikan StreamTracker ke ConfigsBuilder untuk aplikasi Kinesis Client Library (KCL) Anda.

Contoh Java berikut menunjukkan cara mengkonfigurasi stempel waktu awal:

// 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);

Adaptor menginisialisasi setiap sewa baru dengan AT_TIMESTAMP sebagai posisi awal. Untuk setiap sewa, ia memanggil GetShardIterator dengan stempel waktu yang ditentukan untuk mendapatkan iterator. Kemudian meneruskan iterator ke GetRecords, yang mengembalikan catatan yang dimulai dengan catatan pertama yang ApproximateCreationDateTime berada pada atau setelah stempel waktu yang ditentukan.

Skenario stempel waktu

Stempel waktu lebih tua dari catatan aliran yang disimpan

Aplikasi dimulai pada catatan tertua yang masih tersedia di setiap pecahan. Itu tidak mengembalikan kesalahan. Anda tidak dapat memulihkan catatan yang telah melewati jendela retensi 24 jam DynamoDB Streams.

Stempel waktu ada di masa depan

Adaptor memvalidasi stempel waktu selama inisialisasi. Jika stempel waktu ada di masa mendatang, adaptor menolaknya tanpa melakukan panggilan API apa pun, dan pemrosesan tidak dapat dimulai. Gunakan stempel waktu pada atau sebelum waktu saat ini. Izinkan perbedaan jam antara host aplikasi dan layanan saat memilih stempel waktu yang dekat dengan waktu saat ini.

Mengubah stempel waktu atau posisi awal dengan tabel sewa yang ada

Jangan mengubah stempel waktu atau beralih di antara AT_TIMESTAMP, TRIM_HORIZON, dan LATEST dalam aplikasi yang sedang berjalan yang memiliki status disimpan di tabel sewa. Pecahan yang menyimpan nomor urut sebagai pos pemeriksaan di tabel sewa berlanjut dari pos pemeriksaan tersebut. Pecahan yang belum dimulai dapat menggunakan konfigurasi baru, atau gagal jika tidak sesuai dengan sewa yang ada. Oleh karena itu, aplikasi dapat memproses pecahan yang berbeda dari posisi awal yang berbeda.

Untuk menerapkan salah satu perubahan dengan aman, hentikan aplikasi yang ada dan pilih salah satu dari pendekatan berikut:

  1. Hapus tabel sewa dan mulai ulang aplikasi (disarankan): Hentikan setiap pekerja, hapus tabel sewa yang ada, perbarui konfigurasi, lalu restart aplikasi.

  2. Gunakan nama aplikasi baru: Adaptor membuat tabel sewa baru dan menerapkan stempel waktu baru atau posisi awal saat aplikasi dimulai. Secara default, KCL menggunakan nama aplikasi sebagai nama tabel sewa kecuali secara eksplisit diganti. Tabel sewa yang ada tetap tersedia jika Anda perlu memutar kembali.

Harga

Tidak ada biaya tambahan untuk membaca catatan aliran dari stempel waktu di luar standar GetRecords biaya. Untuk informasi lebih lanjut, lihat Harga DynamoDB.

Lihat juga