Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan Lambda dengan Amazon SQS
catatan
Jika Anda ingin mengirim data ke target selain fungsi Lambda atau memperkaya data sebelum mengirimnya, lihat Amazon Pipes EventBridge .
Anda dapat menggunakan fungsi Lambda untuk memproses pesan dalam antrian Amazon Simple Queue Service (Amazon SQS). Lambda mendukung antrian standar dan antrean first-in, first-out (FIFO) untuk pemetaan sumber peristiwa. Bagaimana Lambda memproses catatan dari sumber peristiwa berbasis aliran dan antrian Anda juga dapat menggunakan mode yang disediakan untuk mengalokasikan sumber polling khusus untuk pemetaan sumber peristiwa Amazon SQS Anda. Fungsi Lambda dan antrian Amazon SQS harus sama Wilayah AWS, meskipun bisa berbeda. Akun AWS
Untuk contoh fungsi yang memproses pesan Amazon SQS, lihatTutorial: Menggunakan Lambda dengan Amazon SQS. Untuk pemrosesan lintas akun, lihatTutorial: Menggunakan antrian Amazon SQS lintas akun sebagai sumber acara. Untuk daftar lengkap opsi konfigurasi, lihatParameter Lambda untuk pemetaan sumber peristiwa Amazon SQS.
Saat memproses pesan Amazon SQS, Anda perlu menerapkan logika respons batch parSIAL untuk mencegah pesan yang berhasil diproses dicoba lagi ketika beberapa pesan dalam batch gagal. Utilitas Batch Processor dari Powertools untuk AWS Lambda menyederhanakan implementasi ini dengan secara otomatis menangani logika respons batch parsional, mengurangi waktu pengembangan dan meningkatkan keandalan.
Topik
Memahami perilaku polling dan batching untuk pemetaan sumber peristiwa Amazon SQS
Menggunakan mode yang disediakan dengan pemetaan sumber peristiwa Amazon SQS
Mengkonfigurasi mode yang disediakan untuk pemetaan sumber peristiwa Amazon SQS
Mengkonfigurasi perilaku penskalaan untuk pemetaan sumber peristiwa SQS
Menggunakan pemfilteran peristiwa dengan sumber peristiwa Amazon SQS
Tutorial: Menggunakan antrian Amazon SQS lintas akun sebagai sumber acara
Memahami perilaku polling dan batching untuk pemetaan sumber peristiwa Amazon SQS
Dengan pemetaan sumber peristiwa Amazon SQS, Lambda mensurvei antrian dan memanggil fungsi Anda secara sinkron dengan suatu peristiwa. Memanggil fungsi Lambda secara sinkron Setiap acara dapat berisi kumpulan beberapa pesan dari antrian. Lambda menerima peristiwa ini satu batch pada satu waktu, dan memanggil fungsi Anda sekali untuk setiap batch. Ketika fungsi Anda berhasil memproses suatu batch, Lambda menghapus pesannya dari antrean.
Saat Lambda menerima batch, pesan tetap dalam antrian tetapi disembunyikan selama batas waktu https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html visibilitas antrian. Jika fungsi Anda berhasil memproses semua pesan dalam batch, Lambda menghapus pesan dari antrian. Secara default, jika fungsi Anda mengalami kesalahan saat memproses batch, semua pesan dalam batch tersebut akan terlihat lagi di antrian setelah batas waktu visibilitas berakhir. Untuk alasan ini, kode fungsi Anda harus dapat memproses pesan yang sama beberapa kali tanpa efek samping yang tidak diinginkan.
Awas
Pemetaan sumber peristiwa lambda memproses setiap peristiwa setidaknya sekali, dan pemrosesan rekaman duplikat dapat terjadi. Untuk menghindari potensi masalah terkait peristiwa duplikat, kami sangat menyarankan agar Anda membuat kode fungsi Anda idempotent. Untuk mempelajari lebih lanjut, lihat Bagaimana cara membuat fungsi Lambda saya idempoten
Untuk mencegah Lambda memproses pesan beberapa kali, Anda dapat mengonfigurasi pemetaan sumber peristiwa untuk menyertakan kegagalan item batch dalam respons fungsi Anda, atau Anda dapat menggunakan DeleteMessage API untuk menghapus pesan dari antrian saat fungsi Lambda Anda berhasil memprosesnya.
Untuk informasi selengkapnya tentang parameter konfigurasi yang didukung Lambda untuk pemetaan sumber peristiwa SQS, lihat. Membuat pemetaan sumber peristiwa SQS
Menggunakan mode yang disediakan dengan pemetaan sumber peristiwa Amazon SQS
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 peristiwa yang disediakan. Poller peristiwa yang disediakan ini didedikasikan untuk pemetaan sumber peristiwa Anda, dan dapat menangani lonjakan pesan yang tidak terduga melalui penskalaan otomatis responsif. Pemetaan sumber peristiwa Amazon SQS yang dikonfigurasi dengan Mode Penyediaan menskalakan 3x lebih cepat (hingga 1.000 panggilan bersamaan per menit) dan mendukung konkurensi 80x lebih tinggi (hingga 100.000 panggilan bersamaan) daripada kemampuan pemetaan sumber peristiwa Amazon SQS default.
Sebaiknya gunakan mode yang disediakan untuk beban kerja berbasis peristiwa Amazon SQS yang memiliki persyaratan kinerja yang ketat, seperti perusahaan jasa keuangan yang memproses umpan data pasar, platform e-commerce yang menyediakan rekomendasi personal real-time, dan perusahaan game yang mengelola interaksi pemain langsung. Menggunakan mode yang disediakan menimbulkan biaya tambahan. Untuk harga terperinci, lihat AWS Lambda harga
Setiap poller peristiwa dalam mode disediakan dapat menangani hingga 1 MB/s throughput, hingga 10 panggilan bersamaan, atau hingga 10 panggilan API polling Amazon SQS per detik. Kisaran nilai yang diterima untuk jumlah minimum event pollers (MinimumPollers) adalah antara 2 dan 200, dengan default 2. Kisaran nilai yang diterima untuk jumlah maksimum event pollers (MaximumPollers) adalah antara 2 dan 10.000, dengan default 200. MaximumPollers harus lebih besar dari atau sama dengan MinimumPollers.
Menentukan poller acara yang diperlukan
Untuk memperkirakan jumlah event poller yang diperlukan untuk memastikan kinerja pemrosesan pesan yang optimal saat menggunakan mode yang disediakan untuk SQS ESM, kumpulkan metrik berikut untuk aplikasi Anda: peristiwa SQS puncak per detik yang memerlukan pemrosesan latensi rendah, ukuran muatan peristiwa SQS rata-rata, durasi fungsi Lambda rata-rata, dan ukuran batch yang dikonfigurasi.
Pertama, Anda dapat memperkirakan jumlah peristiwa SQS per detik (EPS) yang didukung oleh poller peristiwa untuk beban kerja Anda menggunakan rumus berikut:
EPS per event poller = minimum( ceiling(1024 / average event size in KB), ceiling(10 / average function duration in seconds) * batch size, min(100, 10 * batch size) )
Kemudian, Anda dapat menghitung jumlah poller minimum yang diperlukan menggunakan rumus di bawah ini. Perhitungan ini memastikan Anda menyediakan kapasitas yang cukup untuk menangani persyaratan lalu lintas puncak Anda.
Required event pollers = (Peak number of events per second in Queue) / EPS per event poller
Pertimbangkan beban kerja dengan ukuran batch default 10, ukuran peristiwa rata-rata 3 KB, durasi fungsi rata-rata 100 ms, dan persyaratan untuk menangani 1.000 peristiwa per detik. Dalam skenario ini, setiap poller peristiwa mendukung sekitar 100 peristiwa per detik (EPS). Oleh karena itu, kami menyarankan Anda menetapkan poller minimum ke 10 untuk menangani persyaratan lalu lintas puncak Anda secara memadai. Jika beban kerja Anda memiliki karakteristik yang sama tetapi dengan durasi fungsi rata-rata 1 detik, setiap poller hanya mendukung 10 EPS, mengharuskan Anda mengonfigurasi 100 poller minimum untuk mendukung 1.000 peristiwa per detik pada latensi rendah.
Sebaiknya gunakan ukuran batch default 10 atau lebih tinggi untuk memaksimalkan efisiensi poller peristiwa mode yang disediakan. Ukuran batch yang lebih tinggi memungkinkan setiap poller memproses lebih banyak peristiwa per pemanggilan, untuk peningkatan throughput dan efisiensi biaya. Saat merencanakan kapasitas poller acara Anda, pertimbangkan potensi lonjakan lalu lintas dan pertimbangkan untuk menetapkan nilai MinimumPollers Anda sedikit lebih tinggi dari minimum yang dihitung untuk menyediakan buffer. Selain itu, pantau karakteristik beban kerja Anda dari waktu ke waktu, karena perubahan ukuran pesan, durasi fungsi, atau pola lalu lintas mungkin memerlukan penyesuaian pada konfigurasi poller acara Anda untuk mempertahankan kinerja dan efisiensi biaya yang optimal. Untuk perencanaan kapasitas yang tepat, kami sarankan untuk menguji beban kerja spesifik Anda untuk menentukan EPS aktual yang dapat digerakkan oleh setiap event poller.
Mengkonfigurasi mode yang disediakan untuk pemetaan sumber peristiwa Amazon SQS
Anda dapat mengonfigurasi mode yang disediakan untuk pemetaan sumber peristiwa Amazon SQS menggunakan konsol atau API Lambda.
Untuk mengonfigurasi mode yang disediakan untuk pemetaan sumber peristiwa Amazon SQS yang ada (konsol)
-
Buka halaman Fungsi
di konsol Lambda. -
Pilih fungsi dengan pemetaan sumber peristiwa Amazon SQS yang ingin Anda konfigurasikan untuk mode yang disediakan.
-
Pilih Konfigurasi, lalu pilih Pem icu.
-
Pilih pemetaan sumber peristiwa Amazon SQS yang ingin Anda konfigurasikan untuk mode yang disediakan, lalu pilih Edit.
-
Di bawah Konfigurasi pemetaan sumber peristiwa, pilih Konfigurasikan mode yang disediakan.
-
Untuk poller peristiwa minimum, masukkan nilai antara 2 dan 200. Jika Anda tidak menentukan nilai, Lambda memilih nilai default 2.
-
Untuk Poller peristiwa maksimum, masukkan nilai antara 2 dan 10.000. Nilai ini harus lebih besar dari atau sama dengan nilai Anda untuk pol ler peristiwa Minimum. Jika Anda tidak menentukan nilai, Lambda memilih nilai default 200.
-
-
Pilih Simpan.
Anda dapat mengonfigurasi mode yang disediakan secara terprogram menggunakan ProvisionedPollerConfig objek di. EventSourceMappingConfiguration Misalnya, perintah UpdateEventSourceMapping CLI berikut mengonfigurasi 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 peristiwa.
Untuk menonaktifkan mode yang disediakan dan kembali ke mode default (sesuai permintaan), Anda dapat menggunakan perintah UpdateEventSourceMapping CLI berikut:
aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{}'
catatan
Mode yang disediakan tidak dapat digunakan bersamaan dengan pengaturan konkurensi maksimum. Saat menggunakan mode yang disediakan, Anda mengontrol konkurensi maksimum melalui jumlah poller peristiwa maksimum.
Untuk informasi selengkapnya tentang mengonfigurasi mode yang disediakan, lihatMembuat dan mengonfigurasi pemetaan sumber acara Amazon SQS.
Contoh acara pesan antrian standar
contoh Kejadian pesan Amazon SQS (antrean standar)
{ "Records": [ { "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d", "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "body": "Test message.", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082649183", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082649185" }, "messageAttributes": { "myAttribute": { "stringValue": "myValue", "stringListValues": [], "binaryListValues": [], "dataType": "String" } }, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue", "awsRegion": "us-east-2" }, { "messageId": "2e1424d4-f796-459a-8184-9c92662be6da", "receiptHandle": "AQEBzWwaftRI0KuVm4tP+/7q1rGgNqicHq...", "body": "Test message.", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082650636", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082650649" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue", "awsRegion": "us-east-2" } ] }
Secara default, Lambda mensurvei hingga 10 pesan dalam antrian Anda sekaligus dan mengirimkan batch itu ke fungsi Anda. Untuk menghindari memanggil fungsi dengan sejumlah kecil catatan, Anda dapat mengonfigurasi sumber peristiwa untuk menyangga catatan hingga 5 menit dengan mengonfigurasi jendela batch. Sebelum menjalankan fungsi, Lambda terus melakukan polling pesan dari antrian standar hingga jendela batch berakhir, kuota ukuran payload pem anggilan ter capai, atau ukuran batch maksimum yang dikonfigurasi tercapai.
Jika Anda menggunakan jendela batch dan antrian SQS Anda berisi lalu lintas yang sangat rendah, Lambda mungkin menunggu hingga 20 detik sebelum memanggil fungsi Anda. Ini benar bahkan jika Anda mengatur jendela batch lebih rendah dari 20 detik.
catatan
Di Java, Anda mungkin mengalami kesalahan null pointer saat deserialisasi JSON. Ini bisa jadi karena bagaimana kasus “Records” dan “EventSourcearn” dikonversi oleh pemetaan objek JSON.
Contoh acara pesan antrian FIFO
Untuk antrean FIFO, rekaman berisi atribut tambahan yang terkait dengan deduplikasi dan pengurutan.
contoh Kejadian pesan Amazon SQS (antrean FIFO)
{ "Records": [ { "messageId": "11d6ee51-4cc7-4302-9e22-7cd8afdaadf5", "receiptHandle": "AQEBBX8nesZEXmkhsmZeyIE8iQAMig7qw...", "body": "Test message.", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1573251510774","SequenceNumber": "18849496460467696128", "MessageGroupId": "1","SenderId": "AIDAIO23YVJENQZJOL4VO","MessageDeduplicationId": "1","ApproximateFirstReceiveTimestamp": "1573251510774" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:fifo.fifo", "awsRegion": "us-east-2" } ] }