

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
<a name="Streams.Timestamp"></a>

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
<a name="Streams.Timestamp.Prerequisites"></a>

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](Streams.KCLAdapter.md).

## Konfigurasikan stempel waktu awal
<a name="Streams.Timestamp.Configure"></a>

1. Buat `InitialPositionInStreamExtended` contoh dengan stempel waktu yang diinginkan.

1. Berikan ke `StreamsSchedulerFactory.createSingleStreamTracker`.

1. 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
<a name="Streams.Timestamp.Scenarios"></a>

### Stempel waktu lebih tua dari catatan aliran yang disimpan
<a name="Streams.Timestamp.Scenarios.OlderThanRetention"></a>

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
<a name="Streams.Timestamp.Scenarios.Future"></a>

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
<a name="Streams.Timestamp.ConfigChange"></a>

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.

1. **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
<a name="Streams.Timestamp.Pricing"></a>

Tidak ada biaya tambahan untuk membaca catatan aliran dari stempel waktu di luar standar `GetRecords` biaya. Untuk informasi lebih lanjut, lihat [Harga DynamoDB](https://aws.amazon.com/dynamodb/pricing/).

## Lihat juga
<a name="Streams.Timestamp.SeeAlso"></a>
+ [Menggunakan adaptor DynamoDB Streams Kinesis untuk memproses catatan aliran](Streams.KCLAdapter.md)
+ [Mengembangkan konsumen menggunakan Kinesis Client Library](https://docs.aws.amazon.com/streams/latest/dev/kcl.html)
+ [DynamoDB Mengalirkan Adaptor Kinesis pada GitHub situs web](https://github.com/awslabs/dynamodb-streams-kinesis-adapter)