Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memproses MSK pesan Amazon dengan Lambda
Topik
Menambahkan Amazon MSK sebagai sumber acara
Untuk membuat pemetaan sumber peristiwa, tambahkan Amazon MSK sebagai pemicu fungsi Lambda menggunakan konsol Lambda, AWS SDK
Bagian ini menjelaskan cara membuat pemetaan sumber peristiwa menggunakan konsol Lambda dan AWS CLI.
Prasyarat
-
MSKCluster Amazon dan topik Kafka. Untuk informasi selengkapnya, lihat Memulai Menggunakan Amazon MSK di Panduan Pengembang Amazon Managed Streaming for Apache Kafka.
-
Peran eksekusi dengan izin untuk mengakses AWS sumber daya yang digunakan MSK klaster 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 MSK pemicu Amazon (konsol)
Ikuti langkah-langkah berikut untuk menambahkan MSK klaster Amazon dan topik Kafka sebagai pemicu fungsi Lambda Anda.
Untuk menambahkan MSK pemicu Amazon ke 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 MSKpemicu.
-
Untuk MSKcluster, pilih cluster Anda.
-
Untuk Ukuran batch, masukkan jumlah maksimum pesan yang akan diterima dalam satu batch.
-
Untuk jendela Batch, masukkan jumlah maksimum detik yang dihabiskan Lambda untuk mengumpulkan catatan sebelum menjalankan fungsi.
-
Untuk Nama topik, masukkan nama topik Kafka.
-
(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, Potong cakrawala untuk memulai pada catatan paling awal yang tersedia, atau Pada stempel waktu untuk menentukan stempel waktu untuk mulai membaca.
-
(Opsional) Untuk Otentikasi, pilih kunci rahasia untuk otentikasi dengan broker di cluster AndaMSK.
-
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 MSK pemicu Amazon (AWS CLI)
Gunakan contoh AWS CLI perintah berikut untuk membuat dan melihat MSK pemicu Amazon untuk fungsi Lambda Anda.
Membuat pemicu menggunakan AWS CLI
contoh — Buat pemetaan sumber acara untuk cluster yang menggunakan IAM otentikasi
Contoh berikut menggunakan create-event-source-mappingmy-kafka-function
ke topik Kafka bernama. AWSKafkaTopic
Posisi awal topik diatur ke LATEST
. Saat cluster menggunakan otentikasi IAM berbasis peran, Anda tidak memerlukan objek. SourceAccessConfiguration Contoh:
aws lambda create-event-source-mapping \ --event-source-arn
arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2
\ --topicsAWSKafkaTopic
\ --starting-positionLATEST
\ --function-namemy-kafka-function
contoh — Buat pemetaan sumber acara untuk cluster yang SASL SCRAM menggunakan/otentikasi
Jika cluster menggunakan SASL/SCRAMotentikasi, Anda harus menyertakan SourceAccessConfigurationobjek yang menentukan SASL_SCRAM_512_AUTH
dan rahasia Secrets Manager. ARN
aws lambda create-event-source-mapping \ --event-source-arn
arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2
\ --topicsAWSKafkaTopic
\ --starting-positionLATEST
\ --function-namemy-kafka-function
--source-access-configurations'[{"Type": "SASL_SCRAM_512_AUTH","URI": "arn:aws:secretsmanager:us-east-1:111122223333:secret:my-secret"}]'
contoh — Buat pemetaan sumber acara untuk cluster yang menggunakan otentikasi m TLS
Jika klaster menggunakan TLSotentikasi m, Anda harus menyertakan SourceAccessConfigurationobjek yang menentukan CLIENT_CERTIFICATE_TLS_AUTH
dan rahasia Secrets Manager. ARN
aws lambda create-event-source-mapping \ --event-source-arn
arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2
\ --topicsAWSKafkaTopic
\ --starting-positionLATEST
\ --function-namemy-kafka-function
--source-access-configurations'[{"Type": "CLIENT_CERTIFICATE_TLS_AUTH","URI": "arn:aws:secretsmanager:us-east-1:111122223333:secret:my-secret"}]'
Untuk informasi selengkapnya, lihat dokumentasi CreateEventSourceMappingAPIreferensi.
Melihat status menggunakan AWS CLI
Contoh berikut menggunakan get-event-source-mapping
aws lambda get-event-source-mapping \ --uuid
6d9bce8e-836b-442c-8070-74e77903c815
Parameter MSK konfigurasi Amazon
Semua jenis sumber acara Lambda berbagi hal yang sama CreateEventSourceMappingdan UpdateEventSourceMappingAPIoperasi. Namun, hanya beberapa parameter yang berlaku untuk AmazonMSK.
Parameter | Diperlukan | Default | Catatan |
---|---|---|---|
AmazonManagedKafkaEventSourceConfig |
T |
Berisi ConsumerGroupId bidang, yang default ke nilai unik. |
Hanya dapat mengatur di Create |
BatchSize |
T |
100 |
Maksimum: 10.000. |
Diaktifkan |
N |
Diaktifkan |
none |
EventSourceArn |
T |
N/A |
Hanya dapat mengatur di Create |
FunctionName |
T |
N/A |
none |
FilterCriteria |
T |
N/A |
|
MaximumBatchingWindowInSeconds |
T |
500 ms |
|
SourceAccessConfigurations |
T |
Tidak ada kredensial |
SASL/SCRAMatau CLIENT _ _ CERTIFICATE TLS _ AUTH (MutualTLS) kredensi otentikasi untuk sumber acara Anda |
StartingPosition |
T |
N/A |
AT_TIMESTAMP, TRIM _HORIZON, atau LATEST Hanya dapat mengatur di Create |
StartingPositionTimestamp |
T |
N/A |
Diperlukan jika StartingPosition disetel ke AT_ TIMESTAMP |
Topik |
T |
N/A |
Nama topik Kafka Hanya dapat mengatur di Create |
Membuat pemetaan sumber peristiwa lintas akun
Anda dapat menggunakan konektivitas VPC multi-pribadi untuk menghubungkan fungsi Lambda ke MSK kluster yang disediakan di tempat yang berbeda. Akun AWS Penggunaan VPC multi-konektivitas AWS PrivateLink, yang menjaga semua lalu lintas dalam AWS jaringan.
catatan
Anda tidak dapat membuat pemetaan sumber peristiwa lintas akun untuk kluster tanpa server. MSK
Untuk membuat pemetaan sumber peristiwa lintas akun, Anda harus terlebih dahulu mengonfigurasi VPC multi-konektivitas untuk klaster. MSK Saat Anda membuat pemetaan sumber peristiwa, gunakan VPC koneksi terkelola ARN alih-alih klusterARN, seperti yang ditunjukkan pada contoh berikut. CreateEventSourceMappingOperasi juga berbeda tergantung pada jenis otentikasi yang digunakan MSK cluster.
contoh — Buat pemetaan sumber peristiwa lintas akun untuk cluster yang menggunakan otentikasi IAM
Saat cluster menggunakan otentikasi IAM berbasis peran, Anda tidak memerlukan objek. SourceAccessConfiguration Contoh:
aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:
us-east-1:111122223333
:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7
\ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function
contoh — Buat pemetaan sumber peristiwa lintas akun untuk cluster yang SASL menggunakan/otentikasi SCRAM
Jika cluster menggunakan SASL/SCRAMotentikasi, Anda harus menyertakan SourceAccessConfigurationobjek yang menentukan SASL_SCRAM_512_AUTH
dan rahasia Secrets Manager. ARN
Ada dua cara untuk menggunakan rahasia untuk pemetaan sumber MSK peristiwa Amazon lintas akun denganSASL/otentikasi: SCRAM
-
Buat rahasia di akun fungsi Lambda dan sinkronkan dengan rahasia cluster. Buat rotasi untuk menjaga kedua rahasia tetap sinkron. Opsi ini memungkinkan Anda untuk mengontrol rahasia dari akun fungsi.
-
Gunakan rahasia yang terkait dengan MSK cluster. Rahasia ini harus memungkinkan akses lintas akun ke akun fungsi Lambda. Untuk informasi selengkapnya, lihat Izin untuk AWS Secrets Manager rahasia bagi pengguna di akun lain.
aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:
us-east-1:111122223333
:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7
\ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function \ --source-access-configurations'[{"Type": "SASL_SCRAM_512_AUTH","URI": "arn:aws:secretsmanager:us-east-1:444455556666:secret:my-secret"}]'
contoh — Buat pemetaan sumber peristiwa lintas akun untuk cluster yang menggunakan otentikasi m TLS
Jika klaster menggunakan TLSotentikasi m, Anda harus menyertakan SourceAccessConfigurationobjek yang menentukan CLIENT_CERTIFICATE_TLS_AUTH
dan rahasia Secrets Manager. ARN Rahasianya dapat disimpan di akun cluster atau akun fungsi Lambda.
aws lambda create-event-source-mapping \ --event-source-arn arn:aws:kafka:
us-east-1:111122223333
:vpc-connection/444455556666/my-cluster-name/51jn98b4-0a61-46cc-b0a6-61g9a3d797d5-7
\ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-kafka-function \ --source-access-configurations'[{"Type": "CLIENT_CERTIFICATE_TLS_AUTH","URI": "arn:aws:secretsmanager:us-east-1:444455556666:secret:my-secret"}]'
Menggunakan MSK klaster Amazon sebagai sumber acara
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 membaca pesan secara berurutan untuk setiap partisi topik Kafka. 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.
Setelah Lambda memproses setiap batch, Lambda melakukan offset pesan dalam batch tersebut. 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, Apache Kafka yang dikelola sendiri, MSK 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
.
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 Lihat metrik untuk fungsi Lambda.
Penskalaan otomatis sumber MSK acara Amazon
Saat Anda awalnya membuat sumber MSK acara Amazon, Lambda mengalokasikan 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, Lambda 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, Lambda mengevaluasi lag offset konsumen dari semua partisi dalam topik. Jika lag terlalu tinggi, partisi menerima pesan lebih cepat daripada yang dapat diproses Lambda. Jika perlu, Lambda menambahkan atau menghapus konsumen dari topik tersebut. Proses penskalaan penambahan atau penghapusan konsumen terjadi dalam waktu tiga menit setelah evaluasi.
Jika fungsi Lambda target Anda dibatasi, Lambda mengurangi jumlah konsumen. Tindakan ini mengurangi beban kerja pada fungsi dengan mengurangi jumlah pesan yang dapat konsumen ambil dan kirim ke fungsi.
Untuk memantau throughput topik Kafka Anda, lihat metrik Lambda Offset lag yang dipancarkan saat fungsi Anda memproses catatan.
Untuk memeriksa berapa banyak fungsi invokasi yang terjadi secara paralel, Anda juga dapat memantau metrik konkurensi untuk fungsi Anda.