Apache Kafka mengalir sebagai sumber - Amazon EventBridge

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

Apache Kafka mengalir sebagai sumber

Apache Kafka adalah platform streaming acara open-source yang mendukung beban kerja seperti saluran data dan analitik streaming. Anda dapat menggunakan Amazon Managed Streaming for Apache Kafka (Amazon MSK), atau cluster Apache Kafka yang dikelola sendiri. Dalam AWS terminologi, cluster yang dikelola sendiri mengacu pada cluster Apache Kafka yang tidak di-host oleh. AWS Ini termasuk kedua cluster yang Anda kelola sendiri, serta yang dihosting oleh penyedia pihak ketiga, seperti Confluent Cloud, CloudKarafka, atau Redpanda.

Untuk informasi selengkapnya tentang opsi AWS hosting lain untuk klaster Anda, lihat Praktik Terbaik untuk Menjalankan Apache Kafka AWS di Blog AWS Big Data.

Apache Kafka sebagai sumber beroperasi mirip dengan menggunakan Amazon Simple Queue Service (Amazon SQS) atau Amazon Kinesis. EventBridgepolling internal untuk pesan baru dari sumber dan kemudian secara sinkron memanggil target. EventBridge membaca pesan dalam batch dan menyediakannya ke fungsi Anda sebagai muatan acara. Ukuran batch maksimum dapat dikonfigurasi. (Default adalah 100 pesan.)

Untuk sumber berbasis Apache Kafka, EventBridge mendukung parameter kontrol pemrosesan, seperti jendela batching dan ukuran batch.

EventBridge mengirimkan kumpulan pesan dalam parameter acara saat memanggil pipa Anda. Muatan peristiwa berisi array pesan. Setiap item array berisi rincian topik Apache Kafka dan pengidentifikasi partisi Apache Kafka, bersama dengan stempel waktu dan pesan yang dikodekan base64.

Contoh peristiwa

Contoh peristiwa berikut menunjukkan informasi yang diterima oleh pipa. Anda dapat menggunakan acara ini untuk membuat dan memfilter pola acara Anda, atau untuk menentukan transformasi input. Tidak semua bidang dapat disaring. Untuk informasi selengkapnya tentang bidang mana yang dapat Anda filter, lihatPenyaringan EventBridge Pipa Amazon.

[ { "eventSource": "SelfManagedKafka", "bootstrapServers": "b-2.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092,b-1.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092", "eventSourceKey": "mytopic-0", "topic": "mytopic", "partition": 0, "offset": 15, "timestamp": 1545084650987, "timestampType": "CREATE_TIME", "key":"abcDEFghiJKLmnoPQRstuVWXyz1234==", "value":"SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==", "headers": [ { "headerKey": [ 104, 101, 97, 100, 101, 114, 86, 97, 108, 117, 101 ] } ] } ]

Otentikasi cluster Apache Kafka

EventBridge Pipes mendukung beberapa metode untuk mengotentikasi dengan cluster Apache Kafka yang dikelola sendiri. Pastikan Anda mengonfigurasi cluster Apache Kafka untuk menggunakan salah satu metode otentikasi yang didukung ini. Untuk informasi lebih lanjut tentang keamanan Apache Kafka, lihat bagian Keamanan dari dokumentasi Apache Kafka.

Akses VPC

Jika Anda menggunakan lingkungan Apache Kafka yang dikelola sendiri di mana hanya pengguna Apache Kafka dalam VPC Anda yang memiliki akses ke broker Apache Kafka Anda, Anda harus mengonfigurasi Amazon Virtual Private Cloud (Amazon VPC) di sumber Apache Kafka.

Otentikasi SASL/SCRAM

EventBridge Pipes mendukung otentikasi Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism (SASL/SCRAM) otentikasi dengan enkripsi Transport Layer Security (TLS). EventBridge Pipes mengirimkan kredensyal terenkripsi untuk mengautentikasi dengan cluster. Untuk informasi selengkapnya tentang autentikasi SASL/SCRAM, lihat RFC 5802.

EventBridge Pipa mendukung otentikasi SASL/PLAIN dengan enkripsi TLS. Dengan otentikasi SASL/PLAIN, EventBridge Pipes mengirimkan kredensyal sebagai teks yang jelas (tidak terenkripsi) ke server.

Untuk autentikasi SASL, Anda menyimpan kredensyal masuk sebagai rahasia. AWS Secrets Manager

Otentikasi TLS timbal balik

Mutual TLS (mTLS) menyediakan otentikasi dua arah antara klien dan server. Klien mengirimkan sertifikat ke server untuk server untuk memverifikasi klien, dan server mengirimkan sertifikat ke klien untuk klien untuk memverifikasi server.

Dalam Apache Kafka yang dikelola sendiri, EventBridge Pipes bertindak sebagai klien. Anda mengonfigurasi sertifikat klien (sebagai rahasia di Secrets Manager) untuk mengautentikasi EventBridge Pipes dengan broker Apache Kafka Anda. Sertifikat klien harus ditandatangani oleh otoritas sertifikat (CA) di toko kepercayaan server.

Cluster Apache Kafka mengirimkan sertifikat server ke EventBridge Pipes untuk mengautentikasi broker Apache Kafka dengan Pipes. EventBridge Sertifikat server dapat berupa sertifikat CA publik atau sertifikat CA/Self-signed private. Sertifikat CA publik harus ditandatangani oleh CA yang ada di toko kepercayaan EventBridge Pipes. Untuk sertifikat CA/Self-signed privat, Anda mengonfigurasi sertifikat CA root server (sebagai rahasia di Secrets Manager). EventBridge Pipes menggunakan sertifikat root untuk memverifikasi broker Apache Kafka.

Untuk informasi selengkapnya tentang mTL, lihat Memperkenalkan otentikasi TLS timbal balik untuk Amazon MSK sebagai sumber.

Mengkonfigurasi rahasia sertifikat klien

Rahasia CLIENT_CERTIFICATE_TLS_AUTH memerlukan bidang sertifikat dan bidang kunci pribadi. Untuk kunci pribadi terenkripsi, rahasianya memerlukan kata sandi kunci pribadi. Baik sertifikat dan kunci pribadi harus dalam format PEM.

catatan

EventBridge Pipa mendukung algoritma enkripsi kunci pribadi PBES1 (tetapi bukan PBES2).

Bidang sertifikat harus berisi daftar sertifikat, dimulai dengan sertifikat klien, diikuti oleh sertifikat perantara, dan diakhiri dengan sertifikat root. Setiap sertifikat harus dimulai pada baris baru dengan struktur berikut:

-----BEGIN CERTIFICATE----- <certificate contents> -----END CERTIFICATE-----

Secrets Manager mendukung rahasia hingga 65.536 byte, yang merupakan ruang yang cukup untuk rantai sertifikat yang panjang.

Kunci pribadi harus dalam format PKCS #8, dengan struktur berikut:

-----BEGIN PRIVATE KEY----- <private key contents> -----END PRIVATE KEY-----

Untuk kunci pribadi terenkripsi, gunakan struktur berikut:

-----BEGIN ENCRYPTED PRIVATE KEY----- <private key contents> -----END ENCRYPTED PRIVATE KEY-----

Contoh berikut menunjukkan isi rahasia untuk otentikasi mTLS menggunakan kunci pribadi terenkripsi. Untuk kunci pribadi terenkripsi, sertakan kata sandi kunci pribadi dalam rahasia.

{ "privateKeyPassword": "testpassword", "certificate": "-----BEGIN CERTIFICATE----- MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw ... j0Lh4/+1HfgyE2KlmII36dg4IMzNjAFEBZiCRoPimO40s1cRqtFHXoal0QQbIlxk cmUuiAii9R0= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb ... rQoiowbbk5wXCheYSANQIfTZ6weQTgiCHCCbuuMKNVS95FkXm0vqVD/YpXKwA/no c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg== -----END CERTIFICATE-----", "privateKey": "-----BEGIN ENCRYPTED PRIVATE KEY----- MIIFKzBVBgkqhkiG9w0BBQ0wSDAnBgkqhkiG9w0BBQwwGgQUiAFcK5hT/X7Kjmgp ... QrSekqF+kWzmB6nAfSzgO9IaoAaytLvNgGTckWeUkWn/V0Ck+LdGUXzAC4RxZnoQ zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA== -----END ENCRYPTED PRIVATE KEY-----" }

Mengkonfigurasi rahasia sertifikat CA root server

Anda membuat rahasia ini jika broker Apache Kafka Anda menggunakan enkripsi TLS dengan sertifikat yang ditandatangani oleh CA pribadi. Anda dapat menggunakan enkripsi TLS untuk otentikasi VPC, SASL/SCRAM, SASL/PLAIN, atau mTLS.

Rahasia sertifikat CA root server memerlukan bidang yang berisi sertifikat root CA broker Apache Kafka dalam format PEM. Contoh berikut menunjukkan struktur rahasia.

{ "certificate": "-----BEGIN CERTIFICATE----- MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dG... -----END CERTIFICATE-----"

Konfigurasi jaringan

Jika Anda menggunakan lingkungan Apache Kafka yang dikelola sendiri yang menggunakan konektivitas VPC pribadi, EventBridge harus memiliki akses ke sumber daya Amazon Virtual Private Cloud (Amazon VPC) yang terkait dengan broker Apache Kafka Anda. Untuk mengakses VPC cluster Apache Kafka Anda, EventBridge memerlukan akses internet keluar untuk subnet sumber Anda. Untuk subnet publik ini harus menjadi gateway NAT terkelola. Untuk subnet pribadi itu bisa menjadi gateway NAT, atau NAT Anda sendiri. Pastikan NAT memiliki alamat IP publik dan dapat terhubung ke internet.

Konfigurasikan grup keamanan Amazon VPC Anda dengan aturan berikut (minimal):

  • Aturan masuk - Izinkan semua lalu lintas di port broker Apache Kafka (9092 untuk teks biasa, 9094 untuk TLS, 9096 untuk SASL, 9098 untuk IAM) untuk grup keamanan yang ditentukan untuk sumber Anda.

  • Aturan keluar - Izinkan semua lalu lintas di port 443 untuk semua tujuan. Izinkan semua lalu lintas di port broker Apache Kafka (9092 untuk plaintext, 9094 untuk TLS, 9096 untuk SASL, 9098 untuk IAM) untuk grup keamanan yang ditentukan untuk sumber Anda.

Penskalaan otomatis konsumen dengan sumber Apache Kafka

Saat Anda awalnya membuat sumber Apache Kafka, EventBridge alokasikan satu konsumen untuk memproses semua partisi dalam topik Kafka. Setiap konsumen memiliki beberapa prosesor yang berjalan secara paralel untuk menangani peningkatan beban kerja. Selain itu, EventBridge secara otomatis meningkatkan atau menurunkan jumlah konsumen, berdasarkan beban kerja. Untuk mempertahankan pemesanan pesan di setiap partisi, jumlah maksimum konsumen adalah satu konsumen per partisi dalam topik.

Dalam interval satu menit, EventBridge mengevaluasi lag offset konsumen dari semua partisi dalam topik. Jika lag terlalu tinggi, partisi menerima pesan lebih cepat daripada yang EventBridge dapat memprosesnya. Jika perlu, EventBridge menambah atau menghapus konsumen dari topik. Proses penskalaan penambahan atau penghapusan konsumen terjadi dalam waktu tiga menit setelah evaluasi.

Jika target Anda kelebihan beban, EventBridge kurangi jumlah konsumen. Tindakan ini mengurangi beban kerja pada fungsi dengan mengurangi jumlah pesan yang dapat konsumen ambil dan kirim ke fungsi.