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 Step Functions
Dalam tutorial ini, Anda akan belajar bagaimana memeriksa informasi eksekusi yang ditampilkan pada halaman Rincian Eksekusi 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 hanya melihat 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 tipe alur kerja Standar dan Ekspres, lihatPerbedaan pengalaman konsol standar dan Express.
Langkah 1: Buat dan uji fungsi Lambda yang diperlukan
-
Buka konsol Lambda
dan kemudian lakukan langkah 1 hingga 4 di bagian tersebut. Langkah 1: Membuat fungsi Lambda Pastikan untuk memberi nama fungsi Lambda. GetListOfFruits
-
Setelah Anda membuat fungsi Lambda, salin Amazon Resource Name (ARN) fungsi yang ditampilkan di sudut kanan atas halaman. Untuk menyalinARN, klik ikon salin untuk menyalin Nama Sumber Daya Amazon fungsi Lambda. Berikut ini adalah contohARN, di mana
adalah nama fungsi Lambda (dalam hal ini,nama-fungsi
GetListOfFruits
):arn:aws:lambda:us-east-1:123456789012:function:
function-name
-
Salin kode berikut untuk fungsi Lambda ke area sumber Kode halaman. GetListOfFruits
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); };
-
Pilih Deploy, lalu pilih Test, untuk menyebarkan perubahan dan melihat output dari fungsi Lambda Anda.
-
Buat dua fungsi Lambda tambahan, bernama
GetFruitPrice
danCalculateAverage
masing-masing, dengan langkah-langkah berikut:-
Salin kode berikut ke area sumber Kode dari fungsi GetFruitPriceLambda:
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; };
-
Salin kode berikut ke area sumber Kode dari fungsi CalculateAverageLambda:
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); };
-
Pastikan untuk menyalin ARNs dari dua fungsi Lambda ini, lalu Deploy dan Test mereka.
-
Langkah 2: Buat dan jalankan mesin negara
Gunakan konsol Step FunctionsMap
negara didefinisikan. Masing-masing Map
status ini berisi Task
status yang memanggil salah satu fungsi Lambda Anda. Selain itu, Retry
bidang didefinisikan di setiap Task
negara bagian dengan sejumlah upaya coba lagi yang ditentukan untuk setiap status. Jika Task
status mengalami kesalahan runtime, status akan dieksekusi lagi hingga jumlah percobaan ulang yang ditentukan untuk itu. Task
-
Buka konsol Step Functions
dan pilih Tulis alur kerja Anda dalam kode. penting
Pastikan mesin negara Anda berada di bawah yang sama AWS akun dan Wilayah sebagai fungsi Lambda yang Anda buat sebelumnya.
-
Untuk Jenis, pertahankan pilihan standar Standar.
-
Salin definisi Bahasa Amazon States berikut dan tempel di bawah Definisi. Pastikan untuk mengganti yang ARNs ditampilkan dengan fungsi Lambda yang sebelumnya Anda buat.
{ "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:
us-east-1
: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:us-east-1
: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:us-east-1
: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 } } } -
Masukkan nama untuk mesin negara Anda. Simpan pilihan default untuk opsi lain di halaman ini dan pilih Buat mesin status.
-
Buka halaman berjudul dengan nama mesin negara Anda. Lakukan langkah 1 hingga 4 di Langkah 4: Jalankan mesin negara bagian, tetapi gunakan data berikut sebagai input eksekusi:
{ "stores": [ "Store A", "Store B", "Store C", "Store D" ] }
Langkah 3: Lihat detail eksekusi mesin negara
Pada halaman berjudul dengan ID eksekusi Anda, Anda dapat meninjau hasil eksekusi Anda dan men-debug kesalahan apa pun.
-
(Opsional) Pilih dari tab yang ditampilkan di halaman Rincian Eksekusi untuk melihat informasi yang ada di masing-masing tab tersebut. Misalnya, untuk melihat input mesin status dan output eksekusinya, pilih Input & output eksekusi pada bagian Ringkasan eksekusi.
-
Jika eksekusi mesin status Anda gagal, pilih Penyebab atau Tampilkan detail langkah pada pesan kesalahan. Detail 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 GetListofFruitslangkah didefinisikan di dalam
Map
status, dan langkah gagal dijalankan dengan sukses, langkah Status status ditampilkan sebagai Gagal.Map
Langkah 4: Jelajahi mode Tampilan yang berbeda
Anda dapat memilih mode pilihan untuk melihat alur kerja mesin status atau riwayat peristiwa eksekusi. Beberapa tugas yang dapat Anda lakukan dalam mode Tampilan 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:
-
Pilih
Map
status yang ingin Anda lihat data iterasi. -
Dari Map iteration viewer, pilih iterasi yang ingin Anda lihat. Iterasi dihitung dari nol. Untuk memilih iterasi ketiga dari lima, pilih #2 dari daftar tarik-turun di sebelah nama status Peta.
catatan
Jika mesin status Anda berisi
Map
status bersarang, Step Functions menampilkan iterasiMap
status induk dan anak sebagai dua daftar tarik-turun terpisah yang mewakili data iterasi untuk status bersarang. -
(Opsional) Jika satu atau beberapa iterasi
Map
status gagal dijalankan 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 Dibatalkan dalam daftar tarik-turun.
Jika status Peta Anda memiliki lima iterasi dan Anda ingin melihat detail eksekusi untuk iterasi nomor tiga dan empat, lakukan hal berikut:
-
Pilih
Map
status yang ingin Anda lihat data iterasi yang berbeda. -
Dalam tampilan tampilan pohon 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 beberapa filter berdasarkan properti, seperti Status, atau rentang tanggal dan waktu. Misalnya, untuk melihat langkah-langkah yang gagal eksekusi, terapkan filter berikut:
-
Pilih Filter menurut properti atau cari berdasarkan kata kunci, lalu pilih Status di bawah Properti.
-
Di bawah Operator, pilih Status =.
-
Pilih Status = Gagal.
-
(Opsional) Pilih Hapus filter untuk menghapus filter yang diterapkan.
Batasi jumlah informasi yang ditampilkan dengan menerapkan satu atau beberapa filter berdasarkan properti, seperti Jenis, atau rentang tanggal dan waktu. Misalnya, untuk melihat langkah-langkah Task
status yang gagal dieksekusi, terapkan filter berikut:
-
Pilih Filter menurut properti atau cari berdasarkan kata kunci, lalu pilih Ketik di bawah Properti.
-
Di bawah Operator, pilih Type =.
-
Pilih Jenis = TaskFailed.
-
(Opsional) Pilih Hapus filter untuk menghapus filter yang diterapkan.
Pilih ikon panah di sebelah ID TaskFailedacara untuk memeriksa detailnya, termasuk input, output, dan pemanggilan sumber daya yang muncul di kotak tarik-turun.