Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menangani kondisi kesalahan di mesin status Step Functions
Dalam tutorial ini, Anda membuat mesin AWS Step Functions status dengan status Tugas yang memanggil contoh fungsi Lambda yang dibangun untuk melempar kesalahan khusus.
Tugas adalah salah satuStatus fallback, di mana Anda dapat mengkonfigurasi Catch
bidang. Ketika kesalahan diterima oleh integrasi, langkah selanjutnya dipilih oleh bidang catch berdasarkan nama kesalahan.
Langkah 1: Buat fungsi Lambda yang menimbulkan kesalahan
Gunakan fungsi Lambda untuk menyimulasikan kondisi kesalahan.
-
Buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/
. -
Pilih Buat fungsi.
-
Pilih Gunakan cetak biru, cari
Step Functions
, dan pilih Lempar kesalahan khusus. -
Untuk Nama fungsi, masukkan
ThrowErrorFunction
. -
Untuk Peran, pilih Buat peran baru dengan izin Lambda dasar.
-
Pilih Buat fungsi.
Kode berikut harus ditampilkan di panel kode.
export const handler = async () => { function CustomError(message) { this.name = 'CustomError'; this.message = message; } CustomError.prototype = new Error(); throw new CustomError('This is a custom error!'); };
Langkah 2: Uji fungsi Lambda Anda
Sebelum membuat mesin status, verifikasi fungsi Lambda Anda melempar Anda CustomError
saat dipanggil.
-
Pilih tab Uji.
-
Pilih Buat acara baru dan pertahankan Event JSON default
-
Pilih Uji untuk menjalankan fungsi Anda dengan acara pengujian Anda.
-
Perluas fungsi Eksekusi untuk meninjau detail kesalahan yang dilemparkan.
Anda sekarang memiliki fungsi Lambda yang siap untuk melempar kesalahan khusus.
Pada langkah berikutnya, Anda akan menyiapkan mesin status untuk menangkap dan mencoba lagi kesalahan itu.
Langkah 3: Buat mesin mesin negara Anda
Gunakan konsol Step Functions untuk membuat mesin status yang menggunakan Catch
konfigurasi Status alur kerja tugas with. Mesin status akan memanggil fungsi Lambda, yang telah Anda buat untuk mensimulasikan melempar kesalahan saat fungsi dipanggil. Step Functions mencoba ulang fungsi menggunakan backoff eksponensial antara percobaan ulang.
-
Buka konsol Step Functions
, pilih State Machines dari menu, lalu pilih Create state machine. -
Pilih Buat dari kosong, dan untuk nama mesin Negara, masukkan
CatchErrorStateMachine
. -
Terima tipe default (Standar), lalu pilih Lanjutkan untuk mengedit mesin status Anda di Workflow Studio.
-
Pilih Kode untuk beralih ke editor ASL, lalu ganti kode dengan definisi mesin status berikut:
{ "Comment": "Example state machine that can catch a custom error thrown by a function integration.", "StartAt": "CreateAccount", "States": { "CreateAccount": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Output": "{% $states.result.Payload %}", "Arguments": { "FunctionName": "arn:aws:lambda:
region
:account-id
:function:ThrowErrorFunction:$LATEST", "Payload": "{% $states.input %}" }, "Catch": [ { "ErrorEquals": [ "CustomError" ], "Next": "CustomErrorFallback" }, { "ErrorEquals": [ "States.ALL" ], "Next": "CatchAllFallback" } ], "End": true, "Retry": [ { "ErrorEquals": [ "CustomError", "Lambda.ServiceException", "Lambda.AWSLambdaException", "Lambda.SdkClientException", "Lambda.TooManyRequestsException" ], "IntervalSeconds": 1, "MaxAttempts": 3, "BackoffRate": 2, "JitterStrategy": "FULL" } ] }, "CustomErrorFallback": { "Type": "Pass", "End": true, "Output": { "Result": "Fallback from a custom error function." } }, "CatchAllFallback": { "Type": "Pass", "End": true, "Output": { "Result": "Fallback from all other error codes." } } }, "QueryLanguage": "JSONata" }
Langkah 4: Konfigurasikan mesin negara Anda
Sebelum Anda menjalankan mesin status Anda, Anda harus terlebih dahulu terhubung ke fungsi Lambda yang sebelumnya Anda buat.
-
Beralih kembali ke mode Desain dan pilih Lambda: Memanggil status tugas bernama. CreateAccount
Pada tab Konfigurasi, cari Argumen API. Untuk nama Fungsi pilih fungsi Lambda yang Anda buat sebelumnya.
Pilih Buat, tinjau peran, lalu pilih Konfirmasi untuk membuat mesin status Anda.
Langkah 5: Jalankan mesin negara
Setelah Anda membuat dan mengkonfigurasi mesin status Anda, Anda dapat menjalankannya dan memeriksa alirannya.
-
Di editor, pilih Execute.
Atau, dari daftar mesin Negara, pilih Mulai eksekusi.
-
Dalam kotak dialog Mulai eksekusi, terima ID yang dihasilkan, dan untuk Input, masukkan JSON berikut:
{ "Cause" : "Custom Function Error" }
-
Pilih Mulai Eksekusi.
Konsol Step Functions mengarahkan Anda ke halaman yang berjudul dengan ID eksekusi Anda, yang dikenal sebagai halaman Detail Eksekusi. Anda dapat meninjau hasil eksekusi saat alur kerja berlangsung dan setelah selesai.
Untuk meninjau hasil eksekusi, pilih status individual pada tampilan Grafik, lalu pilih tab individual di Detail langkah panel untuk melihat detail setiap status termasuk input, output, dan definisi masing-masing. Untuk detail tentang informasi eksekusi yang dapat Anda lihat di halaman Rincian Eksekusi, lihatIkhtisar detail eksekusi.
Mesin status Anda memanggil fungsi Lambda, yang melempar a. CustomError
Pilih CreateAccountlangkah dalam tampilan Grafik untuk melihat output status. Output mesin status Anda akan terlihat mirip dengan ilustrasi berikut:

Selamat!
Anda sekarang memiliki mesin status yang dapat menangkap dan menangani kondisi kesalahan yang dilemparkan oleh fungsi Lambda. Anda dapat menggunakan pola ini untuk menerapkan penanganan kesalahan yang kuat dalam alur kerja Anda.
catatan
Anda juga dapat membuat mesin status yang Coba lagi pada batas waktu atau yang digunakan Catch
untuk transisi ke status tertentu ketika terjadi kesalahan atau batas waktu. Untuk contoh dari teknik penanganan kesalahan ini, lihat Contoh yang Menggunakan Coba Ulang dan Menggunakan Tangkapan.