Menggunakan pipa OpenSearch Ingestion dengan Amazon Managed Streaming for Apache 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 Amazon Managed Streaming for Apache Kafka

Anda dapat menggunakan plugin Kafka untuk menyerap data dari Amazon Managed Streaming for Apache Kafka (Amazon OpenSearch MSK) ke dalam pipeline Ingestion Anda. Dengan Amazon MSK, Anda dapat membangun dan menjalankan aplikasi yang menggunakan Apache Kafka untuk memproses data streaming. OpenSearch Penggunaan konsumsi AWS PrivateLink untuk terhubung ke Amazon MSK. Anda dapat menelan data dari kluster Amazon MSK dan Amazon MSK Tanpa Server. Satu-satunya perbedaan antara kedua proses adalah langkah-langkah prasyarat yang harus Anda ambil sebelum Anda mengatur pipa Anda.

Prasyarat MSK Amazon

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

  1. Buat kluster yang disediakan MSK Amazon dengan mengikuti langkah-langkah dalam Membuat klaster di Panduan Pengembang Amazon Managed Streaming for Apache Kafka. Untuk jenis Broker, pilih opsi apa pun kecuali untuk t3 jenis, karena ini tidak didukung oleh OpenSearch Ingestion.

  2. Setelah cluster memiliki status Aktif, ikuti langkah-langkah di Aktifkan konektivitas multi-VPC.

  3. Ikuti langkah-langkah di Lampirkan kebijakan klaster ke klaster MSK untuk melampirkan salah satu kebijakan berikut, tergantung pada apakah klaster dan pipeline Anda berada dalam kondisi yang sama Akun AWS. Kebijakan ini memungkinkan OpenSearch Ingestion untuk membuat AWS PrivateLink sambungan ke klaster MSK Amazon Anda dan membaca data dari topik Kafka. Pastikan Anda memperbarui resource dengan ARN Anda sendiri.

    Kebijakan berikut berlaku jika klaster dan pipeline Anda berada dalam kondisi yang sama Akun AWS:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "Service": "osis-pipelines.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:GetBootstrapBrokers", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" } ] }

    Jika klaster MSK Amazon Anda berbeda Akun AWS dari pipeline Anda, lampirkan kebijakan berikut sebagai gantinya. Perhatikan bahwa akses lintas akun hanya dimungkinkan dengan kluster MSK Amazon yang disediakan dan bukan kluster Tanpa Server MSK Amazon. ARN untuk ARN AWS principal harus ARN untuk peran pipeline yang sama yang Anda berikan ke konfigurasi YAMM pipleine Anda:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{msk-account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "Service": "osis-pipelines.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:GetBootstrapBrokers", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{msk-account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{pipeline-account-id}:role/pipeline-role" }, "Action": [ "kafka-cluster:*", "kafka:*" ], "Resource": [ "arn:aws:kafka:us-east-1:{msk-account-id}:cluster/cluster-name/cluster-id", "arn:aws:kafka:us-east-1:{msk-account-id}:topic/cluster-name/cluster-id/*", "arn:aws:kafka:us-east-1:{msk-account-id}:group/cluster-name/*" ] } ] }
  4. Buat topik Kafka dengan mengikuti langkah-langkah di Buat topik. Pastikan itu BootstrapServerString adalah salah satu URL bootstrap titik akhir pribadi (Single-vPC). Nilai untuk --replication-factor harus 2 atau3, berdasarkan jumlah zona yang dimiliki kluster MSK Amazon Anda. Nilai untuk setidaknya --partitions harus10.

  5. Menghasilkan dan mengkonsumsi data dengan mengikuti langkah-langkah dalam Menghasilkan dan mengkonsumsi data. Sekali lagi, pastikan itu BootstrapServerString adalah salah satu URL bootstrap titik akhir pribadi (Single-vPC) Anda.

Amazon MSK Prasyarat Tanpa Server

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

  1. Buat kluster Amazon MSK Tanpa Server dengan mengikuti langkah-langkah di Buat klaster Tanpa Server MSK di Panduan Pengembang Amazon Managed Streaming for Apache Kafka.

  2. Setelah klaster memiliki status Aktif, ikuti langkah-langkah di Lampirkan kebijakan klaster ke klaster MSK untuk melampirkan kebijakan berikut. Pastikan Anda memperbarui resource dengan ARN Anda sendiri.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "Service": "osis-pipelines.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:GetBootstrapBrokers", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" } ] }

    Kebijakan ini memungkinkan OpenSearch Ingestion untuk membuat AWS PrivateLink sambungan ke klaster Amazon MSK Tanpa Server dan membaca data dari topik Kafka. Kebijakan ini berlaku jika klaster dan pipeline Anda berada dalam kondisi yang sama Akun AWS, yang harus benar karena Amazon MSK Serverless tidak mendukung akses lintas akun.

  3. Buat topik Kafka dengan mengikuti langkah-langkah di Buat topik. Pastikan itu BootstrapServerString adalah salah satu URL bootstrap IAM Authentication and Security Layer (SASL) Sederhana Anda. Nilai untuk --replication-factor harus 2 atau3, berdasarkan jumlah zona yang dimiliki kluster Amazon MSK Serverless Anda. Nilai untuk setidaknya --partitions harus10.

  4. Menghasilkan dan mengkonsumsi data dengan mengikuti langkah-langkah dalam Menghasilkan dan mengkonsumsi data. Sekali lagi, pastikan itu BootstrapServerString adalah salah satu URL bootstrap IAM Authentication and Security Layer (SASL) Anda.

Langkah 1: Konfigurasikan peran pipeline

Setelah Anda menyiapkan MSK Amazon atau klaster tanpa server, tambahkan izin Kafka berikut dalam peran pipeline yang ingin Anda gunakan dalam konfigurasi pipeline:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:AlterCluster", "kafka-cluster:DescribeCluster", "kafka:DescribeClusterV2", "kafka:GetBootstrapBrokers" ], "Resource": [ "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:*Topic*", "kafka-cluster:ReadData" ], "Resource": [ "arn:aws:kafka:us-east-1:{account-id}:topic/cluster-name/cluster-id/topic-name" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:AlterGroup", "kafka-cluster:DescribeGroup" ], "Resource": [ "arn:aws:kafka:us-east-1:{account-id}:group/cluster-name/*" ] } ] }

Langkah 2: Buat pipa

Anda kemudian dapat mengonfigurasi pipeline OpenSearch Ingestion seperti berikut ini, yang menentukan Kafka sebagai sumbernya:

version: "2" log-pipeline: source: kafka: acknowledgements: true topics: - name: "topic-name" group_id: "group-id" aws: msk: arn: "arn:aws:kafka:{region}:{account-id}:cluster/cluster-name/cluster-id" region: "us-west-2" sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" processor: - grok: match: message: - "%{COMMONAPACHELOG}" - date: destination: "@timestamp" from_time_received: true sink: - opensearch: hosts: ["https://search-domain-endpoint.us-east-1.es.amazonaws.com"] index: "index_name" aws_sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" aws_region: "us-east-1" aws_sigv4: true

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

Langkah 3: (Opsional) Gunakan Registri AWS Glue Skema

Saat Anda menggunakan OpenSearch Ingestion dengan Amazon MSK, Anda dapat menggunakan format data AVRO untuk skema yang dihosting di Registri Skema. AWS Glue Dengan AWS Glue Schema Registry, Anda dapat menemukan, mengontrol, dan mengembangkan skema aliran data secara terpusat.

Untuk menggunakan opsi ini, aktifkan skema type dalam konfigurasi pipeline Anda:

schema: type: "aws_glue"

Anda juga harus AWS Glue memberikan izin akses baca dalam peran pipeline Anda. Anda dapat menggunakan kebijakan AWS terkelola yang disebut AWSGlueSchemaRegistryReadonlyAccess. Selain itu, registri Anda harus sama Akun AWS dan Region sebagai pipeline OpenSearch Ingestion Anda.

Langkah 4: (Opsional) Konfigurasikan unit komputasi yang direkomendasikan (OCU) untuk pipeline MSK Amazon

Setiap unit komputasi memiliki satu konsumen per topik. Pialang menyeimbangkan partisi di antara konsumen ini untuk topik tertentu. Namun, ketika jumlah partisi lebih besar dari jumlah konsumen, Amazon MSK menampung beberapa partisi pada setiap konsumen. OpenSearch Ingestion memiliki penskalaan otomatis bawaan untuk meningkatkan atau menurunkan berdasarkan penggunaan CPU atau jumlah catatan yang tertunda dalam pipeline.

Untuk kinerja optimal, distribusikan partisi Anda di banyak unit komputasi untuk pemrosesan paralel. Jika topik memiliki sejumlah besar partisi (misalnya, lebih dari 96, yang merupakan OCU maksimum per pipeline), kami sarankan Anda mengonfigurasi pipeline dengan 1-96 OCU. Ini karena secara otomatis akan menskalakan sesuai kebutuhan. Jika suatu topik memiliki jumlah partisi yang rendah (misalnya, kurang dari 96), pertahankan unit komputasi maksimum sama dengan jumlah partisi.

Jika pipeline memiliki lebih dari satu topik, pilih topik dengan jumlah partisi tertinggi sebagai referensi untuk mengonfigurasi unit komputasi maksimum. Dengan menambahkan pipeline lain dengan kumpulan OCU baru ke topik dan grup konsumen yang sama, Anda dapat menskalakan throughput hampir secara linier.