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 MSK (Amazon OpenSearch ) ke dalam pipeline Ingestion Anda. Dengan AmazonMSK, 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 Tanpa MSK Server. Satu-satunya perbedaan antara kedua proses adalah langkah-langkah prasyarat yang harus Anda ambil sebelum Anda mengatur pipeline Anda.

MSKPrasyarat Amazon

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

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

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

  3. Ikuti langkah-langkah di Lampirkan kebijakan klaster ke MSK klaster 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 MSK klaster Amazon Anda dan membaca data dari topik Kafka. Pastikan Anda memperbarui resource dengan milik Anda sendiriARN.

    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 MSK klaster Amazon Anda berbeda Akun AWS dari pipeline Anda, lampirkan kebijakan berikut sebagai gantinya. Perhatikan bahwa akses lintas akun hanya dimungkinkan dengan kluster Amazon yang disediakan dan bukan kluster MSK Amazon Tanpa Server. MSK ARNUntuk itu AWS principal harus ARN untuk peran pipeline yang sama yang Anda berikan ke konfigurasi pipleine YAML 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 bootstrap URLs endpoint pribadi (single-VPC). Nilai untuk --replication-factor harus 2 atau3, berdasarkan jumlah zona yang dimiliki MSK kluster 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 bootstrap URLs endpoint pribadi Anda (tunggal-VPC).

MSKPrasyarat Amazon Tanpa Server

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

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

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

    { "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 Tanpa Server tidak mendukung akses lintas akun.

  3. Buat topik Kafka dengan mengikuti langkah-langkah di Buat topik. Pastikan itu BootstrapServerString adalah salah satu IAM bootstrap URLs Simple Authentication and Security Layer (SASL) Anda. Nilai untuk --replication-factor harus 2 atau3, berdasarkan jumlah zona yang dimiliki kluster Amazon MSK Tanpa Server 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 IAM bootstrap URLs Simple Authentication and Security Layer (SASL) Anda.

Langkah 1: Konfigurasikan peran pipeline

Setelah Anda menyiapkan MSK kluster Amazon atau 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 MSK cetak biru 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 AmazonMSK, Anda dapat menggunakan format AVRO data 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 disarankan (OCUs) untuk pipeline Amazon MSK

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 CPU penggunaan 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 maksimum OCUs per pipeline), kami sarankan Anda mengonfigurasi pipeline dengan OCUs 1-96. 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 baru OCUs ke topik dan grup konsumen yang sama, Anda dapat menskalakan throughput hampir secara linier.