Menangani kondisi kesalahan menggunakan 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 menggunakan mesin status Step Functions

Dalam tutorial ini, Anda membuat AWS Step Functions mesin negara dengan Status fallback bidang. CatchBidang menggunakan AWS Lambda berfungsi untuk merespons dengan logika bersyarat berdasarkan jenis pesan kesalahan. Ini adalah teknik yang disebut penanganan kesalahan fungsi.

Untuk informasi selengkapnya, silakan lihat AWS Lambda kesalahan fungsi di Node.js di AWS Lambda Panduan Pengembang.

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.

Langkah 1: Buat fungsi Lambda yang gagal

Gunakan fungsi Lambda untuk menyimulasikan kondisi kesalahan.

penting

Pastikan fungsi Lambda Anda berada di bawah yang sama AWS akun dan Wilayah AWS sebagai mesin negara Anda.

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

  2. Pilih Buat fungsi.

  3. Pilih Gunakan cetak biru, masukkan step-functions ke dalam kotak pencarian, lalu pilih Lempar cetak biru kesalahan kustom.

  4. Untuk Nama fungsi, masukkan FailFunction.

  5. Untuk Peran, pertahankan pilihan default (Buat peran baru dengan izin Lambda dasar).

  6. Kode berikut ditampilkan dalam panel Kode fungsi Lambda.

    exports.handler = async (event, context) => { function CustomError(message) { this.name = 'CustomError'; this.message = message; } CustomError.prototype = new Error(); throw new CustomError('This is a custom error!'); };

    Objek context mengembalikan pesan kesalahan This is a custom error!.

  7. Pilih Buat fungsi.

  8. Setelah fungsi Lambda Anda dibuat, salin Amazon Resource Name (ARN) fungsi yang ditampilkan di sudut kanan atas halaman. Berikut ini adalah contohARN:

    arn:aws:lambda:us-east-1:123456789012:function:FailFunction
  9. Pilih Deploy.

Langkah 2: Uji fungsi Lambda

Uji fungsi Lambda Anda untuk melihatnya beroperasi.

  1. Pada FailFunctionhalaman, pilih tab Uji, lalu pilih Uji. Anda tidak perlu membuat acara pengujian.

  2. Untuk meninjau hasil pengujian (kesalahan simulasi), di bawah Hasil eksekusi, perluas Detail.

Langkah 3: Buat mesin status dengan bidang Catch

Gunakan konsol Step Functions untuk membuat mesin status yang menggunakan Status alur kerja tugas status dengan Catch bidang. Tambahkan referensi ke fungsi Lambda Anda dalam status Tugas. Mesin status memanggil fungsi Lambda, yang gagal selama eksekusi. Step Functions mencoba ulang fungsi dua kali menggunakan backoff eksponensial di antara beberapa percobaan ulang.

  1. Buka Konsol Step Functions dan pilih Buat mesin status.

  2. Dalam kotak dialog Pilih templat, pilih Kosong.

  3. Pilih Pilih untuk membuka Workflow Studio diMode desain.

  4. Pilih Kode untuk membuka editor kode. Di editor kode, Anda menulis dan mengedit definisi Amazon States Language (ASL) alur kerja Anda.

  5. Tempel kode berikut, tetapi ganti fungsi Lambda yang Anda buat sebelumnya di Resource bidang. ARN

    { "Comment": "A Catch example of the Amazon States Language using an AWS Lambda function", "StartAt": "CreateAccount", "States": { "CreateAccount": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:FailFunction", "Catch": [ { "ErrorEquals": ["CustomError"], "Next": "CustomErrorFallback" }, { "ErrorEquals": ["States.TaskFailed"], "Next": "ReservedTypeFallback" }, { "ErrorEquals": ["States.ALL"], "Next": "CatchAllFallback" } ], "End": true }, "CustomErrorFallback": { "Type": "Pass", "Result": "This is a fallback from a custom Lambda function exception", "End": true }, "ReservedTypeFallback": { "Type": "Pass", "Result": "This is a fallback from a reserved error code", "End": true }, "CatchAllFallback": { "Type": "Pass", "Result": "This is a fallback from any error code", "End": true } } }

    ARN ini adalah deskripsi dari mesin status Anda menggunakan Bahasan Status Amazon. ARN menentukan satu status Task bernama CreateAccount. Untuk informasi selengkapnya, lihat Struktur Mesin Status.

    Untuk informasi selengkapnya tentang sintaksis bidang Retry, lihat Nyatakan contoh mesin menggunakan Coba Ulang dan menggunakan Catch.

    catatan

    Kesalahan yang tidak tertangani di Lambda dilaporkan sebagai Lambda.Unknown dalam output kesalahan. Ini termasuk out-of-memory kesalahan dan batas waktu fungsi. Anda dapat mencocokkan di Lambda.Unknown, States.ALL, atau States.TaskFailed untuk menangani kesalahan ini. Ketika Lambda mencapai jumlah maksimum permintaan, kesalahannya adalah Lambda.TooManyRequestsException. Untuk informasi selengkapnya tentang Lambda Handled dan Unhandled kesalahan, lihat FunctionError di AWS Lambda Panduan Pengembang.

  6. (Opsional) DiVisualisasi grafik, lihat visualisasi grafis real-time dari alur kerja Anda.

  7. Tentukan nama untuk mesin negara Anda. Untuk melakukan ini, pilih ikon edit di sebelah nama mesin status default MyStateMachine. Kemudian, dalam konfigurasi mesin Negara, tentukan nama di kotak Nama mesin Negara.

    Untuk tutorial ini, masukkan Catchfailure.

  8. (Opsional) Dalam konfigurasi mesin State, tentukan pengaturan alur kerja lainnya, seperti jenis mesin status dan peran pelaksanaannya.

    Untuk tutorial ini, simpan semua pilihan default di pengaturan mesin State.

  9. Dalam kotak dialog Konfirmasi pembuatan peran, pilih Konfirmasi untuk melanjutkan.

    Anda juga dapat memilih Lihat pengaturan peran untuk kembali ke konfigurasi mesin Status.

    catatan

    Jika Anda menghapus IAM peran yang dibuat Step Functions, Step Functions tidak dapat membuatnya kembali nanti. Demikian pula, jika Anda mengubah peran (misalnya, dengan menghapus Step Functions dari prinsipal dalam IAM kebijakan), Step Functions tidak dapat memulihkan pengaturan aslinya nanti.

Langkah 4: Jalankan mesin negara

Setelah Anda membuat mesin status Anda, Anda dapat menjalankannya.

  1. Pada halaman State Machines, pilih Catchfailure.

  2. Pada halaman Catchfailure, pilih Mulai eksekusi. Kotak dialog Mulai eksekusi ditampilkan.

  3. Dalam kotak dialog Mulai eksekusi, lakukan hal berikut:

    1. (Opsional) Masukkan nama eksekusi khusus untuk mengganti default yang dihasilkan.

      Non- ASCII nama dan logging

      Step Functions menerima nama untuk mesin negara, eksekusi, aktivitas, dan label yang berisi ASCII non-karakter. Karena karakter seperti itu tidak akan berfungsi dengan Amazon CloudWatch, kami sarankan hanya menggunakan ASCII karakter sehingga Anda dapat melacak metrik. CloudWatch

    2. (Opsional) Dalam kotak Input, masukkan nilai input dalam JSON format untuk menjalankan alur kerja Anda.

    3. Pilih Mulai Eksekusi.

    4. Konsol Step Functions mengarahkan Anda ke halaman yang berjudul dengan ID eksekusi Anda. Halaman ini dikenal sebagai halaman Detail Eksekusi. Di halaman ini, Anda dapat meninjau hasil eksekusi saat eksekusi berlangsung atau 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.

    Misalnya, untuk melihat pesan kesalahan kustom Anda, pilih CreateAccountlangkah dalam tampilan Grafik, lalu pilih Output tab.

    Screenshot ilustratif dari output dengan pesan kesalahan dari eksekusi.
    catatan

    Anda dapat mempertahankan input status dengan kesalahan dengan menggunakan ResultPath. Lihat Gunakan ResultPath untuk Menyertakan Kesalahan dan Input dalam Catch.