

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

# Streaming data jurnal dari Amazon QLDB
<a name="streams"></a>

**penting**  
Pemberitahuan akhir dukungan: Pelanggan yang ada akan dapat menggunakan Amazon QLDB hingga akhir dukungan pada 07/31/2025. Untuk detail selengkapnya, lihat [Memigrasi Buku Besar QLDB Amazon ke Amazon](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) Aurora PostgreSQL.

*Amazon QLDB menggunakan log transaksional yang tidak dapat diubah, yang dikenal sebagai jurnal, untuk penyimpanan data.* Jurnal melacak setiap perubahan pada data komitmen Anda dan mempertahankan riwayat perubahan yang lengkap dan dapat diverifikasi dari waktu ke waktu.

Anda dapat membuat *aliran* di QLDB yang menangkap setiap revisi dokumen yang berkomitmen pada jurnal Anda dan mengirimkan data ini ke Amazon Kinesis Data [Streams](https://aws.amazon.com/kinesis/data-streams) secara nyaris real time. Aliran QLDB adalah aliran data yang berkelanjutan dari jurnal buku besar Anda ke sumber daya aliran data Kinesis.

Kemudian, Anda menggunakan platform streaming Kinesis atau *Perpustakaan Klien Kinesis* untuk menggunakan aliran Anda, memproses catatan data, dan menganalisis konten data. *Aliran QLDB menulis data Anda ke Kinesis Data Streams dalam tiga jenis *catatan*: *kontrol*, ringkasan blok, dan detail revisi.* Untuk informasi selengkapnya, lihat [Catatan aliran QLDB dalam Kinesis](streams.records.md).

**Topics**
+ [

## Kasus penggunaan umum
](#streams.use-cases)
+ [

## Mengkonsumsi streaming Anda
](#streams.consuming)
+ [

## Jaminan pengiriman
](#streams.delivery)
+ [

## Pertimbangan latensi pengiriman
](#streams.delivery-latency)
+ [

## Memulai dengan aliran
](#streams.getting-started)
+ [

# Membuat dan mengelola aliran di QLDB
](streams.create.md)
+ [

# Berkembang dengan aliran di QLDB
](streams.sdk.md)
+ [

# Catatan aliran QLDB dalam Kinesis
](streams.records.md)
+ [

# Izin streaming di QLDB
](streams.perms.md)
+ [

# Kesalahan umum untuk aliran jurnal di QLDB
](streams.errors.md)

## Kasus penggunaan umum
<a name="streams.use-cases"></a>

Streaming memungkinkan Anda menggunakan QLDB sebagai sumber kebenaran tunggal yang dapat diverifikasi sambil mengintegrasikan data jurnal Anda dengan layanan lain. Berikut ini adalah beberapa kasus penggunaan umum yang didukung oleh aliran jurnal QLDB:
+ **Arsitektur berbasis peristiwa** — Bangun aplikasi dalam gaya arsitektur berbasis peristiwa dengan komponen terpisah. Misalnya, bank dapat menggunakan AWS Lambda fungsi untuk menerapkan sistem notifikasi yang memberi tahu pelanggan ketika saldo akun mereka turun di bawah ambang batas. Dalam sistem seperti itu, saldo akun dipertahankan dalam buku besar QLDB, dan setiap perubahan saldo dicatat dalam jurnal. AWS Lambda Fungsi ini dapat memicu logika notifikasi setelah mengkonsumsi peristiwa pembaruan saldo yang berkomitmen ke jurnal dan dikirim ke aliran data Kinesis.
+ **Analitik real-time** — Membangun aplikasi konsumen Kinesis yang menjalankan analisis real-time pada data peristiwa. Dengan kemampuan ini, Anda dapat memperoleh wawasan dalam waktu nyaris nyata dan merespons dengan cepat terhadap lingkungan bisnis yang berubah. Misalnya, situs web e-niaga dapat menganalisis data penjualan produk dan menghentikan iklan untuk produk diskon segera setelah penjualan mencapai batas.
+ **Analisis historis** — Manfaatkan arsitektur berorientasi jurnal Amazon QLDB dengan memutar ulang data peristiwa historis. Anda dapat memilih untuk memulai aliran QLDB pada setiap titik waktu di masa lalu, di mana semua revisi sejak saat itu dikirim ke Kinesis Data Streams. Dengan menggunakan fitur ini, Anda dapat membangun aplikasi konsumen Kinesis yang menjalankan pekerjaan analitik pada data historis. Misalnya, situs web e-niaga dapat menjalankan analitik sesuai kebutuhan untuk menghasilkan metrik penjualan sebelumnya yang sebelumnya tidak ditangkap.
+ **Replikasi ke database yang dibuat khusus - Hubungkan** buku besar QLDB ke penyimpanan data lain yang dibuat khusus menggunakan aliran jurnal QLDB. Misalnya, gunakan platform data streaming Kinesis untuk berintegrasi dengan Amazon OpenSearch Service, yang dapat menyediakan kemampuan pencarian teks lengkap untuk dokumen QLDB. Anda juga dapat membuat aplikasi konsumen Kinesis khusus untuk mereplikasi data jurnal Anda ke database lain yang dibuat khusus yang memberikan tampilan terwujud yang berbeda. Misalnya, replikasi ke Amazon Aurora untuk data relasional atau ke Amazon Neptunus untuk data berbasis grafik.

## Mengkonsumsi streaming Anda
<a name="streams.consuming"></a>

Gunakan Kinesis Data Streams untuk terus mengkonsumsi, memproses, dan menganalisis aliran besar catatan data. Selain Kinesis Data Streams, platform data streaming Kinesis mencakup [Amazon Data Firehose [dan](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/) Amazon Managed Service](https://docs.aws.amazon.com/firehose/latest/dev/) untuk Apache Flink. Anda dapat menggunakan platform ini untuk mengirim catatan data langsung ke layanan seperti Amazon OpenSearch Service, Amazon Redshift, Amazon S3, atau Splunk. Untuk informasi selengkapnya, lihat Konsumen [Kinesis Data](https://docs.aws.amazon.com/streams/latest/dev/amazon-kinesis-consumers.html) Streams *di Panduan Pengembang Amazon Kinesis Data Streams*.

Anda juga dapat menggunakan Kinesis Client Library (KCL) untuk membangun aplikasi konsumen streaming untuk memproses catatan data dengan cara khusus. KCL menyederhanakan pengodean dengan menyediakan abstraksi yang berguna di atas Kinesis Data Streams API tingkat rendah. Untuk mempelajari lebih lanjut tentang KCL, lihat [Menggunakan Perpustakaan Klien Kinesis](https://docs.aws.amazon.com/streams/latest/dev/shared-throughput-kcl-consumers.html) di Panduan *Pengembang Amazon Kinesis Data Streams*.

## Jaminan pengiriman
<a name="streams.delivery"></a>

Aliran QLDB memberikan jaminan pengiriman. *at-least-once* Setiap [catatan data](streams.records.md) yang dihasilkan oleh aliran QLDB dikirim ke Kinesis Data Streams setidaknya sekali. Catatan yang sama dapat muncul dalam aliran data Kinesis beberapa kali. Jadi, Anda harus memiliki logika deduplikasi di lapisan aplikasi konsumen jika kasus penggunaan Anda memerlukannya.

Juga tidak ada jaminan pemesanan. Dalam beberapa keadaan, blok dan revisi QLDB dapat diproduksi dalam aliran data Kinesis yang rusak. Untuk informasi selengkapnya, lihat [Menangani duplikat dan catatan out-of-order](streams.records.md#streams.records.ordering).

## Pertimbangan latensi pengiriman
<a name="streams.delivery-latency"></a>

Aliran QLDB biasanya mengirimkan pembaruan ke Kinesis Data Streams dalam waktu nyaris real time. Namun, skenario berikut mungkin menciptakan latensi tambahan sebelum data QLDB yang baru berkomitmen dipancarkan ke aliran data Kinesis:
+ Kinesis dapat membatasi data yang dialirkan dari QLDB, tergantung pada penyediaan Kinesis Data Streams Anda. Misalnya, ini mungkin terjadi jika Anda memiliki beberapa aliran QLDB yang menulis ke satu aliran data Kinesis, dan tingkat permintaan QLDB melebihi kapasitas sumber daya aliran Kinesis. Pelambatan pada Kinesis juga dapat terjadi saat menggunakan penyediaan sesuai permintaan jika throughput tumbuh lebih dari dua kali lipat puncak sebelumnya dalam waktu kurang dari 15 menit.

  Anda dapat mengukur throughput yang terlampaui ini dengan memantau metrik Kinesis. `WriteProvisionedThroughputExceeded` Untuk informasi selengkapnya dan solusi yang mungkin, lihat [Bagaimana cara memecahkan masalah error throttling di Kinesis Data Streams?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-stream-throttling-errors/) .
+ *Dengan aliran QLDB, Anda dapat membuat aliran tidak terbatas dengan tanggal dan waktu *mulai di masa lalu dan tanpa tanggal dan* waktu akhir.* Secara desain, QLDB mulai memancarkan data yang baru berkomitmen ke Kinesis Data Streams hanya setelah semua data sebelumnya dari tanggal dan waktu mulai yang ditentukan berhasil dikirim. Jika Anda merasakan latensi tambahan dalam skenario ini, Anda mungkin perlu menunggu data sebelumnya dikirimkan, atau Anda dapat memulai streaming dari tanggal dan waktu mulai nanti.

## Memulai dengan aliran
<a name="streams.getting-started"></a>

Berikut ini adalah ikhtisar tingkat tinggi dari langkah-langkah yang diperlukan untuk memulai streaming data jurnal ke Kinesis Data Streams:

1. Buat sumber daya Kinesis Data Streams. Untuk petunjuknya, lihat [Membuat dan memperbarui aliran data](https://docs.aws.amazon.com/streams/latest/dev/amazon-kinesis-streams.html) di Panduan Pengembang *Amazon Kinesis Data* Streams.

1. Buat peran IAM yang memungkinkan QLDB untuk mengasumsikan izin menulis untuk aliran data Kinesis. Untuk petunjuk, lihat [Izin streaming di QLDB](streams.perms.md).

1. Buat aliran jurnal QLDB. Untuk petunjuk, lihat [Membuat dan mengelola aliran di QLDB](streams.create.md).

1. Konsumsi aliran data Kinesis, seperti yang dijelaskan di bagian sebelumnya. [Mengkonsumsi streaming Anda](#streams.consuming) Untuk contoh kode yang menunjukkan cara menggunakan Kinesis Client Library atau AWS Lambda, lihat. [Berkembang dengan aliran di QLDB](streams.sdk.md)

# Membuat dan mengelola aliran di QLDB
<a name="streams.create"></a>

**penting**  
Pemberitahuan akhir dukungan: Pelanggan yang ada akan dapat menggunakan Amazon QLDB hingga akhir dukungan pada 07/31/2025. Untuk detail selengkapnya, lihat [Memigrasi Buku Besar QLDB Amazon ke Amazon](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) Aurora PostgreSQL.

Amazon QLDB menyediakan operasi API untuk membuat dan mengelola aliran data jurnal dari buku besar Anda ke Amazon Kinesis Data Streams. Aliran QLDB menangkap setiap revisi dokumen yang berkomitmen pada jurnal Anda dan mengirimkannya ke aliran data Kinesis.

Anda dapat menggunakan Konsol Manajemen AWS, AWS SDK, atau AWS Command Line Interface (AWS CLI) untuk membuat aliran jurnal. Selain itu, Anda juga dapat menggunakan [AWS CloudFormation](https://aws.amazon.com/cloudformation)template untuk membuat aliran. Untuk informasi selengkapnya, lihat [AWS::QLDB::Stream](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-stream.html)sumber daya di *Panduan AWS CloudFormation Pengguna*.

**Topics**
+ [

## Parameter aliran
](#streams.create.params)
+ [

## ARN Streaming
](#streams.create.arn)
+ [

## Konsol Manajemen AWS
](#streams.create.con)
+ [

## Negara aliran
](#streams.create.states)
+ [

## Menangani aliran yang terganggu
](#streams.create.impaired)

## Parameter aliran
<a name="streams.create.params"></a>

Untuk membuat aliran jurnal QLDB, Anda harus memberikan parameter konfigurasi berikut:

**Nama buku besar**  
Buku besar QLDB yang data jurnalnya ingin Anda streaming ke Kinesis Data Streams.

**Nama aliran**  
Nama yang ingin Anda tetapkan ke pengaliran jurnal QLDB. Nama yang ditentukan pengguna dapat membantu mengidentifikasi dan menunjukkan tujuan pengaliran.  
Nama pengaliran Anda harus unik di antara pengaliran *aktif* lainnya untuk buku besar yang ditentukan. Nama aliran memiliki batasan penamaan yang sama dengan nama buku besar, seperti yang didefinisikan dalam. [Kuota dan batas di Amazon QLDB](limits.md#limits.naming)  
Selain nama streaming, QLDB menetapkan *ID aliran ke setiap aliran QLDB yang* Anda buat. ID aliran unik di antara semua aliran untuk buku besar tertentu, terlepas dari statusnya.

**Tanggal dan waktu mulai**  
Tanggal dan waktu untuk memulai streaming data jurnal. Nilai ini bisa berupa tanggal dan waktu di masa lalu tetapi tidak bisa di masa depan.

**Tanggal dan waktu akhir**  
(Opsional) Tanggal dan waktu yang menentukan kapan aliran berakhir.  
Jika Anda membuat aliran tidak terbatas tanpa waktu akhir, Anda harus membatalkannya secara manual untuk mengakhiri aliran. Anda juga dapat membatalkan aliran aktif dan terbatas yang belum mencapai tanggal dan waktu akhir yang ditentukan.

**Aliran data Kinesis Tujuan**  
Kinesis Data Streams menargetkan sumber daya tempat aliran Anda menulis catatan data. Untuk mempelajari cara membuat aliran data Kinesis, lihat [Membuat dan memperbarui aliran data di Panduan Pengembang *Amazon Kinesis Data Streams*](https://docs.aws.amazon.com/streams/latest/dev/amazon-kinesis-streams.html).  
+ Stream lintas wilayah dan lintas-akun tidak didukung. Aliran data Kinesis yang ditentukan harus sama Wilayah AWS dan akun sebagai buku besar Anda.
+ ***Rekaman agregasi* di Kinesis Data Streams diaktifkan secara default.** Opsi ini memungkinkan QLDB mempublikasikan beberapa catatan data dalam satu catatan Kinesis Data Streams, meningkatkan jumlah catatan yang dikirim per panggilan API.

  Agregasi rekaman memiliki implikasi penting untuk memproses catatan dan **memerlukan de-agregasi di** konsumen aliran Anda. Untuk mempelajari lebih lanjut, lihat [konsep kunci KPL](https://docs.aws.amazon.com/streams/latest/dev/kinesis-kpl-concepts.html#kinesis-kpl-concepts-aggretation) dan [de-agregasi Konsumen di Panduan Pengembang](https://docs.aws.amazon.com/streams/latest/dev/kinesis-kpl-consumer-deaggregation.html) *Amazon Kinesis Data Streams*.

**Peran IAM**  
Peran IAM yang memungkinkan QLDB untuk mengasumsikan izin menulis ke aliran data Kinesis Anda. Anda dapat menggunakan konsol QLDB untuk membuat peran ini secara otomatis, atau Anda dapat membuatnya secara manual di IAM. Untuk mempelajari cara membuatnya secara manual, lihat[Izin streaming](streams.perms.md).  
Untuk meneruskan peran ke QLDB saat meminta aliran jurnal, Anda harus memiliki izin untuk melakukan `iam:PassRole` tindakan pada sumber daya peran IAM.

## ARN Streaming
<a name="streams.create.arn"></a>

Setiap aliran jurnal QLDB adalah subsumber daya dari buku besar dan diidentifikasi secara unik oleh Amazon Resource Name (ARN). Berikut ini adalah contoh ARN dari aliran QLDB dengan ID aliran untuk buku besar bernama. `IiPT4brpZCqCq3f4MTHbYy` `exampleLedger`

```
arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy
```

Bagian berikut menjelaskan cara membuat dan membatalkan aliran QLDB menggunakan. Konsol Manajemen AWS

## Konsol Manajemen AWS
<a name="streams.create.con"></a>

Ikuti langkah-langkah ini untuk membuat atau membatalkan aliran QLDB menggunakan konsol QLDB.

**Untuk membuat aliran (konsol)**

1. [Masuk ke Konsol Manajemen AWS, dan buka konsol QLDB Amazon di /qldb. https://console.aws.amazon.com](https://console.aws.amazon.com/qldb)

1. Di panel navigasi, pilih **Pengaliran**.

1. Pilih **Buat aliran QLDB**.

1. Pada halaman **Create QLDB** stream, masukkan pengaturan berikut:
   + **Nama aliran** — Nama yang ingin Anda tetapkan ke aliran QLDB.
   + **Ledger** — Buku besar yang data jurnalnya ingin Anda streaming.
   + **Tanggal dan waktu mulai** - Stempel waktu inklusif dalam Coordinated Universal Time (UTC) untuk memulai streaming data jurnal. Stempel waktu ini default ke tanggal dan waktu saat ini. Itu tidak bisa di masa depan dan harus lebih awal dari **tanggal dan waktu Akhir**.
   + **Tanggal dan waktu berakhir** — (Opsional) Stempel waktu eksklusif (UTC) yang menentukan kapan aliran berakhir. Jika Anda membiarkan parameter ini kosong, aliran berjalan tanpa batas hingga Anda membatalkannya.
   + **Aliran tujuan** - Kinesis Data Streams menargetkan sumber daya tempat aliran Anda menulis catatan data. Gunakan format ARN berikut.

     ```
     arn:aws:kinesis:aws-region:account-id:stream/kinesis-stream-name
     ```

     Berikut adalah contohnya.

     ```
     arn:aws:kinesis:us-east-1:123456789012:stream/stream-for-qldb
     ```

     Stream lintas wilayah dan lintas-akun tidak didukung. Aliran data Kinesis yang ditentukan harus sama Wilayah AWS dan akun sebagai buku besar Anda.
   + **Aktifkan agregasi rekaman di Kinesis Data** Streams — (Diaktifkan secara default) Memungkinkan QLDB mempublikasikan beberapa catatan data dalam satu catatan Kinesis Data Streams, meningkatkan jumlah rekaman yang dikirim per panggilan API.
   + **Akses layanan** — Peran IAM yang memberikan izin menulis QLDB ke aliran data Kinesis Anda.

     *Untuk meneruskan peran ke QLDB saat meminta aliran jurnal, Anda harus memiliki izin untuk melakukan `iam:PassRole` tindakan pada sumber daya peran IAM.*
     + **Buat dan gunakan peran layanan baru** — Biarkan konsol membuat peran baru untuk Anda dengan izin yang diperlukan untuk aliran data Kinesis yang ditentukan.
     + **Gunakan peran layanan yang ada** — Untuk mempelajari cara membuat peran ini secara manual di IAM, lihat[Izin streaming](streams.perms.md).
   + **Tag** - (Opsional) Tambahkan metadata ke aliran dengan melampirkan tag sebagai pasangan nilai kunci. Anda dapat menambahkan tag ke aliran Anda untuk membantu mengatur dan mengidentifikasi mereka. Untuk informasi selengkapnya, lihat [Menandai sumber daya QLDB Amazon](tagging.md).

     Pilih **Tambahkan tag**, lalu masukkan pasangan nilai kunci apa pun yang sesuai.

1. Ketika pengaturan seperti yang Anda inginkan, pilih **Buat aliran QLDB**.

   Jika pengiriman permintaan Anda berhasil, konsol akan kembali ke halaman **Streams** utama dan mencantumkan aliran QLDB Anda dengan statusnya saat ini.

1. Setelah streaming Anda aktif, gunakan Kinesis untuk memproses data streaming Anda dengan aplikasi [konsumen](https://docs.aws.amazon.com/streams/latest/dev/amazon-kinesis-consumers.html).

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

Untuk informasi tentang format rekaman data aliran, lihat[Catatan aliran QLDB dalam Kinesis](streams.records.md).

Untuk mempelajari cara menangani aliran yang menghasilkan kesalahan, lihat[Menangani aliran yang terganggu](#streams.create.impaired).

**Untuk membatalkan streaming (konsol)**

Anda tidak dapat memulai ulang aliran QLDB setelah Anda membatalkannya. Untuk melanjutkan pengiriman data Anda ke Kinesis Data Streams, Anda dapat membuat aliran QLDB baru.

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

1. Di panel navigasi, pilih **Pengaliran**.

1. Dalam daftar aliran QLDB, pilih aliran aktif yang ingin Anda batalkan.

1. Pilih **Batalkan aliran**. Konfirmasikan ini **cancel stream** dengan memasukkan kotak yang disediakan.

Untuk informasi tentang penggunaan QLDB API dengan AWS SDK atau untuk membuat dan mengelola AWS CLI aliran jurnal, lihat. [Berkembang dengan aliran di QLDB](streams.sdk.md)

## Negara aliran
<a name="streams.create.states"></a>

Status aliran QLDB dapat menjadi salah satu dari berikut ini:
+ `ACTIVE`— Saat ini streaming atau menunggu untuk melakukan streaming data (untuk aliran tidak terbatas tanpa waktu akhir).
+ `COMPLETED`— Telah berhasil menyelesaikan streaming semua blok jurnal dalam rentang waktu yang ditentukan. Ini adalah status terakhir.

  
+ `CANCELED`— Diakhiri oleh permintaan pengguna sebelum waktu akhir yang ditentukan dan tidak lagi aktif streaming data. Ini adalah status terakhir.
+ `IMPAIRED`— Tidak dapat menulis catatan ke Kinesis karena kesalahan yang memerlukan tindakan Anda. Ini adalah keadaan non-terminal yang dapat dipulihkan.

  Jika Anda menyelesaikan kesalahan dalam satu jam, aliran secara otomatis bergerak ke `ACTIVE` status. Jika kesalahan tetap tidak terselesaikan setelah satu jam, aliran secara otomatis bergerak ke `FAILED` status.
+ `FAILED`— Tidak dapat menulis catatan ke Kinesis karena kesalahan dan dalam keadaan terminal yang tidak dapat dipulihkan.

Diagram berikut menggambarkan bagaimana sumber daya aliran QLDB dapat bertransisi antar negara.

![\[Diagram status yang menunjukkan bagaimana sumber daya aliran QLDB dapat bertransisi antara status aktif, dibatalkan, selesai, terganggu, dan gagal.\]](http://docs.aws.amazon.com/id_id/qldb/latest/developerguide/images/stream-states.png)


### Kedaluwarsa untuk aliran terminal
<a name="streams.create.states.expiration"></a>

Sumber daya aliran yang berada dalam status terminal (`CANCELED`,`COMPLETED`, dan`FAILED`) tunduk pada periode retensi 7 hari. Mereka secara otomatis dihapus setelah batas ini kedaluwarsa.

Setelah aliran terminal dihapus, Anda tidak dapat lagi menggunakan konsol QLDB atau QLDB API untuk mendeskripsikan atau mencantumkan sumber daya aliran.

## Menangani aliran yang terganggu
<a name="streams.create.impaired"></a>

Jika streaming Anda mengalami kesalahan, streaming akan beralih ke `IMPAIRED` status terlebih dahulu. QLDB terus `IMPAIRED` mencoba lagi streaming hingga satu jam.

Jika Anda menyelesaikan kesalahan dalam satu jam, aliran secara otomatis bergerak ke `ACTIVE` status. Jika kesalahan tetap tidak terselesaikan setelah satu jam, aliran secara otomatis bergerak ke `FAILED` status.

Aliran yang terganggu atau gagal dapat memiliki salah satu penyebab kesalahan berikut:
+ `KINESIS_STREAM_NOT_FOUND`— Sumber daya Kinesis Data Streams tujuan tidak ada. Verifikasi bahwa aliran data Kinesis yang Anda berikan dalam permintaan aliran QLDB Anda sudah benar. Kemudian, pergi ke Kinesis dan membuat aliran data yang Anda tentukan.
+ `IAM_PERMISSION_REVOKED`— QLDB tidak memiliki izin yang cukup untuk menulis catatan data ke aliran data Kinesis yang Anda tentukan. Verifikasi bahwa Anda menetapkan kebijakan untuk aliran data Kinesis tertentu yang memberikan izin layanan QLDB () `qldb.amazonaws.com` untuk tindakan berikut:
  + `kinesis:PutRecord`
  + `kinesis:PutRecords`
  + `kinesis:DescribeStream`
  + `kinesis:ListShards`

### Memantau aliran yang terganggu
<a name="streams.create.impaired.monitor"></a>

Jika aliran menjadi terganggu, konsol QLDB menampilkan spanduk yang menampilkan detail tentang aliran dan kesalahan yang ditemuinya. Anda juga dapat menggunakan operasi `DescribeJournalKinesisStream` API untuk mendapatkan status aliran dan penyebab kesalahan yang mendasarinya.

Selain itu, Anda dapat menggunakan Amazon CloudWatch untuk membuat alarm yang memantau `IsImpaired` metrik aliran. Untuk informasi tentang memantau metrik CloudWatch QLDB dengan, lihat. [Dimensi dan metrik Amazon QLDB](monitoring-cloudwatch.md#qldb-metrics-dimensions)

# Berkembang dengan aliran di QLDB
<a name="streams.sdk"></a>

**penting**  
Pemberitahuan akhir dukungan: Pelanggan yang ada akan dapat menggunakan Amazon QLDB hingga akhir dukungan pada 07/31/2025. Untuk detail selengkapnya, lihat [Memigrasi Buku Besar QLDB Amazon ke Amazon](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) Aurora PostgreSQL.

Bagian ini merangkum operasi API yang dapat Anda gunakan dengan AWS SDK atau AWS CLI untuk membuat dan mengelola aliran jurnal di Amazon QLDB. Ini juga menjelaskan contoh aplikasi yang mendemonstrasikan operasi ini dan menggunakan Kinesis Client Library (KCL) atau AWS Lambda untuk mengimplementasikan konsumen aliran.

Anda dapat menggunakan KCL untuk membangun aplikasi konsumen untuk Amazon Kinesis Data Streams. KCL menyederhanakan pengodean dengan menyediakan abstraksi yang berguna di atas Kinesis Data Streams API tingkat rendah. Untuk mempelajari lebih lanjut tentang KCL, lihat [Menggunakan Perpustakaan Klien Kinesis](https://docs.aws.amazon.com/streams/latest/dev/shared-throughput-kcl-consumers.html) di Panduan *Pengembang Amazon Kinesis Data Streams*.

**Contents**
+ [

## Aliran jurnal QLDB APIs
](#streams.sdk.api)
+ [

## Aplikasi sampel
](#streams.sdk.samples)
  + [

### Operasi dasar (Java)
](#streams.sdk.samples.basic)
  + [

### Integrasi dengan OpenSearch Layanan (Python)
](#streams.sdk.samples.elastic)
  + [

### Integrasi dengan Amazon SNS dan Amazon SQS (Python)
](#streams.sdk.samples.sns)

## Aliran jurnal QLDB APIs
<a name="streams.sdk.api"></a>

QLDB API menyediakan operasi aliran jurnal berikut untuk digunakan oleh program aplikasi:
+ `StreamJournalToKinesis`— Membuat aliran jurnal untuk buku besar QLDB tertentu. Aliran menangkap setiap revisi dokumen yang berkomitmen pada jurnal buku besar dan mengirimkan data ke sumber daya Kinesis Data Streams tertentu.
  + ***Rekaman agregasi* di Kinesis Data Streams diaktifkan secara default.** Opsi ini memungkinkan QLDB mempublikasikan beberapa catatan data dalam satu catatan Kinesis Data Streams, meningkatkan jumlah catatan yang dikirim per panggilan API.

    Agregasi rekaman memiliki implikasi penting untuk memproses catatan dan **memerlukan de-agregasi di** konsumen aliran Anda. Untuk mempelajari lebih lanjut, lihat [konsep kunci KPL](https://docs.aws.amazon.com/streams/latest/dev/kinesis-kpl-concepts.html#kinesis-kpl-concepts-aggretation) dan [de-agregasi Konsumen di Panduan Pengembang](https://docs.aws.amazon.com/streams/latest/dev/kinesis-kpl-consumer-deaggregation.html) *Amazon Kinesis Data Streams*.
+ `DescribeJournalKinesisStream`— Mengembalikan informasi rinci tentang aliran jurnal QLDB yang diberikan. Outputnya mencakup ARN, nama aliran, status saat ini, waktu pembuatan, dan parameter permintaan pembuatan aliran asli Anda.
+ `ListJournalKinesisStreamsForLedger`— Mengembalikan daftar semua deskriptor aliran jurnal QLDB untuk buku besar yang diberikan. Output dari setiap deskriptor aliran mencakup detail yang sama yang dikembalikan oleh`DescribeJournalKinesisStream`.
+ `CancelJournalKinesisStream`— Mengakhiri aliran jurnal QLDB yang diberikan. Sebelum streaming dapat dibatalkan, statusnya saat ini harus`ACTIVE`.

  Anda tidak dapat memulai ulang aliran setelah Anda membatalkannya. Untuk melanjutkan pengiriman data Anda ke Kinesis Data Streams, Anda dapat membuat aliran QLDB baru.

Untuk deskripsi lengkap tentang operasi API ini, lihat. [Referensi API QLDB Amazon](api-reference.md)

Untuk informasi tentang membuat dan mengelola aliran jurnal menggunakan AWS CLI, lihat [Referensi AWS CLI Perintah](https://docs.aws.amazon.com/cli/latest/reference/qldb/index.html).

## Aplikasi sampel
<a name="streams.sdk.samples"></a>

QLDB menyediakan contoh aplikasi yang menunjukkan berbagai operasi menggunakan aliran jurnal. Aplikasi ini bersifat open source di [ GitHub situs AWS Sampel](https://github.com/aws-samples/?q=qldb).

**Topics**
+ [

### Operasi dasar (Java)
](#streams.sdk.samples.basic)
+ [

### Integrasi dengan OpenSearch Layanan (Python)
](#streams.sdk.samples.elastic)
+ [

### Integrasi dengan Amazon SNS dan Amazon SQS (Python)
](#streams.sdk.samples.sns)

### Operasi dasar (Java)
<a name="streams.sdk.samples.basic"></a>

[Untuk contoh kode Java yang menunjukkan operasi dasar untuk aliran jurnal QLDB, lihat repositori aws-samples/ -java. GitHub amazon-qldb-dmv-sample](https://github.com/aws-samples/amazon-qldb-dmv-sample-java/tree/master/src/main/java/software/amazon/qldb/tutorial/streams) Untuk petunjuk tentang cara mengunduh dan menginstal aplikasi sampel ini, lihat[Menginstal aplikasi sampel Amazon QLDB Java](sample-app.java.md).

**catatan**  
Setelah Anda menginstal aplikasi, jangan lanjutkan ke *Langkah 1* dari tutorial Java untuk membuat buku besar. Contoh aplikasi untuk streaming ini membuat `vehicle-registration` buku besar untuk Anda.

Contoh aplikasi ini mengemas kode sumber lengkap dari [Tutorial Java](getting-started.java.tutorial.md) dan dependensinya, termasuk modul berikut:
+ [AWS SDK untuk Java](https://aws.amazon.com/sdk-for-java)— Untuk membuat dan menghapus sumber daya QLDB dan Kinesis Data Streams, termasuk buku besar, aliran jurnal QLDB, dan aliran data Kinesis.
+ [Driver Amazon QLDB untuk Java](getting-started.java.md)Untuk menjalankan transaksi data pada buku besar menggunakan pernyataan PartiQL, termasuk membuat tabel dan memasukkan dokumen.
+ [Perpustakaan Klien Kinesis](https://docs.aws.amazon.com/streams/latest/dev/developing-consumers-with-kcl.html) — Untuk mengkonsumsi dan memproses data dari aliran data Kinesis.

**Menjalankan kode**

[StreamJournal](https://github.com/aws-samples/amazon-qldb-dmv-sample-java/blob/master/src/main/java/software/amazon/qldb/tutorial/streams/StreamJournal.java)Kelas berisi kode tutorial yang menunjukkan operasi berikut:

1. Buat buku besar bernama`vehicle-registration`, buat tabel, dan muat dengan data sampel.
**catatan**  
Sebelum menjalankan kode ini, pastikan Anda belum memiliki buku besar aktif bernama`vehicle-registration`.

1. Buat aliran data Kinesis, peran IAM yang memungkinkan QLDB mengasumsikan izin menulis untuk aliran data Kinesis, dan aliran jurnal QLDB.

1. Gunakan KCL untuk memulai pembaca aliran yang memproses aliran data Kinesis dan mencatat setiap catatan data QLDB.

1. Gunakan data aliran untuk memvalidasi rantai hash dari buku besar `vehicle-registration` sampel.

1. Bersihkan semua sumber daya dengan menghentikan pembaca aliran, membatalkan aliran jurnal QLDB, menghapus buku besar, dan menghapus aliran data Kinesis.

Untuk menjalankan kode `StreamJournal` tutorial, masukkan perintah Gradle berikut dari direktori root proyek Anda.

```
./gradlew run -Dtutorial=streams.StreamJournal
```

### Integrasi dengan OpenSearch Layanan (Python)
<a name="streams.sdk.samples.elastic"></a>

[Untuk contoh aplikasi Python yang menunjukkan cara mengintegrasikan aliran QLDB dengan Amazon OpenSearch Service, lihat repositori aws-samples/ -. GitHub amazon-qldb-streaming-amazon opensearch-service-sample-python](https://github.com/aws-samples/amazon-qldb-streaming-amazon-opensearch-service-sample-python) Aplikasi ini menggunakan AWS Lambda fungsi untuk mengimplementasikan konsumen Kinesis Data Streams.

Untuk mengkloning repositori, masukkan perintah berikut. `git`

```
git clone https://github.com/aws-samples/amazon-qldb-streaming-amazon-opensearch-service-sample-python.git
```

Untuk menjalankan aplikasi sampel, lihat [README aktif](https://github.com/aws-samples/amazon-qldb-streaming-amazon-opensearch-service-sample-python/blob/master/README.md) GitHub untuk instruksi.

### Integrasi dengan Amazon SNS dan Amazon SQS (Python)
<a name="streams.sdk.samples.sns"></a>

[Untuk contoh aplikasi Python yang menunjukkan cara mengintegrasikan aliran QLDB dengan Amazon Simple Notification Service (Amazon SNS), lihat repositori aws-samples/ -. GitHub amazon-qldb-streams-dmv sample-lambda-python](https://github.com/aws-samples/amazon-qldb-streams-dmv-sample-lambda-python)

Aplikasi ini menggunakan AWS Lambda fungsi untuk mengimplementasikan konsumen Kinesis Data Streams. Ini mengirim pesan ke topik Amazon SNS, yang memiliki antrian Amazon Simple Queue Service (Amazon SQS) berlangganan.

Untuk mengkloning repositori, masukkan perintah berikut. `git`

```
git clone https://github.com/aws-samples/amazon-qldb-streams-dmv-sample-lambda-python.git
```

Untuk menjalankan aplikasi sampel, lihat [README aktif](https://github.com/aws-samples/amazon-qldb-streams-dmv-sample-lambda-python/blob/master/README.md) GitHub untuk instruksi.

# Catatan aliran QLDB dalam Kinesis
<a name="streams.records"></a>

**penting**  
Pemberitahuan akhir dukungan: Pelanggan yang ada akan dapat menggunakan Amazon QLDB hingga akhir dukungan pada 07/31/2025. Untuk detail selengkapnya, lihat [Memigrasi Buku Besar QLDB Amazon ke Amazon](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) Aurora PostgreSQL.

*Aliran QLDB Amazon menulis tiga jenis catatan data ke *sumber daya* Amazon Kinesis Data Streams yang diberikan: *kontrol*, ringkasan blokir, dan detail revisi.* Ketiga jenis rekaman ditulis dalam *representasi biner* dari [format Amazon Ion](ion.md).

Catatan kontrol menunjukkan awal dan penyelesaian aliran QLDB Anda. Setiap kali revisi dilakukan pada jurnal Anda, aliran QLDB menulis semua data blok jurnal terkait dalam ringkasan blok dan catatan detail revisi.

Tiga jenis rekaman adalah polimorfik. Semuanya terdiri dari catatan tingkat atas umum yang berisi ARN aliran QLDB, jenis catatan, dan muatan catatan. Catatan tingkat atas ini memiliki format berikut.

```
{
  qldbStreamArn: string,
  recordType: string,
  payload: {
    //control | block summary | revision details record
  }
}
```

`recordType`Bidang dapat memiliki salah satu dari tiga nilai:
+ `CONTROL`
+ `BLOCK_SUMMARY`
+ `REVISION_DETAILS`

Bagian berikut menjelaskan format dan isi dari setiap catatan muatan individu.

**catatan**  
QLDB menulis semua catatan aliran ke Kinesis Data Streams dalam representasi biner Amazon Ion. Contoh berikut disediakan dalam representasi teks Ion untuk mengilustrasikan isi rekaman dalam format yang dapat dibaca.

**Topics**
+ [

## Catatan kontrol
](#streams.records.control)
+ [

## Blokir catatan ringkasan
](#streams.records.block)
+ [

## Revisi rincian catatan
](#streams.records.revision)
+ [

## Menangani duplikat dan catatan out-of-order
](#streams.records.ordering)

## Catatan kontrol
<a name="streams.records.control"></a>

Aliran QLDB *menulis* catatan kontrol untuk menunjukkan peristiwa awal dan penyelesaiannya. Berikut ini adalah contoh catatan kontrol dengan data sampel untuk masing-masing`controlRecordType`:
+ `CREATED`— Catatan pertama yang ditulis oleh aliran QLDB ke Kinesis untuk menunjukkan bahwa aliran yang baru Anda buat aktif.

  ```
  {
    qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy",
    recordType:"CONTROL",
    payload:{
      controlRecordType:"CREATED"
    }
  }
  ```
+ `COMPLETED`— Catatan terakhir yang ditulis oleh aliran QLDB ke Kinesis untuk menunjukkan bahwa aliran Anda telah mencapai tanggal dan waktu akhir yang ditentukan. Catatan ini tidak ditulis jika Anda membatalkan streaming.

  ```
  {
    qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy",
    recordType:"CONTROL",
    payload:{
      controlRecordType:"COMPLETED"
    }
  }
  ```

## Blokir catatan ringkasan
<a name="streams.records.block"></a>

Catatan *ringkasan blok* mewakili blok jurnal tempat revisi dokumen Anda dilakukan. [Blok](journal-contents.md) adalah objek yang berkomitmen pada jurnal QLDB Anda selama transaksi.

Muatan catatan ringkasan blok berisi alamat blok, stempel waktu, dan metadata lain dari transaksi yang melakukan blok tersebut. Ini juga mencakup atribut ringkasan dari revisi di blok dan pernyataan PartiQL yang melakukannya. Berikut ini adalah contoh catatan ringkasan blok dengan data sampel.

**catatan**  
Contoh ringkasan blok ini disediakan hanya untuk tujuan informasi. Hash yang ditampilkan bukanlah nilai hash yang dihitung secara nyata.

```
{
  qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy",
  recordType:"BLOCK_SUMMARY",
  payload:{
    blockAddress:{
      strandId:"ElYL30RGoqrFCbbaQn3K6m",
      sequenceNo:60807
    },
    transactionId:"9RWohCo7My4GGkxRETAJ6M",
    blockTimestamp:2019-09-18T17:00:14.601000001Z,
    blockHash:{{6Pk9KDYJd38ci09oaHxx0D2grtgh4QBBqbDS6i9quX8=}},
    entriesHash:{{r5YoH6+NXDXxgoRzPREGAWJfn73KlZE0eTfbTxZWUDU=}},
    previousBlockHash:{{K3ti0Agk7DEponywKcQCPRYVHb5RuyxdmQFTfrloptA=}},
    entriesHashList:[
      {{pbzvz6ofJC7mD2jvgfyrY/VtR01zIZHoWy8T1VcxlGo=}},
      {{k2brC23DLMercmiOWHiURaGwHu0mQtLzdNPuviE2rcs=}},
      {{hvw1EV8k4oOkIO36kblO/+UUSFUQqCanKuDGr0aP9nQ=}},
      {{ZrLbkyzDcpJ9KWsZMZqRuKUkG/czLIJ4US+K5E31b+Q=}}
    ],
    transactionInfo:{
      statements:[
        {
          statement:"SELECT * FROM Person WHERE GovId = ?",
          startTime:2019-09-18T17:00:14.587Z,
          statementDigest:{{p4Dn0DiuYD3Xm9UQQ75YLwmoMbSfJmopOmTfMnXs26M=}}
        },
        {
          statement:"INSERT INTO Person ?",
          startTime:2019-09-18T17:00:14.594Z,
          statementDigest:{{klMLkLfa5VJqk6JUPtHkQpOsDdG4HmuUaq/VaApQflU=}}
        },
        {
          statement:"INSERT INTO VehicleRegistration ?",
          startTime:2019-09-18T17:00:14.598Z,
          statementDigest:{{B0gO9BWVNrzRYFoe7t+GVLpJ6uZcLKf5t/chkfRhspI=}}
        }
      ],
      documents:{
        '7z2OpEBgVCvCtwvx4a2JGn':{
          tableName:"Person",
          tableId:"LSkFkQvkIOjCmpTZpkfpn9",
          statements:[1]
        },
        'K0FpsSLpydLDr7hi6KUzqk':{
          tableName:"VehicleRegistration",
          tableId:"Ad3A07z0ZffC7Gpso7BXyO",
          statements:[2]
        }
      }
    },
    revisionSummaries:[
      {
        hash:{{uDthuiqSy4FwjZssyCiyFd90XoPSlIwomHBdF/OrmkE=}},
        documentId:"7z2OpEBgVCvCtwvx4a2JGn"
      },
      {
        hash:{{qJID/amu0gN3dpG5Tg0FfIFTh/U5yFkfT+g/O6k5sPM=}},
        documentId:"K0FpsSLpydLDr7hi6KUzqk"
      }
    ]
  }
}
```

Di `revisionSummaries` lapangan, beberapa revisi mungkin tidak memiliki a`documentId`. Ini adalah revisi sistem internal saja yang tidak berisi data pengguna. Aliran QLDB menyertakan revisi ini dalam catatan ringkasan blok masing-masing karena hash dari revisi ini adalah bagian dari rantai hash lengkap jurnal. Rantai hash penuh diperlukan untuk verifikasi kriptografi.

Hanya revisi yang memiliki ID dokumen yang diterbitkan dalam catatan rincian revisi terpisah, seperti yang dijelaskan di bagian berikut.

## Revisi rincian catatan
<a name="streams.records.revision"></a>

Catatan *rincian revisi* mewakili revisi dokumen yang berkomitmen untuk jurnal Anda. Payload berisi semua atribut dari [tampilan komited](working.metadata.md) revisi, bersama dengan nama tabel terkait dan ID tabel. Berikut ini adalah contoh catatan revisi dengan data sampel.

```
{
  qldbStreamArn:"arn:aws:qldb:us-east-1:123456789012:stream/exampleLedger/IiPT4brpZCqCq3f4MTHbYy",
  recordType:"REVISION_DETAILS",
  payload:{
    tableInfo:{
      tableName:"VehicleRegistration",
      tableId:"Ad3A07z0ZffC7Gpso7BXyO"
    },
    revision:{
      blockAddress:{
        strandId:"ElYL30RGoqrFCbbaQn3K6m",
        sequenceNo:60807
      },
      hash:{{qJID/amu0gN3dpG5Tg0FfIFTh/U5yFkfT+g/O6k5sPM=}},
      data:{
        VIN:"1N4AL11D75C109151",
        LicensePlateNumber:"LEWISR261LL",
        State:"WA",
        City:"Seattle",
        PendingPenaltyTicketAmount:90.25,
        ValidFromDate:2017-08-21,
        ValidToDate:2020-05-11,
        Owners:{
          PrimaryOwner:{PersonId:"7z2OpEBgVCvCtwvx4a2JGn"},
          SecondaryOwners:[]
        }
      },
      metadata:{
        id:"K0FpsSLpydLDr7hi6KUzqk",
        version:0,
        txTime:2019-09-18T17:00:14.602Z,
        txId:"9RWohCo7My4GGkxRETAJ6M"
      }
    }
  }
}
```

## Menangani duplikat dan catatan out-of-order
<a name="streams.records.ordering"></a>

Aliran QLDB dapat mempublikasikan duplikat dan catatan ke out-of-order Kinesis Data Streams. Jadi, aplikasi konsumen mungkin perlu menerapkan logikanya sendiri untuk mengidentifikasi dan menangani skenario tersebut. Ringkasan blok dan catatan detail revisi mencakup bidang yang dapat Anda gunakan untuk tujuan ini. Dikombinasikan dengan fitur layanan hilir, bidang ini dapat menunjukkan identitas unik dan urutan ketat untuk catatan.

Misalnya, pertimbangkan aliran yang mengintegrasikan QLDB dengan indeks untuk memberikan kemampuan OpenSearch pencarian teks lengkap melalui dokumen. Dalam kasus penggunaan ini, Anda harus menghindari pengindeksan revisi basi (out-of-order) dokumen. Untuk menerapkan pengurutan dan deduplikasi, Anda dapat menggunakan ID dokumen dan bidang versi eksternal di OpenSearch, bersama dengan ID dokumen dan bidang versi dalam catatan detail revisi.

[Untuk contoh logika deduplikasi dalam contoh aplikasi yang mengintegrasikan QLDB dengan OpenSearch Amazon Service, lihat repositori aws-samples/ -. GitHub amazon-qldb-streaming-amazon opensearch-service-sample-python](https://github.com/aws-samples/amazon-qldb-streaming-amazon-opensearch-service-sample-python)

# Izin streaming di QLDB
<a name="streams.perms"></a>

**penting**  
Pemberitahuan akhir dukungan: Pelanggan yang ada akan dapat menggunakan Amazon QLDB hingga akhir dukungan pada 07/31/2025. Untuk detail selengkapnya, lihat [Memigrasi Buku Besar QLDB Amazon ke Amazon](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) Aurora PostgreSQL.

Sebelum membuat aliran QLDB Amazon, Anda harus memberikan QLDB dengan izin menulis ke sumber daya Amazon Kinesis Data Streams yang Anda tentukan. Jika Anda menggunakan pelanggan yang dikelola AWS KMS key untuk enkripsi sisi server dari aliran Kinesis Anda, Anda juga harus memberikan izin kepada QLDB untuk menggunakan kunci enkripsi simetris yang Anda tentukan. Kinesis Data Streams [tidak mendukung kunci KMS asimetris](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html).

Untuk menyediakan aliran QLDB Anda dengan izin yang diperlukan, Anda dapat membuat QLDB mengambil peran layanan IAM dengan kebijakan izin yang sesuai. Peran layanan adalah [peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) yang diambil oleh sebuah layanan untuk melakukan tindakan atas nama Anda. Administrator IAM dapat membuat, mengubah, dan menghapus peran layanan dari dalam IAM. Untuk informasi selengkapnya, lihat [Buat sebuah peran untuk mendelegasikan izin ke Layanan AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dalam *Panduan pengguna IAM*. 

**catatan**  
Untuk meneruskan peran ke QLDB saat meminta aliran jurnal, Anda harus memiliki izin untuk melakukan `iam:PassRole` tindakan pada sumber daya peran IAM. Ini merupakan tambahan dari `qldb:StreamJournalToKinesis` izin pada subsumber daya aliran QLDB.  
Untuk mempelajari cara mengontrol akses ke QLDB menggunakan IAM, lihat. [Bagaimana Amazon QLDB bekerja dengan IAM](security_iam_service-with-iam.md) Untuk contoh kebijakan QLDB, lihat. [Contoh kebijakan berbasis identitas untuk Amazon QLDB](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-stream-to-kinesis)

Dalam contoh ini, Anda membuat peran yang memungkinkan QLDB menulis catatan data ke aliran data Kinesis atas nama Anda. Untuk informasi selengkapnya, lihat [Membuat sebuah peran untuk mendelegasikan izin ke Layanan AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dalam *Panduan pengguna IAM*.

Jika Anda melakukan streaming jurnal QLDB untuk pertama kalinya, Akun AWS Anda harus terlebih dahulu membuat peran IAM dengan kebijakan yang sesuai dengan melakukan hal berikut. Atau, Anda dapat [menggunakan konsol QLDB](streams.create.md#streams.create.con) untuk secara otomatis membuat peran untuk Anda. Jika tidak, Anda dapat memilih peran yang sebelumnya Anda buat.

**Topics**
+ [

## Membuat kebijakan izin
](#streams.perms.create-policy)
+ [

## Membuat peran IAM
](#streams.perms.create-role)

## Membuat kebijakan izin
<a name="streams.perms.create-policy"></a>

Selesaikan langkah-langkah berikut untuk membuat kebijakan izin untuk aliran QLDB. Contoh ini menunjukkan kebijakan Kinesis Data Streams yang memberikan izin QLDB untuk menulis catatan data ke aliran data Kinesis yang Anda tentukan. Jika berlaku, contoh ini juga menunjukkan kebijakan kunci yang memungkinkan QLDB menggunakan kunci KMS enkripsi simetris Anda.

*Untuk informasi selengkapnya tentang kebijakan Kinesis Data Streams[, lihat Mengontrol akses ke resource Amazon Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/controlling-access.html) menggunakan [IAM dan Izin untuk menggunakan kunci KMS](https://docs.aws.amazon.com/streams/latest/dev/permissions-user-key-KMS.html) buatan pengguna di Panduan Pengembang Amazon Kinesis Data Streams.* Untuk mempelajari lebih lanjut tentang kebijakan AWS KMS utama, lihat [Menggunakan kebijakan utama AWS KMS di](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) *Panduan AWS Key Management Service Pengembang*.

**catatan**  
Aliran data Kinesis dan kunci KMS Anda harus sama Wilayah AWS dan akun dengan buku besar QLDB Anda.

**Cara menggunakan editor kebijakan JSON untuk membuat kebijakan**

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

1. Di kolom navigasi di sebelah kiri, pilih **Kebijakan**.

   Jika ini pertama kalinya Anda memilih **Kebijakan**, akan muncul laman **Selamat Datang di Kebijakan Terkelola**. Pilih **Memulai**.

1. Di bagian atas halaman, pilih **Buat kebijakan**.

1. Pilih tab **JSON**.

1. Masukkan dokumen kebijakan JSON.
   + Jika Anda menggunakan kunci KMS yang dikelola pelanggan untuk enkripsi sisi server aliran Kinesis Anda, gunakan contoh dokumen kebijakan berikut. Untuk menggunakan kebijakan ini, ganti*us-east-1*, *123456789012**kinesis-stream-name*,, dan *1234abcd-12ab-34cd-56ef-1234567890ab* dalam contoh dengan informasi Anda sendiri.

     ```
     {
         "Version": "2012-10-17",
         "Statement": [
             {
                 "Sid": "QLDBStreamKinesisPermissions",
                 "Action": [ "kinesis:PutRecord*", "kinesis:DescribeStream", "kinesis:ListShards" ],
                 "Effect": "Allow",
                 "Resource": "arn:aws:kinesis:us-east-1:123456789012:stream/kinesis-stream-name"
             },
             {
                 "Sid": "QLDBStreamKMSPermission",
                 "Action": [ "kms:GenerateDataKey" ],
                 "Effect": "Allow",
                 "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
             }
         ]
     }
     ```
   + Jika tidak, gunakan contoh dokumen kebijakan berikut. Untuk menggunakan kebijakan ini, ganti *us-east-1**123456789012*, dan *kinesis-stream-name* dalam contoh dengan informasi Anda sendiri.

     ```
     {
         "Version": "2012-10-17",
         "Statement": [
             {
                 "Sid": "QLDBStreamKinesisPermissions",
                 "Action": [ "kinesis:PutRecord*", "kinesis:DescribeStream", "kinesis:ListShards" ],
                 "Effect": "Allow",
                 "Resource": "arn:aws:kinesis:us-east-1:123456789012:stream/kinesis-stream-name"
             }
         ]
     }
     ```

1. Pilih **Tinjau kebijakan**.
**catatan**  
Anda dapat berpindah antara tab **Editor visual** dan **JSON** kapan pun. Namun, apabila Anda melakukan perubahan atau memilih **Tinjau kebijakan** pada tab **Editor visual**, IAM dapat merestrukturisasi kebijakan Anda untuk menjadikannya optimal bagi editor visual. Untuk informasi selengkapnya, lihat [Restrukturisasi kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_policies.html#troubleshoot_viseditor-restructure) dalam *Panduan Pengguna IAM*.

1. Pada halaman **Peninjauan Kebijakan**, ketikkan **Nama** dan **Deskripsi** opsional untuk kebijakan yang sedang Anda buat. Tinjau **Summary** (Ringkasan) kebijakan untuk melihat izin yang diberikan oleh kebijakan Anda. Kemudian pilih **Buat kebijakan** untuk menyimpan pekerjaan Anda.

## Membuat peran IAM
<a name="streams.perms.create-role"></a>

Setelah membuat kebijakan izin untuk aliran QLDB, Anda kemudian dapat membuat peran IAM dan melampirkan kebijakan Anda padanya.

**Untuk membuat peran layanan untuk QLDB (konsol IAM)**

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

1. Di panel navigasi konsol IAM, pilih **Peran**, dan lalu pilih **Buat peran**.

1. Untuk **jenis entitas Tepercaya**, pilih **Layanan AWS**.

1. Untuk **kasus Layanan atau penggunaan**, pilih **QLDB**, lalu pilih kasus penggunaan **QLDB**.

1. Pilih **Berikutnya**.

1. Pilih kotak di samping kebijakan yang Anda buat di langkah sebelumnya.

1. (Opsional) Tetapkan [batas izin](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html). Ini adalah fitur lanjutan yang tersedia untuk peran layanan, tetapi bukan peran tertaut layanan.

   1. Buka bagian **Setel batas izin**, lalu pilih **Gunakan batas izin untuk mengontrol izin peran maksimum**.

      IAM menyertakan daftar kebijakan yang AWS dikelola dan dikelola pelanggan di akun Anda.

   1. Pilih kebijakan yang akan digunakan untuk batas izin.

1. Pilih **Berikutnya**.

1. Masukkan nama peran atau akhiran nama peran untuk membantu Anda mengidentifikasi tujuan peran.
**penting**  
Saat Anda memberi nama peran, perhatikan hal berikut:  
Nama peran harus unik di dalam diri Anda Akun AWS, dan tidak dapat dibuat unik berdasarkan kasus.  
Misalnya, jangan membuat peran bernama keduanya **PRODROLE** dan**prodrole**. Ketika nama peran digunakan dalam kebijakan atau sebagai bagian dari ARN, nama peran tersebut peka huruf besar/kecil, namun ketika nama peran muncul kepada pelanggan di konsol, seperti selama proses masuk, nama peran tersebut tidak peka huruf besar/kecil.
Anda tidak dapat mengedit nama peran setelah dibuat karena entitas lain mungkin mereferensikan peran tersebut.

1. (Opsional) Untuk **Deskripsi**, masukkan deskripsi untuk peran tersebut.

1. **(Opsional) Untuk mengedit kasus penggunaan dan izin untuk peran, di **Langkah 1: Pilih entitas tepercaya** atau **Langkah 2: Tambahkan izin**, pilih Edit.**

1. (Opsional) Untuk membantu mengidentifikasi, mengatur, atau mencari peran, tambahkan tag sebagai pasangan nilai kunci. Untuk informasi selengkapnya tentang penggunaan tag di IAM, lihat [Tag untuk AWS Identity and Access Management sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) di *Panduan Pengguna IAM*.

1. Tinjau peran lalu pilih **Buat peran**.

Dokumen JSON berikut adalah contoh kebijakan kepercayaan yang memungkinkan QLDB untuk mengambil peran IAM dengan izin khusus yang melekat padanya.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "qldb.amazonaws.com"
            },
            "Action": [ "sts:AssumeRole" ],
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/*"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

**catatan**  
Contoh kebijakan kepercayaan ini menunjukkan bagaimana Anda dapat menggunakan kunci konteks kondisi `aws:SourceAccount` global `aws:SourceArn` dan global untuk mencegah masalah *wakil yang membingungkan*. Dengan kebijakan kepercayaan ini, QLDB dapat mengambil peran untuk aliran QLDB apa pun di akun untuk buku besar saja. `123456789012` `myExampleLedger`  
Untuk informasi selengkapnya, lihat [Pencegahan "confused deputy" lintas layanan](cross-service-confused-deputy-prevention.md).

Setelah membuat peran IAM Anda, kembali ke konsol QLDB dan segarkan halaman aliran **Buat QLDB sehingga dapat menemukan peran baru** Anda.

# Kesalahan umum untuk aliran jurnal di QLDB
<a name="streams.errors"></a>

**penting**  
Pemberitahuan akhir dukungan: Pelanggan yang ada akan dapat menggunakan Amazon QLDB hingga akhir dukungan pada 07/31/2025. Untuk detail selengkapnya, lihat [Memigrasi Buku Besar QLDB Amazon ke Amazon](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) Aurora PostgreSQL.

Bagian ini menjelaskan kesalahan runtime yang dilemparkan oleh Amazon QLDB untuk permintaan aliran jurnal.

Berikut ini adalah daftar pengecualian umum yang dikembalikan oleh layanan. Setiap pengecualian mencakup pesan kesalahan tertentu, diikuti dengan deskripsi singkat dan saran untuk solusi yang mungkin.<a name="streams.errors.varlist"></a>

**AccessDeniedException**  
Pesan: Pengguna: *userARN* tidak berwenang untuk melakukan: iam: PassRole pada sumber daya: *roleARN*  
Anda tidak memiliki izin untuk meneruskan peran IAM ke layanan QLDB. QLDB memerlukan peran untuk semua permintaan aliran jurnal, dan Anda harus memiliki izin untuk meneruskan peran ini ke QLDB. Peran ini menyediakan QLDB dengan izin menulis di sumber daya Amazon Kinesis Data Streams yang Anda tentukan.  
Verifikasi bahwa Anda menentukan kebijakan IAM yang memberikan izin untuk menjalankan operasi `PassRole` API pada sumber daya peran IAM yang ditentukan untuk layanan QLDB (). `qldb.amazonaws.com` Untuk contoh kebijakan, lihat[Contoh kebijakan berbasis identitas untuk Amazon QLDB](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-stream-to-kinesis).

**IllegalArgumentException**  
Pesan: QLDB mengalami kesalahan saat memvalidasi Kinesis Data Streams: Respon dari Kinesis: *errorCode* *errorMessage*  
Kemungkinan penyebab kesalahan ini adalah sumber daya Kinesis Data Streams yang disediakan tidak ada. Atau, QLDB tidak memiliki izin yang cukup untuk menulis catatan data ke aliran data Kinesis yang Anda tentukan.  
Verifikasi bahwa aliran data Kinesis yang Anda berikan dalam permintaan aliran Anda sudah benar. Untuk informasi selengkapnya, lihat [Membuat dan memperbarui aliran data di Panduan Pengembang *Amazon Kinesis Data* Streams](https://docs.aws.amazon.com/streams/latest/dev/amazon-kinesis-streams.html).  
Selain itu, verifikasi bahwa Anda menentukan kebijakan untuk aliran data Kinesis yang ditentukan yang memberikan izin layanan QLDB () `qldb.amazonaws.com` untuk tindakan berikut. Untuk informasi selengkapnya, lihat [Izin streaming](streams.perms.md).  
+ `kinesis:PutRecord`
+ `kinesis:PutRecords`
+ `kinesis:DescribeStream`
+ `kinesis:ListShards`

**IllegalArgumentException**  
Pesan: Respon tak terduga dari Kinesis Data Streams saat memvalidasi konfigurasi Kinesis. Tanggapan dari Kinesis: *errorCode* *errorMessage*  
Upaya untuk menulis catatan data ke aliran data Kinesis yang disediakan gagal dengan respons kesalahan Kinesis yang disediakan. Untuk informasi selengkapnya tentang kemungkinan penyebab, lihat [Memecahkan Masalah produsen Amazon Kinesis Data Streams di Panduan Pengembang Amazon Kinesis *Data Streams*](https://docs.aws.amazon.com/streams/latest/dev/troubleshooting-producers.html).

**IllegalArgumentException**  
Pesan: Tanggal mulai tidak boleh lebih besar dari tanggal akhir.  
Keduanya `InclusiveStartTime` dan `ExclusiveEndTime` harus dalam format tanggal dan waktu [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) dan dalam Coordinated Universal Time (UTC).

**IllegalArgumentException**  
Pesan: Tanggal mulai tidak bisa di masa depan.  
Keduanya `InclusiveStartTime` dan `ExclusiveEndTime` harus dalam format `ISO 8601` tanggal dan waktu dan dalam UTC.

**LimitExceededException**  
Pesan: Melebihi batas 5 aliran Jurnal yang berjalan secara bersamaan ke Kinesis Data Streams  
QLDB memberlakukan batas default lima aliran jurnal bersamaan.