Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kesalahan debug di konsol Step Functions
Pada topik sebelumnyaKonfigurasikan input dan output, Anda belajar tentang memfilter dan memanipulasi data. Dalam konfigurasi mesin status dan pemilihan data Anda, Anda mungkin mengalami kesalahan. Dalam topik terakhir ini, Anda akan diperkenalkan ke kesalahan runtime debugging menggunakan konsol Step Functions.
Anda mungkin mengalami kesalahan runtime, seperti:
JSONJalur yang tidak valid untuk
Variable
lapangan diChoice
negara bagian.Masalah definisi mesin status, seperti tidak ada aturan pencocokan yang ditentukan untuk suatu
Choice
status.Ekspresi JSON jalur tidak valid saat menerapkan filter untuk memanipulasi input dan output.
Kegagalan tugas karena pengecualian fungsi Lambda.
IAMkesalahan izin.
Tip
Untuk opsi penanganan kesalahan tambahan, lihatMenangani kesalahan dalam alur kerja Step Functions.
Mendebug kesalahan status Pilihan jalur yang tidak valid
Bila Anda menentukan JSON jalur yang salah atau tidak dapat dipecahkan di bidang Variabel Choice
status atau tidak menentukan aturan yang cocok dalam Choice
status, Anda menerima kesalahan saat menjalankan alur kerja Anda.
Untuk mengilustrasikan kesalahan jalur yang tidak valid, tutorial ini memperkenalkan kesalahan Choice
status dalam alur kerja Anda. Anda akan menggunakan mesin CreditCardWorkflowstatus dan mengedit definisinya untuk memperkenalkan kesalahan.
Buka konsol Step Functions dan kemudian pilih CreditCardWorkflowstate machine.
Pilih Edit untuk mengedit definisi mesin status. Buat perubahan yang disorot dalam kode berikut ke definisi mesin status Anda.
{ "Comment": "A description of my state machine", "StartAt": "Get credit limit", "States": { "Get credit limit": { ... ... }, "Credit applied >= 5000?": { "Type": "Choice", "Choices": [ { "Variable": "$.Payload", "NumericLessThan": 5000, "Next": "Auto-approve limit" }, { "Variable": "$.Payload", "NumericGreaterThanEquals": 5000, "Next": "Wait for human approval" } ], "Default": "Wait for human approval" }, ... ... } }
Pilih Simpan dan kemudian pilih Simpan.
Jalankan mesin negara.
Pada halaman Rincian Eksekusi eksekusi mesin status Anda, lakukan salah satu hal berikut:
Pilih Penyebab pada pesan kesalahan untuk melihat alasan kegagalan eksekusi.
Pilih Tampilkan detail langkah pada pesan kesalahan untuk melihat langkah yang menyebabkan kesalahan.
Di Input & Output tab dari bagian Detail langkah, pilih tombol sakelar Tampilan lanjutan untuk melihat jalur transfer data input dan output untuk status yang dipilih.
Dalam tampilan Grafik, pastikan Kredit diterapkan >= 5000? dipilih dan lakukan hal berikut:
Lihat nilai masukan negara bagian di kotak Input.
Pilih tab Definisi, dan perhatikan JSON jalur yang ditentukan untuk bidang Variabel.
Nilai masukan untuk Kredit yang diterapkan >= 5000? state adalah nilai numerik, sementara Anda telah menentukan JSON jalur untuk nilai input sebagai
$.Payload
. Selama eksekusi mesin status,Choice
status tidak dapat menyelesaikan JSON jalur ini karena tidak ada.
Edit mesin status untuk menentukan nilai bidang Variabel sebagai
$
.{ "Comment": "A description of my state machine", "StartAt": "Get credit limit", "States": { "Get credit limit": { ... ... }, "Credit applied >= 5000?": { "Type": "Choice", "Choices": [ { "Variable": "$", "NumericLessThan": 5000, "Next": "Auto-approve limit" }, { "Variable": "$", "NumericGreaterThanEquals": 5000, "Next": "Wait for human approval" } ], "Default": "Wait for human approval" }, ... ... } }
Mendebug kesalahan ekspresi JSON jalur saat menerapkan filter input dan output
Saat Anda bekerja dengan filter input dan output, Anda mungkin mengalami kesalahan runtime yang timbul karena menentukan ekspresi jalur yang tidak validJSON.
Contoh berikut menggunakan mesin WorkflowInputOutputstatus yang Anda buat di Tutorial 5 dan menunjukkan skenario di mana Anda menggunakan ResultSelector
filter untuk memilih bagian dari output tugas.
Terapkan
ResultSelector
filter untuk memilih sebagian dari output tugas untuk langkah Verifikasi identitas. Untuk melakukan ini, edit definisi mesin status Anda sebagai berikut:{ "StartAt": "Verify identity", "States": { "Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:
check-identity
", "Payload": { "email": "jdoe@example.com", "ssn": "123-45-6789" } }, ... ... "ResultSelector": { "identity.$": "$.Payload.body.message" }", "End": true } } }Jalankan mesin negara.
Pada halaman Rincian Eksekusi eksekusi mesin status Anda, lakukan hal berikut:
Pilih Penyebab pada pesan kesalahan untuk melihat alasan kegagalan eksekusi.
Pilih Tampilkan detail langkah pada pesan kesalahan untuk melihat langkah yang menyebabkan kesalahan.
Dalam pesan kesalahan, perhatikan bahwa isi node $.payload.body adalah string yang lolos. JSON Kesalahan telah terjadi karena Anda tidak dapat merujuk ke string menggunakan notasi JSON jalur.
Untuk merujuk ke node $.payload.body.message, lakukan hal berikut:
Gunakan fungsi
States.StringToJSON
intrinsik untuk terlebih dahulu mengonversi string ke format. JSONTentukan JSON jalur untuk node $.payload.body.message di dalam fungsi intrinsik.
"ResultSelector": { "identity.$":"States.StringToJson($.Payload.body.message)" }
Jalankan mesin negara lagi.
Kesimpulan dan langkah selanjutnya
Selamat! Anda telah mencapai akhir Tutorial memulai dengan Step Functions.
Pembersihan
Sekarang setelah Anda menyelesaikan Memulai, ini adalah praktik yang baik untuk membersihkan (menghapus) sumber daya apa pun yang tidak ingin Anda gunakan lagi. Membersihkan AWS sumber daya mencegah akun Anda dikenakan biaya lebih lanjut.