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 plugin DocumentDB untuk melakukan streaming perubahan dokumen, seperti membuat, memperbarui, dan menghapus, ke Amazon Service. OpenSearch Pipeline mendukung pengambilan data perubahan (CDC), jika tersedia, atau polling API untuk streaming latensi rendah skala tinggi.

Anda dapat memproses data dengan atau tanpa snapshot awal penuh. Snapshot lengkap menangkap seluruh koleksi Amazon DocumentDB dan mengunggahnya ke Amazon S3. Pipeline kemudian mengirimkan data ke satu atau lebih OpenSearch indeks. Setelah menyerap snapshot, pipeline menyinkronkan perubahan yang sedang berlangsung untuk menjaga konsistensi dan akhirnya mengejar pembaruan hampir real-time.

Jika Anda sudah memiliki snapshot lengkap dari sumber lain, atau hanya perlu memproses peristiwa baru, Anda dapat melakukan streaming tanpa snapshot. Dalam hal ini, pipeline membaca langsung dari aliran perubahan Amazon DocumentDB tanpa beban massal awal.

Jika Anda mengaktifkan streaming, Anda harus mengaktifkan aliran perubahan pada koleksi Amazon DocumentDB Anda. Namun, jika Anda hanya melakukan pemuatan penuh atau ekspor, Anda tidak memerlukan 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 infrastruktur CDC, konfigurasikan klaster Amazon DocumentDB Anda untuk mempublikasikan aliran perubahan.

  2. Aktifkan TLS di klaster Amazon DocumentDB Anda.

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

  4. Siapkan autentikasi di klaster Amazon AWS Secrets Manager DocumentDB Anda dengan. Aktifkan rotasi rahasia dengan mengikuti langkah-langkah dalam Memutar kata sandi secara 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 perubahan.

  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 ARN Anda sendiri.

    JSON
    { "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 peran IAM dengan izin yang benar untuk mengakses data tulis ke koleksi atau domain, lihat. Menyiapkan peran dan pengguna di Amazon OpenSearch Ingestion

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:

JSON
{ "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 peran IAM yang Anda gunakan untuk membuat pipeline OpenSearch Ingestion karena pipeline menggunakan izin ini untuk membuat dan menghapus antarmuka jaringan di VPC Anda. 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: 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" refresh_interval: PT1H

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

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

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

Untuk informasi selengkapnya, lihat Mengonfigurasi akses VPC 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 konfigurasi sink document_id: "${getMetadata(\"primary_key\")}" pipeline.

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.

Jenis 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.

Panjang

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 peta ObjectId ke bidang OpenSearch teks. Nilai akan menjadi representasi string dari ObjectId. 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 tipe MinKey dan kemudian berubah menjadi tipe yang berbeda seperti string, OpenSearch membuat pemetaan dinamis untuk nilai non-MinKey pertama. Nilai selanjutnya masih bisa berupa nilai MinKey Amazon DocumentDB.

Amazon DocumentDB mendukung bidang tipe MinKey.
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 tipe maxKey dan kemudian berubah ke jenis yang berbeda seperti string, OpenSearch membuat pemetaan dinamis untuk nilai non-MaxKey pertama. Nilai selanjutnya masih bisa berupa nilai Amazon DocumentDB MaxKey.

Amazon DocumentDB mendukung bidang tipe MaxKey.

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.

CloudWatch Alarm yang direkomendasikan

Untuk performa terbaik, sebaiknya gunakan CloudWatch alarm berikut saat membuat pipeline OpenSearch Ingestion untuk mengakses kluster Amazon DocumentDB sebagai sumber.

CloudWatch Alarm Deskripsi
<pipeline-name>.doucmentdb.credentialsChanged

Metrik ini menunjukkan seberapa sering AWS rahasia diputar.

<pipeline-name>.doucmentdb. executorRefreshErrors

Metrik ini menunjukkan kegagalan untuk menyegarkan AWS rahasia.

<pipeline-name>.doucmentdb. exportRecordsTotal

Metrik ini menunjukkan jumlah catatan yang diekspor dari Amazon DocumentDB.

<pipeline-name>.doucmentdb. exportRecordsProcessed

Metrik ini menunjukkan jumlah catatan yang diproses oleh pipa OpenSearch Ingestion.

<pipeline-name>.doucmentdb. exportRecordProcessingKesalahan

Metrik ini menunjukkan jumlah kesalahan pemrosesan dalam pipeline OpenSearch Ingestion saat membaca data dari klaster Amazon DocumentDB.

<pipeline-name>.doucmentdb. exportRecordsSuccessJumlah

Metrik ini menunjukkan jumlah total catatan ekspor yang berhasil diproses.

<pipeline-name>.doucmentdb. exportRecordsFailedJumlah

Metrik ini menunjukkan jumlah total catatan ekspor yang gagal diproses.

<pipeline-name>.doucmentdb.bytesDiterima

Metrik ini menunjukkan jumlah total byte yang diterima oleh pipeline OpenSearch Ingestion.

<pipeline-name>.doucmentdb.bytesdiproses

Metrik ini menunjukkan jumlah total byte yang diproses oleh pipeline OpenSearch Ingestion.

<pipeline-name>.doucmentdb. exportPartitionQueryJumlah

Metrik ini menunjukkan total partisi ekspor.

<pipeline-name>.doucmentdb. streamRecordsSuccessJumlah

Metrik ini menunjukkan jumlah catatan yang berhasil diproses dari aliran.

<pipeline-name>.doucmentdb. streamRecordsFailedJumlah

Metrik ini menunjukkan jumlah total rekaman yang gagal diproses dari aliran.