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
-
Buat
InitialPositionInStreamExtendedcontoh dengan stempel waktu yang diinginkan. -
Berikan ke
StreamsSchedulerFactory.createSingleStreamTracker. -
Tambahkan yang dikembalikan
StreamTrackerkeConfigsBuilderuntuk 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:
-
Hapus tabel sewa dan mulai ulang aplikasi (disarankan): Hentikan setiap pekerja, hapus tabel sewa yang ada, perbarui konfigurasi, lalu restart aplikasi.
-
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