Menggunakan pipeline OpenSearch Ingestion dengan Amazon DynamoDB - OpenSearch Layanan Amazon

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

Menggunakan pipeline OpenSearch Ingestion dengan Amazon DynamoDB

Anda dapat menggunakan pipeline OpenSearch Ingestion dengan DynamoDB untuk mengalirkan peristiwa tabel DynamoDB (seperti membuat, memperbarui, dan menghapus) ke domain dan koleksi Amazon Service. OpenSearch Pipeline OpenSearch Ingestion menggabungkan infrastruktur change data capture (CDC) untuk menyediakan cara berskala tinggi dan latensi rendah untuk terus mengalirkan data dari tabel DynamoDB.

Ada dua cara Anda dapat menggunakan DynamoDB sebagai sumber untuk memproses data—dengan dan tanpa snapshot awal penuh.

Snapshot awal lengkap adalah cadangan tabel yang diambil DynamoDB dengan point-in-time fitur pemulihan (PITR). DynamoDB mengunggah snapshot ini ke Amazon S3. Dari sana, pipa OpenSearch Ingestion mengirimkannya ke satu indeks dalam domain, atau mempartisinya ke beberapa indeks dalam domain. Untuk menjaga data di DynamoDB OpenSearch dan konsisten, pipeline menyinkronkan semua peristiwa buat, perbarui, dan hapus di tabel DynamoDB dengan dokumen yang disimpan dalam indeks atau indeks. OpenSearch

Saat Anda menggunakan snapshot awal penuh, pipeline OpenSearch Ingestion Anda pertama-tama akan menyerap snapshot dan kemudian mulai membaca data dari DynamoDB Streams. Ini akhirnya mengejar dan mempertahankan konsistensi data hampir real-time antara DynamoDB dan. OpenSearch Ketika Anda memilih opsi ini, Anda harus mengaktifkan PITR dan aliran DynamoDB di meja Anda.

Anda juga dapat menggunakan integrasi OpenSearch Ingestion dengan DynamoDB untuk melakukan streaming peristiwa tanpa snapshot. Pilih opsi ini jika Anda sudah memiliki snapshot lengkap dari beberapa mekanisme lain, atau jika Anda hanya ingin melakukan streaming peristiwa saat ini dari tabel DynamoDB dengan DynamoDB Streams. Ketika Anda memilih opsi ini, Anda hanya perlu mengaktifkan aliran DynamoDB di meja Anda.

Untuk informasi selengkapnya tentang integrasi ini, lihat Integrasi DynamoDB Zero-ETL dengan OpenSearch Amazon Service di Panduan Pengembang.Amazon DynamoDB

Prasyarat

Untuk mengatur pipeline, Anda harus memiliki tabel DynamoDB dengan DynamoDB Streams diaktifkan. Streaming Anda harus menggunakan jenis tampilan NEW_IMAGE aliran. Namun, saluran pipa OpenSearch Ingestion juga dapat mengalirkan peristiwa NEW_AND_OLD_IMAGES jika jenis tampilan aliran ini sesuai dengan kasus penggunaan Anda.

Jika Anda menggunakan snapshot, Anda juga harus mengaktifkan point-in-time pemulihan di meja Anda. Untuk informasi selengkapnya, lihat Membuat tabel, Mengaktifkan point-in-time pemulihan, dan Mengaktifkan aliran di Panduan Pengembang Amazon DynamoDB.

Langkah 1: Konfigurasikan peran pipeline

Setelah tabel DynamoDB disiapkan, siapkan peran pipeline yang ingin Anda gunakan dalam konfigurasi pipeline, dan tambahkan izin DynamoDB berikut dalam peran:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allowRunExportJob", "Effect": "Allow", "Action": [ "dynamodb:DescribeTable", "dynamodb:DescribeContinuousBackups", "dynamodb:ExportTableToPointInTime" ], "Resource": [ "arn:aws:dynamodb:us-east-1:{account-id}:table/my-table" ] }, { "Sid": "allowCheckExportjob", "Effect": "Allow", "Action": [ "dynamodb:DescribeExport" ], "Resource": [ "arn:aws:dynamodb:us-east-1:{account-id}:table/my-table/export/*" ] }, { "Sid": "allowReadFromStream", "Effect": "Allow", "Action": [ "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:GetShardIterator" ], "Resource": [ "arn:aws:dynamodb:us-east-1:{account-id}:table/my-table/stream/*" ] }, { "Sid": "allowReadAndWriteToS3ForExport", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::my-bucket/export/*" ] } ] }

Anda juga dapat menggunakan kunci yang dikelola AWS KMS pelanggan untuk mengenkripsi file data ekspor. Untuk mendekripsi objek yang diekspor, tentukan s3_sse_kms_key_id ID kunci dalam konfigurasi ekspor pipa dengan format berikut:. arn:aws:kms:us-west-2:{account-id}:key/my-key-id

Langkah 2: Buat pipa

Anda kemudian dapat mengonfigurasi pipeline OpenSearch Ingestion seperti berikut ini, yang menentukan DynamoDB sebagai sumbernya. Pipeline sampel ini menyerap data dari table-a snapshot PITR, diikuti oleh peristiwa dari DynamoDB Streams. Posisi awal LATEST menunjukkan bahwa pipeline harus membaca data terbaru dari DynamoDB Streams.

version: "2" cdc-pipeline: source: dynamodb: tables: - table_arn: "arn:aws:dynamodb:us-west-2:{account-id}:table/table-a" export: s3_bucket: "my-bucket" s3_prefix: "export/" stream: start_position: "LATEST" aws: region: "us-west-2" sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" sink: - opensearch: hosts: ["https://search-mydomain.us-east-1.es.amazonaws.com"] index: "${getMetadata(\"table_name\")}" index_type: custom document_id: "${getMetadata(\"primary_key\")}" action: "${getMetadata(\"opensearch_action\")}" document_version: "${getMetadata(\"document_version\")}" document_version_type: "external"

Anda dapat menggunakan cetak biru AWS-DynamoDB ChangeDataCapturePipeline atau SingleTableDesignPipelineAWS-DynamoDB untuk membuat pipeline ini. Untuk informasi selengkapnya, lihat Menggunakan cetak biru untuk membuat pipeline.

Konsistensi data

OpenSearch Ingestion mendukung end-to-end pengakuan untuk memastikan daya tahan data. Ketika pipeline membaca snapshot atau stream, ia secara dinamis membuat partisi untuk pemrosesan paralel. Pipeline menandai partisi sebagai lengkap ketika menerima pengakuan setelah menelan semua catatan dalam OpenSearch domain atau koleksi.

Jika Anda ingin memasukkan ke dalam koleksi pencarian OpenSearch Tanpa Server, Anda dapat membuat ID dokumen di pipeline. Jika Anda ingin memasukkan koleksi deret waktu OpenSearch Tanpa Server, perhatikan bahwa pipeline tidak menghasilkan ID dokumen.

Pipeline OpenSearch Ingestion juga memetakan tindakan peristiwa yang masuk ke dalam tindakan pengindeksan massal yang sesuai untuk membantu menyerap dokumen. Ini membuat data tetap konsisten, sehingga setiap perubahan data di DynamoDB direkonsiliasi dengan perubahan dokumen yang sesuai. OpenSearch

Pemetaan tipe data

OpenSearch Layanan secara dinamis memetakan tipe data di setiap dokumen yang masuk ke tipe data yang sesuai di DynamoDB. Tabel berikut menunjukkan bagaimana OpenSearch Layanan secara otomatis memetakan berbagai tipe data.

Tipe data OpenSearch DynamoDB
Angka

OpenSearch secara otomatis memetakan data numerik. Jika angka tersebut adalah bilangan bulat, OpenSearch petakan sebagai nilai panjang. Jika angkanya pecahan, maka OpenSearch petakan sebagai nilai float.

OpenSearch secara dinamis memetakan berbagai atribut berdasarkan dokumen terkirim pertama. Jika Anda memiliki campuran tipe data untuk atribut yang sama di DynamoDB, seperti bilangan bulat dan bilangan pecahan, pemetaan mungkin gagal.

Misalnya, jika dokumen pertama Anda memiliki atribut yang merupakan bilangan bulat, dan dokumen selanjutnya memiliki atribut yang sama dengan angka pecahan, OpenSearch gagal untuk menelan dokumen kedua. Dalam kasus ini, Anda harus menyediakan template pemetaan eksplisit, seperti berikut ini:

{ "template": { "mappings": { "properties": { "MixedNumberAttribute": { "type": "float" } } } } }

Jika Anda membutuhkan presisi ganda, gunakan pemetaan bidang tipe string. Tidak ada tipe numerik setara yang mendukung 38 digit presisi dalam. OpenSearch

DynamoDB mendukung angka.

Jumlah set OpenSearch secara otomatis memetakan angka yang ditetapkan ke dalam array baik nilai panjang atau nilai float. Seperti halnya bilangan skalar, ini tergantung pada apakah angka pertama yang dicerna adalah bilangan bulat atau bilangan pecahan. Anda dapat memberikan pemetaan untuk kumpulan angka dengan cara yang sama seperti Anda memetakan string skalar.

DynamoDB mendukung jenis yang mewakili set angka.

String

OpenSearch secara otomatis memetakan nilai string sebagai teks. Dalam beberapa situasi, seperti nilai yang disebutkan, Anda dapat memetakan ke jenis kata kunci.

Contoh berikut menunjukkan bagaimana memetakan atribut DynamoDB PartType bernama untuk kata kunci. OpenSearch

{ "template": { "mappings": { "properties": { "PartType": { "type": "keyword" } } } } }

DynamoDB mendukung string.

Set string

OpenSearch secara otomatis memetakan string yang diatur ke dalam array string. Anda dapat memberikan pemetaan untuk set string dengan cara yang sama seperti Anda memetakan string skalar.

DynamoDB mendukung jenis yang mewakili set string.
Biner

OpenSearch secara otomatis memetakan data biner sebagai teks. Anda dapat memberikan pemetaan untuk menulis ini sebagai bidang OpenSearch biner.

Contoh berikut menunjukkan bagaimana memetakan atribut DynamoDB ImageData bernama ke OpenSearch bidang biner.

{ "template": { "mappings": { "properties": { "ImageData": { "type": "binary" } } } } }
DynamoDB mendukung atribut tipe biner.
Set biner

OpenSearch secara otomatis memetakan set biner ke dalam array data biner sebagai teks. Anda dapat memberikan pemetaan untuk kumpulan angka dengan cara yang sama seperti Anda memetakan biner skalar.

DynamoDB mendukung jenis yang mewakili set nilai biner.
Boolean

OpenSearch memetakan tipe DynamoDB Boolean ke dalam tipe Boolean. OpenSearch

DynamoDB mendukung atribut tipe Boolean.

Null

OpenSearch dapat menelan dokumen dengan tipe nol DynamoDB. Ini menyimpan nilai sebagai nilai nol dalam dokumen. Tidak ada pemetaan untuk jenis ini, dan bidang ini tidak diindeks atau dicari.

Jika nama atribut yang sama digunakan untuk tipe null dan kemudian berubah ke tipe yang berbeda seperti string, OpenSearch membuat pemetaan dinamis untuk nilai non-null pertama. Nilai selanjutnya masih bisa berupa nilai nol DynamoDB.

DynamoDB mendukung atribut tipe null.
Peta

OpenSearch memetakan atribut peta DynamoDB ke bidang bersarang. Pemetaan yang sama berlaku dalam bidang bersarang.

Contoh berikut memetakan string dalam bidang bersarang ke jenis kata kunci di OpenSearch:

{ "template": { "mappings": { "properties": { "AdditionalDescriptions": { "properties": { "PartType": { "type": "keyword" } } } } } } }
DynamoDB mendukung atribut tipe peta.
Daftar

OpenSearch memberikan hasil yang berbeda untuk daftar DynamoDB, tergantung pada apa yang ada dalam daftar.

Ketika daftar berisi semua jenis jenis skalar yang sama (misalnya, daftar semua string), kemudian OpenSearch mencerna daftar sebagai array dari jenis itu. Ini berfungsi untuk tipe string, number, Boolean, dan null. Pembatasan untuk masing-masing jenis ini sama dengan batasan untuk skalar jenis itu.

Anda juga dapat menyediakan pemetaan untuk daftar peta dengan menggunakan pemetaan yang sama seperti yang akan Anda gunakan untuk peta.

Anda tidak dapat memberikan daftar tipe campuran.

DynamoDB mendukung atribut tipe daftar.

Set

OpenSearch memberikan hasil yang berbeda untuk set DynamoDB tergantung pada apa yang ada di set.

Ketika satu set berisi semua jenis jenis skalar yang sama (misalnya, satu set semua string), kemudian OpenSearch menelan set sebagai array dari jenis itu. Ini berfungsi untuk tipe string, number, Boolean, dan null. Pembatasan untuk masing-masing jenis ini sama dengan batasan untuk skalar jenis itu.

Anda juga dapat menyediakan pemetaan untuk set peta dengan menggunakan pemetaan yang sama seperti yang akan Anda gunakan untuk peta.

Anda tidak dapat menyediakan satu set tipe campuran.

DynamoDB mendukung jenis yang mewakili set.

Kami menyarankan Anda mengonfigurasi antrian huruf mati (DLQ) di pipeline Ingestion Anda. OpenSearch Jika Anda telah mengonfigurasi antrian, OpenSearch Layanan mengirimkan semua dokumen gagal yang tidak dapat dicerna karena kegagalan pemetaan dinamis ke antrian.

Jika pemetaan otomatis gagal, Anda dapat menggunakan template_type dan template_content dalam konfigurasi pipeline untuk menentukan aturan pemetaan eksplisit. Atau, Anda dapat membuat templat pemetaan langsung di domain atau koleksi penelusuran sebelum memulai pipeline.

Batasan

Pertimbangkan batasan berikut saat Anda menyiapkan pipeline OpenSearch Ingestion untuk DynamoDB:

  • Integrasi OpenSearch Ingestion dengan DynamoDB saat ini tidak mendukung konsumsi lintas wilayah. Tabel DynamoDB OpenSearch dan pipa Ingestion Anda harus sama. Wilayah AWS

  • Tabel DynamoDB OpenSearch dan pipa Ingestion Anda harus sama. Akun AWS

  • Pipeline OpenSearch Ingestion hanya mendukung satu tabel DynamoDB sebagai sumbernya.

  • DynamoDB Streams hanya menyimpan data dalam log hingga 24 jam. Jika konsumsi dari snapshot awal tabel besar membutuhkan waktu 24 jam atau lebih, akan ada beberapa kehilangan data awal. Untuk mengurangi kehilangan data ini, perkirakan ukuran tabel dan konfigurasikan unit komputasi yang sesuai dari OpenSearch pipa Ingestion.