Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Schreiben eines kanarischen Skripts für Node.js mit der Playwright-Laufzeit
Themen
Ihre kanarischen Dateien vom Typ Node.js für die Playwright-Laufzeit verpacken
Ihr kanarisches Skript besteht aus einer Datei .js
(CommonJS-Syntax) oder .mjs
(ES-Syntax), die Ihren Synthetics-Handler-Code enthält, zusammen mit allen zusätzlichen Paketen und Modulen, von denen Ihr Code abhängt. Skripte, die im ES (ECMAScript) -Format erstellt wurden, sollten entweder .mjs als Erweiterung verwenden oder eine package.json-Datei mit dem Feldsatz „type“: „module“ enthalten. Im Gegensatz zu anderen Runtimes wie Node.js Puppeteer müssen Sie Ihre Skripts nicht in einer bestimmten Ordnerstruktur speichern. Sie können Ihre Skripte direkt verpacken. Verwenden Sie Ihr bevorzugtes zip
Hilfsprogramm, um eine .zip
Datei mit Ihrer Handler-Datei im Stammverzeichnis zu erstellen. Wenn Ihr Canary-Skript von zusätzlichen Paketen oder Modulen abhängt, die nicht in der Synthetics-Laufzeit enthalten sind, können Sie diese Abhängigkeiten zu Ihrer .zip
Datei hinzufügen. Dazu können Sie die für Ihre Funktion erforderlichen Bibliotheken im node_modules
Verzeichnis installieren, indem Sie den npm install
Befehl ausführen. Die folgenden CLI-Beispielbefehle erstellen eine .zip
Datei my_deployment_package.zip
mit dem Namen, die die index.js
index.mjs
OR-Datei (Synthetics-Handler) und ihre Abhängigkeiten enthält. In dem Beispiel installieren Sie Abhängigkeiten mit dem npm
Paketmanager.
~/my_function ├── index.mjs ├── synthetics.json ├── myhelper-util.mjs └── node_modules ├── mydependency
Erstellen Sie eine .zip
Datei, die den Inhalt Ihres Projektordners im Stammverzeichnis enthält. Verwenden Sie die Option r
(rekursiv), wie im folgenden Beispiel gezeigt, um sicherzustellen, dass die zip
Unterordner komprimiert werden.
zip -r my_deployment_package.zip .
Fügen Sie eine Synthetics-Konfigurationsdatei hinzu, um das Verhalten von CloudWatch Synthetics zu konfigurieren. Sie können eine synthetics.json
Datei erstellen und sie unter demselben Pfad wie Ihren Einstiegspunkt oder Ihre Handler-Datei speichern.
Optional können Sie Ihre Einstiegspunktdatei auch in einer Ordnerstruktur Ihrer Wahl speichern. Stellen Sie jedoch sicher, dass der Ordnerpfad in Ihrem Handlernamen angegeben ist.
Handlername
Legen Sie den Skript-Eintrittspunkt Ihres Canary (Handler) als myCanaryFilename.functionName
fest, damit er mit dem Dateinamen des Skript-Eintrittspunkts übereinstimmt. Sie können den Canary optional in einem separaten Ordner speichern, z. myFolder/my_canary_filename.mjs
B. Wenn Sie ihn in einem separaten Ordner speichern, geben Sie den entsprechenden Pfad in Ihrem Skript-Eintrittspunkt an (z. B. myFolder/my_canary_filename.functionName
).
Änderung eines vorhandenen Playwright-Skripts zur Verwendung als CloudWatch Synthetics Canary
Sie können ein vorhandenes Skript für Node.js und Playwright bearbeiten, um es als Kanariensystem zu verwenden. Weitere Informationen zu Playwright finden Sie in der Dokumentation zur Playwright-Bibliothek
Sie können das folgende Playwright-Skript verwenden, das in einer Datei gespeichert ist. 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();
Konvertieren Sie das Skript, indem Sie die folgenden Schritte ausführen:
-
Erstellen und exportieren Sie eine
handler
-Funktion. Der Handler ist die Eintrittsfunktion für das Skript. Sie können einen beliebigen Namen für die Handler-Funktion wählen, aber die Funktion, die in Ihrem Skript verwendet wird, sollte dieselbe sein wie in Ihrem Canary-Handler. Wenn Ihr Skriptname lautetexampleCanary.mjs
und der Name der Handler-Funktion lautetmyhandler
, ist Ihr Canary-Handler benanntexampleCanary.myhandler
. Im folgenden Beispiel lautet der Name der Handler-Funktionhandler
.exports.handler = async () => { // Your script here };
-
Importieren Sie das
Synthetics Playwright module
als Abhängigkeit.import { synthetics } from '@amzn/synthetics-playwright';
-
Starten Sie einen Browser mit der
Launch
Synthetics-Funktion.const browser = await synthetics.launch();
-
Erstellen Sie mithilfe der
newPage
Synthetics-Funktion eine neue Playwright-Seite.const page = await synthetics.newPage();
Ihr Skript ist jetzt bereit, als Synthetics Canary ausgeführt zu werden. Das Folgende ist das aktualisierte Skript:
Das ES6 Format des Skripts wurde aktualisiert
Die Skriptdatei wurde mit einer .mjs
Erweiterung gespeichert.
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(); } };
Das Skript im CommonJS-Format wurde aktualisiert
Die Skriptdatei wurde mit einer .js
Erweiterung gespeichert.
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 Synthetics Konfigurationen
Sie können das Verhalten der Synthetics Playwright-Laufzeit konfigurieren, indem Sie eine optionale JSON-Konfigurationsdatei mit dem Namen bereitstellen. synthetics.json
Diese Datei sollte am selben Speicherort wie die Handler-Datei gepackt werden. Eine Konfigurationsdatei ist zwar optional, wenn Sie jedoch keine Konfigurationsdatei angeben oder ein Konfigurationsschlüssel fehlt, wird von Standardwerten CloudWatch ausgegangen.
Verpacken Sie Ihre Konfigurationsdatei
Im Folgenden sind die unterstützten Konfigurationswerte und ihre Standardwerte aufgeführt.
{ "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 }
Schrittweise Konfigurationen
-
screenshotOnStepStart
— Legt fest, ob Synthetics vor Beginn des Schritts einen Screenshot aufnehmen soll. Der Standardwert isttrue
. -
screenshotOnStepSuccess
— Legt fest, ob Synthetics einen Screenshot aufnehmen soll, nachdem ein Schritt erfolgreich war. Der Standardwert isttrue
. -
screenshotOnStepFailure
— Legt fest, ob Synthetics einen Screenshot aufnehmen soll, nachdem ein Schritt fehlgeschlagen ist. Der Standardwert isttrue
. -
continueOnStepFailure
— Legt fest, ob ein Skript auch dann fortgesetzt werden soll, wenn ein Schritt fehlgeschlagen ist. Der Standardwert istfalse
. -
stepSuccessMetric
— Bestimmt, ob dieSuccessPercent
Metrik eines Schritts ausgegeben wird. DieSuccessPercent
Metrik für einen Schritt gilt100
für den Canary Run, wenn der Schritt erfolgreich ist und0
wenn der Schritt fehlschlägt. Der Standardwert isttrue
. -
stepDurationMetric
— Ermittelt, ob dieDuration
Metrik eines Schritts ausgegeben wird. DieDuration
Metrik wird als Dauer der Ausführung des Schritts in Millisekunden ausgegeben. Der Standardwert isttrue
.
Konfigurationen melden
Beinhaltet alle von CloudWatch Synthetics generierten Berichte, z. B. eine HAR-Datei und einen Synthetics-Schrittbericht. Felder zur Schwärzung sensibler Daten restrictedHeaders
und gelten restrictedUrlParameters
auch für von Synthetics generierte Protokolle.
-
includeRequestHeaders
— Ob Anforderungsheader in den Bericht aufgenommen werden sollen. Der Standardwert istfalse
. -
includeResponseHeaders
— Ob Antwort-Header in den Bericht aufgenommen werden sollen. Der Standardwert istfalse
. -
includeUrlPassword
— Ob ein Passwort aufgenommen werden soll, das in der URL erscheint. Standardmäßig URLs werden Passwörter, die in erscheinen, aus Protokollen und Berichten entfernt, um die Offenlegung vertraulicher Daten zu verhindern. Der Standardwert istfalse
. -
includeRequestBody
— Ob der Text der Anfrage in den Bericht aufgenommen werden soll. Der Standardwert istfalse
. -
includeResponseBody
— Ob die Antwortstelle in den Bericht aufgenommen werden soll. Der Standardwert istfalse
. -
restrictedHeaders
— Eine Liste von Header-Werten, die ignoriert werden sollen, wenn Header enthalten sind. Dies gilt sowohl für Anforderungs- als auch für Antwort-Header. Sie können beispielsweise Ihre Anmeldeinformationen verbergen, indem Sie die Werte true undincludeRequestHeaders
restrictedHeaders
as['Authorization']
übergeben. -
restrictedUrlParameters
— Eine Liste von URL-Pfad- oder Abfrageparametern, die geschwärzt werden sollen. Dies gilt für Daten URLs , die in Protokollen, Berichten und Fehlern vorkommen. Bei dem Parameter wird die Groß-/Kleinschreibung nicht beachtet. Sie können ein Sternchen (*
) als Wert angeben, um alle URL-Pfad- und Abfrageparameterwerte zu unkennzeichnen. Der Standardwert ist ein leeres Array. -
har
— Legt fest, ob ein HTTP-Archiv (HAR) generiert werden soll. Der Standardwert isttrue
.
Im Folgenden finden Sie ein Beispiel für eine Berichtskonfigurationsdatei.
"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
Konfigurationen protokollieren
Gilt für von CloudWatch Synthetics generierte Protokolle. Steuert die Ausführlichkeit von Anfrage- und Antwortprotokollen.
-
logRequest
— Ob jede Anfrage in Canary-Logs protokolliert werden soll. Bei UI-Canarys protokolliert dies jede Anforderung, die vom Browser gesendet wird. Der Standardwert istfalse
. -
logResponse
— Ob jede Antwort in Canary-Logs protokolliert werden soll. Bei UI-Canarys protokolliert dies jede vom Browser empfangene Antwort. Der Standardwert istfalse
. -
logRequestBody
— Ob Anfragetexte zusammen mit den Anfragen in Canary-Logs protokolliert werden sollen. Diese Konfiguration gilt nur, wenn sie wahrlogRequest
ist. Der Standardwert istfalse
. -
logResponseBody
— Ob die Antworttexte zusammen mit den Anfragen in Canary-Logs protokolliert werden sollen. Diese Konfiguration gilt nur, wenn sie wahrlogResponse
ist. Der Standardwert istfalse
. -
logRequestHeaders
— Ob die Header der Anfragen zusammen mit den Anfragen in den Canary-Logs protokolliert werden sollen. Diese Konfiguration gilt nur, wenn sie wahrlogRequest
ist. Der Standardwert istfalse
. -
logResponseHeaders
— Ob die Antwort-Header zusammen mit den Antworten in Canary-Logs protokolliert werden sollen. Diese Konfiguration gilt nur, wenn sie wahrlogResponse
ist. Der Standardwert istfalse
.
Konfigurationen von HTTP-Metriken
Konfigurationen für Metriken, die sich auf die Anzahl der Netzwerkanfragen mit unterschiedlichen HTTP-Statuscodes beziehen, die von CloudWatch Synthetics für diesen Kanarienvogel ausgegeben wurden.
-
metric_2xx
— Ob die2xx
Metrik (mit derCanaryName
Dimension) für diesen Canary ausgegeben werden soll. Der Standardwert isttrue
. -
metric_4xx
— Ob die4xx
Metrik (mit derCanaryName
Dimension) für diesen Kanarienvogel ausgegeben werden soll. Der Standardwert isttrue
. -
metric_5xx
— Ob die5xx
Metrik (mit derCanaryName
Dimension) für diesen Kanarienvogel ausgegeben werden soll. Der Standardwert isttrue
. -
failedRequestsMetric
— Ob diefailedRequests
Metrik (mit derCanaryName
Dimension) für diesen Kanarienvogel ausgegeben werden soll. Der Standardwert isttrue
. -
aggregatedFailedRequestsMetric
— Ob diefailedRequests
Metrik (ohne dieCanaryName
Dimension) für diesen Kanarienvogel ausgegeben werden soll. Der Standardwert isttrue
. -
aggregated2xxMetric
— Ob die2xx
Metrik (ohne dieCanaryName
Dimension) für diesen Kanarienvogel ausgegeben werden soll. Der Standardwert isttrue
. -
aggregated4xxMetric
— Ob die4xx
Metrik (ohne dieCanaryName
Dimension) für diesen Kanarienvogel ausgegeben werden soll. Der Standardwert isttrue
. -
aggregated5xxMetric
— Ob die5xx
Metrik (ohne dieCanaryName
Dimension) für diesen Kanarienvogel ausgegeben werden soll. Der Standardwert isttrue
.
Kanarische metrische Konfigurationen
Konfigurationen für andere von CloudWatch Synthetics ausgegebene Metriken.
-
failedCanaryMetric
— Ob dieFailed
Metrik (mit derCanaryName
Dimension) für diesen Kanarienvogel ausgegeben werden soll. Der Standardwert isttrue
. -
aggregatedFailedCanaryMetric
— Ob dieFailed
Metrik (ohne dieCanaryName
Dimension) für diesen Kanarienvogel ausgegeben werden soll. Der Standardwert isttrue
.
Andere Konfigurationen
-
userAgent
— Eine Zeichenfolge, die an den Benutzeragenten angehängt werden soll. Der Benutzeragent ist eine Zeichenfolge, die im Anforderungsheader enthalten ist und Ihren Browser gegenüber Websites identifiziert, die Sie besuchen, wenn Sie den Headless-Browser verwenden. CloudWatch Synthetics fügt automatisch hinzuCloudWatchSynthetics/
. Die angegebene Konfiguration wird an den generierten Benutzeragenten angehängt. Der Standardwert für den Benutzeragenten, der angehängt werden soll, ist eine leere Zeichenfolge ()canary-arn
to the user agent""
.
CloudWatch Synthetics-Umgebungsvariablen
Konfigurieren Sie die Protokollierungsebene und das Format mithilfe von Umgebungsvariablen.
Format des Protokolls
Die CloudWatch Synthetics Playwright Runtime erstellt CloudWatch Protokolle für jeden Canary-Run. Die Protokolle werden zur bequemen Abfrage im JSON-Format geschrieben. Optional können Sie das Protokollformat in ändern. TEXT
-
Environment variable name
— CW_SYNTHETICS_LOG_FORMAT -
Supported values
— JSON, TEXT -
Default
— JSON
Protokollebenen
Debug
Der Aktivierungsmodus erhöht zwar die Ausführlichkeit, kann aber bei der Problembehandlung nützlich sein.
-
Environment variable name
— CW_SYNTHETICS_LOG_LEVEL -
Supported values
— TRACE, DEBUG, INFO, WARN, FEHLER, SCHWERWIEGEND -
Default
— INFORMATIONEN