Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Scrivere uno script canary Node.js usando il runtime Playwright
Argomenti
Impacchettizzazione dei file canary Node.js per il runtime di Playwright
Lo script canary comprende un file .js
(sintassi CommonJS) o .mjs
(sintassi ES) contenente il codice del gestore Synthetics, insieme a tutti i pacchetti e moduli aggiuntivi da cui dipende il codice. Gli script creati in formato ES (ECMAScript) devono utilizzare .mjs come estensione o includere un file package.json con il set di campi «type»: «module». A differenza di altri runtime come Node.js Puppeteer, non è necessario salvare gli script in una struttura di cartelle specifica. Puoi impacchettare i tuoi script direttamente. Usa la tua zip
utilità preferita per creare un .zip
file con il tuo file handler alla radice. Se il tuo script canary dipende da pacchetti o moduli aggiuntivi che non sono inclusi nel runtime Synthetics, puoi aggiungere queste dipendenze al tuo file. .zip
Per fare ciò, potete installare le librerie richieste dalla funzione nella node_modules
directory eseguendo il comando. npm install
I seguenti comandi CLI di esempio creano un .zip
file denominato my_deployment_package.zip
contenente il index.mjs
file index.js
or (gestore Synthetics) e le relative dipendenze. Nell'esempio, si installano le dipendenze utilizzando il gestore di pacchetti. npm
~/my_function ├── index.mjs ├── synthetics.json ├── myhelper-util.mjs └── node_modules ├── mydependency
Create un .zip
file che contenga il contenuto della cartella del progetto nella radice. Utilizzate l'opzione r
(ricorsiva), come illustrato nell'esempio seguente, per assicurarvi che le sottocartelle vengano zip
compresse.
zip -r my_deployment_package.zip .
Aggiungi un file di configurazione Synthetics per configurare il comportamento di Synthetics. CloudWatch È possibile creare un synthetics.json
file e salvarlo nello stesso percorso del punto di ingresso o del file del gestore.
Facoltativamente, puoi anche archiviare il file del punto di ingresso in una struttura di cartelle a tua scelta. Tuttavia, assicuratevi che il percorso della cartella sia specificato nel nome del gestore.
Nome del gestore
Assicurati di impostare il punto di ingresso dello script del tuo canary (gestore) in modo che myCanaryFilename.functionName
corrisponda al nome del file del punto di ingresso dello script. Facoltativamente, puoi memorizzare il canarino in una cartella separata come. myFolder/my_canary_filename.mjs
Se lo archivi in una cartella separata, definisci il percorso nel punto di ingresso dello script, ad esempio myFolder/my_canary_filename.functionName
.
Modifica di uno script Playwright esistente da utilizzare come canarino Synthetics CloudWatch
È possibile modificare uno script esistente per Node.js e Playwright da utilizzare come canarino. Per ulteriori informazioni su Playwright, consulta la documentazione della libreria Playwright.
È possibile utilizzare il seguente script Playwright salvato nel 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();
Convertite lo script eseguendo le seguenti operazioni:
-
Creare ed esportare una funzione
handler
. Il gestore è la funzione del punto di ingresso per lo script. È possibile scegliere qualsiasi nome per la funzione handler, ma la funzione utilizzata nello script deve essere la stessa del gestore Canary. Se il nome dello script èexampleCanary.mjs
, e il nome della funzione di gestione èmyhandler
, il gestore Canary è denominato.exampleCanary.myhandler
Nell'esempio seguente, il nome della funzione di gestione è.handler
exports.handler = async () => { // Your script here };
-
Importa il
Synthetics Playwright module
come dipendenza.import { synthetics } from '@amzn/synthetics-playwright';
-
Avvia un browser utilizzando la funzione
Launch
Synthetics.const browser = await synthetics.launch();
-
Crea una nuova pagina Playwright utilizzando la funzione Synthetics.
newPage
const page = await synthetics.newPage();
Lo script è ora pronto per essere eseguito come canarino Synthetics. Quello che segue è lo script aggiornato:
ES6 Formato dello script aggiornato
Il file di script salvato con un'.mjs
estensione.
import { synthetics } from '@amzn/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(); } };
Script aggiornato in formato CommonJS
Il file di script salvato con un'.js
estensione.
const { synthetics } = require('@amzn/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 Configurazioni Synthetics
È possibile configurare il comportamento del runtime Synthetics Playwright fornendo un file di configurazione JSON opzionale denominato. synthetics.json
Questo file deve essere impacchettato nella stessa posizione del file del gestore. Sebbene un file di configurazione sia facoltativo, se non viene fornito un file di configurazione o manca una chiave di configurazione, vengono utilizzati i valori CloudWatch predefiniti.
Impacchettamento del file di configurazione
Di seguito sono riportati i valori di configurazione supportati e i relativi valori predefiniti.
{ "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 }
Configurazioni dei passaggi
-
screenshotOnStepStart
— Determina se Synthetics deve acquisire uno screenshot prima dell'inizio del passaggio. Il valore predefinito ètrue
. -
screenshotOnStepSuccess
— Determina se Synthetics deve acquisire uno screenshot dopo che un passaggio è stato completato con successo. Il valore predefinito ètrue
. -
screenshotOnStepFailure
— Determina se Synthetics deve acquisire uno screenshot dopo che un passaggio è fallito. Il valore predefinito ètrue
. -
continueOnStepFailure
— Determina se uno script deve continuare anche dopo che un passaggio è fallito. Il valore predefinito èfalse
. -
stepSuccessMetric
— Determina se viene emessa laSuccessPercent
metrica di un passaggio. LaSuccessPercent
metrica per un passo si100
riferisce alla corsa canaria se la fase ha esito positivo e0
se la fase fallisce. Il valore predefinito ètrue
. -
stepDurationMetric
— Determina se viene emessa laDuration
metrica di un passaggio. LaDuration
metrica viene emessa come durata, in millisecondi, dell'esecuzione del passaggio. Il valore predefinito ètrue
.
Configurazioni dei report
Include tutti i report generati da CloudWatch Synthetics, come un file HAR e un rapporto sui passaggi di Synthetics. I campi restrictedHeaders
di redazione dei dati sensibili si applicano restrictedUrlParameters
anche ai log generati da Synthetics.
-
includeRequestHeaders
— Se includere le intestazioni delle richieste nel rapporto. Il valore predefinito èfalse
. -
includeResponseHeaders
— Se includere le intestazioni di risposta nel rapporto. Il valore predefinito èfalse
. -
includeUrlPassword
— Se includere una password che appare nell'URL. Per impostazione predefinita, le password che compaiono in URLs vengono cancellate dai registri e dai report, per impedire la divulgazione di dati sensibili. Il valore predefinito èfalse
. -
includeRequestBody
— Se includere il corpo della richiesta nel rapporto. Il valore predefinito èfalse
. -
includeResponseBody
— Se includere il corpo della risposta nel rapporto. Il valore predefinito èfalse
. -
restrictedHeaders
— Un elenco di valori di intestazione da ignorare, se le intestazioni sono incluse. Questo vale sia per le intestazioni della richiesta che della risposta. Ad esempio, puoi nascondere le tue credenziali passandoincludeRequestHeaders
come true e as.restrictedHeaders
['Authorization']
-
restrictedUrlParameters
— Un elenco di percorsi URL o parametri di query da oscurare. Questo vale per quelli URLs che appaiono nei log, nei report e negli errori. Il parametro prevede la distinzione tra lettere maiuscole e minuscole. È possibile passare un asterisco (*
) come valore per oscurare tutti i valori del percorso URL e dei parametri di query. L'impostazione predefinita è una matrice vuota. -
har
— Determina se deve essere generato un archivio HTTP (HAR). Il valore predefinito ètrue
.
Di seguito è riportato un esempio di file di configurazione del 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
Configurazioni di registrazione
Si applica ai log generati da CloudWatch Synthetics. Controlla la verbosità dei registri di richieste e risposte.
-
logRequest
— Se registrare ogni richiesta nei registri di Canary. Per i canary dell'interfaccia utente, registra ogni richiesta inviata dal browser. Il valore predefinito èfalse
. -
logResponse
— Se registrare ogni risposta in Canary Logs. Per i canary dell'interfaccia utente, registra ogni risposta ricevuta dal browser. Il valore predefinito èfalse
. -
logRequestBody
— Se registrare i corpi delle richieste insieme alle richieste nei registri di Canary. Questa configurazione si applica solo selogRequest
è vera. Il valore predefinito èfalse
. -
logResponseBody
— Se registrare i corpi di risposta insieme alle richieste nei registri di Canary. Questa configurazione si applica solo selogResponse
è vera. Il valore predefinito èfalse
. -
logRequestHeaders
— Se registrare le intestazioni delle richieste insieme alle richieste nei registri di Canary. Questa configurazione si applica solo selogRequest
è vera. Il valore predefinito èfalse
. -
logResponseHeaders
— Se registrare le intestazioni delle risposte insieme alle risposte nei registri di Canary. Questa configurazione si applica solo selogResponse
è vera. Il valore predefinito èfalse
.
Configurazioni metriche HTTP
Configurazioni per le metriche relative al conteggio delle richieste di rete con codici di stato HTTP diversi, emesse da Synthetics CloudWatch per questo canarino.
-
metric_2xx
— Se emettere la2xx
metrica (con la dimensione) per questo canarino.CanaryName
Il valore predefinito ètrue
. -
metric_4xx
— Se emettere la4xx
metrica (con laCanaryName
dimensione) per questo canarino. Il valore predefinito ètrue
. -
metric_5xx
— Se emettere la5xx
metrica (con laCanaryName
dimensione) per questo canarino. Il valore predefinito ètrue
. -
failedRequestsMetric
— Se emettere lafailedRequests
metrica (con laCanaryName
dimensione) per questo canarino. Il valore predefinito ètrue
. -
aggregatedFailedRequestsMetric
— Se emettere lafailedRequests
metrica (senza laCanaryName
dimensione) per questo canarino. Il valore predefinito ètrue
. -
aggregated2xxMetric
— Se emettere la2xx
metrica (senza laCanaryName
dimensione) per questo canarino. Il valore predefinito ètrue
. -
aggregated4xxMetric
— Se emettere la4xx
metrica (senza laCanaryName
dimensione) per questo canarino. Il valore predefinito ètrue
. -
aggregated5xxMetric
— Se emettere la5xx
metrica (senza laCanaryName
dimensione) per questo canarino. Il valore predefinito ètrue
.
Configurazioni metriche Canary
Configurazioni per altre metriche emesse da Synthetics. CloudWatch
-
failedCanaryMetric
— Se emettere laFailed
metrica (con la dimensione) per questo canarino.CanaryName
Il valore predefinito ètrue
. -
aggregatedFailedCanaryMetric
— Se emettere laFailed
metrica (senza laCanaryName
dimensione) per questo canarino. Il valore predefinito ètrue
.
Altre configurazioni
-
userAgent
— Una stringa da aggiungere all'agente utente. L'agente utente è una stringa inclusa nell'intestazione della richiesta e identifica il browser nei siti Web visitati quando si utilizza il browser headless. CloudWatch Synthetics aggiunge automaticamente.CloudWatchSynthetics/
La configurazione specificata viene aggiunta all'agente utente generato. Il valore predefinito dell'agente utente da aggiungere è una stringa vuota ()canary-arn
to the user agent""
.
CloudWatch Variabili di ambiente Synthetics
Configura il livello e il formato di registrazione utilizzando le variabili di ambiente.
Formato del registro
Il runtime CloudWatch Synthetics Playwright CloudWatch crea registri per ogni corsa canaria. I log sono scritti in formato JSON per facilitare le interrogazioni. Facoltativamente, è possibile modificare il formato del registro in. TEXT
-
Environment variable name
— CW_SYNTHETICS_LOG_FORMAT -
Supported values
— JSON, TESTO -
Default
— JSON
Livelli di registro
Sebbene la Debug
modalità di attivazione aumenti la verbosità, può essere utile per la risoluzione dei problemi.
-
Environment variable name
— CW_SYNTHETICS_LOG_LEVEL -
Supported values
— TRACE, DEBUG, INFO, WARN, ERROR, FATAL -
Default
— INFORMAZIONI