View a markdown version of this page

Memeriksa eksekusi mesin status di Fungsi Langkah - AWS Step Functions

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memeriksa eksekusi mesin status di Fungsi Langkah

Dalam tutorial ini, Anda akan belajar bagaimana memeriksa informasi eksekusi yang ditampilkan pada halaman Detail Eksek usi dan melihat alasan eksekusi gagal. Kemudian, Anda akan belajar cara mengakses iterasi yang berbeda dari eksekusi Map status. Terakhir, Anda akan belajar cara mengonfigurasi kolom pada tampilan Tabel dan menerapkan filter yang sesuai untuk melihat hanya informasi yang menarik bagi Anda.

Dalam tutorial ini, Anda membuat mesin status tipe Standar, yang memperoleh harga satu set buah. Untuk melakukan ini, mesin negara menggunakan tiga AWS Lambda fungsi yang mengembalikan daftar acak empat buah, harga setiap buah, dan biaya rata-rata buah. Fungsi Lambda dirancang untuk menimbulkan kesalahan jika harga buah kurang dari atau sama dengan nilai ambang batas.

catatan

Meskipun prosedur berikut berisi petunjuk tentang cara memeriksa detail eksekusi alur kerja Standar, Anda juga dapat memeriksa detail untuk eksekusi alur kerja Express. Untuk informasi tentang perbedaan antara detail eksekusi untuk jenis alur kerja Standar dan Ekspres, lihatPerbedaan pengalaman konsol standar dan Express.

Langkah 1: Buat dan uji fungsi Lambda yang diperlukan

  1. Buka konsol Lambda dan kemudian lakukan langkah 1 hingga 4 di Langkah 1: Membuat fungsi Lambda bagian tersebut. Pastikan untuk memberi nama fungsi GetListOfFruits Lambda.

  2. Setelah Anda membuat fungsi Lambda, salin Nama Sumber Daya Amazon (ARN) fungsi yang ditampilkan. Untuk menyalin ARN, pilih ikon salin untuk menyalin Nama Sumber Daya Amazon fungsi Lambda. Berikut ini adalah contoh ARN, di mana function-name adalah nama fungsi Lambda (dalam hal ini,GetListOfFruits):

    arn:aws:lambda:region:123456789012:function:function-name
  3. Salin kode berikut untuk fungsi Lambda ke area sumber Kode GetListOfFruits halaman.

    function getRandomSubarray(arr, size) { var shuffled = arr.slice(0), i = arr.length, temp, index; while (i--) { index = Math.floor((i + 1) * Math.random()); temp = shuffled[index]; shuffled[index] = shuffled[i]; shuffled[i] = temp; } return shuffled.slice(0, size); } exports.handler = async function(event, context) { const fruits = ['Abiu','Açaí','Acerola','Ackee','African cucumber','Apple','Apricot','Avocado','Banana','Bilberry','Blackberry','Blackcurrant','Jostaberry']; const errorChance = 45; const waitTime = Math.floor( 100 * Math.random() ); await new Promise( r => setTimeout(() => r(), waitTime)); const num = Math.floor( 100 * Math.random() ); // const num = 51; if (num <= errorChance) { throw(new Error('Error')); } return getRandomSubarray(fruits, 4); };
  4. Pilih De ploy, lalu pilih Test, untuk menerapkan perubahan dan melihat output dari fungsi Lambda Anda.

  5. Buat dua fungsi Lambda tambahan, diberi GetFruitPrice nama dan CalculateAverage masing-masing, dengan langkah-langkah berikut:

    1. Salin kode berikut ke area sumber Kode dari fungsi GetFruitPrice Lambda:

      exports.handler = async function(event, context) { const errorChance = 0; const waitTime = Math.floor( 100 * Math.random() ); await new Promise( r => setTimeout(() => r(), waitTime)); const num = Math.floor( 100 * Math.random() ); if (num <= errorChance) { throw(new Error('Error')); } return Math.floor(Math.random()*100)/10; };
    2. Salin kode berikut ke area sumber Kode dari fungsi CalculateAverage Lambda:

      function getRandomSubarray(arr, size) { var shuffled = arr.slice(0), i = arr.length, temp, index; while (i--) { index = Math.floor((i + 1) * Math.random()); temp = shuffled[index]; shuffled[index] = shuffled[i]; shuffled[i] = temp; } return shuffled.slice(0, size); } const average = arr => arr.reduce( ( p, c ) => p + c, 0 ) / arr.length; exports.handler = async function(event, context) { const errors = [ "Error getting data from DynamoDB", "Error connecting to DynamoDB", "Network error", "MemoryError - Low memory" ] const errorChance = 0; const waitTime = Math.floor( 100 * Math.random() ); await new Promise( r => setTimeout(() => r(), waitTime)); const num = Math.floor( 100 * Math.random() ); if (num <= errorChance) { throw(new Error(getRandomSubarray(errors, 1)[0])); } return average(event); };
    3. Pastikan untuk menyalin ARN dari dua fungsi Lambda ini, lalu Deploy dan U ji mereka.

Langkah 2: Buat dan jalankan mesin status

Gunakan konsol Step Functions untuk membuat mesin status yang memanggil fungsi Lambda yang Anda buat di Langkah 1. Dalam mesin keadaan ini, tiga Map keadaan didefinisikan. Masing-masing status ini Map berisi Task status yang memanggil salah satu fungsi Lambda Anda. Selain itu, Retry bidang didefinisikan di setiap Task negara dengan sejumlah upaya percobaan ulang yang ditentukan untuk setiap status. Jika Task status menemukan kesalahan runtime, itu dijalankan lagi hingga jumlah upaya coba lagi yang ditentukan untuk ituTask.

  1. Buka konsol Fungsi Langkah dan pilih T ulis alur kerja Anda dalam kode.

    penting

    Pastikan bahwa mesin status Anda berada di bawah AWS akun dan Wilayah yang sama dengan fungsi Lambda yang Anda buat sebelumnya.

  2. Untuk Jenis, pertahankan pilihan default Standar.

  3. Salin definisi Bahasa Negara Bagian Amazon berikut dan tempel di bawah Definisi. Pastikan untuk mengganti ARN yang ditampilkan dengan fungsi Lambda yang Anda buat sebelumnya.

    { "StartAt": "LoopOverStores", "States": { "LoopOverStores": { "Type": "Map", "Iterator": { "StartAt": "GetListOfFruits", "States": { "GetListOfFruits": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "FunctionName": "arn:aws:lambda:region:123456789012:function:GetListofFruits:$LATEST", "Payload": { "storeName.$": "$" } }, "Retry": [ { "ErrorEquals": [ "States.ALL" ], "IntervalSeconds": 2, "MaxAttempts": 1, "BackoffRate": 1.3 } ], "Next": "LoopOverFruits" }, "LoopOverFruits": { "Type": "Map", "Iterator": { "StartAt": "GetFruitPrice", "States": { "GetFruitPrice": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "FunctionName": "arn:aws:lambda:region:123456789012:function:GetFruitPrice:$LATEST", "Payload": { "fruitName.$": "$" } }, "Retry": [ { "ErrorEquals": [ "States.ALL" ], "IntervalSeconds": 2, "MaxAttempts": 3, "BackoffRate": 1.3 } ], "End": true } } }, "ItemsPath": "$", "End": true } } }, "ItemsPath": "$.stores", "Next": "LoopOverStoreFruitsPrice", "ResultPath": "$.storesFruitsPrice" }, "LoopOverStoreFruitsPrice": { "Type": "Map", "End": true, "Iterator": { "StartAt": "CalculateAverage", "States": { "CalculateAverage": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "FunctionName": "arn:aws:lambda:region:123456789012:function:Calculate-average:$LATEST", "Payload.$": "$" }, "Retry": [ { "ErrorEquals": [ "States.ALL" ], "IntervalSeconds": 2, "MaxAttempts": 2, "BackoffRate": 1.3 } ], "End": true } } }, "ItemsPath": "$.storesFruitsPrice", "ResultPath": "$.storesPriceAverage", "MaxConcurrency": 1 } } }
  4. Masukkan nama untuk mesin status Anda. Simpan pilihan default untuk opsi lain di halaman ini dan pilih Buat mesin status.

  5. Buka halaman berjudul dengan nama mesin status Anda. Lakukan langkah 1 hingga 4 di Langkah 4: Jalankan mesin status bagian ini, tetapi gunakan data berikut sebagai input eksekusi:

    { "stores": [ "Store A", "Store B", "Store C", "Store D" ] }

Langkah 3: Lihat detail eksekusi mesin status

Pada halaman berjudul dengan ID eksekusi Anda, Anda dapat meninjau hasil eksekusi Anda dan men-debug kesalahan apa pun.

  1. (Opsional) Pilih dari tab yang ditampilkan pada halaman Detail Eksek usi untuk melihat informasi yang ada di masing-masing tab. Misalnya, untuk melihat input mesin status dan output eksekusi, pilih Input & output eksekusi pada bagian Ringkasan eksekusi.

  2. Jika eksekusi mesin status Anda gagal, pilih Penyebab atau Tampilkan detail langkah pada pesan kesalahan. Rincian tentang kesalahan ditampilkan di bagian Detail Langkah. Perhatikan bahwa langkah yang menyebabkan kesalahan, yang merupakan Task status bernama GetListofFruits, disorot dalam tampilan Grafik dan tampilan Tabel.

    catatan

    Karena GetListofFruits langkah didefinisikan di dalam Map status, dan langkah gagal dijalankan dengan sukses, langkah Status status ditampilkan sebagai Gagal. Map

Langkah 4: Jelajahi yang berbeda Mode tampilan

Anda dapat memilih mode pilihan untuk melihat alur kerja mesin status atau riwayat peristiwa eksekusi. Beberapa tugas yang dapat Anda lakukan dalam mode T ampilan ini adalah sebagai berikut:

Jika status Peta Anda memiliki lima iterasi dan Anda ingin melihat detail eksekusi untuk iterasi ketiga dan keempat, lakukan hal berikut:

  1. Pilih Map status tempat Anda ingin melihat data iterasi.

  2. Dari Penampil iterasi Peta, pilih iterasi yang ingin Anda lihat. Iterasi dihitung dari nol. Untuk memilih iterasi ketiga dari lima, pilih #2 dari daftar dropdown di sebelah nama status Peta.

    catatan

    Jika mesin status Anda berisi status bersarangMap, Step Functions menampilkan iterasi status induk dan anak Map sebagai dua daftar dropdown terpisah yang mewakili data iterasi untuk status bersarang.

  3. (Opsional) Jika satu atau lebih iterasi Map status gagal dieksekusi atau dihentikan dalam status dibatalkan, Anda dapat melihat detail tentang iterasi yang gagal. Untuk melihat detail ini, pilih nomor iterasi yang terpengaruh di bawah Gagal atau Di batalkan di daftar dropdown.

Jika status Peta Anda memiliki lima iterasi dan Anda ingin melihat detail eksekusi untuk iterasi nomor tiga dan empat, lakukan hal berikut:

  1. Pilih Map status di mana Anda ingin melihat data iterasi yang berbeda.

  2. Dalam tampilan tampilan pohon dari iterasi Map status, pilih baris untuk iterasi bernama #2 untuk iterasi nomor tiga. Demikian pula, pilih baris bernama #3 untuk iterasi nomor empat.

Pilih ikon pengaturan. Kemudian, di kotak dialog Preferensi, pilih kolom yang ingin Anda tampilkan di bawah Pilih kolom yang terlihat.

Secara default, mode ini menampilkan kolom Nama, Jenis, Status, Sumber Daya, dan Dimulai Setelah.

Batasi jumlah informasi yang ditampilkan dengan menerapkan satu atau lebih filter berdasarkan properti, seperti Status, atau rentang tanggal dan waktu. Misalnya, untuk melihat langkah-langkah yang gagal dieksekusi, terapkan filter berikut:

  1. Pilih Filter berdasarkan properti atau cari berdasarkan kata kunci, lalu pilih Status di bawah Pro perti.

  2. Di bawah Oper ator, pilih Status =.

  3. Pilih Status = Gagal.

  4. (Opsional) Pilih Hapus filter untuk menghapus filter yang diterapkan.

Batasi jumlah informasi yang ditampilkan dengan menerapkan satu atau lebih filter berdasarkan properti, seperti Jenis, atau rentang tanggal dan waktu. Misalnya, untuk melihat langkah Task status yang gagal dieksekusi, terapkan filter berikut:

  1. Pilih Filter berdasarkan properti atau cari berdasarkan kata kunci, lalu pilih Jenis di bawah Pro perti.

  2. Di bawah Oper ator, pilih Type =.

  3. Pilih Jenis = TaskFailed.

  4. (Opsional) Pilih Hapus filter untuk menghapus filter yang diterapkan.

Pilih ikon panah di sebelah ID TaskFailed acara untuk memeriksa detailnya, termasuk input, output, dan pemanggilan sumber daya yang muncul di kotak dropdown.