Kesalahan debug di konsol 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.

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 di Choice 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.

  1. Buka konsol Step Functions dan kemudian pilih CreditCardWorkflowstate machine.

  2. 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" }, ... ... } }
  3. Pilih Simpan dan kemudian pilih Simpan.

  4. Jalankan mesin negara.

  5. Pada halaman Rincian Eksekusi eksekusi mesin status Anda, lakukan salah satu hal berikut:

    1. Pilih Penyebab pada pesan kesalahan untuk melihat alasan kegagalan eksekusi.

    2. Pilih Tampilkan detail langkah pada pesan kesalahan untuk melihat langkah yang menyebabkan kesalahan.

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

  7. Dalam tampilan Grafik, pastikan Kredit diterapkan >= 5000? dipilih dan lakukan hal berikut:

    1. Lihat nilai masukan negara bagian di kotak Input.

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

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

  1. 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 } } }
  2. Jalankan mesin negara.

  3. Pada halaman Rincian Eksekusi eksekusi mesin status Anda, lakukan hal berikut:

    1. Pilih Penyebab pada pesan kesalahan untuk melihat alasan kegagalan eksekusi.

    2. Pilih Tampilkan detail langkah pada pesan kesalahan untuk melihat langkah yang menyebabkan kesalahan.

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

  5. Untuk merujuk ke node $.payload.body.message, lakukan hal berikut:

    1. Gunakan fungsi States.StringToJSON intrinsik untuk terlebih dahulu mengonversi string ke format. JSON

    2. Tentukan JSON jalur untuk node $.payload.body.message di dalam fungsi intrinsik.

      "ResultSelector": { "identity.$":"States.StringToJson($.Payload.body.message)" }
  6. 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.