Amazon Managed Streaming untuk topik Apache Kafka Kafka 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.

Amazon Managed Streaming untuk topik Apache Kafka Kafka sebagai sumber di Pipes EventBridge

Anda dapat menggunakan EventBridge Pipes untuk menerima catatan dari topik Amazon Managed Streaming for Apache Kafka (MSKAmazon). 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 penyiapan, penskalaan, dan pengelolaan cluster yang menjalankan Apache Kafka. Dengan AmazonMSK, 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 (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 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 MSK topik Amazon dan pengidentifikasi partisi, bersama dengan stempel waktu dan pesan yang disandikan 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": "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.

MSKotentikasi cluster

EventBridge memerlukan izin untuk mengakses MSK klaster Amazon, mengambil catatan, dan melakukan tugas lainnya. Amazon MSK mendukung beberapa opsi untuk mengontrol akses klien ke MSK cluster. 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 otentikasi IAM berbasis peran dinonaktifkan untuk cluster.

SASL/SCRAMotentikasi

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 mendukungSASL/PLAINotentikasi.

IAMotentikasi berbasis peran

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

Untuk memungkinkan terhubung EventBridge ke MSK cluster, 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.

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.

Untuk AmazonMSK, EventBridge bertindak sebagai klien. Anda mengonfigurasi sertifikat klien (sebagai rahasia di Secrets Manager) untuk mengautentikasi EventBridge dengan broker di MSK cluster Anda. Sertifikat klien harus ditandatangani oleh otoritas sertifikat (CA) di toko kepercayaan server. MSKCluster 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 CAs, yang EventBridge dipercaya secara default.

Untuk informasi selengkapnya tentang m TLS untuk AmazonMSK, lihat TLSOtentikasi Bersama di Panduan Pengembang Amazon Managed Streaming for Apache Kafka Kafka.

Mengkonfigurasi rahasia m TLS

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 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, 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 m TLS atauSASL/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:

  • m TLS (rahasia disediakan untuk mTLS)

  • SASL/SCRAM(rahasia disediakan untukSASL/SCRAM)

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

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

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

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 (AmazonVPC) yang terkait dengan MSK cluster Amazon Anda.

  • Untuk mengakses VPC MSK kluster Amazon Anda, EventBridge dapat menggunakan akses internet keluar untuk subnet sumber Anda. 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 Endpoints 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 MSK broker 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 MSK broker 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

VPCKonfigurasi 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 Amazon MSK

Saat Anda awalnya membuat MSK sumber 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.