Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pemetaan sumber acara dengan fungsi tahan lama
Fungsi tahan lama bekerja dengan semua pemetaan sumber peristiwa Lambda. Konfigurasikan pemetaan sumber peristiwa untuk fungsi tahan lama dengan cara yang sama seperti Anda mengonfigurasinya untuk fungsi standar. Pemetaan sumber peristiwa secara otomatis melakukan polling sumber acara seperti Amazon SQS, Kinesis, dan DynamoDB Streams, dan memanggil fungsi Anda dengan kumpulan catatan.
Pemetaan sumber peristiwa berguna untuk fungsi tahan lama yang memproses aliran atau antrian dengan alur kerja multi-langkah yang kompleks. Misalnya, Anda dapat membuat fungsi tahan lama yang memproses pesan Amazon SQS dengan percobaan ulang, panggilan API eksternal, dan persetujuan manusia.
Bagaimana pemetaan sumber peristiwa memanggil fungsi yang tahan lama
Pemetaan sumber peristiwa memanggil fungsi tahan lama secara serempak, menunggu eksekusi tahan lama lengkap selesai sebelum memproses batch berikutnya atau menandai catatan sebagai diproses. Jika total waktu eksekusi tahan lama melebihi batas waktu tunggu yang berlaku (15 menit secara default, atau hingga 90 menit untuk fungsi yang berjalan pada Instans Terkelola Lambda), waktu eksekusi habis dan gagal. Pemetaan sumber peristiwa menerima pengecualian batas waktu dan menanganinya sesuai dengan konfigurasi coba ulang.
Batas durasi eksekusi
Ketika fungsi tahan lama dipanggil oleh pemetaan sumber peristiwa, total durasi eksekusi tahan lama tidak dapat melebihi batas waktu fungsi maksimum: 15 menit untuk fungsi yang berjalan pada mode kapasitas default (sesuai permintaan), atau hingga 90 menit untuk fungsi yang berjalan pada Instans Terkelola Lambda (kecuali pemetaan sumber peristiwa Amazon MQ dan Amazon DocumentDB, yang tetap dibatasi hingga 15 menit). Batas ini berlaku untuk seluruh eksekusi tahan lama dari awal hingga selesai, bukan hanya pemanggilan fungsi individu.
Batas ini terpisah dari batas waktu fungsi Lambda per pemanggilan, meskipun keduanya berbagi maksimum yang sama (15 menit secara default, atau hingga 90 menit pada Instans Terkelola Lambda untuk pemetaan asinkron dan pemetaan sumber peristiwa). Batas waktu fungsi mengontrol berapa lama setiap pemanggilan individu dapat berjalan, sedangkan batas waktu eksekusi yang tahan lama mengontrol total waktu yang telah berlalu dari awal eksekusi hingga penyelesaian.
Contoh skenario:
-
Valid (mode kapasitas apa pun): Fungsi tahan lama memproses pesan Amazon SQS dengan tiga langkah, masing-masing memakan waktu 2 menit, lalu menunggu 5 menit sebelum menyelesaikan langkah terakhir. Total waktu eksekusi: 11 menit. Ini berfungsi pada kedua mode kapasitas karena berada di bawah batas default 15 menit.
-
Hanya berlaku untuk Instans Terkelola Lambda: Fungsi tahan lama memproses pesan Amazon SQS, menyelesaikan pemrosesan awal dalam 2 menit, lalu menunggu 20 menit untuk panggilan balik eksternal sebelum menyelesaikannya. Total waktu eksekusi: 22 menit. Ini melebihi batas default 15 menit, tetapi berada dalam batas 90 menit untuk fungsi yang berjalan pada Instans Terkelola Lambda.
-
Tidak valid (mode kapasitas apa pun): Fungsi tahan lama memproses catatan Kinesis dengan beberapa operasi tunggu dengan total dua jam di antara langkah. Ini bahkan melebihi batas Instans Terkelola Lambda 90 menit, sehingga eksekusi gagal terlepas dari mode kapasitas. Gunakan pola fungsi perantara untuk alur kerja selama ini.
penting
Konfigurasikan batas waktu eksekusi tahan lama Anda dalam batas yang berlaku saat menggunakan pemetaan sumber peristiwa, atau pembuatan pemetaan sumber peristiwa gagal. Batasnya adalah 15 menit secara default, atau hingga 90 menit pada Instans Terkelola Lambda. Jika alur kerja Anda membutuhkan waktu eksekusi yang lebih lama, gunakan pola fungsi perantara yang dijelaskan di bawah ini.
Mengkonfigurasi pemetaan sumber peristiwa
Konfigurasikan pemetaan sumber peristiwa untuk fungsi tahan lama menggunakan konsol Lambda, AWS CLI, atau SDK. AWS Semua properti pemetaan sumber peristiwa standar berlaku untuk fungsi tahan lama:
aws lambda create-event-source-mapping \ --function-name arn:aws:lambda:us-east-1:123456789012:function:my-durable-function:1 \ --event-source-arn arn:aws:sqs:us-east-1:123456789012:my-queue \ --batch-size 10 \ --maximum-batching-window-in-seconds 5
Ingatlah untuk menggunakan ARN yang memenuhi syarat (dengan nomor versi atau alias) saat mengonfigurasi pemetaan sumber peristiwa untuk fungsi tahan lama.
Penanganan kesalahan dengan pemetaan sumber peristiwa
Pemetaan sumber peristiwa menyediakan penanganan kesalahan bawaan yang berfungsi dengan fungsi tahan lama:
-
Perilaku coba lagi: Jika pemanggilan awal gagal, pemetaan sumber peristiwa akan mencoba lagi sesuai dengan konfigurasi coba ulang. Konfigurasikan upaya coba ulang maksimum dan interval coba ulang berdasarkan kebutuhan Anda.
-
Dead-letter antrean: Konfigurasikan antrian huruf mati untuk menangkap catatan yang gagal setelah semua percobaan ulang. Ini mencegah hilangnya pesan dan memungkinkan pemeriksaan manual terhadap catatan yang gagal.
-
Kegagalan batch sebagian: Untuk Amazon SQS dan Kinesis, gunakan pelaporan kegagalan batch sebagian untuk memproses catatan satu per satu dan hanya mencoba lagi catatan gagal.
-
Membagi dua pada kesalahan: Untuk Kinesis dan DynamoDB Streams, aktifkan bisect on error untuk membagi batch yang gagal dan mengisolasi catatan yang bermasalah.
catatan
Fungsi tahan lama mendukung antrean huruf mati (DLQ) untuk penanganan kesalahan, tetapi tidak mendukung tujuan Lambda. Konfigurasikan DLQ untuk menangkap catatan dari pemanggilan yang gagal.
Untuk informasi lengkap tentang penanganan kesalahan pemetaan sumber peristiwa, lihat pemetaan sumber peristiwa.
Menggunakan fungsi perantara untuk alur kerja yang berjalan lama
Jika alur kerja Anda memerlukan lebih dari batas pemetaan sumber peristiwa yang berlaku (15 menit secara default, atau 90 menit pada Instans Terkelola Lambda), gunakan fungsi Lambda standar perantara antara pemetaan sumber peristiwa dan fungsi tahan lama Anda. Fungsi perantara menerima peristiwa dari pemetaan sumber peristiwa dan memanggil fungsi tahan lama secara asinkron, menghapus batas durasi eksekusi.
Pola ini memisahkan model pemanggilan sinkron pemetaan sumber peristiwa dari model eksekusi fungsi tahan lama yang berjalan. Pemetaan sumber peristiwa memanggil fungsi perantara, yang dengan cepat kembali setelah memulai eksekusi tahan lama. Fungsi tahan lama kemudian berjalan secara independen selama dibutuhkan (hingga 1 tahun).
Arsitektur
Pola fungsi perantara menggunakan tiga komponen:
-
Pemetaan sumber peristiwa: J ajak pendapat sumber peristiwa (Amazon SQS, Kinesis, DynamoDB Streams) dan memanggil fungsi perantara secara sinkron dengan kumpulan catatan.
-
Fungsi perantara: Fungsi Lambda standar yang menerima peristiwa dari pemetaan sumber peristiwa, memvalidasi dan mengubah data jika diperlukan, dan memanggil fungsi tahan lama secara asinkron. Fungsi ini selesai dengan cepat (biasanya di bawah 1 detik) dan mengembalikan kontrol ke pemetaan sumber peristiwa.
-
Fungsi tahan lama: Memproses acara dengan logika multi-langkah yang kompleks yang dapat berjalan untuk waktu yang lama. Dipanggil secara asinkron, jadi tidak dibatasi oleh batas durasi eksekusi pemetaan sumber peristiwa.
Implementasi
Fungsi perantara menerima seluruh peristiwa dari pemetaan sumber peristiwa dan memanggil fungsi tahan lama secara asinkron. Gunakan parameter nama eksekusi untuk memastikan eksekusi idempotent dimulai, mencegah pemrosesan duplikat jika pemetaan sumber peristiwa mencoba lagi:
Untuk idempotensi dalam fungsi perantara itu sendiri, gunakan Powertools for untuk AWS Lambda mencegah pemanggilan duplikat dari fungsi tahan lama jika pemetaan sumber peristiwa mencoba lagi fungsi perantara.
Fungsi tahan lama menerima payload dengan nama eksekusi dan memproses semua catatan dengan logika yang berjalan lama:
Pertimbangan utama
Pola ini menghapus batas durasi eksekusi pemetaan sumber peristiwa dengan memisahkan pemetaan sumber peristiwa dari eksekusi tahan lama. Fungsi perantara kembali segera setelah memulai eksekusi tahan lama, memungkinkan pemetaan sumber peristiwa untuk melanjutkan pemrosesan. Fungsi tahan lama kemudian berjalan secara independen selama diperlukan.
Fungsi perantara berhasil ketika memanggil fungsi tahan lama, bukan ketika eksekusi tahan lama selesai. Jika eksekusi tahan lama gagal nanti, pemetaan sumber peristiwa tidak akan dicoba lagi karena sudah berhasil memproses batch. Terapkan penanganan kesalahan dalam fungsi tahan lama dan konfigurasikan antrian surat mati untuk eksekusi yang gagal.
Gunakan parameter nama eksekusi untuk memastikan eksekusi idempotent dimulai. Jika pemetaan sumber peristiwa mencoba lagi fungsi perantara, fungsi tahan lama tidak akan memulai eksekusi duplikat karena nama eksekusi sudah ada.
Sumber acara yang didukung
Fungsi tahan lama mendukung semua sumber peristiwa Lambda yang menggunakan pemetaan sumber peristiwa:
Antrian Amazon SQS (standar dan FIFO)
Aliran Kinesis
DynamoDB Streams
Amazon Managed Streaming for Apache Kafka (Amazon MSK)
Self-managed Apache Kafka
Amazon MQ (ActiveMQ dan RabbitMQ)
Aliran perubahan Amazon DocumentDB
Semua jenis sumber peristiwa tunduk pada batas eksekusi tahan lama yang dijelaskan sebelumnya (15 menit secara default) saat memanggil fungsi tahan lama. Pada Instans Terkelola Lambda, batas meningkat menjadi 90 menit untuk sumber peristiwa ini, kecuali Amazon MQ dan Amazon DocumentDB, yang tetap dibatasi hingga 15 menit.