Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memproses pesan Apache Kafka yang dikelola sendiri dengan Lambda
Topik
Menambahkan klaster Kafka sebagai sumber peristiwa
Untuk membuat pemetaan sumber peristiwa, tambahkan klaster Kafka Anda sebagai pemicu fungsi Lambda menggunakan konsol Lambda, AWS SDK
Bagian ini menjelaskan cara membuat pemetaan sumber peristiwa menggunakan konsol Lambda dan AWS CLI.
Prasyarat
-
Klaster Apache Kafka yang dikelola sendiri. Lambda mendukung Apache Kafka versi 0.10.1.0 dan yang lebih baru.
-
Peran eksekusi dengan izin untuk mengakses AWS sumber daya yang digunakan cluster Kafka yang dikelola sendiri oleh Anda.
ID grup konsumen yang dapat disesuaikan
Saat mengatur Kafka sebagai sumber acara, Anda dapat menentukan ID grup konsumen. ID grup konsumen ini adalah pengenal yang ada untuk grup konsumen Kafka yang Anda inginkan agar fungsi Lambda Anda bergabung. Anda dapat menggunakan fitur ini untuk memigrasikan pengaturan pemrosesan catatan Kafka yang sedang berlangsung dengan mulus dari konsumen lain ke Lambda.
Jika Anda menentukan ID grup konsumen dan ada poller aktif lainnya dalam grup konsumen tersebut, Kafka mendistribusikan pesan ke semua konsumen. Dengan kata lain, Lambda tidak menerima semua pesan untuk topik Kafka. Jika Anda ingin Lambda menangani semua pesan dalam topik, matikan poller lain di grup konsumen tersebut.
Selain itu, jika Anda menentukan ID grup konsumen, dan Kafka menemukan grup konsumen yang sudah ada yang valid dengan ID yang sama, Lambda mengabaikan parameter untuk StartingPosition
pemetaan sumber peristiwa Anda. Sebaliknya, Lambda mulai memproses catatan sesuai dengan offset yang dilakukan dari kelompok konsumen. Jika Anda menentukan ID grup konsumen, dan Kafka tidak dapat menemukan grup konsumen yang ada, maka Lambda mengonfigurasi sumber acara Anda dengan yang ditentukan. StartingPosition
ID grup konsumen yang Anda tentukan harus unik di antara semua sumber acara Kafka Anda. Setelah membuat pemetaan sumber acara Kafka dengan ID grup konsumen yang ditentukan, Anda tidak dapat memperbarui nilai ini.
Menambahkan klaster Kafka yang dikelola sendiri (konsol)
Ikuti langkah-langkah untuk menambahkan klaster Apache Kafka yang dikelola sendiri dan topik Kafka sebagai pemicu untuk fungsi Lambda Anda.
Untuk menambahkan pemicu Apache Kafka untuk fungsi Lambda Anda (konsol)
-
Buka halaman Fungsi
di konsol Lambda. -
Pilih nama fungsi Lambda Anda.
-
Di bagian Gambaran umum fungsi, pilih Tambah pemicu.
-
Pada Konfigurasi pemicu, lakukan hal berikut:
-
Pilih jenis pemicu Apache Kafka.
-
Untuk Server bootstrap, masukkan alamat pasangan host dan port broker Kafka di klaster Anda, lalu pilih Tambahkan. Ulangi untuk setiap broker Kafka di klaster.
-
Untuk Nama topik, masukkan nama topik Kafka yang digunakan untuk menyimpan catatan dalam klaster.
-
(Opsional) Untuk Ukuran batch, masukkan jumlah maksimum catatan yang akan diterima dalam satu batch.
-
Untuk jendela Batch, masukkan jumlah maksimum detik yang dihabiskan Lambda untuk mengumpulkan catatan sebelum menjalankan fungsi.
-
(Opsional) Untuk ID grup Konsumen, masukkan ID grup konsumen Kafka untuk bergabung.
-
(Opsional) Untuk posisi Mulai, pilih Terbaru untuk mulai membaca aliran dari catatan terbaru, Pangkas cakrawala untuk memulai pada catatan paling awal yang tersedia, atau Pada stempel waktu untuk menentukan stempel waktu untuk mulai membaca.
-
(Opsional) Untuk VPC, pilih Amazon VPC untuk cluster Kafka Anda. Kemudian, pilih subnet VPC dan grup keamanan VPC.
Pengaturan ini diperlukan jika hanya pengguna dalam VPC Anda yang mengakses broker Anda.
-
(Opsional) Untuk Otentikasi, pilih Tambah, lalu lakukan hal berikut:
-
Pilih protokol akses atau otentikasi broker Kafka di cluster Anda.
-
Jika broker Kafka Anda menggunakan otentikasi SASL/PLAIN, pilih BASIC_AUTH.
-
Jika broker Anda menggunakan otentikasi SASL/SCRAM, pilih salah satu protokol. SASL_SCRAM
-
Jika Anda mengonfigurasi otentikasi mTLS, pilih protokol CLIENT_CERTIFICATE_TLS_AUTH.
-
-
Untuk autentikasi SASL/SCRAM atau mTLS, pilih kunci rahasia Secrets Manager yang berisi kredensyal untuk cluster Kafka Anda.
-
-
(Opsional) Untuk Enkripsi, pilih rahasia Secrets Manager yang berisi sertifikat CA root yang digunakan broker Kafka Anda untuk enkripsi TLS, jika broker Kafka Anda menggunakan sertifikat yang ditandatangani oleh CA pribadi.
Pengaturan ini berlaku untuk enkripsi TLS untukSASL/SCRAM or SASL/PLAIN, dan untuk otentikasi mTLS.
-
Untuk membuat pemicu dalam status nonaktif untuk pengujian (disarankan), hapus Aktifkan pemicu. Atau, untuk segera mengaktifkan pemicu, pilih Aktifkan pemicu.
-
-
Untuk membuat pemicu, pilih Tambahkan.
Menambahkan klaster Kafka yang dikelola sendiri (AWS CLI)
Gunakan contoh AWS CLI perintah berikut untuk membuat dan melihat pemicu Apache Kafka yang dikelola sendiri untuk fungsi Lambda Anda.
Menggunakan SASL/SCRAM
Jika pengguna Kafka mengakses broker Kafka Anda melalui internet, tentukan rahasia Secrets Manager yang Anda buat untuk otentikasi SASL/SCRAM. Contoh berikut menggunakan create-event-source-mappingmy-kafka-function
ke topik Kafka bernama. AWSKafkaTopic
aws lambda create-event-source-mapping \ --topics
AWSKafkaTopic
\ --source-access-configuration Type=SASL_SCRAM_512_AUTH,URI=arn:aws:secretsmanager:us-east-1:111122223333
:secret:MyBrokerSecretName
\ --function-name arn:aws:lambda:us-east-1:111122223333
:function:my-kafka-function
\ --self-managed-event-source '{"Endpoints":{"KAFKA_BOOTSTRAP_SERVERS":["abc3.xyz.com:9092
", "abc2.xyz.com:9092
"]}}'
Menggunakan VPC
Jika hanya Kafka pengguna dalam VPC Anda yang mengakses broker Kafka Anda, Anda harus menentukan VPC, subnet, dan grup keamanan VPC Anda. Contoh berikut menggunakan create-event-source-mappingmy-kafka-function
ke topik Kafka bernama. AWSKafkaTopic
aws lambda create-event-source-mapping \ --topics
AWSKafkaTopic
\ --source-access-configuration '[{"Type": "VPC_SUBNET", "URI": "subnet:subnet-0011001100"}, {"Type": "VPC_SUBNET", "URI": "subnet:subnet-0022002200"}, {"Type": "VPC_SECURITY_GROUP", "URI": "security_group:sg-0123456789"}]' \ --function-name arn:aws:lambda:us-east-1:111122223333
:function:my-kafka-function
\ --self-managed-event-source '{"Endpoints":{"KAFKA_BOOTSTRAP_SERVERS":["abc3.xyz.com:9092
", "abc2.xyz.com:9092
"]}}'
Melihat status menggunakan AWS CLI
Contoh berikut menggunakan get-event-source-mapping
aws lambda get-event-source-mapping --uuid
dh38738e-992b-343a-1077-3478934hjkfd7
Parameter konfigurasi Apache Kafka yang dikelola sendiri
Semua jenis sumber peristiwa Lambda berbagi operasi yang sama CreateEventSourceMappingdan UpdateEventSourceMappingAPI. Namun, hanya beberapa parameter yang berlaku untuk Apache Kafka.
Parameter | Diperlukan | Default | Catatan |
---|---|---|---|
BatchSize |
T |
100 |
Maksimum: 10.000. |
DestinationConfig |
T |
N/A |
Menangkap batch yang dibuang untuk sumber acara Apache Kafka yang dikelola sendiri |
Diaktifkan |
T |
True |
|
FilterCriteria |
T |
N/A |
|
FunctionName |
T |
N/A |
|
KMSKeyArn |
T |
N/A |
|
MaximumBatchingWindowInSeconds |
T |
500 ms |
|
ProvisionedPollersConfig |
T |
|
|
SelfManagedEventSource |
T |
N/A |
Daftar Broker Kafka. Hanya dapat mengatur di Create |
SelfManagedKafkaEventSourceConfig |
T |
Berisi ConsumerGroupId bidang yang default ke nilai unik. |
Hanya dapat mengatur di Create |
SourceAccessConfigurations |
T |
Tidak ada kredenensi |
Informasi VPC atau kredensial autentikasi untuk klaster Untuk SASL_PLAIN, atur ke BASIC_AUTH |
StartingPosition |
T |
N/A |
AT_TIMESTAMP, TRIM_HORIZON, atau TERBARU Hanya dapat mengatur di Create |
StartingPositionTimestamp |
T |
N/A |
Diperlukan jika StartingPosition disetel ke AT_TIMESTAMP |
Tanda |
T |
N/A |
|
Topik |
T |
N/A |
Nama topik Hanya dapat mengatur di Create |
Menggunakan klaster Kafka sebagai sumber peristiwa
Lambda membaca data peristiwa dari topik Kafka yang Anda tentukan seperti Topics
dalam CreateEventSourceMappingpermintaan, berdasarkan StartingPosition
yang Anda tentukan. Setelah pemrosesan berhasil, topik Kafka Anda dijalankan untuk klaster Kafka Anda.
Jika Anda menentukan StartingPosition
sebagaiLATEST
, Lambda mulai membaca dari pesan terbaru di setiap partisi milik topik. Karena mungkin ada beberapa penundaan setelah konfigurasi pemicu sebelum Lambda mulai membaca pesan, Lambda tidak membaca pesan apa pun yang dihasilkan selama jendela ini.
Lambda memproses catatan dari satu atau beberapa partisi topik Kafka yang Anda tentukan dan mengirimkan payload JSON ke fungsi Anda. Payload Lambda tunggal dapat berisi pesan dari beberapa partisi. Bila lebih banyak rekaman tersedia, Lambda terus memproses catatan dalam batch, berdasarkan BatchSize
nilai yang Anda tentukan dalam CreateEventSourceMappingpermintaan, hingga fungsi Anda mengikuti topik.
Jika fungsi Anda mengembalikan kesalahan untuk salah satu pesan dalam batch, Lambda mencoba ulang seluruh batch pesan sampai berhasil diproses atau pesan berakhir. Anda dapat mengirim catatan yang gagal dalam semua upaya percobaan ulang ke tujuan yang gagal untuk diproses nanti.
catatan
Sementara fungsi Lambda biasanya memiliki batas waktu tunggu maksimum 15 menit, pemetaan sumber acara untuk Amazon MSK, Apache Kafka yang dikelola sendiri, Amazon DocumentDB, dan Amazon MQ untuk ActiveMQ dan RabbitMQ hanya mendukung fungsi dengan batas waktu tunggu maksimum 14 menit. Kendala ini memastikan bahwa pemetaan sumber peristiwa dapat menangani kesalahan fungsi dan percobaan ulang dengan benar.
Posisi awal polling dan streaming
Ketahuilah bahwa polling streaming selama pembuatan dan pembaruan pemetaan sumber acara pada akhirnya konsisten.
-
Selama pembuatan pemetaan sumber acara, mungkin diperlukan beberapa menit untuk memulai acara polling dari aliran.
-
Selama pembaruan pemetaan sumber acara, mungkin diperlukan beberapa menit untuk menghentikan dan memulai kembali acara pemungutan suara dari aliran.
Perilaku ini berarti bahwa jika Anda menentukan LATEST
sebagai posisi awal untuk aliran, pemetaan sumber peristiwa dapat melewatkan peristiwa selama pembuatan atau pembaruan. Untuk memastikan bahwa tidak ada peristiwa yang terlewatkan, tentukan posisi awal aliran sebagai TRIM_HORIZON
atauAT_TIMESTAMP
.
Perilaku penskalaan throughput pesan untuk pemetaan sumber acara Apache Kafka yang dikelola sendiri
Anda dapat memilih di antara dua mode perilaku penskalaan throughput pesan untuk pemetaan sumber peristiwa MSK Amazon Anda:
Mode default (sesuai permintaan)
Saat Anda awalnya membuat sumber acara Apache Kafka yang dikelola sendiri, Lambda mengalokasikan sejumlah poller acara default untuk memproses semua partisi dalam topik Kafka. Lambda secara otomatis menaikkan atau menurunkan jumlah poller acara berdasarkan pemuatan pesan.
Dalam interval satu menit, Lambda mengevaluasi lag offset konsumen dari semua partisi dalam topik. Jika offset lag terlalu tinggi, partisi menerima pesan lebih cepat daripada Lambda dapat memprosesnya. Jika perlu, Lambda menambahkan atau menghapus poller acara dari topik. Proses penskalaan otomatis untuk menambah atau menghapus poller peristiwa ini terjadi dalam waktu tiga menit setelah evaluasi.
Jika fungsi Lambda target Anda dibatasi, Lambda mengurangi jumlah poller acara. Tindakan ini mengurangi beban kerja pada fungsi dengan mengurangi jumlah pesan yang dapat diambil dan dikirim oleh poller peristiwa ke fungsi.
Untuk memantau throughput dari topik Kafka Anda, Anda dapat melihat metrik konsumen Apache Kafka, seperti consumer_lag
dan consumer_offset
.
Mengkonfigurasi mode yang disediakan
Untuk beban kerja di mana Anda perlu menyempurnakan throughput pemetaan sumber peristiwa, Anda dapat menggunakan mode yang disediakan. Dalam mode yang disediakan, Anda menentukan batas minimum dan maksimum untuk jumlah poller acara yang disediakan. Poller acara yang disediakan ini didedikasikan untuk pemetaan sumber acara Anda, dan dapat menangani lonjakan pesan yang tidak terduga secara instan saat terjadi. Kami menyarankan Anda menggunakan mode yang disediakan untuk beban kerja Kafka yang memiliki persyaratan kinerja yang ketat.
Di Lambda, poller peristiwa adalah unit komputasi yang mampu menangani hingga 5 throughput. MBps Sebagai referensi, misalkan sumber acara Anda menghasilkan muatan rata-rata 1MB, dan durasi fungsi rata-rata adalah 1 detik. Jika payload tidak mengalami transformasi apa pun (seperti penyaringan), poller tunggal dapat mendukung 5 MBps throughput, dan 5 pemanggilan Lambda bersamaan. Menggunakan mode yang disediakan menimbulkan biaya tambahan. Untuk perkiraan harga, lihat AWS Lambda harga
Dalam mode yang disediakan, kisaran nilai yang diterima untuk jumlah minimum poller acara (MinimumPollers
) adalah antara 1 dan 200, inklusif. Kisaran nilai yang diterima untuk jumlah maksimum poller acara (MaximumPollers
) adalah antara 1 dan 2.000, inklusif. MaximumPollers
harus lebih besar dari atau sama denganMinimumPollers
. Selain itu, untuk mempertahankan pemrosesan yang teratur dalam partisi, Lambda membatasi MaximumPollers
jumlah partisi dalam topik.
Untuk detail selengkapnya tentang memilih nilai yang sesuai untuk poller acara minimum dan maksimum, lihatPraktik dan pertimbangan terbaik saat menggunakan mode yang disediakan.
Anda dapat mengonfigurasi mode yang disediakan untuk pemetaan sumber peristiwa Apache Kafka yang dikelola sendiri menggunakan konsol atau API Lambda.
Untuk mengonfigurasi mode yang disediakan untuk pemetaan sumber peristiwa Apache Kafka yang dikelola sendiri (konsol) yang sudah ada
-
Buka halaman Fungsi
di konsol Lambda. -
Pilih fungsi dengan pemetaan sumber peristiwa Apache Kafka yang dikelola sendiri yang ingin Anda konfigurasikan untuk mode yang disediakan.
-
Pilih Konfigurasi, lalu pilih Pemicu.
-
Pilih pemetaan sumber peristiwa Apache Kafka yang dikelola sendiri yang ingin Anda konfigurasikan untuk mode yang disediakan, lalu pilih Edit.
-
Di bawah Konfigurasi pemetaan sumber peristiwa, pilih Konfigurasi mode yang disediakan.
-
Untuk poller acara Minimum, masukkan nilai antara 1 dan 200. Jika Anda tidak menentukan nilai, Lambda memilih nilai default 1.
-
Untuk poller acara Maksimum, masukkan nilai antara 1 dan 2.000. Nilai ini harus lebih besar dari atau sama dengan nilai Anda untuk poller acara Minimum. Jika Anda tidak menentukan nilai, Lambda memilih nilai default 200.
-
-
Pilih Simpan.
Anda dapat mengonfigurasi mode yang disediakan secara terprogram menggunakan objek di. ProvisionedPollerConfig EventSourceMappingConfiguration Misalnya, perintah UpdateEventSourceMappingCLI berikut mengkonfigurasi MinimumPollers
nilai 5, dan MaximumPollers
nilai 100.
aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{"MinimumPollers": 5, "MaximumPollers": 100}'
Setelah mengonfigurasi mode yang disediakan, Anda dapat mengamati penggunaan poller peristiwa untuk beban kerja Anda dengan memantau metrik. ProvisionedPollers
Untuk informasi selengkapnya, lihat Metrik pemetaan sumber acara.
Untuk menonaktifkan mode yang disediakan dan kembali ke mode default (sesuai permintaan), Anda dapat menggunakan perintah CLI UpdateEventSourceMappingberikut:
aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{}'
Praktik dan pertimbangan terbaik saat menggunakan mode yang disediakan
Konfigurasi optimal poller peristiwa minimum dan maksimum untuk pemetaan sumber acara Anda bergantung pada persyaratan kinerja aplikasi Anda. Kami menyarankan Anda memulai dengan poller acara minimum default untuk mendasarkan profil kinerja. Sesuaikan konfigurasi Anda berdasarkan pola pemrosesan pesan yang diamati dan profil kinerja yang Anda inginkan.
Untuk beban kerja dengan lalu lintas runcing dan kebutuhan kinerja yang ketat, tingkatkan poller acara minimum untuk menangani lonjakan pesan yang tiba-tiba. Untuk menentukan poller peristiwa minimum yang diperlukan, pertimbangkan pesan beban kerja Anda per detik dan ukuran muatan rata-rata, dan gunakan kapasitas throughput dari poller peristiwa tunggal (hingga 5 MBps) sebagai referensi.
Untuk mempertahankan pemrosesan yang teratur dalam partisi, Lambda membatasi poller peristiwa maksimum ke jumlah partisi dalam topik. Selain itu, poller peristiwa maksimum yang dapat diskalakan oleh pemetaan sumber acara Anda bergantung pada pengaturan konkurensi fungsi.
Saat mengaktifkan mode yang disediakan, perbarui pengaturan jaringan Anda untuk menghapus titik akhir AWS PrivateLink VPC dan izin terkait.
CloudWatch Metrik Amazon
Lambda memancarkan OffsetLag
metrik saat fungsi Anda memproses catatan. Nilai metrik ini adalah perbedaan offset antara catatan terakhir yang ditulis ke topik sumber peristiwa Kafka dan catatan terakhir yang diproses oleh grup konsumen fungsi Anda. Anda dapat menggunakan OffsetLag
untuk memperkirakan latensi antara saat catatan ditambahkan dan kapan grup konsumen Anda memprosesnya.
Tren yang meningkat OffsetLag
dapat menunjukkan masalah dengan poller dalam kelompok konsumen fungsi Anda. Untuk informasi selengkapnya, lihat Menggunakan CloudWatch metrik dengan Lambda.