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
Fungsi Lambda yang mengelola banyak tugas, mengimplementasikan logika coba lagi, atau berisi logika percabangan adalah anti-pola. Sebagai gantinya, sebaiknya tulis fungsi Lambda yang melakukan tugas tunggal dan menggunakan AWS Step Functions untuk mengatur alur kerja aplikasi Anda.
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 kapan harus menggunakan Step Functions 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

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
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:
Secara otomatis mencoba kembali tugas yang gagal dengan periode backoff yang dapat dikonfigurasi
Menerapkan kebijakan coba ulang yang berbeda berdasarkan jenis kesalahan
Merutekan berbagai jenis kesalahan ke status fallback yang sesuai
Mempertahankan status dan riwayat penanganan kesalahan
contoh grafik alur kerja

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

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

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
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:
-
Pipa transformasi data: Digunakan AWS Glue untuk pekerjaan ETL yang memproses data terstruktur atau semi-terstruktur dari berbagai sumber. AWS Glue sangat berguna ketika Anda membutuhkan katalog data bawaan dan kemampuan manajemen skema.
-
Analisis data: Gunakan EMR Amazon untuk analitik data skala petabyte, terutama saat Anda membutuhkannya Apache Hadoop alat ekosistem atau untuk beban kerja pembelajaran mesin yang melebihi batas memori Lambda.
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.