Menggunakan pipa OpenSearch Ingestion dengan cloud Confluent Kafka - OpenSearch Layanan Amazon

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

Menggunakan pipa OpenSearch Ingestion dengan cloud Confluent Kafka

Anda dapat menggunakan Confluent Kafka sebagai sumber di OpenSearch Ingestion untuk mengalirkan data dari cluster Confluent Kafka ke domain OpenSearch Layanan Amazon atau koleksi Amazon Tanpa Server. OpenSearch OpenSearch Ingestion mendukung pemrosesan data streaming dari Kafka yang dikelola sendiri di ruang jaringan publik dan pribadi.

Konektivitas ke Confluent public Kafka Cloud

Anda dapat menggunakan pipeline OpenSearch Ingestion untuk mengalirkan data dari cluster Confluent Kafka dengan konfigurasi publik (nama DNS server bootstrap harus diselesaikan secara publik). Untuk melakukan ini, Anda memerlukan pipeline OpenSearch Ingestion, cluster Kafka konfluen sebagai sumber, dan OpenSearch domain Layanan Amazon atau koleksi Amazon Tanpa OpenSearch Server sebagai tujuan.

Untuk memigrasikan data, Anda harus memiliki yang berikut:

  • Cluster Confluent Kafka bertindak sebagai sumber. Cluster harus berisi data yang ingin Anda migrasikan.

  • Domain OpenSearch Layanan Amazon atau koleksi Amazon OpenSearch Tanpa Server yang bertindak sebagai tujuan.

  • Cluster Kafka harus mengaktifkan otentikasi dengan kredensyal dari. AWS Secrets Manager

Persyaratan

Untuk mengaktifkan otentikasi AWS Secrets Manager berbasis pada cluster sumber yang dikelola sendiri OpenSearch atau Elasticsearch, Anda harus

  • Siapkan otentikasi di cluster Confluent Kafka Anda AWS Secrets Manager dengan mengikuti langkah-langkah di Rotate secrets. AWS Secrets Manager

  • Buat peran pipeline di IAM dengan izin untuk menulis ke domain OpenSearch Layanan Amazon atau koleksi Amazon Tanpa OpenSearch Server. Anda juga harus menentukan izin untuk membaca kredensialnya. AWS Secrets Manager Untuk melakukannya:

    • Lampirkan kebijakan berbasis sumber daya ke domain OpenSearch Layanan Amazon atau kebijakan akses data ke koleksi Anda. Kebijakan akses ini memungkinkan OpenSearch Ingestion untuk menulis data dari cluster sumber Elasticsearch yang dikelola sendiri OpenSearch atau Elasticsearch ke OpenSearch domain Layanan Amazon atau koleksi Amazon Tanpa Server Anda. OpenSearch

  • Buat pipeline OpenSearch Ingestion dengan mengacu pada cetak biru.

    Setelah Anda menyelesaikan langkah-langkah ini, pipeline Anda akan secara otomatis mulai memproses data dari cluster sumber Anda dan memasukkannya ke dalam domain OpenSearch Layanan Amazon atau tujuan pengumpulan Amazon OpenSearch Tanpa Server. Anda dapat menggunakan berbagai prosesor di pipa OpenSearch Ingestion untuk melakukan transformasi apa pun pada data yang dicerna.

Peran dan Izin IAM

Contoh kebijakan akses domain berikut memungkinkan peran pipeline, yang Anda buat pada langkah berikutnya, untuk menulis data ke domain OpenSearch Layanan Amazon. Pastikan Anda memperbarui sumber daya dengan ARN Anda sendiri.

{ "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" ] } ] }

Izin berikut diperlukan untuk mengelola antarmuka jaringan:

{ "Version": "2012-10-17", "Statement": [ { "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" } } } ] }

Berikut ini adalah izin yang diperlukan untuk membaca rahasia dari AWS Secrets Manager layanan:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SecretsManagerReadAccess", "Effect": "Allow", "Action": ["secretsmanager:GetSecretValue"], "Resource": ["arn:aws:secretsmanager:<region>:<account-id>:secret:<secret-name>"] } ] }

Izin berikut diperlukan untuk menulis ke domain OpenSearch Layanan Amazon:

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

Setelah melampirkan kebijakan ke peran pipeline, manfaatkan cetak biru pipa migrasi data Confluent Kafka untuk membuat pipeline. Cetak biru ini mencakup konfigurasi default untuk memigrasi data antara Kafka dan tujuan Anda.

  • Anda dapat menentukan beberapa domain OpenSearch Layanan Amazon sebagai tujuan untuk data Anda. Kemampuan ini memungkinkan perutean bersyarat atau replikasi data yang masuk ke beberapa Amazon Servicedomains. OpenSearch

  • Anda dapat memigrasikan data dari cluster Confluent Kafka sumber ke koleksi VPC Amazon Tanpa Server OpenSearch . Pastikan Anda menyediakan kebijakan akses jaringan dalam konfigurasi pipeline.

  • Anda dapat menggunakan registri skema konfluen untuk mendefinisikan dan menggabungkan skema.

Contoh pipeline berikut menyerap data dari cluster Confluent Kafka ke domain Layanan Amazon: OpenSearch

version: "2" kafka-pipeline: source: kafka: # Encryption is always required encryption: type: "ssl" topics: - name: "topic_4" group_id: "demoGroup" bootstrap_servers: # TODO: for public confluent kafka use public booststrap server dns - "<<bootstrap-server>>.us-west-2.aws.private.confluent.cloud:9092" authentication: sasl: plain: username: "${{aws_secrets:confluent-kafka-secret:username}}" password: "${{aws_secrets:confluent-kafka-secret:password}}" # Schema is optional schema: type: confluent registry_url: https://<<registry-url>>.us-west-2.aws.confluent.cloud api_key: "${{aws_secrets:schema-secret:schema_registry_api_key}}" api_secret: "${{aws_secrets:schema-secret:schema_registry_api_secret}}" basic_auth_credentials_source: "USER_INFO" sink: - opensearch: hosts: [ "https://<<opensearchdomain>>.us-west-2.es.amazonaws.com" ] index: "enterprise-confluent-demo" aws: sts_role_arn: "arn:aws:iam::1234567890:role/os-os-test-role" region: "<<aws-region>>" extension: aws: secrets: confluent-kafka-secret: secret_id: "enterprise-kafka-credentials" region: "<<aws-region>>" sts_role_arn: "arn:aws:iam::1234567890:role/os-os-test-role" schema-secret: secret_id: "self-managed-kafka-schema" region: "<<aws-region>>" sts_role_arn: "arn:aws:iam::1234567890:role/os-os-test-role"

Konektivitas ke Confluent Kafka Cloud di VPC

Anda dapat menggunakan pipeline OpenSearch Ingestion untuk mengalirkan data dari cluster Confluent Kafka dengan konfigurasi publik. Untuk melakukannya, siapkan pipeline OpenSearch Ingestion dengan Confluent Kafka sebagai sumber, dan OpenSearch domain Layanan Amazon atau koleksi Amazon Tanpa OpenSearch Server sebagai tujuan. Pipeline memproses semua data streaming dari cluster kafka Anda dan menyerap data ke cluster tujuan.

Konfigurasi jaringan Confluent Kafka

OpenSearch Ingestion mendukung cluster Confluent Kafka yang dikonfigurasi di semua mode jaringan yang didukung di Confluent. Mode konfigurasi jaringan berikut didukung sebagai sumber di OpenSearch Ingestion.

  • AWS Pengintip VPC

  • AWS PrivateLink untuk cluster khusus

  • AWS PrivateLink untuk kluster Enterprise

  • AWS Transit Gateway

Anda dapat menggunakan Confluent managed Kafka sebagai sumber untuk menelan data dari cloud Confluent. Untuk mencapai hal ini, Anda menyiapkan pipeline tempat Anda mengonfigurasi Kafka sebagai sumber dan domain OpenSearch Layanan Amazon atau koleksi Amazon OpenSearch Tanpa Server sebagai wastafel. Ini memfasilitasi migrasi data dari Kafka ke tujuan yang ditentukan. Migrasi juga mendukung penggunaan registri confluent atau tidak ada registri sama sekali.

Untuk melakukan migrasi data, Anda memerlukan sumber daya berikut:

  • Cluster Confluent Kafka bertindak sebagai sumber, berisi data yang ingin Anda migrasi.

  • Tujuan target, seperti domain OpenSearch Layanan Amazon atau koleksi Amazon OpenSearch Tanpa Server sebagai wastafel.

  • ID VPC Amazon VPC yang memiliki akses ke VPC Confluent.

  • Cluster Kafka harus mengaktifkan otentikasi dengan kredensyal dari. AWS Secrets Manager

Persyaratan

Untuk mengatur konsumsi pada cluster Kafka Anda, berikut ini diperlukan:

  • Anda harus mengaktifkan otentikasi AWS Secrets Manager berbasis pada cluster Kafka Anda.

    • Siapkan otentikasi di cluster Kafka Anda dengan. AWS Secrets Manager Aktifkan rotasi rahasia dengan mengikuti langkah-langkah di Putar AWS Secrets Manager rahasia.

  • Anda harus menyediakan VPC CIDR untuk digunakan oleh OpenSearch layanan Ingestion.

    • Jika menggunakan AWS Management Console untuk membuat pipeline, Anda juga harus melampirkan pipeline Amazon OpenSearch Ingestion ke VPC agar dapat menggunakan Confluent Kafka sebagai sumber. Untuk melakukannya, temukan bagian Konfigurasi jaringan, pilih kotak centang Lampirkan ke VPC, dan pilih CIDR Anda atau Masukkan CIDR /24 secara manual untuk digunakan oleh Ingestion. OpenSearch CIDR yang dipilih untuk digunakan oleh OpenSearch Ingestion harus berbeda dari CIDR VPC di mana Kafka yang dikelola Confluent berjalan. Informasi lebih lanjut tentang Confluent Kafka CIDR untuk dihindari di sini. Di bawah ini adalah opsi CIDR default yang dapat digunakan oleh Layanan OpenSearch Ingestion untuk membuat konektivitas jaringan.

      • 10.99.20.0/24

      • 192.168.36.0/24

      • 172.21.56.0/24

  • Anda harus membuat peran pipeline di IAM dengan izin ke domain OpenSearch Layanan Amazon atau koleksi Amazon OpenSearch Tanpa Server dan izin untuk membaca rahasia dari. AWS Secrets Manager

    • Lampirkan kebijakan berbasis sumber daya ke Amazon OpenSearch Servicedomain atau kebijakan akses data OpenSearch Amazon Tanpa Server ke koleksi Anda. Kebijakan akses ini memungkinkan OpenSearch Ingestion untuk menulis data dari Kafka Anda ke domain OpenSearch Layanan Amazon atau koleksi Amazon Tanpa Server Anda. OpenSearch

Peran dan Izin IAM

Contoh kebijakan akses domain berikut memungkinkan peran pipeline untuk menulis data ke domain OpenSearch Layanan Amazon.

catatan

Anda perlu memperbarui resource dengan ARN Anda sendiri.

{ "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" ] } ] }

Contoh berikut memberikan izin yang diperlukan untuk mengelola antarmuka jaringan Anda:

{ "Version": "2012-10-17", "Statement": [ { "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" } } } ]

Contoh berikut memberikan izin yang diperlukan untuk membaca rahasia dari AWS Secrets Manager:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SecretsManagerReadAccess", "Effect": "Allow", "Action": ["secretsmanager:GetSecretValue"], "Resource": ["arn:aws:secretsmanager:<region>:<account-id>:secret:<secret-name>"] } ] }

Contoh berikut memberikan izin yang diperlukan untuk menulis ke domain OpenSearch Layanan Amazon:

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

Setelah melampirkan kebijakan ke peran pipeline, Anda dapat menggunakan cetak biru pipeline migrasi data Confluent Kafka untuk membuat pipeline Anda. Cetak biru ini mencakup konfigurasi default untuk memigrasi data antara Kafka dan tujuan Anda.

  • Anda dapat menentukan beberapa domain OpenSearch Layanan Amazon sebagai tujuan untuk data Anda. Kemampuan ini memungkinkan perutean bersyarat atau replikasi data yang masuk ke beberapa Layanan Amazon. OpenSearch

  • Anda dapat memigrasikan data dari cluster Confluent Kafka sumber ke koleksi VPC Amazon Tanpa Server OpenSearch . Pastikan Anda menyediakan kebijakan akses jaringan dalam konfigurasi pipeline.

  • Anda dapat menggunakan registri skema Confluent untuk mendefinisikan dan skema Confluent.

Konfigurasi pipa sampel

version: "2" kafka-pipeline: source: kafka: # Encryption is always required encryption: type: "ssl" topics: - name: "topic_4" group_id: "demoGroup" bootstrap_servers: # TODO: for public confluent kafka use public booststrap server dns - "<<bootstrap-server>>.us-west-2.aws.private.confluent.cloud:9092" authentication: sasl: plain: username: "${{aws_secrets:confluent-kafka-secret:username}}" password: "${{aws_secrets:confluent-kafka-secret:password}}" # Schema is optional schema: type: confluent registry_url: https://<<registry-url>>.us-west-2.aws.confluent.cloud api_key: "${{aws_secrets:schema-secret:schema_registry_api_key}}" api_secret: "${{aws_secrets:schema-secret:schema_registry_api_secret}}" basic_auth_credentials_source: "USER_INFO" sink: - opensearch: hosts: [ "https://<<opensearchdomain>>.us-west-2.es.amazonaws.com" ] index: "enterprise-confluent-demo" aws: sts_role_arn: "arn:aws:iam::1234567890:role/os-os-test-role" region: "<<aws-region>>" extension: aws: secrets: confluent-kafka-secret: secret_id: "enterprise-kafka-credentials" region: "<<aws-region>>" sts_role_arn: "arn:aws:iam::1234567890:role/os-os-test-role" schema-secret: secret_id: "self-managed-kafka-schema" region: "<<aws-region>>" sts_role_arn: "arn:aws:iam::1234567890:role/os-os-test-role"