Mengatur fungsi Lambda dengan Step Functions - AWS Lambda

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengatur fungsi Lambda dengan Step Functions

AWS Step Functions menyediakan orkestrasi alur kerja visual untuk mengoordinasikan fungsi Lambda dengan layanan lain. AWS Dengan integrasi asli ke 220+ AWS layanan dan infrastruktur tanpa pemeliharaan yang dikelola sepenuhnya, Step Functions sangat ideal ketika Anda membutuhkan desain alur kerja visual dan integrasi layanan yang dikelola sepenuhnya.

Untuk orkestrasi menggunakan bahasa pemrograman standar dalam Lambda di mana logika alur kerja hidup bersama logika bisnis, pertimbangkan fungsi Lambda yang tahan lama. Untuk bantuan memilih di antara opsi-opsi ini, lihat Fungsi tahan lama atau Step Functions.

Misalnya, memproses pesanan mungkin memerlukan validasi detail pesanan, memeriksa tingkat inventaris, memproses pembayaran, dan membuat faktur. Tulis fungsi Lambda terpisah untuk setiap tugas dan gunakan Step Functions untuk mengelola alur kerja. Step Functions mengkoordinasikan aliran data antara fungsi Anda dan menangani kesalahan pada setiap langkah. Pemisahan ini membuat alur kerja Anda lebih mudah untuk divisualisasikan, dimodifikasi, dan dipelihara saat mereka tumbuh lebih kompleks.

Kapan menggunakan Step Functions dengan Lambda

Skenario berikut adalah contoh yang baik ketika Step Functions sangat cocok untuk mengatur aplikasi berbasis Lambda.

Pemrosesan berurutan

Pemrosesan sekuensial adalah ketika satu tugas harus diselesaikan sebelum tugas berikutnya dapat dimulai. Misalnya, dalam sistem pemrosesan pesanan, pemrosesan pembayaran tidak dapat dimulai sampai validasi pesanan selesai, dan pembuatan faktur harus menunggu konfirmasi pembayaran. Tulis fungsi Lambda terpisah untuk setiap tugas dan gunakan Step Functions untuk mengelola urutan dan menangani aliran data antar fungsi.

Fungsi Lambda tunggal mengelola seluruh alur kerja pemrosesan pesanan dengan:

  • Memanggil fungsi Lambda lainnya secara berurutan

  • Mengurai dan memvalidasi tanggapan dari setiap fungsi

  • Menerapkan penanganan kesalahan dan logika pemulihan

  • Mengelola aliran data antar fungsi

Gunakan dua fungsi Lambda: satu untuk memvalidasi pesanan dan satu untuk memproses pembayaran. Step Functions mengkoordinasikan fungsi-fungsi ini dengan:

  • Menjalankan tugas dalam urutan yang benar

  • Melewati data antar fungsi

  • Menerapkan penanganan kesalahan pada setiap langkah

  • Menggunakan status Pilihan untuk memastikan hanya pesanan yang valid yang dilanjutkan ke pembayaran

contoh grafik alur kerja
Grafik alur kerja Step Functions menunjukkan validasi pesanan, status pilihan, dan pemrosesan pembayaran dengan jalur keberhasilan dan kegagalan

Penanganan kesalahan yang kompleks

Sementara Lambda menyediakan kemampuan coba ulang untuk pemanggilan asinkron dan pemetaan sumber peristiwa, Step Functions menawarkan penanganan kesalahan yang lebih canggih untuk alur kerja yang kompleks. Anda dapat mengonfigurasi percobaan ulang otomatis dengan backoff eksponensial dan menetapkan kebijakan coba ulang yang berbeda untuk berbagai jenis kesalahan. Saat percobaan ulang habis, gunakan Catch untuk merutekan kesalahan ke status fallback. Ini sangat berguna ketika Anda memerlukan penanganan kesalahan tingkat alur kerja yang mengoordinasikan beberapa fungsi dan layanan.

Untuk mempelajari selengkapnya tentang penanganan kesalahan fungsi Lambda di mesin status, lihat Menangani kesalahan di Lokakarya. AWS Step Functions

Satu fungsi Lambda menangani semua hal berikut:

  • Upaya untuk memanggil layanan pemrosesan pembayaran

  • Jika layanan pembayaran tidak tersedia, fungsi menunggu dan mencoba lagi nanti.

  • Menerapkan backoff eksponensial khusus untuk waktu tunggu

  • Setelah semua upaya gagal, catch error dan pilih flow lain

Gunakan satu fungsi Lambda yang hanya berfokus pada pemrosesan pembayaran. Step Functions mengelola penanganan kesalahan dengan:

contoh grafik alur kerja
Grafik alur kerja Step Functions untuk pemrosesan pembayaran dengan tiga hasil: pembayaran berhasil, pembayaran tidak valid, dan pembayaran gagal
catatan

Alternatif kode-pertama: Fungsi tahan lama menyediakan penanganan kesalahan try-catch dengan strategi coba ulang yang dapat dikonfigurasi. Lihat Penanganan kesalahan dalam fungsi tahan lama.

Alur kerja bersyarat dan persetujuan manusia

Gunakan status Step Functions Choice untuk merutekan alur kerja berdasarkan output fungsi dan akhiran waitForTask Token untuk menjeda alur kerja untuk keputusan manusia. Misalnya, untuk memproses permintaan kenaikan batas kredit, gunakan fungsi Lambda untuk mengevaluasi faktor risiko. Kemudian, gunakan Step Functions untuk merutekan permintaan berisiko tinggi ke persetujuan manual dan permintaan berisiko rendah ke persetujuan otomatis.

Untuk menerapkan contoh alur kerja yang menggunakan pola integrasi token tugas callback, lihat Callback with Task Token di Workshop. AWS Step Functions

Fungsi Lambda tunggal mengelola alur kerja persetujuan yang kompleks dengan:

  • Menerapkan logika bersyarat bersarang untuk mengevaluasi permintaan kredit

  • Memanggil fungsi persetujuan yang berbeda berdasarkan jumlah permintaan

  • Mengelola beberapa jalur persetujuan dan poin keputusan

  • Melacak status persetujuan yang tertunda

  • Menerapkan batas waktu dan logika notifikasi untuk persetujuan

Gunakan tiga fungsi Lambda: satu untuk mengevaluasi risiko setiap permintaan, satu untuk menyetujui permintaan berisiko rendah, dan satu untuk mengarahkan permintaan berisiko tinggi ke manajer untuk ditinjau. Step Functions mengelola alur kerja dengan:

  • Menggunakan status Pilihan untuk merutekan permintaan berdasarkan jumlah dan tingkat risiko

  • Menjeda eksekusi sambil menunggu persetujuan manusia

  • Mengelola batas waktu untuk persetujuan yang tertunda

  • Memberikan visibilitas ke status saat ini dari setiap permintaan

contoh grafik alur kerja
Grafik alur kerja Step Functions menunjukkan evaluasi permintaan kredit yang bercabang ke persetujuan otomatis atau manajer berdasarkan risiko
catatan

Alternatif kode-pertama: Fungsi tahan lama mendukung panggilan balik untuk alur kerja. human-in-the-loop Lihat Callback dalam fungsi tahan lama.

Pemrosesan paralel

Step Functions menyediakan tiga cara untuk menangani pemrosesan paralel:

  • Status Paralel mengeksekusi beberapa cabang alur kerja Anda secara bersamaan. Gunakan ini saat Anda perlu menjalankan fungsi yang berbeda secara paralel, seperti membuat thumbnail saat mengekstrak metadata gambar.

  • Status Peta Inline memproses array data dengan hingga 40 iterasi bersamaan. Gunakan ini untuk kumpulan data kecil hingga menengah di mana Anda perlu melakukan operasi yang sama pada setiap item.

  • Status Peta Terdistribusi menangani pemrosesan paralel skala besar dengan hingga 10.000 eksekusi bersamaan, mendukung array JSON dan sumber data Amazon Simple Storage Service (Amazon S3). Gunakan ini saat memproses kumpulan data besar atau saat Anda membutuhkan konkurensi yang lebih tinggi.

Fungsi Lambda tunggal mencoba mengelola pemrosesan paralel dengan:

  • Secara bersamaan menjalankan beberapa fungsi pemrosesan gambar

  • Menerapkan logika eksekusi parallel kustom

  • Mengelola batas waktu dan penanganan kesalahan untuk setiap tugas paralel

  • Mengumpulkan dan menggabungkan hasil dari semua fungsi

Gunakan tiga fungsi Lambda: satu untuk membuat gambar mini, satu untuk menambahkan tanda air, dan satu untuk mengekstrak metadata. Step Functions mengelola fungsi-fungsi ini dengan:

  • Menjalankan semua fungsi secara bersamaan menggunakan status Paralel

  • Mengumpulkan hasil dari setiap fungsi ke dalam array yang diurutkan

  • Mengelola batas waktu dan penanganan kesalahan di semua eksekusi paralel

  • Melanjutkan hanya ketika semua cabang paralel selesai

contoh grafik alur kerja
Grafik alur kerja Step Functions dengan tiga fungsi Lambda paralel: buat thumbnail, tambahkan watermark, dan ekstrak metadata
catatan

Alternatif kode-pertama: Penyediaan parallel() dan map() pengoperasian fungsi yang tahan lama. Lihat Eksekusi paralel.

Kapan tidak menggunakan Step Functions dengan Lambda

Tidak semua aplikasi berbasis Lambda mendapat manfaat dari penggunaan Step Functions. Pertimbangkan skenario ini saat memilih arsitektur aplikasi Anda.

Aplikasi sederhana

catatan

Untuk alur kerja yang tidak memerlukan desain visual atau integrasi layanan ekstensif, fungsi Lambda yang tahan lama mungkin merupakan alternatif yang lebih sederhana yang menjaga logika alur kerja dalam kode di dalam Lambda.

Untuk aplikasi yang tidak memerlukan orkestrasi kompleks, menggunakan Step Functions mungkin menambah kompleksitas yang tidak perlu. Misalnya, jika Anda hanya memproses pesan dari antrean Amazon SQS atau menanggapi peristiwa EventBridge Amazon, Anda dapat mengonfigurasi layanan ini untuk menjalankan fungsi Lambda Anda secara langsung. Demikian pula, jika aplikasi Anda hanya terdiri dari satu atau dua fungsi Lambda dengan penanganan kesalahan langsung, pemanggilan Lambda langsung atau arsitektur berbasis peristiwa mungkin lebih mudah untuk diterapkan dan dipelihara.

Pemrosesan data yang kompleks

Anda dapat menggunakan status Peta Terdistribusi Step Functions untuk memproses kumpulan data Amazon S3 besar secara bersamaan dengan fungsi Lambda. Ini efektif untuk banyak beban kerja paralel skala besar, termasuk memproses data semi-terstruktur seperti file JSON atau CSV. Namun, untuk transformasi data yang lebih kompleks atau analitik lanjutan, pertimbangkan alternatif ini:

Beban kerja intensif CPU

Meskipun Step Functions dapat mengatur tugas intensif CPU, fungsi Lambda mungkin tidak cocok untuk beban kerja ini karena sumber daya CPU-nya yang terbatas. Untuk operasi komputasi intensif dalam alur kerja Anda, pertimbangkan alternatif ini:

  • Orkestrasi kontainer: Gunakan Step Functions untuk mengelola tugas Amazon Elastic Container Service (Amazon ECS) untuk sumber daya komputasi yang lebih konsisten dan terukur.

  • Pemrosesan Batch: Integrasikan AWS Batch dengan Step Functions untuk mengelola pekerjaan batch intensif komputasi yang memerlukan penggunaan CPU berkelanjutan.