Memproses MSK pesan Amazon dengan Lambda - AWS Lambda

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

Menambahkan Amazon MSK sebagai sumber acara

Untuk membuat pemetaan sumber peristiwa, tambahkan Amazon MSK sebagai pemicu fungsi Lambda menggunakan konsol Lambda, AWS SDKsebuah, atau ().AWS Command Line InterfaceAWS CLI Perhatikan bahwa saat Anda menambahkan Amazon MSK sebagai pemicu, Lambda mengasumsikan VPC pengaturan MSK klaster Amazon, bukan pengaturan fungsi Lambda. VPC

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)
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih nama fungsi Lambda Anda.

  3. Di bagian Gambaran umum fungsi, pilih Tambah pemicu.

  4. Pada Konfigurasi pemicu, lakukan hal berikut:

    1. Pilih jenis MSKpemicu.

    2. Untuk MSKcluster, pilih cluster Anda.

    3. Untuk Ukuran batch, masukkan jumlah maksimum pesan yang akan diterima dalam satu batch.

    4. Untuk jendela Batch, masukkan jumlah maksimum detik yang dihabiskan Lambda untuk mengumpulkan catatan sebelum menjalankan fungsi.

    5. Untuk Nama topik, masukkan nama topik Kafka.

    6. (Opsional) Untuk ID grup Konsumen, masukkan ID grup konsumen Kafka untuk bergabung.

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

    8. (Opsional) Untuk Otentikasi, pilih kunci rahasia untuk otentikasi dengan broker di cluster AndaMSK.

    9. Untuk membuat pemicu dalam status nonaktif untuk pengujian (disarankan), hapus Aktifkan pemicu. Atau, untuk segera mengaktifkan pemicu, pilih Aktifkan pemicu.

  5. 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-mapping AWS CLI perintah untuk memetakan fungsi Lambda bernama my-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 \ --topics AWSKafkaTopic \ --starting-position LATEST \ --function-name my-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 \ --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: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 \ --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:111122223333:secret:my-secret"}]'

Untuk informasi selengkapnya, lihat dokumentasi CreateEventSourceMappingAPIreferensi.

Melihat status menggunakan AWS CLI

Contoh berikut menggunakan get-event-source-mapping AWS CLI perintah untuk menggambarkan status pemetaan sumber peristiwa yang Anda buat.

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

Kontrol peristiwa mana yang dikirim Lambda ke fungsi Anda

MaximumBatchingWindowInSeconds

T

500 ms

Perilaku batching

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

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

Saat Anda menambahkan Apache Kafka atau MSK klaster Amazon sebagai pemicu fungsi Lambda Anda, cluster digunakan 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 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.