Amazon Managed Streaming untuk topik Apache Kafka sebagai sumber - Amazon EventBridge

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

Amazon Managed Streaming untuk topik Apache Kafka sebagai sumber

Anda dapat menggunakan EventBridge Pipes untuk menerima catatan dari topik Amazon Managed Streaming for Apache Kafka (Amazon MSK). Anda dapat secara opsional memfilter atau menyempurnakan catatan ini sebelum mengirimnya ke salah satu tujuan yang tersedia untuk diproses. Ada pengaturan khusus untuk Amazon MSK yang dapat Anda pilih saat menyiapkan pipa. EventBridge Pipes menjaga urutan catatan dari broker pesan saat mengirim data tersebut ke tujuan.

Amazon MSK adalah layanan yang dikelola sepenuhnya yang dapat Anda gunakan untuk membangun dan menjalankan aplikasi yang menggunakan Apache Kafka untuk memproses data streaming. Amazon MSK menyederhanakan pengaturan, penskalaan, dan pengelolaan cluster yang menjalankan Apache Kafka. Dengan Amazon MSK, Anda dapat mengonfigurasi aplikasi Anda untuk beberapa Availability Zone dan untuk keamanan dengan AWS Identity and Access Management (IAM). Amazon MSK mendukung beberapa versi open-source Kafka.

Amazon MSK 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 membaca pesan secara berurutan untuk setiap partisi. Setelah EventBridge memproses setiap batch, ia melakukan offset pesan dalam batch itu. Jika target pipa mengembalikan kesalahan untuk salah satu pesan dalam batch, EventBridge coba ulang seluruh kumpulan pesan hingga pemrosesan berhasil atau pesan kedaluwarsa.

EventBridge mengirim kumpulan pesan dalam acara ketika memanggil target. Muatan peristiwa berisi array pesan. Setiap item array berisi detail dari topik Amazon MSK dan pengidentifikasi partisi, bersama-sama dengan stempel waktu dan pesan berkode 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": "aws:kafka", "eventSourceArn": "arn:aws:kafka:sa-east-1:123456789012:cluster/vpc-2priv-2pub/751d2973-a626-431c-9d4e-d7975eb44dd7-2", "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 ] } ] } ]

Posisi awal polling dan streaming

Ketahuilah bahwa polling sumber aliran selama pembuatan dan pembaruan pipa pada akhirnya konsisten.

  • Selama pembuatan pipa, mungkin perlu beberapa menit untuk memulai acara pemungutan suara dari aliran.

  • Selama pembaruan pipa ke konfigurasi pemungutan suara sumber, mungkin diperlukan beberapa menit untuk menghentikan dan memulai kembali acara pemungutan suara dari aliran.

Ini berarti bahwa jika Anda menentukan LATEST sebagai posisi awal untuk aliran, pipa dapat melewatkan peristiwa yang dikirim selama pembuatan atau pembaruan pipa. Untuk memastikan tidak ada peristiwa yang terlewatkan, tentukan posisi awal aliran sebagaiTRIM_HORIZON.

Otentikasi kluster MSK

EventBridge memerlukan izin untuk mengakses kluster MSK Amazon, mengambil catatan, dan melakukan tugas lainnya. Amazon MSK mendukung beberapa opsi untuk mengontrol akses klien ke cluster MSK. Untuk informasi selengkapnya tentang metode otentikasi yang digunakan saat, lihatBagaimana EventBridge memilih broker bootstrap.

Akses tidak diautentikasi

Kami merekomendasikan hanya menggunakan akses yang tidak diautentikasi untuk pengembangan. Akses yang tidak diautentikasi hanya akan berfungsi jika autentikasi berbasis peran IAM dinonaktifkan untuk cluster.

Otentikasi SASL/SCRAM

Amazon MSK mendukung otentikasi Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism (SASL/SCRAM) otentikasi dengan enkripsi Transport Layer Security (TLS). Untuk terhubung EventBridge ke klaster, Anda menyimpan kredensyal otentikasi (kredensyal masuk) secara rahasia. AWS Secrets Manager

Untuk informasi selengkapnya tentang menggunakan Secrets Manager, lihat Autentikasi nama pengguna dan kata sandi dengan AWS Secrets Manager di Panduan Pengembang Amazon Managed Streaming for Apache Kafka.

Amazon MSK tidak mendukung otentikasi SASL/PLAIN.

Autentikasi berbasis peran IAM

Anda dapat menggunakan IAM untuk mengautentikasi identitas klien yang terhubung ke cluster MSK. Jika autentikasi IAM aktif di kluster MSK Anda, dan Anda tidak memberikan rahasia untuk otentikasi, EventBridge secara otomatis default menggunakan otentikasi IAM. Untuk membuat dan menerapkan pengguna IAM atau kebijakan berbasis peran, gunakan konsol IAM atau API. Untuk informasi selengkapnya, lihat Kontrol akses IAM di Panduan Pengembang Amazon Managed Streaming for Apache Kafka Kafka.

Untuk memungkinkan terhubung EventBridge ke kluster MSK, membaca catatan, dan melakukan tindakan lain yang diperlukan, tambahkan izin berikut ke peran eksekusi pipa Anda.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:DescribeGroup", "kafka-cluster:AlterGroup", "kafka-cluster:DescribeTopic", "kafka-cluster:ReadData", "kafka-cluster:DescribeClusterDynamicConfiguration" ], "Resource": [ "arn:aws:kafka:region:account-id:cluster/cluster-name/cluster-uuid", "arn:aws:kafka:region:account-id:topic/cluster-name/cluster-uuid/topic-name", "arn:aws:kafka:region:account-id:group/cluster-name/cluster-uuid/consumer-group-id" ] } ] }

Anda dapat membuat cakupan izin ini ke klaster, topik, dan grup tertentu. Untuk informasi selengkapnya, lihat tindakan Amazon MSK Kafka di Panduan Pengembang Amazon Managed Streaming for Apache Kafka.

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.

Untuk Amazon MSK, EventBridge bertindak sebagai klien. Anda mengonfigurasi sertifikat klien (sebagai rahasia di Secrets Manager) untuk mengautentikasi EventBridge dengan broker di klaster MSK Anda. Sertifikat klien harus ditandatangani oleh otoritas sertifikat (CA) di toko kepercayaan server. Kluster MSK mengirimkan sertifikat server untuk EventBridge mengotentikasi broker dengan. EventBridge Sertifikat server harus ditandatangani oleh CA yang ada di toko AWS kepercayaan.

Amazon MSK tidak mendukung sertifikat server yang ditandatangani sendiri, karena semua broker di Amazon MSK menggunakan sertifikat publik yang ditandatangani oleh Amazon Trust Services CA, yang EventBridge dipercaya secara default.

Untuk informasi selengkapnya tentang MTL untuk Amazon MSK, lihat Mutual TLS Authentication di Amazon Managed Streaming for Apache Kafka Developer Guide.

Mengkonfigurasi rahasia mTLS

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 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, Anda menyertakan 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-----" }

Bagaimana EventBridge memilih broker bootstrap

EventBridge memilih broker bootstrap berdasarkan metode otentikasi yang tersedia di cluster Anda, dan apakah Anda memberikan rahasia untuk otentikasi. Jika Anda memberikan rahasia untuk mTLS atau SASL/SCRAM, EventBridge secara otomatis memilih metode otentikasi itu. Jika Anda tidak memberikan rahasia, EventBridge pilih metode otentikasi terkuat yang aktif di cluster Anda. Berikut ini adalah urutan prioritas di mana EventBridge memilih broker, dari otentikasi terkuat hingga terlemah:

  • mTL (rahasia disediakan untuk mTL)

  • SASL/SCRAM (rahasia disediakan untuk SASL/SCRAM)

  • SASL IAM (tidak ada rahasia yang disediakan, dan otentikasi IAM aktif)

  • TLS yang tidak diautentikasi (tidak ada rahasia yang disediakan, dan otentikasi IAM tidak aktif)

  • Plaintext (tidak ada rahasia yang disediakan, dan otentikasi IAM dan TLS yang tidak diautentikasi tidak aktif)

catatan

Jika tidak EventBridge dapat terhubung ke jenis broker yang paling aman, ia tidak mencoba untuk terhubung ke jenis broker yang berbeda (lebih lemah). Jika Anda EventBridge ingin memilih jenis broker yang lebih lemah, nonaktifkan semua metode otentikasi yang lebih kuat di cluster Anda.

Konfigurasi jaringan

EventBridge harus memiliki akses ke sumber daya Amazon Virtual Private Cloud (Amazon VPC) yang terkait dengan kluster MSK Amazon Anda.

  • Untuk mengakses VPC kluster MSK Amazon EventBridge Anda, dapat menggunakan 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.

  • 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.

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

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

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

    Port broker meliputi:

    • 9092 untuk plaintext

    • 9094 untuk TLS

    • 9096 untuk SASL

    • 9098 untuk IAM

catatan

Konfigurasi VPC Amazon Anda dapat ditemukan melalui Amazon MSK API. Anda tidak perlu mengkonfigurasinya selama pengaturan.

ID grup konsumen yang dapat disesuaikan

Saat mengatur Apache Kafka sebagai sumber, Anda dapat menentukan ID grup konsumen. ID grup konsumen ini adalah pengenal yang ada untuk grup konsumen Apache Kafka yang Anda inginkan untuk bergabung dengan pipa Anda. Anda dapat menggunakan fitur ini untuk memigrasikan pengaturan pemrosesan catatan Apache Kafka yang sedang berlangsung dari konsumen lain ke. EventBridge

Jika Anda menentukan ID grup konsumen dan ada poller aktif lainnya dalam grup konsumen tersebut, Apache Kafka mendistribusikan pesan ke semua konsumen. Dengan kata lain, EventBridge tidak menerima semua pesan untuk topik Apache Kafka. Jika Anda EventBridge ingin menangani semua pesan dalam topik, matikan poller lain di grup konsumen tersebut.

Selain itu, jika Anda menentukan ID grup konsumen, dan Apache Kafka menemukan grup konsumen yang sudah ada dengan ID yang sama, EventBridge mengabaikan StartingPosition parameter untuk pipa Anda. Sebaliknya, EventBridge mulailah memproses catatan sesuai dengan offset yang dilakukan dari kelompok konsumen. Jika Anda menentukan ID grup konsumen, dan Apache Kafka tidak dapat menemukan grup konsumen yang ada, maka EventBridge konfigurasikan sumber Anda dengan yang ditentukan. StartingPosition

ID grup konsumen yang Anda tentukan harus unik di antara semua sumber acara Apache Kafka Anda. Setelah membuat pipa dengan ID grup konsumen yang ditentukan, Anda tidak dapat memperbarui nilai ini.

Penskalaan otomatis dari sumber MSK Amazon

Saat Anda awalnya membuat sumber MSK Amazon, EventBridge alokasikan satu konsumen untuk memproses semua partisi dalam topik Apache 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 pipa dengan mengurangi jumlah pesan yang dapat diambil dan dikirim konsumen ke pipa.