Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengatur fungsi Lambda dengan Fungsi Langkah
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 tahan lama Lambda. Untuk bantuan memilih di antara opsi ini, lihat Fungsi tahan lama atau Fungsi Langkah.
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 Fungsi Langkah 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 karena semakin kompleks.
Kapan menggunakan Fungsi Langkah dengan Lambda
Skenario berikut adalah contoh yang baik ketika Fungsi Langkah sangat cocok untuk mengatur Lambda-based aplikasi.
Pemrosesan berurutan
Pemrosesan berurutan 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 Fungsi Langkah 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 respons 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. Fungsi Langkah mengkoordinasikan fungsi-fungsi ini dengan:
Menjalankan tugas dalam urutan yang benar
Meneruskan 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
catatan
Code-first alternatif: Untuk pemrosesan berurutan dengan checkpointing berbasis kode dan coba lagi, lihat langkah-langkah fungsi tahan lama Lambda.
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 backkoff 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 Men angani kesalahan
Fungsi Lambda tunggal 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, tangkap kesalahan dan pilih alur lain
Gunakan fungsi Lambda tunggal yang berfokus hanya pada pemrosesan pembayaran. Fungsi Langkah mengelola penanganan kesalahan dengan:
Secara otomatis mencoba ulang 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
catatan
Code-first alternatif: Fungsi tahan lama menyediakan penanganan kesalahan try-catch dengan strategi coba ulang yang dapat dikonfigurasi. Lihat Pen anganan kesalahan dalam fungsi tahan lama.
Alur kerja bersyarat dan persetujuan manusia
Gunakan status Pilihan Fungsi Langkah untuk merutekan alur kerja berdasarkan output fungsi dan akhiran tunggu untuk menjeda ForTaskToken al ur kerja untuk keputusan manusia. Misalnya, untuk memproses permintaan kenaikan batas kredit, gunakan fungsi Lambda untuk mengevaluasi faktor risiko. Kemudian, gunakan Fungsi Langkah 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 panggilan balik, lihat Pang gilan Balik dengan Token Tugas
Fungsi Lambda tunggal mengelola alur kerja persetujuan yang kompleks dengan:
Menerapkan logika kondisional bersarang untuk mengevaluasi permintaan kredit
Memanggil fungsi persetujuan yang berbeda berdasarkan jumlah permintaan
Mengelola beberapa jalur persetujuan dan poin keputusan
Melacak keadaan 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
catatan
Code-first alternatif: Fungsi tahan lama mendukung panggilan balik untuk alur kerja manusia-in-the-loop. Lihat Pang gilan Balik dalam fungsi tahan lama.
Pemrosesan paralel
Fungsi Langkah menyediakan tiga cara untuk menangani pemrosesan paralel:
-
Status Paralel mengeksekusi beberapa cabang alur kerja Anda secara bersamaan. Gunakan ini ketika Anda perlu menjalankan fungsi yang berbeda secara paralel, seperti menghasilkan 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 ketika Anda membutuhkan konkurensi yang lebih tinggi.
Fungsi Lambda tunggal mencoba mengelola pemrosesan paralel dengan:
Secara bersamaan memanggil beberapa fungsi pemrosesan gambar
Menerapkan logika eksekusi paralel khusus
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 thumbnail, 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
catatan
Code-first alternatif: Fungsi tahan lama menyediakan parallel() dan map() operasi. Lihat Eksekusi Paralel.
Kapan tidak menggunakan Fungsi Langkah dengan Lambda
Tidak semua Lambda-based aplikasi mendapat manfaat dari menggunakan Fungsi Langkah. Pertimbangkan skenario ini saat memilih arsitektur aplikasi Anda.
Aplikasi sederhana
catatan
Untuk alur kerja yang tidak memerlukan desain visual atau integrasi layanan ekstensif, fungsi tahan lama Lambda 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 dapat menambah kerumitan yang tidak perlu. Misalnya, jika Anda hanya memproses pesan dari antrian Amazon SQS atau menanggapi EventBridge peristiwa Amazon, Anda dapat mengonfigurasi layanan ini untuk memanggil 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.
Pengolahan data yang kompleks
Anda dapat menggunakan status Peta Ter distribusi Fungsi Langkah untuk secara bersamaan memproses kumpulan data Amazon S3 besar 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 berikut:
-
Pipeline transformasi data: Gunakan AWS Glue untuk pekerjaan ETL yang memproses data terstruktur atau semi-terstruktur dari berbagai sumber. AWS Glue sangat berguna ketika Anda memerlukan katalog data bawaan dan kemampuan manajemen skema.
-
Analisis data: Gunakan Amazon EMR untuk analisis data skala petabyte, terutama saat Anda membutuhkan alat Apache Hadoop ekosistem atau untuk beban kerja pembelajaran mesin yang melebihi batas memori Lambda. Konfigurasikan memori fungsi Lambda
CPU-intensive beban kerja
Meskipun Fungsi Langkah dapat mengatur CPU-intensive tugas, 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 berikut:
-
Orkestrasi kontainer: Gunakan Fungsi Langkah untuk mengelola tugas Amazon Elastic Container Service (Amazon ECS) untuk sumber daya komputasi yang lebih konsisten dan dapat diskalakan.
-
Pemrosesan batch: Integrasikan AWS Batch dengan Fungsi Langkah untuk mengelola pekerjaan batch komputasi intensif yang memerlukan penggunaan CPU berkelanjutan.