Menangani kondisi kesalahan di mesin status Step Functions - AWS Step Functions

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.

  1. Buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/.

  2. Pilih Buat fungsi.

  3. Pilih Gunakan cetak biru, cariStep Functions, dan pilih Lempar kesalahan khusus.

  4. Untuk Nama fungsi, masukkan ThrowErrorFunction.

  5. Untuk Peran, pilih Buat peran baru dengan izin Lambda dasar.

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

  1. Pilih tab Uji.

  2. Pilih Buat acara baru dan pertahankan Event JSON default

  3. Pilih Uji untuk menjalankan fungsi Anda dengan acara pengujian Anda.

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

  1. Buka konsol Step Functions, pilih State Machines dari menu, lalu pilih Create state machine.

  2. Pilih Buat dari kosong, dan untuk nama mesin Negara, masukkanCatchErrorStateMachine.

  3. Terima tipe default (Standar), lalu pilih Lanjutkan untuk mengedit mesin status Anda di Workflow Studio.

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

  1. Beralih kembali ke mode Desain dan pilih Lambda: Memanggil status tugas bernama. CreateAccount

  2. Pada tab Konfigurasi, cari Argumen API. Untuk nama Fungsi pilih fungsi Lambda yang Anda buat sebelumnya.

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

  1. Di editor, pilih Execute.

    Atau, dari daftar mesin Negara, pilih Mulai eksekusi.

  2. Dalam kotak dialog Mulai eksekusi, terima ID yang dihasilkan, dan untuk Input, masukkan JSON berikut:

    { "Cause" : "Custom Function Error" }
  3. 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:

Screenshot ilustratif dari alur kerja yang menangkap kesalahan kustom.

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.