Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menulis skri Node.js p kenari menggunakan runtime Playwright
Topik
Mengemas file Node.js kenari Anda untuk runtime Playwright
Skrip kenari Anda terdiri dari file .js (sintaks CommonJS) atau .mjs (sintaks ES) yang berisi kode handler Synthetics Anda, bersama dengan paket dan modul tambahan yang bergantung pada kode Anda. Skrip yang dibuat dalam format ES (ECMAScript) harus menggunakan.mjs sebagai ekstensi atau menyertakan file package.json dengan set bidang “type”: “module”. Tidak seperti runtime lain seperti Node.js Puppeteer, Anda tidak diharuskan menyimpan skrip Anda dalam struktur folder tertentu. Anda dapat mengemas skrip Anda secara langsung. Gunakan zip utilitas pilihan Anda untuk membuat .zip file dengan file handler Anda di root. Jika script canary Anda bergantung pada paket atau modul tambahan yang tidak disertakan dalam runtime Synthetics, Anda dapat menambahkan dependensi ini ke file Anda.zip. Untuk melakukannya, Anda dapat menginstal pustaka yang diperlukan fungsi Anda di node_modules direktori dengan menjalankan npm install perintah. Contoh perintah CLI berikut membuat .zip file bernama my_deployment_package.zip berisi file index.js or index.mjs (Handler Synthetics) dan dependensinya. Dalam contoh, Anda menginstal dependensi menggunakan manajer npm paket.
~/my_function ├── index.mjs ├── synthetics.json ├── myhelper-util.mjs └── node_modules ├── mydependency
Buat .zip file yang berisi konten folder proyek Anda di root. Gunakan opsi r (rekursif), seperti yang ditunjukkan pada contoh berikut, untuk memastikan bahwa mengom zip pres subfolder.
zip -r my_deployment_package.zip .
Tambahkan file konfigurasi Synthetics untuk mengkonfigurasi perilaku CloudWatch Synthetics. Anda dapat membuat synthetics.json file dan menyimpannya di jalur yang sama dengan titik masuk atau file handler Anda.
Secara opsional, Anda juga dapat menyimpan file titik masuk Anda dalam struktur folder pilihan Anda. Namun, pastikan bahwa jalur folder ditentukan dalam nama handler Anda.
Nama handler
Pastikan untuk mengatur titik masuk skrip kenari Anda (handler)
myCanaryFilename.functionName agar sesuai dengan nama file titik masuk skrip Anda. Anda dapat menyimpan kenari secara opsional di folder terpisah seperti
myFolder/my_canary_filename.mjs. Jika Anda menyimpannya di folder terpisah, tentukan jalur itu di titik entri skrip Anda, seperti
myFolder/my_canary_filename.functionName.
Mengubah skrip Dramawan yang ada untuk digunakan sebagai kenari CloudWatch Synthetics
Anda dapat mengedit skrip yang ada untuk Node.js dan Penulis Naskah untuk digunakan sebagai kenari. Untuk informasi selengkapnya tentang Dramawan, lihat dokumentasi perpustakaan https://playwright.dev/docs/api/class-playwright
Anda dapat menggunakan skrip Playwright berikut yang disimpan dalam file
exampleCanary.mjs.
import { chromium } from 'playwright'; import { expect } from '@playwright/test'; const browser = await chromium.launch(); const page = await browser.newPage(); await page.goto('https://example.com', {timeout: 30000}); await page.screenshot({path: 'example-home.png'}); const title = await page.title(); expect(title).toEqual("Example Domain"); await browser.close();
Konversi skrip dengan melakukan langkah-langkah berikut:
-
Membuat dan mengekspor
handlerfungsi. Penanggung jawab adalah fungsi titik masuk untuk naskah. Anda dapat memilih nama apa pun untuk fungsi handler, tetapi fungsi yang digunakan dalam skrip Anda harus sama seperti di pengendali kenari Anda. Jika nama skrip Anda adalahexampleCanary.mjs, dan nama fungsi handler adalahmyhandler, pengendali kenari Anda diberi namaexampleCanary.myhandler. Dalam contoh berikut, nama fungsi handler adalahhandler.exports.handler = async () => { // Your script here }; -
Impor
Synthetics Playwright modulesebagai ketergantungan.import { synthetics } from '@aws/synthetics-playwright'; -
Luncurkan browser menggunakan
Launchfungsi Synthetics.const browser = await synthetics.launch(); -
Buat halaman Dramawan baru dengan menggunakan fungsi Synthetics
newPage.const page = await synthetics.newPage();
Skrip Anda sekarang siap dijalankan sebagai kenari Synthetics. Berikut ini adalah skrip yang diperbarui:
Script yang diperbarui dalam format ES6
File skrip disimpan dengan .mjs ekstensi.
import { synthetics } from '@aws/synthetics-playwright'; import { expect } from '@playwright/test'; export const handler = async (event, context) => { try { // Launch a browser const browser = await synthetics.launch(); // Create a new page const page = await synthetics.newPage(browser); // Navigate to a website await page.goto('https://www.example.com', {timeout: 30000}); // Take screenshot await page.screenshot({ path: '/tmp/example.png' }); // Verify the page title const title = await page.title(); expect(title).toEqual("Example Domain"); } finally { // Ensure browser is closed await synthetics.close(); } };
Skrip yang diperbarui dalam format CommonJS
File skrip disimpan dengan .js ekstensi.
const { synthetics } = require('@aws/synthetics-playwright'); const { expect } = require('@playwright/test'); exports.handler = async (event) => { try { const browser = await synthetics.launch(); const page = await synthetics.newPage(browser); await page.goto('https://www.example.com', {timeout: 30000}); await page.screenshot({ path: '/tmp/example.png' }); const title = await page.title(); expect(title).toEqual("Example Domain"); } finally { await synthetics.close(); } };
CloudWatch Konfigurasi sintetis
Anda dapat mengonfigurasi perilaku runtime Synthetics Playwright dengan menyediakan file konfigurasi JSON opsional bernama. synthetics.json File ini harus dikemas di lokasi yang sama dengan file handler. Meskipun file konfigurasi bersifat opsional, jika Anda tidak memberikan file konfigurasi, atau kunci konfigurasi hilang, CloudWatch mengasumsikan default.
Mengemas file konfigurasi Anda
Berikut ini adalah nilai konfigurasi yang didukung, dan defaultnya.
{ "step": { "screenshotOnStepStart": false, "screenshotOnStepSuccess": false, "screenshotOnStepFailure": false, "stepSuccessMetric": true, "stepDurationMetric": true, "continueOnStepFailure": true, "stepsReport": true }, "report": { "includeRequestHeaders": true, "includeResponseHeaders": true, "includeUrlPassword": false, "includeRequestBody": true, "includeResponseBody": true, "restrictedHeaders": ['x-amz-security-token', 'Authorization'], // Value of these headers is redacted from logs and reports "restrictedUrlParameters": ['Session', 'SigninToken'] // Values of these url parameters are redacted from logs and reports }, "logging": { "logRequest": false, "logResponse": false, "logResponseBody": false, "logRequestBody": false, "logRequestHeaders": false, "logResponseHeaders": false }, "httpMetrics": { "metric_2xx": true, "metric_4xx": true, "metric_5xx": true, "failedRequestsMetric": true, "aggregatedFailedRequestsMetric": true, "aggregated2xxMetric": true, "aggregated4xxMetric": true, "aggregated5xxMetric": true }, "canaryMetrics": { "failedCanaryMetric": true, "aggregatedFailedCanaryMetric": true }, "userAgent": "", "har": true }
Konfigurasi langkah
-
screenshotOnStepStart— Menentukan apakah Synthetics harus menangkap tangkapan layar sebelum langkah dimulai. Nilai default-nyatrue. -
screenshotOnStepSuccess— Menentukan apakah Synthetics harus mengambil tangkapan layar setelah langkah berhasil. Nilai default-nyatrue. -
screenshotOnStepFailure— Menentukan apakah Synthetics harus mengambil tangkapan layar setelah langkah gagal. Nilai default-nyatrue. -
continueOnStepFailure— Menentukan apakah skrip harus dilanjutkan bahkan setelah langkah gagal. Nilai default-nyafalse. -
stepSuccessMetric— Menentukan apakahSuccessPercentmetrik langkah dipancarkan. MetSuccessPercentrik untuk langkah adalah100untuk lari kenari jika langkah berhasil, dan0jika langkah gagal. Nilai default-nyatrue. -
stepDurationMetric— Menentukan apakahDurationmetrik langkah dipancarkan. MetDurationrik dipancarkan sebagai durasi, dalam milidetik, dari langkah yang dijalankan. Nilai default-nyatrue.
Konfigurasi laporan
Termasuk semua laporan yang dihasilkan oleh CloudWatch Synthetics, seperti file HAR dan laporan langkah Synthetics. Bidang penyuntingan data sensitif restrictedHeaders dan restrictedUrlParameters juga berlaku untuk log yang dihasilkan oleh Synthetics.
-
includeRequestHeaders— Apakah akan menyertakan header permintaan dalam laporan. Nilai default-nyafalse. -
includeResponseHeaders— Apakah akan menyertakan header respons dalam laporan. Nilai default-nyafalse. -
includeUrlPassword— Apakah akan menyertakan kata sandi yang muncul di URL. Secara default, kata sandi yang muncul di URL disunting dari log dan laporan, untuk mencegah pengungkapan data sensitif. Default-nya adalahfalse. -
includeRequestBody— Apakah akan memasukkan badan permintaan dalam laporan. Nilai default-nyafalse. -
includeResponseBody— Apakah akan memasukkan badan tanggapan dalam laporan. Nilai default-nyafalse. -
restrictedHeaders- Daftar nilai header untuk diabaikan, jika header disertakan. Ini berlaku untuk header permintaan dan respons. Misalnya, Anda dapat menyembunyikan kredensibilitas Anda dengan menerincludeRequestHeadersuskan sebagai true danrestrictedHeadersas['Authorization']. -
restrictedUrlParameters— Daftar jalur URL atau parameter kueri untuk disunting. Ini berlaku untuk URL yang muncul di log, laporan, dan kesalahan. Parameter tersebut tidak peka terhadap huruf besar/kecil. Anda dapat meneruskan tanda bintang (*) sebagai nilai untuk menyunting semua nilai parameter jalur URL dan kueri. Default-nya adalah array kosong. -
har— Menentukan apakah arsip HTTP (HAR) harus dibuat. Nilai default-nyatrue.
Berikut ini adalah contoh file konfigurasi laporan.
"includeRequestHeaders": true, "includeResponseHeaders": true, "includeUrlPassword": false, "includeRequestBody": true, "includeResponseBody": true, "restrictedHeaders": ['x-amz-security-token', 'Authorization'], // Value of these headers is redacted from logs and reports "restrictedUrlParameters": ['Session', 'SigninToken'] // Values of these URL parameters are redacted from logs and reports
Konfigurasi logging
Berlaku untuk log yang dihasilkan oleh CloudWatch Synthetics. Mengontrol verbositas log permintaan dan respons.
-
logRequest— Apakah akan mencatat setiap permintaan di log kenari. Untuk canary UI, ini mencatat setiap permintaan yang dikirim oleh browser. Nilai default-nyafalse. -
logResponse— Apakah akan mencatat setiap respons di log kenari. Untuk canary UI, ini membuat log terhadap setiap respons yang diterima oleh browser. Bawaannya adalahfalse. -
logRequestBody— Apakah akan mencatat badan permintaan bersama dengan permintaan di log kenari. Konfigurasi ini hanya berlakulogRequestjika benar. Nilai default-nyafalse. -
logResponseBody— Apakah akan mencatat badan respons bersama dengan permintaan di log kenari. Konfigurasi ini hanya berlakulogResponsejika benar. Nilai default-nyafalse. -
logRequestHeaders— Apakah akan mencatat header permintaan bersama dengan permintaan di log kenari. Konfigurasi ini hanya berlakulogRequestjika benar. Nilai default-nyafalse. -
logResponseHeaders— Apakah akan mencatat header respons bersama dengan tanggapan di log kenari. Konfigurasi ini hanya berlakulogResponsejika benar. Nilai default-nyafalse.
Konfigurasi metrik HTTP
Konfigurasi untuk metrik yang terkait dengan jumlah permintaan jaringan dengan kode status HTTP yang berbeda, dipancarkan oleh CloudWatch Synthetics untuk burung kenari ini.
-
metric_2xx— Apakah akan memancarkan2xxmetrik (denganCanaryNamedimensi) untuk kenari ini. Nilai default-nyatrue. -
metric_4xx— Apakah akan memancarkan4xxmetrik (denganCanaryNamedimensi) untuk kenari ini. Nilai default-nyatrue. -
metric_5xx— Apakah akan memancarkan5xxmetrik (denganCanaryNamedimensi) untuk kenari ini. Nilai default-nyatrue. -
failedRequestsMetric— Apakah akan memancarkanfailedRequestsmetrik (denganCanaryNamedimensi) untuk kenari ini. Nilai default-nyatrue. -
aggregatedFailedRequestsMetric— Apakah akan memancarkanfailedRequestsmetrik (tanpaCanaryNamedimensi) untuk kenari ini. Nilai default-nyatrue. -
aggregated2xxMetric— Apakah akan memancarkan2xxmetrik (tanpaCanaryNamedimensi) untuk kenari ini. Nilai default-nyatrue. -
aggregated4xxMetric— Apakah akan memancarkan4xxmetrik (tanpaCanaryNamedimensi) untuk kenari ini. Nilai default-nyatrue. -
aggregated5xxMetric— Apakah akan memancarkan5xxmetrik (tanpaCanaryNamedimensi) untuk kenari ini. Nilai default-nyatrue.
Konfigurasi metrik Canary
Konfigurasi untuk metrik lain yang dipancarkan oleh CloudWatch Synthetics.
-
failedCanaryMetric— Apakah akan memancarkanFailedmetrik (denganCanaryNamedimensi) untuk kenari ini. Nilai default-nyatrue. -
aggregatedFailedCanaryMetric— Apakah akan memancarkanFailedmetrik (tanpaCanaryNamedimensi) untuk kenari ini. Nilai default-nyatrue.
Konfigurasi lainnya
-
userAgent— Sebuah string untuk ditambahkan ke agen pengguna. Agen pengguna adalah string yang disertakan dalam header permintaan, dan mengidentifikasi browser Anda ke situs web yang Anda kunjungi ketika Anda menggunakan browser tanpa kepala. CloudWatch Sintetis secara otomatis menambahkanCloudWatchSynthetics/. Konfigurasi yang ditentukan ditambahkan ke agen pengguna yang dihasilkan. Nilai agen pengguna default untuk ditambahkan adalah string kosong (canary-arnto the user agent"").
CloudWatch Variabel lingkungan sintetis
Konfigurasikan level dan format logging dengan menggunakan variabel lingkungan.
Format log
Runtime CloudWatch Synthetics Playwright membuat CloudWatch log untuk setiap pengoperasian kenari. Log ditulis dalam format JSON untuk memudahkan kueri. Secara opsional, Anda dapat mengubah format log menjadiTEXT.
-
Environment variable name— CW_SYNTHETICS_LOG_FORMAT -
Supported values— JSON, TEKS -
Default— JSON
Tingkat log
Meskipun Debug mode mengaktifkan meningkatkan verbositas, ini dapat berguna untuk pemecahan masalah.
-
Environment variable name— CW_SYNTHETICS_LOG_LEVEL -
Supported values— JEJAK, DEBUG, INFO, PERINGATAN, KESALAHAN, FATAL -
Default— INFO