Menggunakan pipeline OpenSearch Ingestion dengan Amazon DocumentDB - 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 DocumentDB

Anda dapat menggunakan pipeline OpenSearch Ingestion dengan Amazon DocumentDB untuk mengalirkan perubahan dokumen (seperti membuat, memperbarui, dan menghapus) ke domain dan koleksi Amazon OpenSearch Service. Pipeline OpenSearch Ingestion dapat memanfaatkan mekanisme change data capture (CDC), jika tersedia di klaster Amazon DocumentDB Anda, API atau polling untuk menyediakan cara berskala tinggi dan latensi rendah untuk terus mengalirkan data dari klaster Amazon DocumentDB.

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

Snapshot awal lengkap adalah kueri massal dari seluruh koleksi Amazon DocumentDB. Amazon DocumentDB 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 Amazon DocumentDB OpenSearch dan konsisten, pipeline menyinkronkan semua peristiwa buat, perbarui, dan hapus dalam koleksi Amazon DocumentDB dengan dokumen yang disimpan dalam indeks atau indeks. OpenSearch

Saat Anda menggunakan snapshot awal lengkap, pipeline OpenSearch Ingestion Anda pertama-tama akan menyerap snapshot dan kemudian mulai membaca data dari aliran perubahan Amazon DocumentDB. Ini akhirnya mengejar dan mempertahankan konsistensi data hampir real-time antara Amazon DocumentDB dan. OpenSearch

Anda juga dapat menggunakan integrasi OpenSearch Ingestion dengan Amazon DocumentDB untuk melakukan streaming acara tanpa snapshot. Pilih opsi ini jika Anda sudah memiliki snapshot lengkap dari beberapa mekanisme lain, atau jika Anda hanya ingin melakukan streaming peristiwa terkini dari koleksi Amazon DocumentDB dengan aliran perubahan.

Dengan kedua opsi ini, Anda harus mengaktifkan aliran perubahan pada koleksi Amazon DocumentDB jika Anda mengaktifkan aliran dalam konfigurasi dalam pipeline. Jika Anda hanya menggunakan muatan penuh atau ekspor, Anda tidak perlu mengaktifkan aliran perubahan.

Prasyarat

Sebelum Anda membuat pipeline OpenSearch Ingestion, lakukan langkah-langkah berikut:

  1. Buat klaster Amazon DocumentDB dengan izin untuk membaca data dengan mengikuti langkah-langkah dalam Membuat klaster Amazon DocumentDB di Panduan Pengembang Amazon DocumentDB. Jika Anda menggunakan CDC infrastruktur, pastikan Anda mengonfigurasi klaster Amazon DocumentDB untuk mempublikasikan aliran perubahan.

  2. Aktifkan TLS di cluster Amazon DocumentDB Anda.

  3. Siapkan VPC CIDR ruang alamat pribadi untuk digunakan dengan OpenSearch Ingestion.

  4. Siapkan otentikasi di klaster Amazon AWS Secrets Manager DocumentDB Anda dengan. Aktifkan rotasi rahasia dengan mengikuti langkah-langkah di Kata Sandi Berputar Otomatis untuk Amazon DocumentDB. Untuk informasi selengkapnya, lihat Akses Database Menggunakan Kontrol Akses Berbasis Peran dan Keamanan di Amazon DocumentDB.

  5. Jika Anda menggunakan aliran perubahan untuk berlangganan perubahan data pada koleksi Amazon DocumentDB Anda, hindari kehilangan data dengan memperpanjang periode retensi hingga 7 hari menggunakan parameter. change_stream_log_retention_duration Peristiwa aliran perubahan disimpan selama 3 jam, secara default, setelah acara direkam, yang tidak cukup waktu untuk koleksi besar. Untuk mengubah periode retensi aliran perubahan, lihat Memodifikasi Durasi Retensi Log Aliran Ubah.

  6. Buat domain OpenSearch Layanan atau koleksi OpenSearch Tanpa Server. Untuk informasi selengkapnya, lihat Membuat domain OpenSearch Layanan dan Membuat koleksi.

  7. Lampirkan kebijakan berbasis sumber daya ke domain Anda atau kebijakan akses data ke koleksi Anda. Kebijakan akses ini memungkinkan OpenSearch Ingestion untuk menulis data dari klaster Amazon DocumentDB Anda ke domain atau koleksi Anda.

    Contoh kebijakan akses domain berikut memungkinkan peran pipeline, yang Anda buat pada langkah berikutnya, untuk menulis data ke domain. Pastikan Anda memperbarui resource dengan milik Anda sendiriARN.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{pipeline-account-id}:role/pipeline-role" }, "Action": [ "es:DescribeDomain", "es:ESHttp*" ], "Resource": [ "arn:aws:es:{region}:{account-id}:domain/domain-name" ] } ] }

    Untuk membuat IAM peran dengan izin yang benar untuk mengakses data tulis ke koleksi atau domain, lihat Izin yang diperlukan untuk domain dan Izin yang diperlukan untuk koleksi.

Langkah 1: Konfigurasikan peran pipeline

Setelah Anda menyiapkan prasyarat pipeline Amazon DocumentDB, konfigurasikan peran pipeline yang ingin Anda gunakan dalam konfigurasi pipeline, dan tambahkan izin Amazon DocumentDB berikut dalam peran:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allowS3ListObjectAccess", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::{s3_bucket}" ], "Condition": { "StringLike": { "s3:prefix": "{s3_prefix}/*" } } }, { "Sid": "allowReadAndWriteToS3ForExportStream", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::{s3_bucket}/{s3_prefix}/*" ] }, { "Sid": "SecretsManagerReadAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": ["arn:aws:secretsmanager:{region}:{account-id}:secret:secret-name"] }, { "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DetachNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": [ "arn:aws:ec2:*:{account-id}:network-interface/*", "arn:aws:ec2:*:{account-id}:subnet/*", "arn:aws:ec2:*:{account-id}:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:Describe*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:RequestTag/OSISManaged": "true" } } } ] }

Anda harus memberikan EC2 izin Amazon di atas pada IAM peran yang Anda gunakan untuk membuat pipeline OpenSearch Ingestion karena pipeline menggunakan izin ini untuk membuat dan menghapus antarmuka jaringan di situs Anda. VPC Pipeline hanya dapat mengakses cluster Amazon DocumentDB melalui antarmuka jaringan ini.

Langkah 2: Buat pipa

Anda kemudian dapat mengonfigurasi pipeline OpenSearch Ingestion seperti berikut ini, yang menentukan Amazon DocumentDB sebagai sumbernya. Perhatikan bahwa untuk mengisi nama indeks, getMetadata fungsi menggunakan documentdb_collection sebagai kunci metadata. Jika Anda ingin menggunakan nama indeks yang berbeda tanpa getMetadata metode, Anda dapat menggunakan konfigurasiindex: "my_index_name".

version: "2" documentdb-pipeline: source: documentdb: acknowledgments: true host: "https://docdb-cluster-id.us-east-1.docdb.amazonaws.com" port: 27017 authentication: username: ${aws_secrets:secret:username} password: ${aws_secrets:secret:password} aws: sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" s3_bucket: "bucket-name" s3_region: "bucket-region" s3_prefix: "path" #optional path for storing the temporary data collections: - collection: "dbname.collection" export: true stream: true sink: - opensearch: hosts: ["https://search-mydomain.us-east-1.es.amazonaws.com"] index: "${getMetadata(\"documentdb_collection\")}" index_type: custom document_id: "${getMetadata(\"primary_key\")}" action: "${getMetadata(\"opensearch_action\")}" document_version: "${getMetadata(\"document_version\")}" document_version_type: "external" extension: aws: secrets: secret: secret_id: "my-docdb-secret" region: "us-east-1" sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" refresh_interval: PT1H

Anda dapat menggunakan cetak biru Amazon DocumentDB yang telah dikonfigurasi sebelumnya untuk membuat pipeline ini. Untuk informasi selengkapnya, lihat Menggunakan cetak biru untuk membuat pipeline.

Jika Anda menggunakan file AWS Management Console untuk membuat pipeline, Anda juga harus melampirkan pipeline ke saluran agar dapat menggunakan Amazon DocumentDB sebagai sumber. VPC Untuk melakukannya, cari bagian Konfigurasi jaringan, pilih VPC kotak centang Lampirkan ke, dan CIDR pilih salah satu opsi default yang disediakan, atau pilih sendiri. Anda dapat menggunakan apa pun CIDR dari ruang alamat pribadi seperti yang didefinisikan dalam Praktik Terbaik Saat Ini RFC 1918.

Untuk menyediakan kustomCIDR, pilih Lainnya dari menu tarik-turun. Untuk menghindari tabrakan di alamat IP antara OpenSearch Ingestion dan Amazon DocumentDB, pastikan bahwa Amazon DocumentDB berbeda dari for Ingestion. VPC CIDR CIDR OpenSearch

Untuk informasi selengkapnya, lihat Mengonfigurasi VPC akses untuk pipeline.

Konsistensi data

Pipeline memastikan konsistensi data dengan terus melakukan polling atau menerima perubahan dari klaster Amazon DocumentDB dan memperbarui dokumen terkait dalam indeks. OpenSearch

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, jadi Anda harus menghilangkan document_id: "${getMetadata(\"primary_key\")}" konfigurasi sink pipeline Anda.

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 Amazon DocumentDB 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 Amazon DocumentDB. Tabel berikut menunjukkan bagaimana OpenSearch Layanan secara otomatis memetakan berbagai tipe data.

Tipe data OpenSearch Amazon DocumentDB
Bilangan Bulat

OpenSearch secara otomatis memetakan nilai bilangan bulat Amazon DocumentDB ke bilangan bulat. OpenSearch

OpenSearch secara dinamis memetakan bidang berdasarkan dokumen terkirim pertama. Jika Anda memiliki campuran tipe data untuk atribut yang sama di Amazon DocumentDB, pemetaan otomatis mungkin gagal.

Misalnya, jika dokumen pertama Anda memiliki atribut yang panjang, dan dokumen selanjutnya memiliki atribut yang sama dengan bilangan bulat, OpenSearch gagal untuk menelan dokumen kedua. Dalam kasus ini, Anda harus menyediakan template pemetaan eksplisit yang memilih jenis nomor paling fleksibel, seperti berikut ini:

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

Amazon DocumentDB mendukung bilangan bulat.

Long

OpenSearch secara otomatis memetakan nilai panjang Amazon DocumentDB ke long. OpenSearch

OpenSearch secara dinamis memetakan bidang berdasarkan dokumen terkirim pertama. Jika Anda memiliki campuran tipe data untuk atribut yang sama di Amazon DocumentDB, pemetaan otomatis mungkin gagal.

Misalnya, jika dokumen pertama Anda memiliki atribut yang panjang, dan dokumen selanjutnya memiliki atribut yang sama dengan bilangan bulat, OpenSearch gagal untuk menelan dokumen kedua. Dalam kasus ini, Anda harus menyediakan template pemetaan eksplisit yang memilih jenis nomor paling fleksibel, seperti berikut ini:

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

Amazon DocumentDB mendukung long.

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 cara memetakan atribut Amazon DocumentDB PartType bernama ke kata kunci. OpenSearch

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

Amazon DocumentDB mendukung string.

Ganda

OpenSearch secara otomatis memetakan Amazon DocumentDB nilai ganda menjadi dua kali lipat. OpenSearch

OpenSearch secara dinamis memetakan bidang berdasarkan dokumen terkirim pertama. Jika Anda memiliki campuran tipe data untuk atribut yang sama di Amazon DocumentDB, pemetaan otomatis mungkin gagal.

Misalnya, jika dokumen pertama Anda memiliki atribut yang panjang, dan dokumen selanjutnya memiliki atribut yang sama dengan bilangan bulat, OpenSearch gagal untuk menelan dokumen kedua. Dalam kasus ini, Anda harus menyediakan template pemetaan eksplisit yang memilih jenis nomor paling fleksibel, seperti berikut ini:

{ "template": { "mappings": { "properties": { "MixedNumberField": { "type": "float" } } } } }
Amazon DocumentDB mendukung ganda.
Tanggal

Secara default, tanggal memetakan ke bilangan bulat di OpenSearch. Anda dapat menentukan template pemetaan khusus untuk memetakan tanggal ke OpenSearch tanggal.

{ "template": { "mappings": { "properties": { "myDateField": { "type": "date", "format": "epoch_second" } } } } }
Amazon DocumentDB mendukung tanggal.
Stempel Waktu

Secara default, stempel waktu memetakan ke bilangan bulat di. OpenSearch Anda dapat menentukan template pemetaan khusus untuk memetakan tanggal ke OpenSearch tanggal.

{ "template": { "mappings": { "properties": { "myTimestampField": { "type": "date", "format": "epoch_second" } } } } }
Amazon DocumentDB mendukung stempel waktu.
Boolean

OpenSearch memetakan jenis Boolean Amazon DocumentDB menjadi tipe Boolean. OpenSearch

Amazon DocumentDB mendukung atribut tipe Boolean.

Decimal

OpenSearch memetakan atribut peta Amazon DocumentDB 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": { "myDecimalField": { "type": "double" } } } } }

Dengan pemetaan khusus ini, Anda dapat menanyakan dan menggabungkan bidang dengan presisi tingkat ganda. Nilai asli mempertahankan presisi penuh dalam _source properti OpenSearch dokumen. Tanpa pemetaan ini, OpenSearch gunakan teks secara default.

Amazon DocumentDB mendukung desimal.
Ekspresi reguler Tipe regex membuat bidang bersarang. Ini termasuk <myFieldName>.pattern dan<myFieldName>.options.

Amazon DocumentDB mendukung ekspresi reguler.

Data Biner

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

Contoh berikut menunjukkan cara memetakan bidang Amazon DocumentDB imageData bernama ke OpenSearch bidang biner.

{ "template": { "mappings": { "properties": { "imageData": { "type": "binary" } } } } }
Amazon DocumentDB mendukung bidang data biner.
ObjectId Bidang dengan jenis objectId peta ke bidang OpenSearch teks. Nilai akan menjadi representasi string dariobjectId. Amazon DocumentDB mendukung. objectIds
Null

OpenSearch dapat menelan dokumen dengan jenis null Amazon DocumentDB. 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 null Amazon DocumentDB.

Amazon DocumentDB mendukung bidang tipe null.
Tidak terdefinisi

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

Jika nama bidang yang sama digunakan untuk tipe yang tidak ditentukan dan kemudian berubah menjadi tipe yang berbeda seperti string, OpenSearch membuat pemetaan dinamis untuk nilai non-undefined pertama. Nilai selanjutnya masih dapat berupa nilai Amazon DocumentDB yang tidak ditentukan.

Amazon DocumentDB mendukung bidang tipe yang tidak ditentukan.
MinKey

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

Jika nama bidang yang sama digunakan untuk minKey tipe dan kemudian berubah ke jenis yang berbeda seperti string, OpenSearch membuat pemetaan dinamis untuk minKey non-nilai pertama. Nilai selanjutnya masih bisa berupa nilai Amazon minKey DocumentDB.

Amazon DocumentDB minKey mendukung bidang tipe.
MaxKey

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

Jika nama bidang yang sama digunakan untuk maxKey tipe dan kemudian berubah ke jenis yang berbeda seperti string, OpenSearch membuat pemetaan dinamis untuk maxKey non-nilai pertama. Nilai selanjutnya masih bisa berupa nilai Amazon maxKey DocumentDB.

Amazon DocumentDB maxKey mendukung bidang tipe.

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 menyiapkan pipeline OpenSearch Ingestion untuk Amazon DocumentDB:

  • Integrasi OpenSearch Ingestion dengan Amazon DocumentDB saat ini tidak mendukung konsumsi lintas wilayah. Cluster Amazon DocumentDB OpenSearch dan pipeline Ingestion Anda harus sama. Wilayah AWS

  • Integrasi OpenSearch Ingestion dengan Amazon DocumentDB saat ini tidak mendukung konsumsi lintas akun. Cluster Amazon DocumentDB OpenSearch dan pipeline Ingestion Anda harus sama. Akun AWS

  • Pipeline OpenSearch Ingestion hanya mendukung satu cluster Amazon DocumentDB sebagai sumbernya.

  • Integrasi OpenSearch Ingestion dengan Amazon DocumentDB secara khusus mendukung cluster berbasis instans Amazon DocumentDB. Itu tidak mendukung cluster elastis Amazon DocumentDB.

  • Integrasi OpenSearch Ingestion hanya mendukung AWS Secrets Manager sebagai mekanisme otentikasi untuk klaster Amazon DocumentDB Anda.

  • Anda tidak dapat memperbarui konfigurasi pipeline yang ada untuk menyerap data dari database atau koleksi yang berbeda. Sebagai gantinya, Anda harus membuat pipeline baru.