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. Catch
Bidang 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.
-
Buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/
. -
Pilih Buat fungsi.
-
Pilih Gunakan cetak biru, masukkan
step-functions
ke dalam kotak pencarian, lalu pilih Lempar cetak biru kesalahan kustom. -
Untuk Nama fungsi, masukkan
FailFunction
. -
Untuk Peran, pertahankan pilihan default (Buat peran baru dengan izin Lambda dasar).
-
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 kesalahanThis is a custom error!
. -
Pilih Buat fungsi.
-
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
-
Pilih Deploy.
Langkah 2: Uji fungsi Lambda
Uji fungsi Lambda Anda untuk melihatnya beroperasi.
-
Pada FailFunctionhalaman, pilih tab Uji, lalu pilih Uji. Anda tidak perlu membuat acara pengujian.
-
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.
-
Buka Konsol Step Functions
dan pilih Buat mesin status. -
Dalam kotak dialog Pilih templat, pilih Kosong.
-
Pilih Pilih untuk membuka Workflow Studio diMode desain.
-
Pilih Kode untuk membuka editor kode. Di editor kode, Anda menulis dan mengedit definisi Amazon States Language (ASL) alur kerja Anda.
-
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
bernamaCreateAccount
. 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 diLambda.Unknown
,States.ALL
, atauStates.TaskFailed
untuk menangani kesalahan ini. Ketika Lambda mencapai jumlah maksimum permintaan, kesalahannya adalahLambda.TooManyRequestsException
. Untuk informasi selengkapnya tentang LambdaHandled
danUnhandled
kesalahan, lihatFunctionError
di AWS Lambda Panduan Pengembang. -
(Opsional) DiVisualisasi grafik, lihat visualisasi grafis real-time dari alur kerja Anda.
-
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
. -
(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.
-
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.
-
Pada halaman State Machines, pilih Catchfailure.
-
Pada halaman Catchfailure, pilih Mulai eksekusi. Kotak dialog Mulai eksekusi ditampilkan.
-
Dalam kotak dialog Mulai eksekusi, lakukan hal berikut:
-
(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
-
(Opsional) Dalam kotak Input, masukkan nilai input dalam JSON format untuk menjalankan alur kerja Anda.
-
Pilih Mulai Eksekusi.
-
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.
catatan
Anda dapat mempertahankan input status dengan kesalahan dengan menggunakan
ResultPath
. Lihat Gunakan ResultPath untuk Menyertakan Kesalahan dan Input dalam Catch. -