View a markdown version of this page

Fungsi perpustakaan tersedia untuk Node.js kenari - Amazon CloudWatch

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

Fungsi perpustakaan tersedia untuk Node.js kenari

Bagian ini menjelaskan fungsi pustaka yang tersedia untuk skrip canary menggunakan runtime. Node.js

tambahkan ExecutionError (ErrorMessage, ex);

errorMessage menjelaskan kesalahan dan ex adalah pengecualian yang ditemui

Anda dapat menggunakan addExecutionError untuk mengatur kesalahan eksekusi bagi canary Anda. Itu menggagalkan canary tanpa mengganggu eksekusi skrip. Itu juga tidak memengaruhi metrik successPercent Anda.

Anda harus melacak kesalahan sebagai kesalahan eksekusi hanya jika kesalahan itu tidak penting untuk menunjukkan keberhasilan atau kegagalan skrip canary Anda.

Contoh penggunaan addExecutionError adalah sebagai berikut. Anda memantau ketersediaan titik akhir Anda dan mengambil tangkapan layar setelah halaman dimuat. Karena kegagalan mengambil tangkapan layar tidak menentukan ketersediaan titik akhir, Anda dapat menangkap kesalahan apa pun yang dihadapi saat mengambil tangkapan layar dan menambahkannya sebagai kesalahan eksekusi. Metrik ketersediaan Anda masih akan menunjukkan bahwa titik akhir telah aktif dan berjalan, namun status canary Anda akan ditandai sebagai gagal. Blok kode sampel berikut menangkap kesalahan tersebut dan menambahkannya sebagai kesalahan eksekusi.

try {await synthetics.executeStep(stepName, callbackFunc);} catch(ex) {synthetics.addExecutionError('Unable to take screenshot ', ex);}

dapatkan CanaryName ();

Mengembalikan nama dari canary.

dapatkan CanaryArn ();

Mengembalikan ARN dari canary.

dapatkan CanaryUserAgentString ();

Mengembalikan agen pengguna kustom dari canary.

dapatkan RuntimeVersion ();

Fungsi ini tersedia pada versi runtime syn-nodejs-3.0 dan yang lebih baru. Fungsi ini mengembalikan versi runtime Synthetics dari canary. Misalnya,nilai yang dikembalikan bisa menjadi syn-nodejs-3.0.

dapatkan LogLevel ();

Mengambil level log saat ini untuk pustaka Synthetics. Nilai yang mungkin adalah sebagai berikut:

  • 0 – Debug

  • 1 – Info

  • 2 – Peringatan

  • 3 – Kesalahan

Contoh:

let logLevel = synthetics.getLogLevel();

set LogLevel ();

Mengatur tingkat log untuk pustaka Synthetics. Nilai yang mungkin adalah sebagai berikut:

  • 0 – Debug

  • 1 – Info

  • 2 – Peringatan

  • 3 – Kesalahan

Contoh:

synthetics.setLogLevel(0);

ExecuteStep (StepName, fungsi, [StepConfig]) ToExecute

Menjalankan langkah yang disediakan, membungkusnya dengan start/pass /fail logging dan pass/fail dan metrik durasi.

Fungsi executeStep juga melakukan hal berikut:

  • Log bahwa langkah dimulai

  • Memulai timer

  • Mengeksekusi fungsi yang disediakan

  • Ketika fungsi kembali normal, itu dihitung sebagai passing. Jika fungsi melempar, itu dianggap gagal

  • Mengakhiri timer

  • Mencatat log jika langkah berhasil atau gagal

  • Memancarkan stepName SuccessPercent metrik, 100 untuk lulus atau 0 untuk kegagalan

  • MemancarkanstepName Duration metric, dengan nilai berdasarkan waktu mulai dan akhir langkah

  • Mengembalikan apa fungsi ToExecute dikembalikan atau kembali melempar apa yang dilemparkan functionToExecute

  • Menambahkan ringkasan eksekusi langkah ke laporan kenari

Contoh

await synthetics.executeStep(stepName, async function () { return new Promise((resolve, reject) => { const req = https.request(url, (res) => { console.log(`Status: ${res.statusCode}`); if (res.statusCode >= 400) { reject(new Error(`Request failed with status ${res.statusCode} for ${url}`)); } else { resolve(); } }); req.on('error', (err) => { reject(new Error(`Request failed for ${url}: ${err.message}`)); }); req.end(); }); });

jalankan HttpStep (stepName, requestOptions, [callback], [stepConfig])

Mengeksekusi permintaan HTTP yang disediakan sebagai langkah, dan menerbitkan SuccessPercent (pass/fail) dan Duration metrik.

mengeksekusi HttpStep menggunakan fungsi asli HTTP atau HTTPS di bawah tenda, tergantung pada protokol yang ditentukan dalam permintaan.

Fungsi ini juga menambahkan ringkasan pelaksanaan langkah ke laporan canary. Ringkasan mencakup detail tentang setiap permintaan HTTP, seperti berikut ini:

  • Waktu mulai

  • Waktu akhir

  • Status (PASSED/FAILED)

  • Alasan kegagalan, jika gagal

  • Detail panggilan HTTP seperti request/response header, body, kode status, pesan status, dan timing kinerja.

Parameter

StepName () String

Menentukan nama dari langkah tersebut. Nama ini juga digunakan untuk menerbitkan CloudWatch metrik untuk langkah ini.

requestOptions () Object or String

Nilai parameter ini dapat berupa URL, string URL, atau sebuah objek. Jika itu adalah objek, maka itu harus berupa serangkaian opsi yang dapat dikonfigurasi untuk membuat permintaan HTTP. Ini mendukung semua opsi di http.request (options [, callback]) dalam dokumentasi. Node.js

Selain Node.js opsi ini, requestOptions mendukung parameter tambahan. body Anda dapat menggunakan parameter body untuk meneruskan data sebagai bodi permintaan.

panggilan balik () response

(Opsional) Ini adalah fungsi pengguna yang diinvokasi dengan respons HTTP. Responsnya adalah dari tipe Class: http. IncomingMessage.

StepConfig () object

(Opsional) Gunakan parameter ini untuk mengganti konfigurasi synthetics global dengan konfigurasi yang berbeda untuk langkah ini.

Contoh menggunakan eksekusi HttpStep

Rangkaian contoh berikut membangun satu sama lain untuk menggambarkan berbagai penggunaan opsi ini.

Contoh pertama ini mengonfigurasi parameter permintaan. Anda dapat meneruskan URL sebagai requestOptions:

let requestOptions = 'https://www.amazon.com';

Atau Anda dapat meneruskan satu set opsi:

let requestOptions = { 'hostname': 'myproductsEndpoint.com', 'method': 'GET', 'path': '/test/product/validProductName', 'port': 443, 'protocol': 'https:' };

Contoh berikutnya menciptakan fungsi callback yang menerima respons. Secara default, jika Anda tidak menentukan callback, CloudWatch Synthetics memvalidasi bahwa statusnya antara 200 dan 299 inklusif.

// Handle validation for positive scenario const callback = async function(res) { return new Promise((resolve, reject) => { if (res.statusCode < 200 || res.statusCode > 299) { throw res.statusCode + ' ' + res.statusMessage; } let responseBody = ''; res.on('data', (d) => { responseBody += d; }); res.on('end', () => { // Add validation on 'responseBody' here if required. For ex, your status code is 200 but data might be empty resolve(); }); }); };

Contoh berikutnya membuat konfigurasi untuk langkah ini yang mengesampingkan konfigurasi Synthetics global CloudWatch . Konfigurasi langkah dalam contoh ini memungkinkan header permintaan, header respons, isi permintaan (data posting), dan badan respons dalam laporan Anda dan batasi nilai header '' X-Amz-Security-Token dan 'Otorisasi'. Secara bawaan, nilai-nilai ini tidak termasuk dalam laporan untuk alasan keamanan. Jika Anda memilih untuk memasukkannya, data hanya disimpan dalam bucket S3 Anda.

// By default headers, post data, and response body are not included in the report for security reasons. // Change the configuration at global level or add as step configuration for individual steps let stepConfig = { includeRequestHeaders: true, includeResponseHeaders: true, restrictedHeaders: ['X-Amz-Security-Token', 'Authorization'], // Restricted header values do not appear in report generated. includeRequestBody: true, includeResponseBody: true };

Contoh terakhir ini meneruskan permintaan Anda untuk mengeksekusi HttpStep dan memberi nama langkahnya.

await synthetics.executeHttpStep('Verify GET products API', requestOptions, callback, stepConfig);

Dengan kumpulan contoh ini, CloudWatch Synthetics menambahkan detail dari setiap langkah dalam laporan Anda dan menghasilkan metrik untuk setiap langkah menggunakan StepName.

Anda akan melihat metrik successPercent dan duration untuk langkah Verify GET products API. Anda dapat memantau performa API Anda dengan memantau metrik untuk langkah panggilan API Anda.

Untuk sampel skrip lengkap yang menggunakan fungsi-fungsi ini, silakan lihat Multi-step Kenari API.