

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

# Membuat dan mengelola aliran data Kinesis
<a name="working-with-streams"></a>

Amazon Kinesis Data Streams menyerap sejumlah besar data secara real time, menyimpan data dengan tahan lama, dan membuat data tersedia untuk dikonsumsi. Unit data yang disimpan oleh Kinesis Data Streams *adalah* catatan data. *Aliran data* mewakili sekelompok catatan data. Catatan data dalam aliran data didistribusikan ke dalam pecahan.

*Pecahan* memiliki urutan catatan data dalam aliran. Ini berfungsi sebagai unit throughput dasar dari aliran data Kinesis. Pecahan mendukung 1 MB/s dan 1000 catatan per detik untuk *penulisan* dan 2 MB/s untuk *pembacaan* dalam mode kapasitas sesuai permintaan dan yang disediakan. Batas pecahan memastikan kinerja yang dapat diprediksi, membuatnya lebih mudah untuk merancang dan mengoperasikan alur kerja streaming data yang sangat andal. 

Di bagian ini, Anda mempelajari cara mengatur mode kapasitas untuk aliran dan cara membuat aliran menggunakan Konsol Manajemen AWS atau APIs. Kemudian Anda dapat mengambil tindakan tambahan di streaming. 

**Topics**
+ [Pilih mode yang tepat untuk streaming](how-do-i-size-a-stream.md)
+ [Buat aliran menggunakan Konsol Manajemen AWS](how-do-i-create-a-stream.md)
+ [Buat aliran menggunakan APIs](kinesis-using-sdk-java-create-stream.md)
+ [Perbarui aliran](updating-a-stream.md)
+ [Daftar aliran](kinesis-using-sdk-java-list-streams.md)
+ [Daftar pecahan](kinesis-using-sdk-java-list-shards.md)
+ [Hapus aliran](kinesis-using-sdk-java-delete-stream.md)
+ [Reshard aliran](kinesis-using-sdk-java-resharding.md)
+ [Ubah periode retensi data](kinesis-extended-retention.md)
+ [Tandai sumber daya Amazon Kinesis Data Streams Anda](tagging.md)
+ [Menangani catatan besar](large-records.md)
+ [Lakukan pengujian ketahanan dengan AWS Fault Injection Service](kinesis-fis.md)

# Pilih mode yang tepat untuk streaming
<a name="how-do-i-size-a-stream"></a>

Topik berikut menjelaskan cara memilih mode terbaik untuk aplikasi Anda dan cara beralih antar mode, jika diperlukan.

**Topics**
+ [Apa saja mode yang berbeda dalam Kinesis Data Streams?](#diff-modes-kds)
+ [Fitur mode Standar sesuai permintaan dan kasus penggunaan](#ondemandmode)
+ [Fitur mode Advantage sesuai permintaan dan kasus penggunaan](#ondemand-advantage-mode)
+ [Fitur mode yang disediakan dan kasus penggunaan](#provisionedmode)
+ [Beralih antar mode](#switchingmodes)

## Apa saja mode yang berbeda dalam Kinesis Data Streams?
<a name="diff-modes-kds"></a>

Mode menentukan bagaimana kapasitas aliran data dikelola dan bagaimana Anda dikenakan biaya untuk penggunaan aliran data Anda. Di Amazon Kinesis Data Streams, Anda **dapat memilih** **Standar Sesuai Permintaan, Keuntungan Sesuai Permintaan**,**** dan disediakan sebagai mode untuk aliran data Anda.
+ **Standar On-Demand** - Aliran data dengan mode on-demand tidak memerlukan perencanaan kapasitas dan secara otomatis menskalakan untuk menangani gigabyte throughput tulis dan baca per menit. Dengan mode on-demand, Kinesis Data Streams secara otomatis mengelola pecahan untuk menyediakan throughput yang diperlukan.
+  **On-Demand Advantage** - Mode tingkat akun yang memungkinkan lebih banyak kemampuan dan menyediakan struktur harga yang lebih sederhana untuk aliran sesuai permintaan. Dalam mode ini, Anda dapat secara proaktif menghangatkan kapasitas throughput tulis aliran kapan saja. **Untuk penetapan harga, tidak ada lagi biaya tingkat per aliran tetap, dan konsumsi data, pengambilan data, dan penggunaan retensi yang diperpanjang di semua aliran sesuai permintaan setidaknya 60% lebih rendah daripada Standar Sesuai Permintaan.** 
+ **Disediakan** - Untuk aliran data dengan mode yang disediakan, Anda harus menentukan jumlah pecahan untuk aliran data. Kapasitas total aliran data adalah jumlah dari kapasitas pecahannya. Anda dapat menambah atau mengurangi jumlah pecahan dalam aliran data, sesuai kebutuhan.

Anda dapat menggunakan Kinesis Data `PutRecords` APIs Streams dan untuk menulis `PutRecord` data ke dalam aliran data Anda dalam mode apa pun. Untuk mengambil data, ketiga mode mendukung konsumen default yang menggunakan `GetRecords` API dan konsumen Enhanced Fan-Out (EFO) yang menggunakan API. `SubscribeToShard`

Semua kemampuan Kinesis Data Streams, termasuk mode retensi, enkripsi, metrik pemantauan, dan lainnya, didukung untuk mode sesuai permintaan dan yang disediakan. Kinesis Data Streams memberikan daya tahan dan ketersediaan yang tinggi baik dalam mode kapasitas sesuai permintaan maupun yang disediakan.

## Fitur mode Standar sesuai permintaan dan kasus penggunaan
<a name="ondemandmode"></a>

Aliran data dalam mode on-demand tidak memerlukan perencanaan kapasitas dan secara otomatis menskalakan untuk menangani gigabyte throughput tulis dan baca per menit. Mode on-demand menyederhanakan pengambilan dan penyimpanan volume data yang besar pada latensi rendah karena menghilangkan penyediaan dan pengelolaan server, penyimpanan, atau throughput. Anda dapat menelan miliaran catatan per hari tanpa biaya operasional apa pun.

Mode on-demand sangat ideal untuk memenuhi kebutuhan lalu lintas aplikasi yang sangat bervariasi dan tidak dapat diprediksi. Anda tidak lagi harus menyediakan beban kerja ini untuk kapasitas puncak, yang dapat menghasilkan biaya yang lebih tinggi karena pemanfaatan yang rendah. Mode on-demand cocok untuk beban kerja dengan pola lalu lintas yang tidak dapat diprediksi dan sangat bervariasi. 

Dengan mode kapasitas sesuai permintaan, Anda membayar per GB data yang ditulis dan dibaca dari aliran data Anda. Anda tidak perlu menentukan berapa banyak throughput baca dan tulis yang Anda harapkan untuk dilakukan aplikasi Anda. Kinesis Data Streams langsung mengakomodasi beban kerja Anda saat mereka naik atau turun. Lihat informasi yang lebih lengkap di [struktur harga Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/pricing/).

Aliran data dalam mode on-demand mengakomodasi hingga dua kali lipat throughput penulisan puncak yang diamati dalam 30 hari sebelumnya. Saat throughput penulisan aliran data Anda mencapai puncak baru, Kinesis Data Streams menskalakan kapasitas aliran data secara otomatis. Misalnya, jika aliran data Anda memiliki throughput tulis yang bervariasi antara 10 MB/s dan 40 MB/s, then Kinesis Data Streams ensures that you can easily burst to double your previous peak throughput, or 80 MB/s. If the same data stream sustains a new peak throughput of 50 MB/s, Kinesis Data Streams ensures that there is enough capacity to ingest 100 MB/s throughput tulis. Namun, pelambatan tulis dapat terjadi jika lalu lintas Anda meningkat menjadi lebih dari dua kali lipat puncak sebelumnya dalam durasi 15 menit. Anda perlu mencoba kembali permintaan terbatas ini.

Kapasitas baca agregat dari aliran data dengan mode on-demand meningkat secara proporsional terhadap throughput penulisan. Ini membantu memastikan bahwa aplikasi konsumen selalu memiliki throughput baca yang memadai untuk memproses data yang masuk secara real time. Anda mendapatkan setidaknya dua kali throughput tulis dibandingkan dengan membaca data menggunakan `GetRecords` API. Kami menyarankan Anda menggunakan satu aplikasi konsumen dengan `GetRecord` API, sehingga memiliki cukup ruang untuk mengejar ketinggalan ketika aplikasi perlu pulih dari waktu henti. Disarankan agar Anda menggunakan kemampuan Enhanced Fan-Out dari Kinesis Data Streams untuk skenario yang memerlukan penambahan lebih dari satu aplikasi konsumen. Enhanced Fan-Out mendukung penambahan hingga 20 aplikasi konsumen ke aliran data menggunakan `SubscribeToShard` API, dengan setiap aplikasi konsumen memiliki throughput khusus. 

### Menangani pengecualian throughput baca dan tulis
<a name="hotshards"></a>

Dengan mode on-demand (sama seperti dengan mode kapasitas yang disediakan), Anda harus menentukan kunci partisi dengan setiap catatan untuk menulis data ke dalam aliran data Anda. Kinesis Data Streams menggunakan kunci partisi Anda untuk mendistribusikan data di seluruh pecahan. Kinesis Data Streams memantau lalu lintas untuk setiap pecahan. Ketika lalu lintas yang masuk melebihi 500 KB/s per pecahan, itu membagi pecahan dalam waktu 15 menit. Nilai kunci hash shard induk didistribusikan kembali secara merata di seluruh pecahan anak.

 Jika lalu lintas masuk Anda melebihi dua kali puncak sebelumnya, Anda dapat mengalami pengecualian baca atau tulis selama sekitar 15 menit, bahkan ketika data Anda didistribusikan secara merata di seluruh pecahan. Kami menyarankan Anda mencoba kembali semua permintaan tersebut sehingga semua catatan disimpan dengan benar di Kinesis Data Streams. 

Anda mungkin mengalami pengecualian baca dan tulis jika Anda menggunakan kunci partisi yang mengarah ke distribusi data yang tidak merata, dan catatan yang ditetapkan ke pecahan tertentu melebihi batasnya. Dengan mode on-demand, aliran data secara otomatis beradaptasi untuk menangani pola distribusi data yang tidak merata kecuali kunci partisi tunggal melebihi 1 MB/s throughput pecahan dan 1000 record per detik batas. 

Dalam mode on-demand, Kinesis Data Streams membagi pecahan secara merata saat mendeteksi peningkatan lalu lintas. Namun, itu tidak mendeteksi dan mengisolasi kunci hash yang mendorong bagian yang lebih tinggi dari lalu lintas masuk ke pecahan tertentu. Jika Anda menggunakan kunci partisi yang sangat tidak rata, Anda dapat terus menerima pengecualian tulis. Untuk kasus penggunaan seperti itu, kami menyarankan Anda menggunakan mode kapasitas yang disediakan yang mendukung pemisahan pecahan granular.

## Fitur mode Advantage sesuai permintaan dan kasus penggunaan
<a name="ondemand-advantage-mode"></a>

On-Demand Advantage adalah pengaturan tingkat akun yang membuka lebih banyak kemampuan dan menyediakan struktur harga yang berbeda untuk semua aliran sesuai permintaan di Wilayah. Dalam mode ini, aliran sesuai permintaan mempertahankan fungsionalitasnya dan terus menskalakan kapasitas secara otomatis berdasarkan penggunaan data aktual. Jika Anda ingin secara proaktif menghangatkan kapasitas throughput tulis aliran, Anda dapat mengonfigurasi throughput hangat. Misalnya, jika aliran data Anda memiliki throughput tulis antara 10 MB/s dan 40 MB/s, you can expect it to handle up to 80MB/s of instant throughput increases without throttling. However, if you forecast an upcoming event to peak around 200MB/s of traffic, you can configure the stream with a warm throughput of 200MB/s untuk memastikan bahwa kapasitas tersedia saat throughput data tiba. Menggunakan throughput hangat tidak dikenakan biaya tambahan.

Manfaat lain dari mode On-Demand Advantage adalah bahwa aliran on-demand bertransisi ke struktur harga yang lebih sederhana. Dengan mode diaktifkan, akun tidak akan lagi melihat biaya tetap per aliran, dan Anda hanya akan berurusan dengan penyerapan data, pengambilan data, dan biaya retensi tambahan opsional. Setiap dimensi harga juga memiliki diskon yang signifikan dibandingkan dengan dimensi yang sesuai dalam Standar On-Demand. Lihat informasi yang lebih lengkap di [struktur harga Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/pricing/).

Pengambilan data fan-out yang disempurnakan juga tidak memiliki premi harga dibandingkan dengan pengambilan data standar dalam mode ini. Selain itu, dengan mode On-Demand Advantage, Anda dapat mendaftarkan hingga 50 konsumen per streaming untuk menggunakan fan-out yang ditingkatkan. Mengaktifkan On-Demand Advantage mengikat akun ke setidaknya 25 MiB/s of data ingest and 25MiB/s pengambilan data di semua aliran sesuai permintaan. Untuk akun yang memenuhi persyaratan penggunaan minimum, konsol Kinesis Data Streams memiliki pemeriksaan untuk melihat apakah pola penggunaan akun Anda cocok untuk **menggunakan mode Advantage Sesuai Permintaan**.

Jika penggunaan data akun Anda di bawah persyaratan, Anda akan dikenakan selisihnya sebagai kekurangan, tetapi masih akan memiliki tarif diskon yang sama. Mengaktifkan On-Demand Advantage juga memiliki periode minimum 24 jam sebelum Anda dapat menonaktifkan mode. Secara keseluruhan, On-Demand Advantage adalah cara terbaik untuk melakukan streaming dengan Kinesis Data Streams jika Anda memiliki penggunaan throughput yang konsisten mendekati atau di atas komitmen minimum, membutuhkan banyak konsumen penggemar, atau beroperasi dengan ratusan aliran data. 

## Fitur mode yang disediakan dan kasus penggunaan
<a name="provisionedmode"></a>

Dengan mode yang disediakan, setelah Anda membuat aliran data, Anda dapat menskalakan kapasitas pecahan secara dinamis ke atas atau ke bawah menggunakan atau API. Konsol Manajemen AWS [UpdateShardCount](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_UpdateShardCount.html) Anda dapat melakukan pembaruan saat ada produsen Kinesis Data Streams atau aplikasi konsumen yang menulis atau membaca data dari aliran. 

Mode yang disediakan cocok untuk lalu lintas yang dapat diprediksi dengan persyaratan kapasitas yang mudah diprediksi. Anda dapat menggunakan mode yang disediakan jika Anda ingin kontrol halus atas bagaimana data didistribusikan di seluruh pecahan. 

Dengan mode yang disediakan, Anda harus menentukan jumlah pecahan untuk aliran data. Untuk menentukan ukuran aliran data dengan mode yang disediakan, Anda memerlukan nilai input berikut:
+ Ukuran rata-rata catatan data yang ditulis ke aliran dalam kilobyte (KB), dibulatkan ke 1 KB (`average_data_size_in_KB`) terdekat.
+ Jumlah catatan data yang ditulis dan dibaca dari aliran per detik (`records_per_second`).
+ Jumlah konsumen, yaitu aplikasi Kinesis Data Streams yang mengkonsumsi data secara bersamaan dan independen dari stream (). `number_of_consumers`
+ Bandwidth tulis masuk dalam KB (`incoming_write_bandwidth_in_KB`), yang sama dengan `average_data_size_in_KB` dikalikan dengan. `records_per_second`
+ Bandwidth baca keluar dalam KB (`outgoing_read_bandwidth_in_KB`), yang sama dengan `incoming_write_bandwidth_in_KB` dikalikan dengan. `number_of_consumers`

Anda dapat menghitung jumlah pecahan (`number_of_shards`) yang dibutuhkan aliran Anda dengan menggunakan nilai input dalam rumus berikut.

```
number_of_shards = ceiling(max(incoming_write_bandwidth_in_KiB/1024, outgoing_read_bandwidth_in_KiB/2048))
```

Anda mungkin masih mengalami pengecualian throughput baca dan tulis dalam mode yang disediakan jika Anda tidak mengonfigurasi aliran data untuk menangani throughput puncak Anda. Dalam hal ini, Anda harus menskalakan aliran data Anda secara manual untuk mengakomodasi lalu lintas data Anda. 

Anda mungkin juga mengalami pengecualian baca dan tulis jika Anda menggunakan kunci partisi yang mengarah ke distribusi data yang tidak merata dan catatan yang ditetapkan ke pecahan melebihi batasnya. Untuk mengatasi masalah ini dalam mode yang disediakan, identifikasi pecahan tersebut dan pisahkan secara manual untuk mengakomodasi lalu lintas Anda dengan lebih baik. Untuk informasi selengkapnya, lihat [Menyusun Ulang Stream](https://docs.aws.amazon.com/streams/latest/dev/kinesis-using-sdk-java-resharding.html). 

## Beralih antar mode
<a name="switchingmodes"></a>

Untuk setiap aliran data di Anda Akun AWS, Anda dapat beralih antara mode sesuai permintaan dan yang disediakan dua kali dalam 24 jam. Beralih antar mode tidak menyebabkan gangguan pada aplikasi Anda yang menggunakan aliran data ini. Anda dapat terus menulis dan membaca dari aliran data ini. *Saat Anda beralih antar mode, baik dari on-demand ke provisioned atau dari provisioned ke on-demand, status stream diatur ke Update.* Anda harus menunggu status aliran data untuk masuk ke *Aktif* sebelum Anda dapat mengubah propertinya lagi.

Saat Anda beralih dari mode kapasitas yang disediakan ke mode sesuai permintaan, aliran data Anda pada awalnya mempertahankan jumlah pecahan apa pun yang dimilikinya sebelum transisi, dan mulai saat ini, Kinesis Data Streams memantau lalu lintas data Anda dan menskalakan jumlah pecahan aliran data sesuai permintaan ini tergantung pada throughput penulisan Anda. Saat Anda beralih dari mode on-demand ke provisioned, aliran data Anda pada awalnya juga mempertahankan jumlah pecahan apa pun yang dimilikinya sebelum transisi, tetapi mulai saat ini, Anda bertanggung jawab untuk memantau dan menyesuaikan jumlah pecahan aliran data ini untuk mengakomodasi throughput tulis Anda dengan benar.

Anda dapat beralih dari mode **On-Demand Standard** ke **On-Demand Advantage** dengan mengaktifkan pengaturan level akun. Saat diaktifkan, akun berkomitmen untuk setidaknya 25 MiB/s of data ingest and 25MiB/s penggunaan pengambilan data di semua aliran sesuai permintaan di Wilayah. Setelah diaktifkan, Anda harus menunggu setidaknya 24 jam sebelum Anda dapat menonaktifkan **On-Demand Advantage**, tetapi Anda dapat meminta perubahan kapan saja. Jika Anda ingin beralih dari **On-Demand Advantage** ke **On-Demand Standard**, Anda harus terlebih dahulu menghapus throughput hangat yang dikonfigurasi dengan aliran permintaan.

# Buat aliran menggunakan Konsol Manajemen AWS
<a name="how-do-i-create-a-stream"></a>

Anda dapat membuat stream menggunakan konsol Kinesis Data Streams, Kinesis Data Streams API, atau (). AWS Command Line Interface AWS CLI

**Untuk membuat aliran data menggunakan konsol**

1. [Masuk ke Konsol Manajemen AWS dan buka konsol Kinesis di /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Di bilah navigasi, perluas pemilih Wilayah dan pilih Wilayah.

1. Pilih **Create data stream** (Buat aliran data).

1. Pada halaman **Create Kinesis stream**, masukkan nama untuk aliran data Anda dan kemudian pilih mode kapasitas **On-Demand** atau **Provisioned**. Mode **On-Demand** dipilih secara default. Untuk informasi selengkapnya, lihat [Pilih mode yang tepat untuk streaming](how-do-i-size-a-stream.md).

   Dengan mode **On-Demand**, Anda kemudian dapat memilih **Create Kinesis** stream untuk membuat aliran data Anda. Dengan mode **Provisioned**, Anda kemudian harus menentukan jumlah pecahan yang Anda butuhkan, dan kemudian memilih Create **Kinesis** stream.

   Pada halaman **Kinesis streams**, **Status** streaming Anda adalah **Membuat** saat aliran sedang dibuat. Saat aliran siap digunakan, **Status** berubah menjadi **Aktif**.

1. Pilih nama streaming Anda. Halaman **Detail Stream** menampilkan ringkasan konfigurasi aliran Anda, bersama dengan informasi pemantauan.

**Untuk membuat stream menggunakan Kinesis Data Streams API**
+ Untuk informasi tentang membuat stream menggunakan Kinesis Data Streams API, lihat. [Buat aliran menggunakan APIs](kinesis-using-sdk-java-create-stream.md)

**Untuk membuat aliran menggunakan AWS CLI**
+ Untuk informasi tentang membuat stream menggunakan AWS CLI, lihat perintah [create-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/create-stream.html).

# Buat aliran menggunakan APIs
<a name="kinesis-using-sdk-java-create-stream"></a>

Gunakan langkah-langkah berikut untuk membuat aliran data Kinesis Anda.

## Membangun klien Kinesis Data Streams
<a name="kinesis-using-sdk-java-create-client"></a>

Sebelum Anda dapat bekerja dengan aliran data Kinesis, Anda harus membangun objek klien. Kode Java berikut membuat instance pembuat klien dan menggunakannya untuk mengatur Region, kredensyal, dan konfigurasi klien. Kemudian membangun objek klien. 

```
AmazonKinesisClientBuilder clientBuilder = AmazonKinesisClientBuilder.standard();
        
clientBuilder.setRegion(regionName);
clientBuilder.setCredentials(credentialsProvider);
clientBuilder.setClientConfiguration(config);
        
AmazonKinesis client = clientBuilder.build();
```

Untuk informasi selengkapnya, lihat [Wilayah dan Titik Akhir Kinesis Data Streams di](https://docs.aws.amazon.com/general/latest/gr/rande.html#ak_region). *Referensi Umum AWS*

## Buat aliran
<a name="kinesis-using-sdk-java-create-the-stream"></a>

Sekarang setelah Anda membuat klien Kinesis Data Streams, Anda dapat membuat aliran menggunakan konsol atau secara terprogram. Untuk membuat aliran secara terprogram, buat instance `CreateStreamRequest` objek dan tentukan nama untuk aliran. Jika Anda ingin menggunakan mode yang disediakan, tentukan jumlah pecahan untuk aliran yang akan digunakan.
+ **Sesuai permintaan**:

  ```
  CreateStreamRequest createStreamRequest = new CreateStreamRequest();
  createStreamRequest.setStreamName( myStreamName );
  ```
+ **Disediakan:**

  ```
  CreateStreamRequest createStreamRequest = new CreateStreamRequest();
  createStreamRequest.setStreamName( myStreamName );
  createStreamRequest.setShardCount( myStreamSize );
  ```

Nama aliran mengidentifikasi aliran. Nama tersebut dicakup ke AWS akun yang digunakan oleh aplikasi. Itu juga dicakup oleh Wilayah. Artinya, dua aliran dalam dua AWS akun berbeda dapat memiliki nama yang sama, dan dua aliran di AWS akun yang sama tetapi di dua Wilayah yang berbeda dapat memiliki nama yang sama, tetapi tidak dua aliran pada akun yang sama dan di Wilayah yang sama.

Throughput aliran adalah fungsi dari jumlah pecahan. Untuk throughput yang disediakan lebih besar, Anda membutuhkan lebih banyak pecahan. Lebih banyak pecahan juga meningkatkan biaya yang AWS dikenakan untuk aliran. Untuk informasi selengkapnya tentang menghitung jumlah pecahan yang sesuai untuk aplikasi Anda, lihat[Pilih mode yang tepat untuk streaming](how-do-i-size-a-stream.md).

 Setelah Anda mengkonfigurasi `createStreamRequest` objek, buat aliran dengan memanggil `createStream` metode pada klien. Setelah menelepon`createStream`, tunggu hingga aliran mencapai `ACTIVE` status sebelum melakukan operasi apa pun di aliran. Untuk memeriksa status aliran, panggil `describeStream` metode. Namun, `describeStream` melempar pengecualian jika aliran tidak ada. Oleh karena itu, lampirkan `describeStream` panggilan dalam satu `try/catch` blok. 

```
client.createStream( createStreamRequest );
DescribeStreamRequest describeStreamRequest = new DescribeStreamRequest();
describeStreamRequest.setStreamName( myStreamName );

long startTime = System.currentTimeMillis();
long endTime = startTime + ( 10 * 60 * 1000 );
while ( System.currentTimeMillis() < endTime ) {
  try {
    Thread.sleep(20 * 1000);
  } 
  catch ( Exception e ) {}
  
  try {
    DescribeStreamResult describeStreamResponse = client.describeStream( describeStreamRequest );
    String streamStatus = describeStreamResponse.getStreamDescription().getStreamStatus();
    if ( streamStatus.equals( "ACTIVE" ) ) {
      break;
    }
    //
    // sleep for one second
    //
    try {
      Thread.sleep( 1000 );
    }
    catch ( Exception e ) {}
  }
  catch ( ResourceNotFoundException e ) {}
}
if ( System.currentTimeMillis() >= endTime ) {
  throw new RuntimeException( "Stream " + myStreamName + " never went active" );
}
```

# Perbarui aliran
<a name="updating-a-stream"></a>

Anda dapat memperbarui detail aliran menggunakan konsol Kinesis Data Streams, Kinesis Data Streams API, atau file. AWS CLI

**catatan**  
Anda dapat mengaktifkan enkripsi sisi server untuk aliran yang ada, atau untuk aliran yang baru saja Anda buat.

## Gunakan konsol
<a name="update-stream-console"></a>

**Untuk memperbarui aliran data menggunakan konsol**

1. Buka konsol Amazon Kinesis di. [https://console.aws.amazon.com/kinesis/](https://console.aws.amazon.com/kinesis/)

1. Di bilah navigasi, perluas pemilih Wilayah dan pilih Wilayah.

1. Pilih nama streaming Anda dalam daftar. Halaman **Detail Stream** menampilkan ringkasan konfigurasi aliran dan informasi pemantauan Anda.

1. **Untuk beralih antara mode kapasitas sesuai permintaan dan yang disediakan untuk aliran data, pilih **Edit mode kapasitas** di tab Konfigurasi.** Untuk informasi selengkapnya, lihat [Pilih mode yang tepat untuk streaming](how-do-i-size-a-stream.md).
**penting**  
Untuk setiap aliran data di AWS akun Anda, Anda dapat beralih antara mode sesuai permintaan dan yang disediakan dua kali dalam 24 jam.

1. Untuk aliran data dengan mode yang disediakan, untuk mengedit jumlah pecahan, pilih **Edit pecahan yang disediakan di tab **Konfigurasi**, lalu masukkan jumlah pecahan baru**.

1. Untuk mengaktifkan enkripsi data data sisi server, pilih **Edit** di bagian enkripsi sisi **server**. Pilih kunci KMS untuk digunakan sebagai kunci utama untuk enkripsi, atau gunakan kunci master default, **aws/kinesis, yang dikelola oleh Kinesis**. Jika Anda mengaktifkan enkripsi untuk aliran dan menggunakan kunci AWS KMS master Anda sendiri, pastikan bahwa produsen dan aplikasi konsumen Anda memiliki akses ke AWS KMS kunci utama yang Anda gunakan. Untuk menetapkan izin ke aplikasi untuk mengakses kunci yang dibuat pengguna AWS KMS , lihat. [Izin untuk menggunakan kunci KMS buatan pengguna](permissions-user-key-KMS.md)

1. Untuk mengedit periode penyimpanan data, pilih **Edit** di bagian **Periode penyimpanan data**, lalu masukkan periode retensi data baru.

1. Jika Anda telah mengaktifkan metrik khusus di akun Anda, pilih **Edit** di bagian **Metrik tingkat pecahan, lalu tentukan metrik** untuk aliran Anda. Untuk informasi selengkapnya, lihat [Pantau layanan Amazon Kinesis Data Streams dengan Amazon CloudWatch](monitoring-with-cloudwatch.md).

## Gunakan API
<a name="update-stream-api"></a>

Untuk memperbarui detail streaming menggunakan API, lihat metode berikut:
+ [AddTagsToStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_AddTagsToStream.html)
+ [DecreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DecreaseStreamRetentionPeriod.html)
+ [DisableEnhancedMonitoring](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DisableEnhancedMonitoring.html)
+ [EnableEnhancedMonitoring](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_EnableEnhancedMonitoring.html)
+ [IncreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_IncreaseStreamRetentionPeriod.html)
+ [RemoveTagsFromStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_RemoveTagsFromStream.html)
+ [StartStreamEncryption](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_StartStreamEncryption.html)
+ [StopStreamEncryption](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_StopStreamEncryption.html)
+ [UpdateShardCount](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_UpdateShardCount.html)

## Gunakan AWS CLI
<a name="update-stream-cli"></a>

Untuk informasi tentang memperbarui aliran menggunakan AWS CLI, lihat referensi [Kinesis CLI](https://docs.aws.amazon.com/cli/latest/reference/kinesis/index.html). 

# Daftar aliran
<a name="kinesis-using-sdk-java-list-streams"></a>

Stream dicakup ke AWS akun yang terkait dengan AWS kredensil yang digunakan untuk membuat instance klien Kinesis Data Streams dan juga ke Wilayah yang ditentukan untuk klien. Sebuah AWS akun dapat memiliki banyak aliran aktif pada satu waktu. Anda dapat mencantumkan aliran Anda di konsol Kinesis Data Streams, atau secara terprogram. Kode di bagian ini menunjukkan cara membuat daftar semua aliran untuk AWS akun Anda. 

```
ListStreamsRequest listStreamsRequest = new ListStreamsRequest();
listStreamsRequest.setLimit(20); 
ListStreamsResult listStreamsResult = client.listStreams(listStreamsRequest);
List<String> streamNames = listStreamsResult.getStreamNames();
```

Contoh kode ini pertama kali membuat instance baru `ListStreamsRequest` dan memanggil `setLimit` metodenya untuk menentukan bahwa maksimum 20 aliran harus dikembalikan untuk setiap panggilan ke`listStreams`. Jika Anda tidak menentukan nilai untuk`setLimit`, Kinesis Data Streams mengembalikan sejumlah aliran kurang dari atau sama dengan nomor di akun. Kode kemudian diteruskan `listStreamsRequest` ke `listStreams` metode klien. Nilai kembali `listStreams` disimpan dalam sebuah `ListStreamsResult` objek. Kode memanggil `getStreamNames` metode pada objek ini dan menyimpan nama aliran yang dikembalikan dalam `streamNames` daftar. Perhatikan bahwa Kinesis Data Streams mungkin mengembalikan aliran lebih sedikit daripada yang ditentukan oleh batas yang ditentukan meskipun ada lebih banyak aliran daripada yang ada di akun dan Wilayah. Untuk memastikan bahwa Anda mengambil semua aliran, gunakan `getHasMoreStreams` metode seperti yang dijelaskan dalam contoh kode berikutnya. 

```
while (listStreamsResult.getHasMoreStreams()) 
{
    if (streamNames.size() > 0) {
      listStreamsRequest.setExclusiveStartStreamName(streamNames.get(streamNames.size() - 1));
    }
    listStreamsResult = client.listStreams(listStreamsRequest);
    streamNames.addAll(listStreamsResult.getStreamNames());
}
```

Kode ini memanggil `getHasMoreStreams` metode `listStreamsRequest` untuk memeriksa apakah ada aliran tambahan yang tersedia di luar yang dikembalikan dalam panggilan awal ke`listStreams`. Jika demikian, kode memanggil `setExclusiveStartStreamName` metode dengan nama aliran terakhir yang dikembalikan dalam panggilan sebelumnya ke`listStreams`. `setExclusiveStartStreamName`Metode ini menyebabkan `listStreams` panggilan berikutnya dimulai setelah aliran itu. Grup nama aliran yang dikembalikan oleh panggilan itu kemudian ditambahkan ke `streamNames` daftar. Proses ini berlanjut hingga semua nama aliran dikumpulkan dalam daftar.

 Aliran yang dikembalikan oleh `listStreams` dapat berada di salah satu status berikut: 
+ `CREATING`
+ `ACTIVE`
+ `UPDATING`
+ `DELETING`

Anda dapat memeriksa status aliran menggunakan `describeStream` metode, seperti yang ditunjukkan pada bagian sebelumnya,[Buat aliran menggunakan APIs](kinesis-using-sdk-java-create-stream.md).

# Daftar pecahan
<a name="kinesis-using-sdk-java-list-shards"></a>

Aliran data dapat memiliki satu atau lebih pecahan. Metode yang disarankan untuk membuat daftar atau mengambil pecahan dari aliran data adalah dengan menggunakan API. [ListShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html) Contoh berikut menunjukkan bagaimana Anda bisa mendapatkan daftar pecahan dalam aliran data. Untuk deskripsi lengkap tentang operasi utama yang digunakan dalam contoh ini dan semua parameter yang dapat Anda atur untuk operasi, lihat [ListShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html).

```
import software.amazon.awssdk.services.kinesis.KinesisAsyncClient;
import software.amazon.awssdk.services.kinesis.model.ListShardsRequest;
import software.amazon.awssdk.services.kinesis.model.ListShardsResponse;

import java.util.concurrent.TimeUnit;

public class ShardSample {

    public static void main(String[] args) {

        KinesisAsyncClient client = KinesisAsyncClient.builder().build();

        ListShardsRequest request = ListShardsRequest
                .builder().streamName("myFirstStream")
                .build();

        try {
            ListShardsResponse response = client.listShards(request).get(5000, TimeUnit.MILLISECONDS);
            System.out.println(response.toString());
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}
```

Untuk menjalankan contoh kode sebelumnya Anda dapat menggunakan file POM seperti yang berikut.

```
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>kinesis.data.streams.samples</groupId>
    <artifactId>shards</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>kinesis</artifactId>
            <version>2.0.0</version>
        </dependency>
    </dependencies>
</project>
```

Dengan `ListShards` API, Anda dapat menggunakan [ShardFilter](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ShardFilter.html)parameter untuk memfilter respons API. Anda hanya dapat menentukan satu filter pada satu waktu. 

Jika Anda menggunakan `ShardFilter` parameter saat menjalankan ListShards API, `Type` adalah properti wajib dan harus ditentukan. Jika Anda menentukan`AT_TRIM_HORIZON`,`FROM_TRIM_HORIZON`, atau `AT_LATEST` jenis, Anda tidak perlu menentukan properti `ShardId` atau `Timestamp` opsional.

Jika Anda menentukan `AFTER_SHARD_ID` jenisnya, Anda juga harus memberikan nilai untuk `ShardId` properti opsional. `ShardId`Properti identik dalam fungsionalitas dengan `ExclusiveStartShardId` parameter ListShards API. Ketika `ShardId` properti ditentukan, responsnya mencakup pecahan yang dimulai dengan pecahan yang ID-nya segera mengikuti `ShardId` yang Anda berikan.

Jika Anda menentukan `AT_TIMESTAMP` atau `FROM_TIMESTAMP_ID` jenis, Anda juga harus memberikan nilai untuk `Timestamp` properti opsional. Jika Anda menentukan `AT_TIMESTAMP` jenisnya, maka semua pecahan yang terbuka pada stempel waktu yang disediakan dikembalikan. Jika Anda menentukan `FROM_TIMESTAMP` jenisnya, maka semua pecahan mulai dari stempel waktu yang disediakan hingga TIP dikembalikan. 

**penting**  
`DescribeStreamSummary`dan `ListShard` APIs menyediakan cara yang lebih skalabel untuk mengambil informasi tentang aliran data Anda. Lebih khusus lagi, kuota untuk DescribeStream API dapat menyebabkan pelambatan. Untuk informasi selengkapnya, lihat [Kuota dan batas](service-sizes-and-limits.md). Perhatikan juga bahwa `DescribeStream` kuota dibagikan di semua aplikasi yang berinteraksi dengan semua aliran data di akun Anda AWS . Kuota untuk ListShards API, di sisi lain, khusus untuk satu aliran data. Jadi, Anda tidak hanya mendapatkan TPS yang lebih tinggi dengan ListShards API, tetapi skala tindakannya lebih baik saat Anda membuat lebih banyak aliran data.  
Kami menyarankan Anda memigrasikan semua produsen dan konsumen Anda yang memanggil DescribeStream API untuk memanggil DescribeStreamSummary dan. ListShard APIs Untuk mengidentifikasi produsen dan konsumen ini, sebaiknya gunakan Athena untuk mengurai CloudTrail log karena agen pengguna untuk KPL dan KCL ditangkap dalam panggilan API.   

```
SELECT useridentity.sessioncontext.sessionissuer.username, 
useridentity.arn,eventname,useragent, count(*) FROM 
cloudtrail_logs WHERE Eventname IN ('DescribeStream')  AND 
eventtime
    BETWEEN ''
        AND ''
GROUP BY  useridentity.sessioncontext.sessionissuer.username,useridentity.arn,eventname,useragent
ORDER BY  count(*) DESC LIMIT 100
```
Kami juga merekomendasikan bahwa integrasi AWS Lambda dan Amazon Firehose dengan Kinesis Data Streams yang memanggil API dikonfigurasi ulang sehingga integrasi sebagai gantinya dipanggil `DescribeStream` dan. `DescribeStreamSummary` `ListShards` Khususnya, untuk AWS Lambda, Anda harus memperbarui pemetaan sumber acara Anda. Untuk Amazon Firehose, izin IAM yang sesuai harus diperbarui sehingga menyertakan izin IAM. `ListShards` 

# Hapus aliran
<a name="kinesis-using-sdk-java-delete-stream"></a>

Anda dapat menghapus aliran dengan konsol Kinesis Data Streams, atau secara terprogram. Untuk menghapus aliran secara terprogram, gunakan`DeleteStreamRequest`, seperti yang ditunjukkan pada kode berikut.

```
DeleteStreamRequest deleteStreamRequest = new DeleteStreamRequest();
deleteStreamRequest.setStreamName(myStreamName);
client.deleteStream(deleteStreamRequest);
```

Matikan aplikasi apa pun yang beroperasi di streaming sebelum Anda menghapusnya. Jika aplikasi mencoba beroperasi pada aliran yang dihapus, ia menerima `ResourceNotFound` pengecualian. Selain itu, jika Anda kemudian membuat aliran baru yang memiliki nama yang sama dengan aliran sebelumnya, dan aplikasi yang beroperasi pada aliran sebelumnya masih berjalan, aplikasi ini mungkin mencoba berinteraksi dengan aliran baru seolah-olah itu adalah aliran sebelumnya—dengan hasil yang tidak dapat diprediksi.

# Reshard aliran
<a name="kinesis-using-sdk-java-resharding"></a>

**penting**  
Anda dapat mengubah streaming Anda menggunakan API. [UpdateShardCount](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_UpdateShardCount.html) Jika tidak, Anda dapat terus melakukan pemisahan dan penggabungan seperti yang dijelaskan di sini.

Amazon Kinesis Data *Streams* mendukung resharding, yang memungkinkan Anda menyesuaikan jumlah pecahan dalam aliran Anda untuk beradaptasi dengan perubahan laju aliran data melalui aliran. Resharding dianggap sebagai operasi lanjutan. Jika Anda baru mengenal Kinesis Data Streams, kembali ke subjek ini setelah Anda terbiasa dengan semua aspek lain dari Kinesis Data Streams.

Ada dua jenis operasi resharding: shard split dan shard merge. Dalam pecahan pecahan, Anda membagi satu pecahan menjadi dua pecahan. Dalam penggabungan pecahan, Anda menggabungkan dua pecahan menjadi satu pecahan. Resharding selalu *berpasangan* dalam arti bahwa Anda tidak dapat membagi menjadi lebih dari dua pecahan dalam satu operasi, dan Anda tidak dapat menggabungkan lebih dari dua pecahan dalam satu operasi. *Pecahan atau sepasang pecahan tempat operasi resharding bekerja disebut sebagai pecahan induk.* *Pecahan atau sepasang pecahan yang dihasilkan dari operasi resharding disebut sebagai pecahan anak.* 

Pemisahan meningkatkan jumlah pecahan dalam aliran Anda dan karenanya meningkatkan kapasitas data aliran. Karena Anda dikenakan biaya per shard, pemisahan meningkatkan biaya streaming Anda. Demikian pula, penggabungan mengurangi jumlah pecahan dalam aliran Anda dan karenanya mengurangi kapasitas data—dan biaya—aliran. 

Resharding biasanya dilakukan oleh aplikasi administratif yang berbeda dari aplikasi produsen (put) dan aplikasi konsumen (get). Aplikasi administratif semacam itu memantau kinerja keseluruhan aliran berdasarkan metrik yang disediakan oleh Amazon CloudWatch atau berdasarkan metrik yang dikumpulkan dari produsen dan konsumen. Aplikasi administratif juga membutuhkan seperangkat izin IAM yang lebih luas daripada konsumen atau produsen karena konsumen dan produsen biasanya tidak memerlukan akses ke yang APIs digunakan untuk resharding. Untuk informasi selengkapnya tentang izin IAM untuk Kinesis Data Streams, lihat. [Mengontrol akses ke sumber daya Amazon Kinesis Data Streams menggunakan IAM](controlling-access.md) 

Untuk informasi selengkapnya tentang resharding, lihat [Bagaimana cara mengubah jumlah pecahan terbuka di Kinesis Data Streams](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-streams-open-shards/)?

**Topics**
+ [Tentukan strategi untuk resharding](kinesis-using-sdk-java-resharding-strategies.md)
+ [Pisahkan pecahan](kinesis-using-sdk-java-resharding-split.md)
+ [Gabungkan dua pecahan](kinesis-using-sdk-java-resharding-merge.md)
+ [Selesaikan tindakan resharding](kinesis-using-sdk-java-after-resharding.md)

# Tentukan strategi untuk resharding
<a name="kinesis-using-sdk-java-resharding-strategies"></a>

Tujuan resharding di Amazon Kinesis Data Streams adalah untuk memungkinkan streaming Anda beradaptasi dengan perubahan laju aliran data. Anda membagi pecahan untuk meningkatkan kapasitas (dan biaya) aliran Anda. Anda menggabungkan pecahan untuk mengurangi biaya (dan kapasitas) aliran Anda.

 Salah satu pendekatan untuk resharding adalah dengan membagi setiap pecahan di aliran—yang akan menggandakan kapasitas aliran. Namun, ini mungkin memberikan lebih banyak kapasitas tambahan daripada yang sebenarnya Anda butuhkan dan karenanya menghasilkan biaya yang tidak perlu. 

Anda juga dapat menggunakan metrik untuk menentukan pecahan *panas* atau *dingin* Anda, yaitu pecahan yang menerima lebih banyak data, atau data yang jauh lebih sedikit, dari yang diharapkan. Anda kemudian dapat secara selektif membagi pecahan panas untuk meningkatkan kapasitas kunci hash yang menargetkan pecahan tersebut. Demikian pula, Anda dapat menggabungkan pecahan dingin untuk memanfaatkan kapasitas yang tidak terpakai dengan lebih baik.

Anda dapat memperoleh beberapa data performa untuk streaming Anda dari CloudWatch metrik Amazon yang diterbitkan oleh Kinesis Data Streams. Namun, Anda juga dapat mengumpulkan beberapa metrik Anda sendiri untuk aliran Anda. Salah satu pendekatannya adalah dengan mencatat nilai kunci hash yang dihasilkan oleh kunci partisi untuk catatan data Anda. Ingat bahwa Anda menentukan kunci partisi pada saat Anda menambahkan catatan ke aliran. 

```
putRecordRequest.setPartitionKey( String.format( "myPartitionKey" ) );
```

Kinesis Data [MD5](http://en.wikipedia.org/wiki/MD5)Streams digunakan untuk menghitung kunci hash dari kunci partisi. Karena Anda menentukan kunci partisi untuk catatan, Anda dapat menggunakan MD5 untuk menghitung nilai kunci hash untuk catatan itu dan mencatatnya. 

Anda juga bisa mencatat pecahan tempat catatan data Anda ditetapkan. IDs ID pecahan tersedia dengan menggunakan `getShardId` metode `putRecordResults` objek dikembalikan oleh `putRecords` metode, dan `putRecordResult` objek dikembalikan oleh `putRecord` metode.

```
String shardId = putRecordResult.getShardId();
```

Dengan shard IDs dan nilai kunci hash, Anda dapat menentukan pecahan dan kunci hash mana yang menerima lalu lintas paling banyak atau paling sedikit. Anda kemudian dapat menggunakan resharding untuk memberikan kapasitas yang lebih atau kurang, yang sesuai untuk kunci ini.

# Pisahkan pecahan
<a name="kinesis-using-sdk-java-resharding-split"></a>

Untuk membagi pecahan di Amazon Kinesis Data Streams, Anda perlu menentukan bagaimana nilai kunci hash dari shard induk harus didistribusikan kembali ke pecahan turunan. Ketika Anda menambahkan catatan data ke aliran, itu ditetapkan ke pecahan berdasarkan nilai kunci hash. Nilai kunci hash adalah [MD5](http://en.wikipedia.org/wiki/MD5)hash dari kunci partisi yang Anda tentukan untuk catatan data pada saat Anda menambahkan catatan data ke aliran. Catatan data yang memiliki kunci partisi yang sama juga memiliki nilai kunci hash yang sama.

Nilai kunci hash yang mungkin untuk pecahan tertentu merupakan satu set bilangan bulat non-negatif berurutan yang bersebelahan. Rentang kemungkinan nilai kunci hash ini diberikan oleh yang berikut: 

```
shard.getHashKeyRange().getStartingHashKey();
shard.getHashKeyRange().getEndingHashKey();
```

Saat Anda membagi pecahan, Anda menentukan nilai dalam rentang ini. Nilai kunci hash dan semua nilai kunci hash yang lebih tinggi didistribusikan ke salah satu pecahan anak. Semua nilai kunci hash yang lebih rendah didistribusikan ke pecahan anak lainnya. 

Kode berikut menunjukkan operasi pecahan pecahan yang mendistribusikan kembali kunci hash secara merata di antara masing-masing pecahan anak, pada dasarnya membelah pecahan induk menjadi dua. Ini hanyalah salah satu cara yang mungkin untuk membagi pecahan induk. Anda dapat, misalnya, membagi pecahan sehingga sepertiga bagian bawah kunci dari orang tua pergi ke satu pecahan anak dan dua pertiga bagian atas kunci pergi ke pecahan anak lainnya. Namun, untuk banyak aplikasi, membelah pecahan menjadi dua adalah pendekatan yang efektif. 

Kode mengasumsikan bahwa `myStreamName` memegang nama aliran Anda dan variabel objek `shard` menahan pecahan untuk dipecah. Mulailah dengan membuat instance `splitShardRequest` objek baru dan mengatur nama aliran dan ID shard.

```
SplitShardRequest splitShardRequest = new SplitShardRequest();
splitShardRequest.setStreamName(myStreamName);
splitShardRequest.setShardToSplit(shard.getShardId());
```

Tentukan nilai kunci hash yang berada di tengah-tengah antara nilai terendah dan tertinggi dalam pecahan. Ini adalah nilai kunci hash awal untuk pecahan anak yang akan berisi bagian atas kunci hash dari pecahan induk. Tentukan nilai ini dalam `setNewStartingHashKey` metode. Anda hanya perlu tentukan nilai ini. Kinesis Data Streams secara otomatis mendistribusikan kunci hash di bawah nilai ini ke pecahan anak lain yang dibuat oleh split. Langkah terakhir adalah memanggil `splitShard` metode pada klien Kinesis Data Streams.

```
BigInteger startingHashKey = new BigInteger(shard.getHashKeyRange().getStartingHashKey());
BigInteger endingHashKey   = new BigInteger(shard.getHashKeyRange().getEndingHashKey());
String newStartingHashKey  = startingHashKey.add(endingHashKey).divide(new BigInteger("2")).toString();

splitShardRequest.setNewStartingHashKey(newStartingHashKey);
client.splitShard(splitShardRequest);
```

Langkah pertama setelah prosedur ini ditunjukkan di[Tunggu streaming menjadi aktif kembali](kinesis-using-sdk-java-after-resharding.md#kinesis-using-sdk-java-resharding-wait-until-active). 

# Gabungkan dua pecahan
<a name="kinesis-using-sdk-java-resharding-merge"></a>

 Operasi penggabungan shard membutuhkan dua pecahan tertentu dan menggabungkannya menjadi satu pecahan. Setelah penggabungan, pecahan anak tunggal menerima data untuk semua nilai kunci hash yang dicakup oleh dua pecahan induk. 

**Ketinggian Shard**  
*Untuk menggabungkan dua pecahan, pecahan harus berdekatan.* Dua pecahan dianggap berdekatan jika penyatuan rentang kunci hash untuk dua pecahan membentuk satu set yang berdekatan tanpa celah. Misalnya, Anda memiliki dua pecahan, satu dengan rentang kunci hash 276... 381 dan yang lainnya dengan rentang kunci hash 382... 454. Anda dapat menggabungkan dua pecahan ini menjadi pecahan tunggal yang akan memiliki rentang kunci hash 276... 454. 

Untuk mengambil contoh lain, misalkan Anda memiliki dua pecahan, satu dengan rentang kunci hash 276.. 381 dan yang lainnya dengan rentang kunci hash 455... 560. Anda tidak dapat menggabungkan dua pecahan ini karena akan ada satu atau lebih pecahan di antara keduanya yang mencakup kisaran 382.. 454. 

Himpunan semua `OPEN` pecahan dalam aliran — sebagai grup — selalu mencakup seluruh rentang nilai kunci hash. MD5 Untuk informasi lebih lanjut tentang status pecahan — seperti —lihat. `CLOSED` [Pertimbangkan perutean data, persistensi data, dan status pecahan setelah reshard](kinesis-using-sdk-java-after-resharding.md#kinesis-using-sdk-java-resharding-data-routing) 

Untuk mengidentifikasi pecahan yang merupakan kandidat untuk digabungkan, Anda harus menyaring semua pecahan yang berada dalam keadaan. `CLOSED` Pecahan yang `OPEN` —yaitu, bukan `CLOSED` —memiliki nomor urut akhir. `null` Anda dapat menguji nomor urut akhir untuk pecahan menggunakan: 

```
if( null == shard.getSequenceNumberRange().getEndingSequenceNumber() ) 
{
  // Shard is OPEN, so it is a possible candidate to be merged.
}
```

Setelah memfilter pecahan tertutup, urutkan pecahan yang tersisa dengan nilai kunci hash tertinggi yang didukung oleh setiap pecahan. Anda dapat mengambil nilai ini menggunakan: 

```
shard.getHashKeyRange().getEndingHashKey();
```

 Jika dua pecahan berdekatan dalam daftar yang difilter dan diurutkan ini, mereka dapat digabungkan. 

**Kode untuk Operasi Gabungan**  
 Kode berikut menggabungkan dua pecahan. Kode mengasumsikan bahwa `myStreamName` memegang nama aliran Anda dan variabel objek `shard1` dan `shard2` menahan dua pecahan yang berdekatan untuk digabungkan.

Untuk operasi penggabungan, mulailah dengan membuat instance objek baru. `mergeShardsRequest` Tentukan nama aliran dengan `setStreamName` metode. Kemudian tentukan dua pecahan untuk digabungkan menggunakan metode `setShardToMerge` and`setAdjacentShardToMerge`. Terakhir, panggil `mergeShards` metode pada klien Kinesis Data Streams untuk melakukan operasi.

```
MergeShardsRequest mergeShardsRequest = new MergeShardsRequest();
mergeShardsRequest.setStreamName(myStreamName);
mergeShardsRequest.setShardToMerge(shard1.getShardId());
mergeShardsRequest.setAdjacentShardToMerge(shard2.getShardId());
client.mergeShards(mergeShardsRequest);
```

Langkah pertama setelah prosedur ini ditunjukkan di[Tunggu streaming menjadi aktif kembali](kinesis-using-sdk-java-after-resharding.md#kinesis-using-sdk-java-resharding-wait-until-active).

# Selesaikan tindakan resharding
<a name="kinesis-using-sdk-java-after-resharding"></a>

Setelah segala jenis prosedur resharding di Amazon Kinesis Data Streams, dan sebelum pemrosesan rekaman normal dilanjutkan, prosedur dan pertimbangan lain diperlukan. Bagian berikut menjelaskan ini.

**Topics**
+ [Tunggu streaming menjadi aktif kembali](#kinesis-using-sdk-java-resharding-wait-until-active)
+ [Pertimbangkan perutean data, persistensi data, dan status pecahan setelah reshard](#kinesis-using-sdk-java-resharding-data-routing)

## Tunggu streaming menjadi aktif kembali
<a name="kinesis-using-sdk-java-resharding-wait-until-active"></a>

Setelah Anda memanggil operasi resharding, salah satu `splitShard` atau`mergeShards`, Anda harus menunggu streaming menjadi aktif kembali. Kode yang digunakan sama seperti ketika Anda menunggu aliran menjadi aktif setelah [membuat aliran](kinesis-using-sdk-java-create-stream.md). Kode itu adalah sebagai berikut:

```
DescribeStreamRequest describeStreamRequest = new DescribeStreamRequest();
describeStreamRequest.setStreamName( myStreamName );

long startTime = System.currentTimeMillis();
long endTime = startTime + ( 10 * 60 * 1000 );
while ( System.currentTimeMillis() < endTime ) 
{
  try {
    Thread.sleep(20 * 1000);
  } 
  catch ( Exception e ) {}
  
  try {
    DescribeStreamResult describeStreamResponse = client.describeStream( describeStreamRequest );
    String streamStatus = describeStreamResponse.getStreamDescription().getStreamStatus();
    if ( streamStatus.equals( "ACTIVE" ) ) {
      break;
    }
   //
    // sleep for one second
    //
    try {
      Thread.sleep( 1000 );
    }
    catch ( Exception e ) {}
  }
  catch ( ResourceNotFoundException e ) {}
}
if ( System.currentTimeMillis() >= endTime ) 
{
  throw new RuntimeException( "Stream " + myStreamName + " never went active" );
}
```

## Pertimbangkan perutean data, persistensi data, dan status pecahan setelah reshard
<a name="kinesis-using-sdk-java-resharding-data-routing"></a>

Kinesis Data Streams adalah layanan streaming data real-time. Aplikasi Anda harus berasumsi bahwa data mengalir terus menerus melalui pecahan di aliran Anda. Saat Anda melakukan reshard, catatan data yang mengalir ke pecahan induk dirutekan ulang untuk mengalir ke pecahan anak berdasarkan nilai kunci hash yang dipetakan oleh kunci partisi rekam data. Namun, catatan data apa pun yang ada di pecahan induk sebelum reshard tetap berada di pecahan tersebut. Pecahan induk tidak hilang saat reshard terjadi. Mereka bertahan bersama dengan data yang mereka isi sebelum reshard. Rekaman data dalam pecahan induk dapat diakses menggunakan [`getShardIterator`dan `getRecords`](developing-consumers-with-sdk.md#kinesis-using-sdk-java-get-data) operasi di Kinesis Data Streams API, atau melalui Perpustakaan Klien Kinesis.

**catatan**  
Catatan data dapat diakses sejak ditambahkan ke aliran ke periode retensi saat ini. Ini berlaku terlepas dari perubahan apa pun pada pecahan dalam aliran selama periode waktu tersebut. Untuk informasi selengkapnya tentang periode retensi aliran, lihat[Ubah periode retensi data](kinesis-extended-retention.md).

Dalam proses resharding, pecahan induk bertransisi dari suatu `OPEN` keadaan ke keadaan ke negara `CLOSED` bagian. `EXPIRED` 
+  **BUKA**: Sebelum operasi reshard, pecahan induk berada dalam `OPEN` status, yang berarti bahwa catatan data dapat ditambahkan ke pecahan dan diambil dari pecahan.
+  **DITUTUP**: Setelah operasi reshard, pecahan induk bertransisi ke status. `CLOSED` Ini berarti bahwa catatan data tidak lagi ditambahkan ke pecahan. Catatan data yang akan ditambahkan ke pecahan ini sekarang ditambahkan ke pecahan anak sebagai gantinya. Namun, catatan data masih dapat diambil dari pecahan untuk waktu yang terbatas. 
+  **KEDALUWARSA**: Setelah periode retensi streaming kedaluwarsa, semua catatan data di pecahan induk telah kedaluwarsa dan tidak lagi dapat diakses. Pada titik ini, pecahan itu sendiri beralih ke suatu `EXPIRED` keadaan. Panggilan `getStreamDescription().getShards` untuk menghitung pecahan dalam aliran tidak termasuk pecahan dalam `EXPIRED` pecahan daftar yang dikembalikan. Untuk informasi selengkapnya tentang periode retensi aliran, lihat[Ubah periode retensi data](kinesis-extended-retention.md).

Setelah reshard terjadi dan aliran kembali dalam `ACTIVE` keadaan, Anda dapat segera mulai membaca data dari pecahan anak. Namun, pecahan induk yang tersisa setelah reshard mungkin masih berisi data yang belum Anda baca yang ditambahkan ke aliran sebelum reshard. Jika Anda membaca data dari pecahan anak sebelum membaca semua data dari pecahan induk, Anda dapat membaca data untuk kunci hash tertentu di luar urutan yang diberikan oleh nomor urut catatan data. Oleh karena itu, dengan asumsi bahwa urutan data itu penting, Anda harus, setelah reshard, selalu terus membaca data dari pecahan induk hingga habis. Hanya dengan begitu Anda harus mulai membaca data dari pecahan anak. Ketika `getRecordsResult.getNextShardIterator` kembali`null`, ini menunjukkan bahwa Anda telah membaca semua data di pecahan induk. 

# Ubah periode retensi data
<a name="kinesis-extended-retention"></a>

Amazon Kinesis Data Streams mendukung perubahan pada periode retensi rekaman data aliran data Anda. Aliran data Kinesis adalah urutan urutan catatan data yang dimaksudkan untuk ditulis dan dibaca secara real time. Oleh karena itu, catatan data disimpan dalam pecahan di aliran Anda untuk sementara. Periode waktu dari saat catatan ditambahkan ke saat tidak lagi dapat diakses disebut *periode retensi*. Aliran data Kinesis menyimpan catatan dari 24 jam secara default, hingga 8760 jam (365 hari). 

Anda dapat memperbarui periode retensi melalui konsol Kinesis Data Streams atau dengan [IncreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_IncreaseStreamRetentionPeriod.html)menggunakan dan operasi. [DecreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DecreaseStreamRetentionPeriod.html) Dengan konsol Kinesis Data Streams, Anda dapat mengedit periode retensi lebih dari satu aliran data secara massal secara bersamaan. Anda dapat meningkatkan periode retensi hingga maksimum 8760 jam (365 hari) menggunakan [IncreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_IncreaseStreamRetentionPeriod.html)operasi atau konsol Kinesis Data Streams. Anda dapat mengurangi periode retensi hingga minimal 24 jam menggunakan [DecreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DecreaseStreamRetentionPeriod.html)operasi atau konsol Kinesis Data Streams. Sintaks permintaan untuk kedua operasi mencakup nama aliran dan periode retensi dalam jam. Terakhir, Anda dapat memeriksa periode retensi aliran saat ini dengan memanggil [DescribeStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStream.html)operasi.

Berikut ini adalah contoh perubahan periode retensi menggunakan AWS CLI:

```
aws kinesis increase-stream-retention-period --stream-name retentionPeriodDemo --retention-period-hours 72
```

Kinesis Data Streams berhenti membuat catatan tidak dapat diakses pada periode retensi lama dalam beberapa menit setelah meningkatkan periode retensi. Misalnya, mengubah periode retensi dari 24 jam menjadi 48 jam berarti rekaman yang ditambahkan ke aliran 23 jam 55 menit sebelumnya masih tersedia setelah 24 jam.

Kinesis Data Streams segera membuat catatan yang lebih tua dari periode retensi baru tidak dapat diakses setelah penurunan periode retensi. Karena itu, berhati-hatilah saat memanggil [DecreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DecreaseStreamRetentionPeriod.html)operasi.

Tetapkan periode retensi data Anda untuk memastikan bahwa konsumen Anda dapat membaca data sebelum kedaluwarsa, jika terjadi masalah. Anda harus mempertimbangkan dengan cermat semua kemungkinan, seperti masalah dengan logika pemrosesan catatan Anda atau ketergantungan hilir yang turun untuk jangka waktu yang lama. Pikirkan periode retensi sebagai jaring pengaman untuk memungkinkan lebih banyak waktu bagi konsumen data Anda untuk pulih. Operasi API periode retensi memungkinkan Anda mengaturnya secara proaktif atau merespons peristiwa operasional secara reaktif.

 Biaya tambahan berlaku untuk streaming dengan periode retensi yang ditetapkan di atas 24 jam. Untuk informasi selengkapnya, lihat [Harga Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/pricing/).

# Tandai sumber daya Amazon Kinesis Data Streams Anda
<a name="tagging"></a>

*Anda dapat menetapkan metadata Anda sendiri ke streaming dan konsumen penggemar yang disempurnakan yang Anda buat di Amazon Kinesis Data Streams dalam bentuk tag.* Tanda adalah pasangan nilai-kunci yang Anda tetapkan untuk sebuah aliran. Menggunakan tag adalah cara sederhana namun ampuh untuk mengelola AWS sumber daya dan mengatur data, termasuk data penagihan.

**Topics**
+ [Tinjau dasar-dasar tag](#tagging-basics)
+ [Lacak biaya menggunakan penandaan](#tagging-billing)
+ [Memahami batasan tag](#tagging-restrictions)
+ [Tag stream menggunakan konsol Kinesis Data Streams](#tagging-console)
+ [Tag stream menggunakan AWS CLI](#tagging-cli)
+ [Tag stream menggunakan Kinesis Data Streams APIs](#tagging-api)
+ [Tag konsumen menggunakan AWS CLI](#tagging-consumers-cli)
+ [Tag konsumen menggunakan Kinesis Data Streams APIs](#tagging-consumers-api)

## Tinjau dasar-dasar tag
<a name="tagging-basics"></a>

Sumber daya Kinesis Data Streams yang dapat Anda beri tag termasuk aliran data dan konsumen penggemar yang disempurnakan. Anda menggunakan AWS CLI konsol Kinesis Data Streams, atau Kinesis Data Streams API untuk menyelesaikan tugas-tugas berikut:
+ Buat sumber daya dengan tag
+ Tambahkan tag ke sumber daya
+ Buat daftar tag untuk sumber daya Anda
+ Hapus tag dari sumber daya

**catatan**  
Anda tidak dapat menerapkan tag ke konsumen penggemar yang disempurnakan menggunakan konsol Kinesis Data Streams. Untuk menerapkan tag ke konsumen, gunakan AWS CLI atau Kinesis Data Streams API. 

Anda dapat menggunakan tag untuk mengkategorikan sumber daya Anda. Misalnya, Anda dapat mengkategorikan sumber daya berdasarkan tujuan, pemilik, atau lingkungan. Karena Anda menentukan kunci dan nilai untuk setiap tanda, Anda dapat membuat serangkaian kategori khusus untuk memenuhi kebutuhan spesifik Anda. Misalnya, Anda dapat menentukan satu set tag yang membantu Anda melacak sumber daya oleh pemilik dan aplikasi terkait. Berikut adalah beberapa contoh tanda:
+ Proyek: Nama proyek
+ Pemilik: Nama
+ Tujuan: Pengujian beban 
+ Aplikasi: Nama aplikasi
+ Lingkungan: Produksi 

**penting**  
Untuk menambahkan tag saat membuat aliran, Anda harus menyertakan `kinesis:AddTagsToStream` izin `kinesis:CreateStream` dan untuk aliran tersebut. Anda **tidak dapat menggunakan** `kinesis:TagResource` izin untuk menandai aliran saat membuatnya.
Untuk menambahkan tag selama pendaftaran konsumen, Anda harus menyertakan `kinesis:TagResource` dan `kinesis:RegisterStreamConsumer` izin.

## Lacak biaya menggunakan penandaan
<a name="tagging-billing"></a>

Anda dapat menggunakan tag untuk mengkategorikan dan melacak biaya Anda AWS . Saat Anda menerapkan tag ke sumber daya Kinesis Data Streams AWS , laporan alokasi biaya mencakup penggunaan dan biaya yang dikumpulkan berdasarkan tag. Anda dapat menerapkan tag yang mewakili kategori bisnis, seperti pusat biaya, nama aplikasi, atau pemilik, untuk mengatur biaya Anda di beberapa layanan. Untuk informasi selengkapnya, lihat [Menggunakan Tanda Alokasi Biaya untuk Laporan Penagihan Khusus](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) dalam *Panduan Pengguna AWS Billing *.

## Memahami batasan tag
<a name="tagging-restrictions"></a>

Batasan berikut ini berlaku untuk tag:

**Batasan dasar**
+ Jumlah maksimum tag untuk setiap sumber daya adalah 50.
+ Kunci dan nilai tag peka terhadap huruf besar dan kecil.
+ Anda tidak dapat mengubah atau mengedit tag untuk sumber daya yang dihapus.

**Batasan kunci tanda**
+ Setiap kunci tanda harus unik. Jika Anda menambahkan tanda dengan kunci yang sudah digunakan, tanda baru akan menimpa pasangan nilai-kunci yang sudah ada. 
+ Anda tidak dapat memulai kunci tag `aws:` karena awalan ini dicadangkan untuk digunakan oleh AWS. AWS membuat tag yang dimulai dengan awalan ini atas nama Anda, tetapi Anda tidak dapat mengedit atau menghapusnya.
+ Kunci tanda harus memiliki panjang antara 1 dan 128 karakter Unicode.
+ Kunci tanda harus terdiri dari karakter berikut: huruf Unicode, digit, spasi, dan karakter khusus berikut: `_ . / = + - @`.

**Batasan nilai tanda**
+ Panjang nilai tanda harus antara 0 dan 255 karakter Unicode.
+ Nilai tanda dapat kosong. Jika tidak, nilai tanda harus terdiri dari karakter berikut: huruf Unicode, digit, spasi, dan salah satu karakter khusus berikut: `_ . / = + - @`.

## Tag stream menggunakan konsol Kinesis Data Streams
<a name="tagging-console"></a>

Anda dapat menambahkan, memperbarui, mencantumkan, dan menghapus tag di aliran menggunakan konsol Kinesis Data Streams.

**Untuk melihat tag untuk aliran**

1. [Masuk ke Konsol Manajemen AWS dan buka konsol Kinesis di /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Di panel navigasi kiri, pilih **Aliran data**.

1. Pada halaman **Data stream**, pilih stream yang ingin Anda tag.

1. Pada halaman Detail Stream, pilih **Konfigurasi**.

1. Di bagian **Tag**, lihat tag yang diterapkan ke aliran.

**Untuk membuat aliran data dengan tag**

1. Buka konsol Kinesis Data Streams.

1. Di panel navigasi kiri, pilih **Aliran data**.

1. Pilih **Create data stream** (Buat aliran data).

1. Pada halaman **Buat aliran data**, masukkan nama untuk aliran data Anda.

1. Untuk **kapasitas aliran Data**, pilih mode **On-Demand** atau **Provisioned** capacity.

   Untuk informasi selengkapnya tentang mode kapasitas, lihat[Pilih mode yang tepat untuk streaming](how-do-i-size-a-stream.md).

1. Di bagian **Tag**, lakukan hal berikut:

   1. Pilih **Tambahkan tag baru**.

   1. Untuk **Kunci**, masukkan tag dan secara opsional tentukan nilai di bidang **Nilai**.

      Jika Anda melihat kesalahan, kunci tag atau nilai yang Anda tentukan tidak memenuhi batasan tag. Untuk informasi selengkapnya, lihat [Memahami batasan tag](#tagging-restrictions).

1. Pilih **Create data stream** (Buat aliran data).

**Untuk menambah atau memperbarui tag pada aliran**

1. Buka konsol Kinesis Data Streams.

1. Di panel navigasi kiri, pilih **Aliran data**.

1. Pada halaman **Aliran data**, pilih aliran yang ingin Anda tambahkan atau perbarui tag.

1. Pada halaman Detail Stream, pilih **Konfigurasi**.

1. Di bagian **Tanda**, pilih **Kelola tanda**.

1. Di bawah **Tag**, lakukan salah satu hal berikut:
   + Untuk menambahkan tag baru, pilih **Tambahkan tag baru**, lalu masukkan data **Kunci** dan **Nilai** tag. Ulangi langkah ini seperlunya.

     Jumlah maksimum tag yang dapat Anda tambahkan untuk setiap aliran adalah 50.
   + Untuk memperbarui tag yang ada, masukkan nilai tag baru di bidang **Nilai** **Kunci** tag tersebut.

   Jika Anda melihat kesalahan, kunci tag atau nilai yang Anda tentukan tidak memenuhi batasan tag. Untuk informasi selengkapnya, lihat [Memahami batasan tag](#tagging-restrictions).

1. Pilih **Simpan perubahan**.

**Untuk menghapus tag dari aliran**

1. Buka konsol Kinesis Data Streams.

1. Di panel navigasi kiri, pilih **Aliran data**.

1. Pada halaman **Aliran data**, pilih aliran dari mana Anda ingin menghapus tag.

1. Pada halaman Detail Stream, pilih **Konfigurasi**.

1. Di bagian **Tanda**, pilih **Kelola tanda**.

1. Temukan tag **Key** dan **Value** pair yang ingin Anda hapus. Kemudian, pilih **Hapus**.

1. Pilih **Simpan perubahan**.

## Tag stream menggunakan AWS CLI
<a name="tagging-cli"></a>

Anda dapat menambahkan, membuat daftar, dan menghapus tag pada aliran Anda menggunakan. AWS CLI Sebagai contoh, lihat dokumentasi berikut.

 [buat-aliran](https://docs.aws.amazon.com/cli/latest/reference/kinesis/create-stream.html)   
Membuat aliran dengan tag.

 [add-tags-to-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/add-tags-to-stream.html)   
Menambahkan atau memperbarui tag untuk aliran yang ditentukan.

 [list-tags-for-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/list-tags-for-stream.html)  
Daftar tag untuk aliran yang ditentukan.

 [remove-tags-from-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/remove-tags-from-stream.html)  
Menghapus tag dari aliran yang ditentukan.

## Tag stream menggunakan Kinesis Data Streams APIs
<a name="tagging-api"></a>

Anda dapat menambahkan, membuat daftar, dan menghapus tag pada aliran Anda menggunakan Kinesis Data Streams. APIs Untuk contoh, lihat dokumentasi berikut:

 [CreateStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_CreateStream.html)   
Membuat aliran dengan tag.

 [AddTagsToStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_AddTagsToStream.html)   
Menambahkan atau memperbarui tag untuk aliran yang ditentukan.

 [ListTagsForStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListTagsForStream.html)  
Daftar tag untuk aliran yang ditentukan.

 [RemoveTagsFromStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_RemoveTagsFromStream.html)  
Menghapus tag dari aliran yang ditentukan.

## Tag konsumen menggunakan AWS CLI
<a name="tagging-consumers-cli"></a>

Anda dapat menambahkan, membuat daftar, dan menghapus tag pada konsumen Anda menggunakan AWS CLI. Untuk contoh, lihat dokumentasi berikut:

[register-stream-consumer](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesis/register-stream-consumer.html)  
Mendaftarkan konsumen untuk aliran data Kinesis dengan tag. 

[tag-sumber daya](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesis/tag-resource.html)  
Menambahkan atau memperbarui tag untuk sumber Kinesis tertentu.

[list-tags-for-resource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesis/list-tags-for-resource.html)  
Daftar tag untuk sumber daya Kinesis yang ditentukan.

[untag-sumber daya](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesis/untag-resource.html)  
Menghapus tag dari sumber Kinesis yang ditentukan.

## Tag konsumen menggunakan Kinesis Data Streams APIs
<a name="tagging-consumers-api"></a>

Anda dapat menambahkan, membuat daftar, dan menghapus tag pada konsumen Anda menggunakan Kinesis APIs Data Streams. Untuk contoh, lihat dokumentasi berikut:

[RegisterStreamConsumer](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_RegisterStreamConsumer.html)  
Mendaftarkan konsumen untuk aliran data Kinesis dengan tag.

[TagResource](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_TagResource.html)  
Menambahkan atau memperbarui tag untuk sumber Kinesis tertentu.

[ListTagsForResource](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListTagsForResource.html)  
Daftar tag untuk sumber daya Kinesis yang ditentukan.

[UntagResource](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_UntagResource.html)  
Menghapus tag dari sumber Kinesis yang ditentukan.

# Menangani catatan besar
<a name="large-records"></a>

Amazon Kinesis Data Streams mendukung rekaman hingga 10 MiBs mebibytes (). Kemampuan ini direkomendasikan untuk memproses muatan data intermiten yang melebihi batas ukuran catatan 1 MiB default. Ukuran rekaman maksimum default untuk aliran yang ada, dan yang baru dibuat disetel ke 1 MiB.

Fitur ini menguntungkan aplikasi Internet of Things (IoT), mengubah jalur pengambilan data (CDC), dan alur kerja pembelajaran mesin yang memerlukan pemrosesan muatan data yang sesekali lebih besar. Untuk mulai menggunakan rekaman besar di streaming Anda, perbarui batas ukuran rekaman maksimum aliran Anda.

**penting**  
Batas throughput pecahan individu 1 MB/s untuk penulisan, dan 2 untuk pembacaan tetap tidak berubah dengan dukungan MB/s untuk ukuran rekaman yang lebih besar. Kinesis Data Streams dirancang untuk mengakomodasi rekaman besar intermiten di samping lalu lintas dasar catatan kurang dari, atau sama dengan 1 MiB. Ini tidak dirancang untuk mengakomodasi konsumsi rekor besar volume tinggi yang berkelanjutan. 

## Perbarui aliran Anda untuk menggunakan catatan besar
<a name="update-stream"></a>

**Untuk memproses rekaman yang lebih besar dengan Kinesis Data Streams**

1. Arahkan ke konsol Kinesis Data Streams.

1. Pilih aliran Anda, dan buka tab **Konfigurasi**.

1. Klik **Edit**, yang terletak di sebelah **Ukuran rekaman maksimum**.

1. Tetapkan ukuran rekaman maksimum Anda (hingga 10 MiB).

1. Simpan perubahan Anda.

Pengaturan ini hanya menyesuaikan ukuran rekaman maksimum untuk aliran data Kinesis ini. Sebelum meningkatkan batas ini, verifikasi bahwa semua aplikasi hilir dapat menangani catatan yang lebih besar.

Anda juga dapat memperbarui pengaturan ini menggunakan AWS CLI:

```
aws kinesis update-max-record-size \ --stream-arn  \
        --max-record-size-in-ki-b 5000
```

## Optimalkan performa streaming Anda dengan catatan besar
<a name="optimizing-performance"></a>

Disarankan untuk menyimpan catatan besar hingga kurang dari 2% dari keseluruhan lalu lintas Anda. Dalam aliran, setiap pecahan memiliki kapasitas throughput 1 MiB per detik. Untuk mengakomodasi rekaman besar, aliran Data Kinesis meledak hingga 10 MiBs, sementara rata-rata hingga 1 MiB per detik. Kapasitas untuk mendukung catatan besar ini terus diisi ulang ke dalam aliran. Tingkat pengisian ulang tergantung pada ukuran catatan besar dan ukuran catatan dasar. Untuk hasil terbaik, gunakan kunci partisi yang didistribusikan secara seragam. Untuk informasi selengkapnya tentang bagaimana Kinesis sesuai permintaan skala, lihat [Fitur mode sesuai permintaan](how-do-i-size-a-stream.html#ondemandmode) dan kasus penggunaan.

## Mengurangi pelambatan dengan catatan besar
<a name="mitigate-throttling"></a>

**Untuk mengurangi pelambatan**

1. Terapkan logika coba lagi dengan back-off eksponensial dalam aplikasi produser Anda.

1. Gunakan kunci partisi acak untuk mendistribusikan catatan besar di seluruh pecahan yang tersedia.

1. Simpan muatan di Amazon S3 dan kirim hanya referensi metadata ke aliran untuk aliran rekaman besar yang berkelanjutan. Untuk informasi selengkapnya, lihat [Memproses rekaman besar dengan Amazon Kinesis Data Streams](https://aws.amazon.com/blogs/big-data/processing-large-records-with-amazon-kinesis-data-streams/).

## Menangani rekaman besar menggunakan Kinesis Data Streams APIs
<a name="records-apis"></a>

Dukungan rekaman besar memperkenalkan satu API baru, dan memperbarui dua bidang kontrol yang ada APIs untuk menangani catatan hingga 10 MiBs.

API untuk memodifikasi ukuran rekaman:
+ `UpdateMaxRecordSize`: Mengonfigurasi batas ukuran rekaman maksimum untuk aliran yang ada hingga 10. MiBs

Pembaruan untuk yang ada APIs:
+ `CreateStream`: Menambahkan `MaxRecordSizeInKiB` parameter opsional untuk menetapkan batas ukuran rekaman selama pembuatan aliran.
+ `DescribeStreamSummary`: Mengembalikan `MaxRecordSizeInKiB` bidang untuk menunjukkan konfigurasi aliran saat ini.

Semua APIs yang terdaftar mempertahankan kompatibilitas mundur untuk aliran yang ada. Untuk dokumentasi API selengkapnya, lihat Referensi API Layanan [Amazon Kinesis Data Streams](https://docs.aws.amazon.com/kinesis/latest/APIReference/Welcome.html).

## AWS komponen yang kompatibel dengan catatan besar
<a name="record-compatability"></a>

 AWS Komponen-komponen berikut kompatibel dengan catatan besar:


| Komponen | Deskripsi | 
| --- | --- | 
|  AWS SDK | AWS SDK mendukung penanganan catatan besar. Anda dapat memperbarui ukuran rekaman maksimum streaming hingga 10 MiB menggunakan metode yang tersedia di file. AWS SDKs Untuk informasi selengkapnya, lihat [Menggunakan layanan ini dengan AWS SDK](https://docs.aws.amazon.com/streams/latest/dev/sdk-general-information-section.html). | 
|  Perpustakaan Konsumen Kinesis (KCL) | Dimulai dengan versi 2.x, KCL mendukung penanganan catatan besar. Untuk menggunakan dukungan rekaman besar, perbarui `maxRecordSize` aliran Anda, dan gunakan KCL. Untuk informasi selengkapnya, lihat [Menggunakan Perpustakaan Klien Kinesis](https://docs.aws.amazon.com/streams/latest/dev/kcl.html). | 
|  Perpustakaan Produsen Kinesis (KPL) | Dimulai dengan versi 1.0.5, KPL mendukung penanganan catatan besar. Untuk menggunakan dukungan rekaman besar, perbarui maxRecordSize aliran Anda, dan gunakan KPL. Untuk informasi selengkapnya, lihat [Mengembangkan produsen menggunakan Amazon Kinesis Producer Library (KPL](https://docs.aws.amazon.com/streams/latest/dev/developing-producers-with-kpl.html)). | 
|  Amazon EMR | Amazon EMR dengan Apache Spark mendukung penanganan rekaman besar hingga batas Kinesis Data Streams (10). MiBs Untuk menggunakan dukungan rekaman besar, gunakan `readStream` fungsi. Untuk informasi selengkapnya, lihat [Amazon EMR dan integrasi Amazon Kinesis](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-kinesis.html). | 
|  Amazon Data Firehose | Saat digunakan dengan Kinesis Data Streams, perilaku Amazon Data Firehose dengan catatan besar bergantung pada tujuan pengiriman: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/streams/latest/dev/large-records.html) Untuk aplikasi yang memerlukan pengiriman ke Snowflake atau Redshift dengan catatan besar, kirimkan data ke Amazon S3 terlebih dahulu. Setelah itu, gunakan proses Extract, Transform, Load (ETL) untuk memuat data. Untuk semua tujuan lainnya, uji perilaku dengan catatan besar di proof-of-concept lingkungan sebelum menskalakan ke penggunaan produksi. Penanganan catatan besar bervariasi menurut tujuan.   | 
|  AWS Lambda | AWS Lambda mendukung muatan hingga 6 MiBs. Batas ini mencakup payload Kinesis yang dikonversi ke pengkodean basis-64, dan metadata yang terkait dengan Pemetaan Sumber Peristiwa (ESM). Untuk catatan kurang dari 6 MiBs, Lambda memprosesnya menggunakan ESM tanpa konfigurasi tambahan yang diperlukan. Untuk catatan yang lebih besar dari 6 MiBs, Lambda memprosesnya menggunakan tujuan yang gagal. Anda harus mengonfigurasi tujuan saat gagal menggunakan ESM untuk menangani catatan yang melebihi batas pemrosesan Lambda. Setiap peristiwa yang dikirim ke tujuan kegagalan adalah dokumen JSON yang berisi metadata mengenai pemanggilan yang gagal. Disarankan untuk membuat tujuan on-failure di ESM, terlepas dari ukuran rekaman. Ini memastikan bahwa tidak ada catatan yang dibuang. Untuk informasi selengkapnya, lihat [Mengonfigurasi tujuan untuk pemanggilan yang gagal](https://docs.aws.amazon.com/lambda/latest/dg/kinesis-on-failure-destination.html#kinesis-on-failure-destination-console). | 
|  Amazon Redshift | Amazon Redshift hanya mendukung ukuran rekaman kurang dari 1 MiB saat streaming data dari Kinesis Data Streams. Catatan yang melebihi batas ini tidak diproses. Catatan yang tidak diproses dicatat sebagai`sys_stream_scan_errors`. Untuk informasi selengkapnya, lihat [SYS\$1STREAM\$1SCAN\$1ERRORS](https://docs.aws.amazon.com/redshift/latest/dg/r_SYS_STREAM_SCAN_ERRORS.html). | 
|  Konektor Flink untuk Kinesis Data Streams | Ada dua pendekatan untuk mengkonsumsi data dari Kinesis Data Streams: konektor sumber Kinesis, dan konektor sink Kinesis. Konektor sumber mendukung penanganan catatan kurang dari 1 MiB, dan hingga 10. MiBs Jangan gunakan konektor wastafel untuk catatan yang lebih besar dari 1 MiB. Untuk informasi selengkapnya, lihat [Menggunakan konektor untuk memindahkan data di Amazon Managed Service untuk Apache Flink dengan API](https://docs.aws.amazon.com/managed-flink/latest/java/how-connectors.html). DataStream | 

## Wilayah di mana catatan besar didukung
<a name="supported-regions"></a>

Fitur Amazon Kinesis Data Streams ini hanya tersedia di AWS Wilayah berikut:


| AWS Wilayah | Nama wilayah | 
| --- | --- | 
|  eu-north-1 | Eropa (Stockholm) | 
|  me-south-1 | Timur Tengah (Bahrain) | 
|  ap-south-1 | Asia Pasifik (Mumbai) | 
|  eu-west-3 | Eropa (Paris) | 
|  ap-southeast-3 | Asia Pasifik (Jakarta) | 
|  us-east-2 | AS Timur (Ohio) | 
|  af-south-1 | Africa (Cape Town) | 
|  eu-west-1 | Eropa (Irlandia) | 
|  me-central-1 | Timur Tengah (UAE) | 
|  eu-central-1 | Eropa (Frankfurt) | 
|  sa-east-1 | Amerika Selatan (Sao Paulo) | 
|  ap-east-1 | Asia Pasifik (Hong Kong) | 
|  ap-south-2 | Asia Pasifik (Hyderabad) | 
|  us-east-1 | AS Timur (Virginia Utara) | 
|  ap-northeast-2 | Asia Pasifik (Seoul) | 
|  ap-northeast-3 | Asia Pasifik (Osaka) | 
|  eu-west-2 | Eropa (London) | 
|  ap-southeast-4 | Asia Pacific (Melbourne) | 
|  ap-northeast-1 | Asia Pasifik (Tokyo) | 
|  us-west-2 | AS Barat (Oregon) | 
|  us-west-1 | AS Barat (California Utara) | 
|  ap-southeast-1 | Asia Pasifik (Singapura) | 
|  ap-southeast-2 | Asia Pasifik (Sydney) | 
|  il-central-1 | Israel (Tel Aviv) | 
|  ca-central-1 | Kanada (Pusat) | 
|  ca-west-1 | Kanada Barat (Calgary) | 
|  eu-south-2 | Eropa (Spanyol) | 
|  cn-northwest-1 | Tiongkok (Ningxia) | 
|  eu-central-2 | Europe (Zurich) | 
| us-gov-east-1 | AWS GovCloud (AS-Timur) | 
| us-gov-west-1 | AWS GovCloud (AS-Barat) | 

# Lakukan pengujian ketahanan dengan AWS Fault Injection Service
<a name="kinesis-fis"></a>

AWS Fault Injection Service adalah layanan yang dikelola sepenuhnya yang membantu Anda melakukan eksperimen injeksi kesalahan pada AWS beban kerja Anda. AWS FIS integrasi dengan Amazon Kinesis Data Streams memungkinkan Anda menguji ketahanan aplikasi terhadap kesalahan API Amazon Kinesis Data Streams yang umum di lingkungan terkontrol. Kemampuan ini memungkinkan Anda untuk memvalidasi penanganan kesalahan, mencoba kembali logika, dan memantau sistem sebelum mengalami kegagalan. Untuk informasi lebih lanjut, lihat [Apa itu AWS Fault Injection Service?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html) .

**Tindakan**
+ Kesalahan internal API: Ini menyuntikkan kesalahan internal ke dalam permintaan yang dibuat oleh peran IAM target. Respons spesifik tergantung pada setiap layanan dan API. Tindakan `aws:fis:inject-api-internal-error` menciptakan `InternalFailure` kesalahan (HTTP 500).
+ Kesalahan throttle API: Ini menyuntikkan kesalahan internal ke dalam permintaan yang dibuat oleh peran IAM target. Respons spesifik tergantung pada setiap layanan dan API. Tindakan `aws:fis:inject-api-throttle-error` menciptakan `ThrottlingException` kesalahan (HTTP 400).
+ Kesalahan API tidak tersedia: Ini menyuntikkan kesalahan internal ke dalam permintaan yang dibuat oleh peran IAM target. Respons spesifik tergantung pada setiap layanan dan API. Tindakan `aws:fis:inject-api-unavailable-error` menciptakan `ServiceUnavailable` kesalahan (HTTP 503).
+ Pengecualian throughput yang disediakan API: Ini menyuntikkan kesalahan internal ke dalam permintaan yang dibuat oleh peran IAM target. Respons spesifik tergantung pada setiap layanan dan API. Tindakan `aws:kinesis:inject-api-provisioned-throughput-exception` menciptakan `ProvisionedThroughputExceededException` kesalahan (HTTP 400).
+ Pengecualian iterator kedaluwarsa API: Ini menyuntikkan kesalahan internal ke dalam permintaan yang dibuat oleh peran IAM target. Respons spesifik tergantung pada setiap layanan dan API. Tindakan `aws:kinesis:inject-api-expired-iterator-exception` menciptakan `ExpiredIteratorException` kesalahan (HTTP 400). 

Untuk informasi selengkapnya, lihat [tindakan Amazon Kinesis Data Streams](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#aws-kinesis-actions).

**Pertimbangan-pertimbangan**
+ Anda dapat menggunakan tindakan di atas dengan penawaran yang disediakan dan sesuai permintaan untuk Amazon Kinesis Data Streams.
+ Streaming Anda dilanjutkan setelah percobaan selesai berdasarkan durasi yang dipilih. Anda juga dapat menghentikan eksperimen yang sedang berjalan sebelum selesai. Atau, Anda dapat menentukan kondisi berhenti untuk menghentikan eksperimen berdasarkan alarm yang menentukan kesehatan aplikasi di Amazon CloudWatch Application Insights.
+ Anda dapat menguji hingga 280 aliran.

Untuk informasi lebih lanjut tentang dukungan regional, lihat [AWS Fault Injection Service titik akhir dan kuota](https://docs.aws.amazon.com/general/latest/gr/fis.html).

# Kesalahan pengecualian throughput yang disediakan
<a name="kinesis-fis-provisioned-throughput"></a>

Throughput yang disediakan melebihi kesalahan pengecualian (HTTP 400) terjadi ketika tingkat permintaan untuk aliran Kinesis melampaui batas throughput dari satu atau lebih pecahan. Setiap pecahan memiliki batas kapasitas baca, dan tulis tertentu, dan melebihi batas tersebut memicu pengecualian ini. Skenario yang mengarah ke pengecualian ini meliputi: lonjakan mendadak dalam konsumsi atau konsumsi data, kapasitas pecahan yang tidak mencukupi untuk volume data yang sedang diproses, atau distribusi kunci partisi yang tidak merata.

**Rekomendasi untuk menangani pengecualian**
+ Menerapkan mekanisme back-off dan coba ulang eksponensial.
+ Tingkatkan jumlah pecahan untuk mengakomodasi throughput yang lebih tinggi.
+ Pastikan bahwa ada distribusi kunci partisi yang tepat.
+ Pantau metrik aliran.

Selain itu, menggunakan mode kapasitas Kinesis sesuai permintaan membantu menyesuaikan beban kerja secara otomatis, dan meminimalkan terjadinya pengecualian ini. Untuk informasi selengkapnya, lihat [Apa itu AWS Fault Injection Service?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)

**catatan**  
Masalah distribusi yang tidak tepat berada di luar kemampuan mode on-demand dari penskalaan otomatis.

**Untuk melakukan eksperimen dasar**

1. Gunakan metrik dasar: catat pola throughput normal sebelum pengujian.

1. Buat eksperimen: gunakan `aws:kinesis:inject-api-provisioned-throughput-exception` tindakan.

1. Konfigurasikan intensitas: mulai dengan pelambatan permintaan 25%.

1. Pantau tanggapan: verifikasi logika coba ulang dengan back-off eksponensial.

1. Validasi penskalaan: konfirmasikan bahwa auto-scaling memicu aktivasi.

1. Periksa alarm: pastikan `CloudWatch` alarm berjalan seperti yang diharapkan.

Aplikasi harus menerapkan strategi, monitor, dan `ReadProvisionedThroughputExceeded` metrik back-off yang tepat`WriteProvisionedThroughputExceeded`, dan memicu penskalaan shard bila sesuai.

**Detail tindakan**
+ **Jenis Sumber Daya**: IAM Peran ARN
+ **Operasi Target**:`PutRecord`,`PutRecords`, `GetRecords`
+ ****Kode Kesalahan****: `ProvisionedThroughputExceededException` (HTTP 400)
+ ****Deskripsi****: mensimulasikan skenario di mana tingkat permintaan melebihi batas kapasitas pecahan, menguji pelambatan aplikasi, dan respons penskalaan.

**Parameter**
+ **IAM Role ARN**: peran yang digunakan aplikasi Anda untuk operasi Kinesis Data Streams.
+ **Operasi**: operasi target:`PutRecord`,`PutRecords`,`GetRecords`.
+ **Daftar Sumber Daya**: nama aliran tertentu atau pengidentifikasi pecahan.
+ **Durasi**: durasi percobaan, yaitu durasi dari satu menit hingga 12 jam. Di AWS FIS API, nilainya adalah string dalam format ISO 8601. Misalnya, PT1 M mewakili satu menit. Di AWS FIS konsol, Anda memasukkan jumlah detik, menit, atau jam.
+ **Intensitas**: persentase permintaan untuk throttle.

**Izin yang diperlukan**
+ `kinesis:InjectApiError`

Contoh template percobaan

 Contoh berikut menunjukkan pengecualian throughput yang disediakan untuk semua permintaan hingga 5 aliran Data Kinesis dengan tag yang ditentukan. AWS FIS memilih aliran untuk mempengaruhi secara acak. Setelah 5 menit kesalahan dihapus.

```
{
    "description": "Kinesis stream experiment",
    "targets": {
        "KinesisStreams-Target-1": {
            "resourceType": "aws:kinesis:stream",
            "resourceTags": {
                   "tag-key": "tag-value"
            },
            "selectionMode": "COUNT(5)"
        }
    },
    "actions": {
         "kinesis": {
              "actionId": "aws:kinesis:stream-provisioned-throughput-exception",
              "description": "my-stream",
              "parameters": {
                   "duration": "PT5M",
                   "percentage": "100",
                   "service": "kinesis"
              },
              "targets": {
                    "KinesisStreams": "KinesisStreams-Target-1"
              }
         }
   },
   "stopConditions": [
         {
              "source": "none"
         }
   ],
   "roleArn": "arn:aws:iam::111122223333:role/role-name",
   "tags": {},
   "experimentOptions": {
       "accountTargeting": "single-account",
       "emptyTargetResolutionMode": "fail"
   }    
}
```

Contoh izin peran percobaan

Izin berikut memungkinkan Anda menjalankan `aws:kinesis:stream-provisioned-throughput-exception` dan `aws:kinesis:stream-expired-iterator-exception` tindakan pada aliran tertentu yang memengaruhi 50% permintaan.

# Kesalahan pengecualian iterator kedaluwarsa
<a name="kinesis-fis-expired-iterator"></a>

 Kesalahan pengecualian iterator kedaluwarsa (HTTP 400) terjadi ketika iterator shard kedaluwarsa, dan tidak lagi digunakan untuk mengambil catatan aliran saat memanggil. `GetRecords` Ini terjadi ketika ada penundaan antara operasi baca, yang disebabkan oleh tugas pemrosesan data yang berjalan lama, masalah jaringan, atau waktu henti aplikasi. 

**catatan**  
Sebuah iterator shard berlaku selama 5 menit setelah waktu dikeluarkan.

**Rekomendasi untuk menangani pengecualian**
+ Menyegarkan iterator pecahan sebelum kedaluwarsa.
+ Memasukkan penanganan kesalahan untuk mendapatkan iterator baru.
+ Memanfaatkan Kinesis Kinesis Client Library (KCL) yang secara otomatis mengelola kedaluwarsa iterator shard.

Untuk informasi lebih lanjut, lihat [Apa itu AWS Fault Injection Service?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)

**Untuk melakukan eksperimen dasar**

1. Buat templat eksperimen: gunakan AWS FIS konsol. 

1. Pilih tindakan: gunakan `aws:kinesis:inject-api-expired-iterator-exception` tindakan.

1. Konfigurasikan target: tentukan peran IAM dan Streamsoperasi Data Kinesis. 

1. Atur durasinya: mulai dengan 5-10 menit untuk pengujian awal. 

1. Tambahkan kondisi berhenti: [kondisi berhenti untuk AWS FIS](https://docs.aws.amazon.com/fis/latest/userguide/stop-conditions.html).

1. Jalankan eksperimen: pantau perilaku aplikasi.

**Detail tindakan**
+ **Jenis Sumber Daya**: IAM Peran ARN
+ **Operasi Target**: `GetRecords`
+ ****Kode Kesalahan****: `ExpiredIteratorException` (HTTP 400)
+ ****Deskripsi****: iterator yang disediakan melebihi usia maksimum yang diizinkan, mensimulasikan skenario di mana pemrosesan rekaman terlalu lambat atau logika pos pemeriksaan gagal.

**Parameter**
+ **IAM Role ARN**: peran yang digunakan aplikasi Anda untuk operasi Kinesis Data Streams.
+ **Operasi**: operasi target: `GetRecords`
+ **Daftar Sumber Daya**: nama aliran tertentu atau ARNs.
+ **Durasi**: durasi percobaan. Ini dapat dikonfigurasi. 
+ **Intensitas**: persentase permintaan untuk throttle.

**Izin yang diperlukan**
+ `kinesis:InjectApiError`