

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
<a name="tutorial-handling-error-conditions"></a>

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 satu[Status fallback](concepts-error-handling.md#error-handling-fallback-states), 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
<a name="create-lambda-function-fail"></a>

Gunakan fungsi Lambda untuk menyimulasikan kondisi kesalahan.

1. Buka AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Pilih **Buat fungsi**.

1. Pilih **Gunakan cetak biru**, cari`Step Functions`, dan pilih **Lempar kesalahan khusus**.

1. Untuk **Nama fungsi**, masukkan `ThrowErrorFunction`.

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

1. 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
<a name="error-conditions-test"></a>

Sebelum membuat mesin status, verifikasi fungsi Lambda Anda melempar Anda `CustomError` saat dipanggil.

1. Pilih tab **Uji**.

1. Pilih **Buat acara baru** dan pertahankan **Event JSON** default

1. Pilih **Uji** untuk menjalankan fungsi Anda dengan acara pengujian Anda.

1. 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
<a name="state-machine-create-step"></a>

Gunakan konsol Step Functions untuk membuat mesin status yang menggunakan `Catch` konfigurasi [Status alur kerja tugas](state-task.md) 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](https://console.aws.amazon.com/states/home), pilih **State Machines** dari menu, lalu pilih **Create state machine**.

1. Pilih **Buat dari kosong**, dan untuk **nama mesin Negara**, masukkan{{CatchErrorStateMachine}}.

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

1. 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
<a name="state-machine-configure"></a>

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** 

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

1. Pilih **Buat**, tinjau peran, lalu pilih **Konfirmasi** untuk membuat mesin status Anda.

## Langkah 5: Jalankan mesin negara
<a name="error-conditions-execution"></a>

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

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

   ```
   { "Cause" : "Custom Function Error" }
   ```

1. 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](concepts-view-execution-details.md#exec-details-intf-step-details) 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*, lihat[Ikhtisar detail eksekusi](concepts-view-execution-details.md#exec-details-interface-overview).

Mesin status Anda memanggil fungsi Lambda, yang melempar a. `CustomError` Pilih **CreateAccount**langkah 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.](http://docs.aws.amazon.com/id_id/step-functions/latest/dg/images/tutorial-console-retry-state-machine-error-output.png)


**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](concepts-error-handling.md#error-handling-retrying-after-an-error) 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](concepts-error-handling.md#error-handling-examples).