Apache Kafka mengalir sebagai sumber di Pipes EventBridge - 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 di Pipes EventBridge

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 (MSKAmazon), 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 (AmazonSQS) 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, lihatPemfilteran acara di Amazon Pipes EventBridge .

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

Autentikasi kluster Apache Kafka

EventBridge Pipes mendukung beberapa metode untuk mengautentikasi 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.

VPCakses

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

SASL/SCRAMotentikasi

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 tentangSASL/SCRAMotentikasi, lihat RFC5802.

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

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

TLSOtentikasi 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 mengotentikasi 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 mTLS, lihat Memperkenalkan TLS autentikasi timbal balik untuk Amazon MSK sebagai sumber.

Mengkonfigurasi rahasia sertifikat klien

AUTHRahasia CLIENT CERTIFICATE TLS _ _ memerlukan bidang sertifikat dan bidang kunci pribadi. Untuk kunci pribadi terenkripsi, rahasianya memerlukan kata sandi kunci pribadi. Baik sertifikat dan kunci pribadi harus dalam PEM format.

catatan

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

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 m TLS otentikasi 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 TLS enkripsi dengan sertifikat yang ditandatangani oleh CA pribadi. Anda dapat menggunakan TLS enkripsi untukVPC,SASL/SCRAM,SASL/PLAIN, atau m TLS otentikasi.

Rahasia sertifikat CA root server memerlukan bidang yang berisi sertifikat root CA broker Apache Kafka dalam PEM format. 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 VPC konektivitas pribadi, EventBridge harus memiliki akses ke sumber daya Amazon Virtual Private Cloud VPC (Amazon) yang terkait dengan broker Apache Kafka Anda.

  • Untuk mengakses cluster Apache Kafka Anda, EventBridge dapat menggunakan akses internet outbound untuk subnet sumber Anda. VPC Untuk subnet pribadi itu bisa menjadi NAT gateway, atau milik Anda sendiriNAT. Pastikan NAT memiliki alamat IP publik dan dapat terhubung ke internet. Untuk subnet publik Anda harus menggunakan VPC Endpoint (dijelaskan di bawah).

  • EventBridge Pipes juga mendukung pengiriman acara melalui AWS PrivateLink, memungkinkan Anda untuk mengirim acara dari sumber acara yang terletak di Amazon Virtual Private Cloud (Amazon VPC) ke target Pipes tanpa melintasi internet publik. Anda dapat menggunakan Pipes untuk melakukan polling from Amazon Managed Streaming for Apache Kafka (Amazon MSK), Apache Kafka yang dikelola sendiri, dan Amazon MQ sumber yang berada di subnet pribadi tanpa perlu menggunakan gateway internet, mengonfigurasi aturan firewall, atau mengatur server proxy. Anda juga dapat menggunakan VPC Endpoint untuk mendukung pengiriman dari cluster Kafka di subnet publik.

    Untuk menyiapkan VPC titik akhir, lihat Membuat VPC titik akhir di AWS PrivateLink Panduan Pengguna. Untuk nama layanan, pilihcom.amazonaws.region.pipes-data.

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

  • Aturan masuk - Izinkan semua lalu lintas di port broker Apache Kafka 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 untuk grup keamanan yang ditentukan untuk sumber Anda.

    Port broker meliputi:

    • 9092 untuk plaintext

    • 9094 untuk TLS

    • 9096 untuk SASL

    • 9098 untuk IAM

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.