View a markdown version of this page

Bibliotheksfunktionen sind für Node.js kanarische Skripte mit Puppeteer verfügbar - Amazon CloudWatch

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.

Bibliotheksfunktionen sind für Node.js kanarische Skripte mit Puppeteer verfügbar

In diesem Abschnitt werden die Bibliotheksfunktionen beschrieben, die für Node.js Canary-Skripte verfügbar sind.

Node.js Bibliotheksklassen und -funktionen, die für alle Kanarischen Inseln gelten

Die folgenden CloudWatch Synthetics-Bibliotheksfunktionen für Node.js sind für alle Kanarienvögel nützlich.

Synthetics-Klasse

Die folgenden Funktionen für alle Canarys befinden sich in der Klasse Synthetics.

hinzufügen ExecutionError (errorMessage, ex);

errorMessage beschreibt den Fehler und ex ist die aufgetretene Ausnahme

Sie können Folgendes verwenden:addExecutionError, um Ausführungsfehler für Ihren Canary festzulegen. Es lässt den Canary fehlschlagen, ohne die Skriptausführung zu unterbrechen. Es wirkt sich auch nicht auf Ihre successPercent-Metriken aus.

Sie sollten Fehler nur dann als Ausführungsfehler verfolgen, wenn sie nicht wichtig sind, um den Erfolg oder Misserfolg Ihres Canary-Skripts anzuzeigen.

Ein Beispiel für die Verwendung von addExecutionError ist das folgende. Sie überwachen die Verfügbarkeit Ihres Endpunkts und machen Screenshots, nachdem die Seite geladen wurde. Da der Fehler beim Erstellen eines Screenshots die Verfügbarkeit des Endpunkts nicht bestimmt, können Sie beim Erstellen von Screenshots aufgetretene Fehler abfangen und sie als Ausführungsfehler hinzufügen. Ihre Verfügbarkeitsmetriken zeigen weiterhin an, dass der Endpunkt aktiv ist und ausgeführt wird, aber Ihr Canary-Status wird als fehlgeschlagen markiert. Der folgende Codeblock fängt einen solchen Fehler ab und fügt ihn als Ausführungsfehler hinzu.

try { await synthetics.takeScreenshot(stepName, "loaded"); } catch(ex) { synthetics.addExecutionError('Unable to take screenshot ', ex); }

erhalten CanaryName ();

Gibt den Namen des Canarys zurück.

holen CanaryArn ();

Gibt den ARN des Canarys aus.

holen CanaryUserAgentString ();

Gibt den benutzerdefinierten Benutzeragenten des Canary zurück.

holen RuntimeVersion ();

Diese Funktion ist in Laufzeitversion syn-nodejs-puppeteer-3.0 und höher verfügbar. Es gibt die Synthetics Laufzeitversion des Canarys zurück. Der Rückgabewert könnte beispielsweise syn-nodejs-puppeteer-3.0 sein.

holen LogLevel ();

Ruft die aktuelle Protokollebene für die Synthetics-Bibliothek ab. Folgende Werte sind möglich:

  • 0 – Debug

  • 1 – Info

  • 2 – Warnen

  • 3 – Fehler

Beispiel:

let logLevel = synthetics.getLogLevel();

setzen LogLevel ();

Legt die Protokollebene für die Synthetics-Bibliothek fest. Folgende Werte sind möglich:

  • 0 – Debug

  • 1 – Info

  • 2 – Warnen

  • 3 – Fehler

Beispiel:

synthetics.setLogLevel(0);

SyntheticsConfiguration klasse

Diese Klasse ist nur in der syn-nodejs-2.1-Laufzeitversion oder höher verfügbar.

Sie können die SyntheticsConfiguration-Klasse verwenden, um das Verhalten von Synthetics-Bibliotheksfunktionen zu konfigurieren. Sie können diese Klasse beispielsweise verwenden, um die executeStep()-Funktion so zu konfigurieren, dass keine Screenshots erfasst werden.

Sie können CloudWatch Synthetics-Konfigurationen auf globaler Ebene festlegen, die auf alle Stufen der Kanaren angewendet werden. Sie können diese Konfigurationen auch auf Schrittebene überschreiben, indem Sie Konfigurationsschlüssel-Wert-Paare übergeben.

Sie können Optionen auf Schrittebene übergeben. Beispiele finden Sie unter async executeStep (stepName, FunktionToExecute, [StepConfig]); und ausführen HttpStep (stepName, RequestOptions, [Rückruf], [StepConfig]).

setConfig (Optionen)

options ist ein Objekt, bei dem es sich um eine Reihe konfigurierbarer Optionen für Ihren Canary handelt. In den folgenden Abschnitten werden die möglichen Felder in options erläutert.

setConfig (Optionen) für alle Canary

Für Benutzer, die Canaries syn-nodejs-puppeteer-3.2 oder später verwenden, können die (Optionen) für SetConfig die folgenden Parameter enthalten:

  • includeRequestHeaders (boolean) – Gibt an, ob Anforderungs-Header in den Bericht aufgenommen werden sollen. Der Standardwert ist false.

  • includeResponseHeaders (boolean) – Gibt an, ob Antwort-Header in den Bericht aufgenommen werden sollen. Der Standardwert ist false.

  • restrictedHeaders (array) – 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 Ihre Anmeldeinformationen beispielsweise verbergen, indem Sie include RequestHeaders as true und RestrictedHeaders as übergeben. ['Authorization']

  • includeRequestBody (boolean) – Gibt an, ob der Anforderungstext in den Bericht aufgenommen werden soll. Der Standardwert ist false.

  • includeResponseBody (boolean) – Gibt an, ob der Antworttext in den Bericht aufgenommen werden soll. Der Standardwert ist false.

    Wichtig

    Wenn Sie entweder includeResponseBody oder logResponseBody aktivieren, wird das Datenobjekt in der Antwort von einigen APIs, z. B. aws-sdk.v3-Clients, nicht zurückgegeben. Dies liegt an einer Beschränkung des verwendeten Antwortobjekts Node.js und der Art des verwendeten Antwortobjekts.

setConfig (Optionen) in Bezug auf Metriken CloudWatch

Für Kanarienvögel, die das Programm verwenden syn-nodejs-puppeteer-3.1 oder später verwenden, können die (Optionen) für SetConfig die folgenden booleschen Parameter enthalten, die bestimmen, welche Metriken vom Kanarienvogel veröffentlicht werden. Der Standardwert für jede dieser Optionen ist true. Die Optionen, die mit aggregated beginnen, bestimmen, ob die Metrik ohne die CanaryName-Dimension ausgegeben wird. Sie können diese Metriken verwenden, um die aggregierten Ergebnisse für alle Canarys anzuzeigen. Die anderen Optionen bestimmen, ob die Metrik mit der CanaryName Dimension ausgegeben wird. Sie können diese Metriken verwenden, um die Ergebnisse für jeden einzelnen Canary anzuzeigen.

Eine Liste der von Canaries ausgegebenen CloudWatch Messwerte finden Sie unter. CloudWatch von Canaries veröffentlichte Metriken

  • failedCanaryMetric (boolean) – Gibt an, ob die Failed-Metrik (mit der CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • failedRequestsMetric (boolean) – Gibt an, ob die Failed requests-Metrik (mit der CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • _2xxMetric (boolean) – Gibt an, ob die 2xx-Metrik (mit der CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • _4xxMetric (boolean) – Gibt an, ob die 4xx-Metrik (mit der CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • _5xxMetric (boolean) – Gibt an, ob die 5xx-Metrik (mit der CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • stepDurationMetric (boolean) – Gibt an, ob die Step duration-Metrik (mit der CanaryName-Dimension StepName) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • stepSuccessMetric (boolean) – Gibt an, ob die Step success-Metrik (mit der CanaryName-Dimension StepName) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • aggregatedFailedCanaryMetric (boolean) – Gibt an, ob die Failed-Metrik (ohne die CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • aggregatedFailedRequestsMetric (boolean) – Gibt an, ob die Failed Requests-Metrik (ohne die CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • aggregated2xxMetric (boolean) – Gibt an, ob die 2xx-Metrik (ohne die CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • aggregated4xxMetric (boolean) – Gibt an, ob die 4xx-Metrik (ohne die CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • aggregated5xxMetric (boolean) – Gibt an, ob die 5xx-Metrik (ohne die CanaryName-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • visualMonitoringSuccessPercentMetric (boolean) – Gibt an, ob die visualMonitoringSuccessPercent-Metrik für diesen Canary emittiert werden soll. Der Standardwert ist true.

  • visualMonitoringTotalComparisonsMetric (boolean) – Gibt an, ob die visualMonitoringTotalComparisons-Metrik für diesen Canary emittiert werden soll. Der Standardwert ist false.

  • includeUrlPassword (boolean) – Gibt an, ob ein Passwort eingefügt werden soll, das in der URL angezeigt wird. Standardmäßig werden Passwörter, die in URLs angezeigt werden, aus Protokollen und Berichten abgedichtet, um die Offenlegung vertraulicher Daten zu verhindern. Der Standardwert ist false.

  • restrictedUrlParameters (array) – Eine Liste von URL-Pfad- oder Abfrageparametern, die geschwärzt werden sollen. Dies gilt für URLs, die in Protokollen, Berichten und Fehlern angezeigt werden. Bei dem Parameter wird die Groß-/Kleinschreibung nicht beachtet. Sie können ein Sternchen (*) als Wert übergeben, um alle URL-Pfad- und Abfrageparameterwerte zu überarbeiten. Der Standardwert ist ein leeres Array.

  • logRequest (boolean) – Gibt an, ob jede Anforderung in Canary-Protokollen protokolliert werden soll. Bei UI-Canarys protokolliert dies jede Anforderung, die vom Browser gesendet wird. Der Standardwert ist true.

  • logResponse (boolean) – Gibt an, ob jede Antwort in Canary-Protokollen protokolliert werden soll. Bei UI-Canarys protokolliert dies jede vom Browser empfangene Antwort. Der Standardwert ist true.

  • logRequestBody (boolean) – Gibt an, ob Anforderungstexte zusammen mit den Anforderungen in Canary- Protokollen protokolliert werden sollen. Diese Konfiguration gilt nur, wenn logRequest true ist. Der Standardwert ist false.

  • logResponseBody (boolean) – Gibt an, ob Antworttexte zusammen mit den Antworten in Canary-Logs protokolliert werden sollen. Diese Konfiguration gilt nur, wenn logResponse true ist. Der Standardwert ist false.

    Wichtig

    Wenn Sie entweder includeResponseBody oder logResponseBody aktivieren, wird das Datenobjekt in der Antwort von einigen APIs, z. B. aws-sdk.v3-Clients, nicht zurückgegeben. Dies liegt an einer Beschränkung des verwendeten Antwortobjekts Node.js und der Art des verwendeten Antwortobjekts.

  • logRequestHeaders (boolean) – Gibt an, ob Anforderungsheader zusammen mit den Anforderungen in Canary-Protokollen protokolliert werden sollen. Diese Konfiguration gilt nur, wenn logRequest true ist. Der Standardwert ist false.

    Beachten Sie, dass includeRequestHeaders Header in Artefakten aktiviert.

  • logResponseHeaders (boolean) – Gibt an, ob Antwortheader zusammen mit den Antworten in Canary-Protokollen protokolliert werden sollen. Diese Konfiguration gilt nur, wenn logResponse true ist. Der Standardwert ist false.

    Beachten Sie, dass includeResponseHeaders Header in Artefakten aktiviert.

Anmerkung

Die Duration- und SuccessPercent-Metriken werden immer für jeden Canary ausgegeben, sowohl mit als auch ohne die CanaryName-Metrik

Methoden zum Aktivieren oder Deaktivieren von Metriken

deaktivieren AggregatedRequestMetrics ()

Verhindert, dass der Canary alle Anforderungsmesswerte ausgibt, die ohne CanaryName-Dimension ausgegeben werden.

deaktivieren RequestMetrics ()

Deaktiviert alle Anforderungsmetriken, einschließlich aller Canary-Metriken und Metriken, die über alle Canarys aggregiert werden.

deaktivieren StepMetrics ()

Deaktiviert alle Schrittmetriken, einschließlich Metriken für den Schritterfolg und für die Schrittdauer.

aktivieren AggregatedRequestMetrics ()

Ermöglicht dem Canary, alle Anforderungsmesswerte auszugeben, die ohne CanaryName-Dimension ausgegeben werden.

aktivieren RequestMetrics ()

Aktiviert alle Anforderungsmetriken, einschließlich aller Canary-Metriken und Metriken, die über alle Canarys aggregiert werden.

aktivieren StepMetrics ()

Aktiviert alle Schrittmetriken, einschließlich Metriken für den Schritterfolg und für die Schrittdauer.

get2xxMetric()

Gibt zurück, ob der Canary eine 2xx-Metrik mit der CanaryName-Dimension ausgibt.

get4xxMetric()

Gibt zurück, ob der Canary eine 4xx-Metrik mit der CanaryName-Dimension ausgibt.

get5xxMetric()

Gibt zurück, ob der Canary eine 5xx-Metrik mit der CanaryName-Dimension ausgibt.

getAggregated2xxMetric()

Gibt zurück, ob der Canary eine 2xx-Metrik ohne Dimension ausgibt.

getAggregated4xxMetric()

Gibt zurück, ob der Canary eine 4xx-Metrik ohne Dimension ausgibt.

erhalten AggregatedFailedCanaryMetric ()

Gibt zurück, ob der Canary eine Failed-Metrik ohne Dimension ausgibt.

bekommen AggregatedFailedRequestsMetric ()

Gibt zurück, ob der Canary eine Failed requests-Metrik ohne Dimension ausgibt.

getAggregated5xxMetric()

Gibt zurück, ob der Canary eine 5xx-Metrik ohne Dimension ausgibt.

bekommen FailedCanaryMetric ()

Gibt zurück, ob der Canary eine Failed-Metrik mit der CanaryName-Dimension ausgibt.

bekommen FailedRequestsMetric ()

Gibt zurück, ob der Canary eine Failed requests-Metrik mit der CanaryName-Dimension ausgibt.

bekommen StepDurationMetric ()

Gibt zurück, ob der Canary eine Duration-Metrik mit der CanaryName-Dimension für dieses Canary ausgibt.

bekommen StepSuccessMetric ()

Gibt zurück, ob der Canary eine StepSuccess-Metrik mit der CanaryName-Dimension für dieses Canary ausgibt.

with2xxMetric(_2xxMetric)

Akzeptiert ein boolesches Argument, das angibt, ob eine 2xx-Metrik mit der CanaryName-Dimension für diesen Canary emittiert werden soll.

with4xxMetric(_4xxMetric)

Akzeptiert ein boolesches Argument, das angibt, ob eine 4xx-Metrik mit der CanaryName-Dimension für diesen Canary emittiert werden soll.

with5xxMetric(_5xxMetric)

Akzeptiert ein boolesches Argument, das angibt, ob eine 5xx-Metrik mit der CanaryName-Dimension für diesen Canary emittiert werden soll.

withAggregated2xxMetric(aggregated2xxMetric)

Akzeptiert ein boolesches Argument, das angibt, ob eine 2xx-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

withAggregated4xxMetric(aggregated4xxMetric)

Akzeptiert ein boolesches Argument, das angibt, ob eine 4xx-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

withAggregated5xxMetric(aggregated5xxMetric)

Akzeptiert ein boolesches Argument, das angibt, ob eine 5xx-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

mit AggregatedFailedCanaryMetric (aggregiertFailedCanaryMetric)

Akzeptiert ein boolesches Argument, das angibt, ob eine Failed-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

mit AggregatedFailedRequestsMetric (aggregiertFailedRequestsMetric)

Akzeptiert ein boolesches Argument, das angibt, ob eine Failed requests-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

mit FailedCanaryMetric (fehlgeschlagenCanaryMetric)

Akzeptiert ein boolesches Argument, das angibt, ob eine Failed-Metrik mit der CanaryName-Dimension für diesen Canary emittiert werden soll.

mit FailedRequestsMetric (gescheitertRequestsMetric)

Akzeptiert ein boolesches Argument, das angibt, ob eine Failed requests-Metrik mit der CanaryName-Dimension für diesen Canary emittiert werden soll.

mit StepDurationMetric (SchrittDurationMetric)

Akzeptiert ein boolesches Argument, das angibt, ob eine Duration-Metrik mit der CanaryName-Dimension für diesen Canary emittiert werden soll.

mit StepSuccessMetric (SchrittSuccessMetric)

Akzeptiert ein boolesches Argument, das angibt, ob eine StepSuccess-Metrik mit der CanaryName-Dimension für diesen Canary emittiert werden soll.

Methoden zum Aktivieren oder Deaktivieren anderer Features

mit HarFile ()

Akzeptiert ein boolesches Argument, das angibt, ob eine HAR-Datei für diesen Canary erstellt werden soll.

mit StepsReport ()

Akzeptiert ein boolesches Argument, das angibt, ob eine Zusammenfassung der Schrittausführung für diesen Canary gemeldet werden soll.

mit IncludeUrlPassword ()

Akzeptiert ein boolesches Argument, das angibt, ob Kennwörter eingeschlossen werden sollen, die in URLs in Protokollen und Berichten angezeigt werden.

mit RestrictedUrlParameters ()

Akzeptiert ein Array von URL-Pfad- oder Abfrageparametern zum Schwärzen. Dies gilt für URLs, die in Protokollen, Berichten und Fehlern angezeigt werden. Sie können ein Sternchen (*) als Wert übergeben, um alle URL-Pfad- und Abfrageparameterwerte zu verkleinern

mit LogRequest ()

Akzeptiert ein boolesches Argument, das angibt, ob jede Anforderung in den Protokollen des Canarys protokolliert werden soll.

mit LogResponse ()

Akzeptiert ein boolesches Argument, das angibt, ob jede Antwort in den Protokollen des Canarys protokolliert werden soll.

mit LogRequestBody ()

Akzeptiert ein boolesches Argument, das angibt, ob jeder Anforderungstext in den Protokollen des Canarys protokolliert werden soll.

mit LogResponseBody ()

Akzeptiert ein boolesches Argument, das angibt, ob jeder Antworttext in den Protokollen des Canarys protokolliert werden soll.

mit LogRequestHeaders ()

Akzeptiert ein boolesches Argument, das angibt, ob jeder Anforderungs-Header in den Protokollen des Canarys protokolliert werden soll.

mit LogResponseHeaders ()

Akzeptiert ein boolesches Argument, das angibt, ob jeder Antwort-Header in den Protokollen des Canarys protokolliert werden soll.

bekommen HarFile ()

Gibt zurück, ob der Canary eine HAR-Datei erstellt.

bekommen StepsReport ()

Gibt zurück, ob der Canary eine Zusammenfassung der Schrittausführung meldet

bekommen IncludeUrlPassword ()

Gibt zurück, ob der Canary Passwörter enthält, die in URLs in Protokollen und Berichten angezeigt werden.

bekommen RestrictedUrlParameters ()

Gibt zurück, ob der Canary den URL-Pfad oder die Abfrageparameter entfernt.

bekommen LogRequest ()

Gibt zurück, ob der Canary jede Anforderung in den Canaryprotokollen protokolliert.

bekommen LogResponse ()

Gibt zurück, ob der Canary jede Antwort in den Canaryprotokollen protokolliert.

bekommen LogRequestBody ()

Gibt zurück, ob der Canary jeden Anforderungstext in den Canaryprotokollen protokolliert.

bekommen LogResponseBody ()

Gibt zurück, ob der Canary jeden Antworttext in den Canaryprotokollen protokolliert.

bekommen LogRequestHeaders ()

Gibt zurück, ob der Canary jeden Anforderungsheader in den Protokollen des Canarys.

bekommen LogResponseHeaders ()

Gibt zurück, ob der Canary alle Antwort-Header in den Canaryprotokollen protokolliert.

Funktionen für alle Canarys

  • withIncludeRequestHeaders(einschließenRequestHeaders)

  • withIncludeResponseHeaders(einschließenResponseHeaders)

  • withRestrictedHeaders(RestrictedHeader)

  • withIncludeRequestBody(einschließenRequestBody)

  • withIncludeResponseBody(einschließenResponseBody)

  • enableReportingOptions() — Aktiviert alle Berichtsoptionen: IncludeRequestHeaders, Include ResponseHeaders, RequestBodyInclude und ResponseBodyInclude,.

  • disableReportingOptions() — Deaktiviert alle Berichtsoptionen: IncludeRequestHeaders, IncludeResponseHeaders, Include und RequestBody Include ResponseBody,.

setConfig (Optionen) für UI-Canarys

Für UI-Canarys kann SetConfig folgende boolesche Parameter enthalten:

  • continueOnStepFailure(boolean) — Ob mit der Ausführung des Canary-Skripts fortgefahren werden soll, nachdem ein Schritt fehlgeschlagen ist (dies bezieht sich auf die ExecuteStep-Funktion). Wenn Schritte fehlschlagen, wird der Canary-Lauf weiterhin als fehlgeschlagen markiert. Der Standardwert ist false.

  • harFile (boolean) – Gibt an, ob eine HAR-Datei erstellt werden soll. Der Standardwert ist True.

  • screenshotOnStepStart (boolean) – Gibt an, ob ein Screenshot erstellt werden soll, bevor ein Schritt gestartet wird.

  • screenshotOnStepSuccess (boolean) – Gibt an, ob nach einem erfolgreichen Schritt ein Screenshot erstellt werden soll.

  • screenshotOnStepFailure (boolean) - Ob ein Screenshot erstellt werden soll, nachdem ein Schritt fehlgeschlagen ist.

Methoden zum Aktivieren oder Deaktivieren von Screenshots

deaktivieren () StepScreenshots

Deaktiviert alle Screenshot-Optionen (Screenshot OnStepStartOnStepSuccess, Screenshot und ScreenshotOnStepFailure).

aktivieren StepScreenshots ()

Aktiviert alle Screenshot-Optionen (Screenshot OnStepStartOnStepSuccess, Screenshot und ScreenshotOnStepFailure). Standardmäßig sind alle diese Methoden aktiviert.

erhalten ScreenshotOnStepFailure ()

Gibt zurück, ob der Canary einen Screenshot macht, nachdem ein Schritt fehlschlägt.

bekommen ScreenshotOnStepStart ()

Gibt zurück, ob der Canary einen Screenshot erstellt, bevor er einen Schritt startet.

bekommen ScreenshotOnStepSuccess ()

Gibt zurück, ob der Canary nach erfolgreichem Abschluss eines Schritts einen Screenshot erstellt.

mit ScreenshotOnStepStart (BildschirmfotoOnStepStart)

Akzeptiert ein boolesches Argument, das angibt, ob ein Screenshot erstellt werden soll, bevor ein Schritt gestartet wird.

mit ScreenshotOnStepSuccess (BildschirmfotoOnStepSuccess)

Akzeptiert ein boolesches Argument, das angibt, ob nach erfolgreichem Abschluss eines Schritts ein Screenshot erstellt werden soll.

mit ScreenshotOnStepFailure (BildschirmfotoOnStepFailure)

Akzeptiert ein boolesches Argument, das angibt, ob nach einem Schritt ein Screenshot erstellt werden soll.

Verwendung in UI-Canarys

Importieren Sie zuerst die Synthetics-Abhängigkeit und holen Sie die Konfiguration ab.

// Import Synthetics dependency const synthetics = require('@aws/synthetics-puppeteer'); // Get Synthetics configuration const synConfig = synthetics.getConfiguration();

Legen Sie dann die Konfiguration für jede Option fest, indem Sie die setConfig-Methode mit einer der folgenden Optionen aufrufen.

// Set configuration values synConfig.setConfig({ screenshotOnStepStart: true, screenshotOnStepSuccess: false, screenshotOnStepFailure: false });

Oder

synConfig.withScreenshotOnStepStart(false).withScreenshotOnStepSuccess(true).withScreenshotOnStepFailure(true)

Um alle Screenshots zu deaktivieren, verwenden Sie die disableStepScreenshots()-Funktion wie in diesem Beispiel.

synConfig.disableStepScreenshots();

Sie können Screenshots jederzeit im Code aktivieren oder deaktivieren. Wenn Sie beispielsweise Screenshots nur für einen Schritt deaktivieren möchten, deaktivieren Sie sie, bevor Sie diesen Schritt ausführen, und aktivieren Sie sie dann nach dem Schritt.

setConfig (Optionen) für API-Canarys

Für API-Canarys kann SetConfig folgende boolesche Parameter enthalten:

  • continueOnHttpStepFailure(boolean) — Ob mit der Ausführung des Canary-Skripts fortgefahren werden soll, nachdem ein HTTP-Schritt fehlgeschlagen ist (dies bezieht sich auf die HttpStepExecute-Funktion). Wenn Schritte fehlschlagen, wird der Canary-Lauf weiterhin als fehlgeschlagen markiert. Der Standardwert ist true.

Visuelle Überwachung

Die visuelle Überwachung vergleicht Screenshots, die während eines Canary-Laufs aufgenommen wurden, mit Screenshots, die während eines Baseline-Canary-Laufs aufgenommen wurden. Wenn die Diskrepanz zwischen den beiden Screenshots einen Schwellenwert überschreitet, schlägt der Canary fehl, und Sie können die Bereiche mit Unterschieden in der Farbe im Canarylauf-Bericht sehen. Visuelle Überwachung wird in Canaries unterstützt, auf denen syn-puppeteer-node-3.2 und höher ausgeführt wird. Es wird derzeit nicht in Canarys unterstützt, die Python und Selenium ausführen.

Um die visuelle Überwachung zu aktivieren, fügen Sie dem Canary-Skript die folgende Codezeile hinzu. Weitere Details finden Sie unter SyntheticsConfiguration klasse.

syntheticsConfiguration.withVisualCompareWithBaseRun(true);

Wenn der Canary zum ersten Mal erfolgreich ausgeführt wird, nachdem diese Zeile zum Skript hinzugefügt wurde, verwendet er die während dieser Ausführung erstellten Screenshots als Vergleichsbasis. Nach dem ersten Canary-Run kannst du die CloudWatch Konsole verwenden, um den Canary zu bearbeiten, um einen der folgenden Schritte auszuführen:

  • Legen Sie den nächsten Lauf des Canarys als neue Basislinie fest.

  • Zeichnen Sie Grenzen auf dem aktuellen Baseline-Screenshot, um Bereiche des Screenshots festzulegen, die bei visuellen Vergleichen ignoriert werden sollen.

  • Entfernen Sie einen Screenshot, der für die visuelle Überwachung verwendet wird.

Weitere Informationen zur Verwendung der CloudWatch Konsole zum Bearbeiten eines Canary finden Sie unterEinen Canary bearbeiten oder löschen.

Weitere Optionen für die visuelle Überwachung

Kunststoffe Configuration.withVisualVarianceThresholdPercentage (gewünschter Prozentsatz)

Legen Sie den akzeptablen Prozentsatz für die Screenshot-Varianz in visuellen Vergleichen fest.

Kunststoffe Configuration.withVisualVarianceHighlightHexColor (“ #fafa00 „)

Legen Sie die Hervorhebungsfarbe fest, die Varianzbereiche angibt, wenn Sie Canary-Lauf-Berichte betrachten, die visuelle Überwachung verwenden.

Kunststoffe Configuration.withFailCanaryRunOnVisualVariance (FailCanary)

Legen Sie fest, ob der Canary fehlschlägt, wenn ein visueller Unterschied größer als der Schwellenwert ist. Die Standardeinstellung ist, dass der Canary fehlschlägt.

Synthetics Logger

SyntheticsLogger schreibt Logs sowohl in die Konsole als auch in eine lokale Protokolldatei auf derselben Protokollebene. Diese Protokolldatei wird nur dann an beide Speicherorte geschrieben, wenn die Protokollebene auf oder unter der gewünschten Protokollierungsebene der aufgerufenen Protokollfunktion liegt.

Den Protokollierungsanweisungen in der lokalen Protokolldatei werden je nach der Protokollebene der aufgerufenen Funktion „DEBUG“ „INFO“ usw. vorangestellt.

Sie können das verwenden SyntheticsLogger, vorausgesetzt, Sie möchten die Synthetics Library auf derselben Protokollebene wie Ihr Synthetics Canary-Logging ausführen.

Die Verwendung von SyntheticsLogger ist nicht erforderlich, um eine Protokolldatei zu erstellen, die an Ihren S3-Ergebnisspeicherort hochgeladen wird. Sie können stattdessen eine andere Protokolldatei im /tmp-Ordner erstellen. Alle Dateien, die unter dem /tmp-Ordner erstellt wurden, werden als Artefakte an den Ergebnisspeicherort in S3 hochgeladen.

So verwenden Sie den Synthetics Library Logger:

const log = require('@aws/synthetics-logger');

Nützliche Funktionsdefinitionen:

log.debug (message,); ex

Parameter: message ist die zu protokollierende Nachricht. exist die Ausnahme, falls vorhanden, für die Protokollierung.

Beispiel:

log.debug("Starting step - login.");

log.error (message,); ex

Parameter: message ist die zu protokollierende Nachricht. exist die Ausnahme, falls vorhanden, für die Protokollierung.

Beispiel:

try { await login(); catch (ex) { log.error("Error encountered in step - login.", ex); }

log.info (message,ex);

Parameter: message ist die zu protokollierende Nachricht. exist die Ausnahme, falls vorhanden, für die Protokollierung.

Beispiel:

log.info("Successfully completed step - login.");

log.log (message,ex);

Dies ist ein Alias für log.info.

Parameter: message ist die zu protokollierende Nachricht. exist die Ausnahme, falls vorhanden, für die Protokollierung.

Beispiel:

log.log("Successfully completed step - login.");

log.warn (message,); ex

Parameter: message ist die zu protokollierende Nachricht. exist die Ausnahme, falls vorhanden, für die Protokollierung.

Beispiel:

log.warn("Exception encountered trying to publish CloudWatch Metric.", ex);

SyntheticsLogHelper Klasse

Die Klasse SyntheticsLogHelper ist in der Laufzeit syn-nodejs-puppeteer-3.2 und späteren Laufzeiten verfügbar. Es ist bereits in der CloudWatch Synthetics-Bibliothek initialisiert und mit der Synthetics-Konfiguration konfiguriert. Sie können dies in Ihrem Skript als Abhängigkeit hinzufügen. Diese Klasse ermöglicht es Ihnen, URLs, Header und Fehlermeldungen zu bereinigen, um vertrauliche Informationen zu überarbeiten.

Anmerkung

Synthetics bereinigt alle protokollierten URLs und Fehlermeldungen, bevor sie basierend auf der Synthetics-Konfigurationseinstellung restrictedUrlParameters in Protokolle, Berichte, HAR-Dateien und Canary-Lauf-Fehler aufgenommen werden. Sie müssen getSanitizedUrl oder getSanitizedErrorMessage nur verwenden, wenn Sie URLs oder Fehler in Ihrem Skript protokollieren. Synthetics speichert keine Canaryartefakte mit Ausnahme von Canaryfehlern, die vom Skript ausgelöst werden. Canary-Lauf-Artefakte werden in Ihrem Kundenkonto gespeichert. Weitere Informationen finden Sie unter Sicherheitsüberlegungen für Synthetics-Canaries.

get SanitizedUrl (url, stepConfig = null)

Diese Funktion ist in syn-nodejs-puppeteer-3.2 und höher verfügbar. Es gibt bereinigt URL-Zeichenfolgen basierend auf der Konfiguration. Sie können sich dafür entscheiden, sensible URL-Parameter wie password und access_token zu schwärzen, indem Sie die Eigenschaft restrictedUrlParameters festlegen. Standardmäßig werden Passwörter in URLs geschwärzt. Sie können bei Bedarf URL-Passwörter aktivieren, indem Sie includeUrlPassword auf true setzen.

Diese Funktion löst einen Fehler aus, wenn die übergebene URL keine gültige URL ist.

Parameter

  • urlist eine Zeichenfolge und ist die URL, die bereinigt werden soll.

  • stepConfig(Optional) überschreibt die globale Synthetics-Konfiguration für diese Funktion. Wenn stepConfig nicht übergeben wird, wird die globale Konfiguration verwendet, um die URL zu bereinigen.

Beispiel

In diesem Beispiel wird die folgende Beispiel-URL verwendet : https://example.com/learn/home?access_token=12345&token_type=Bearer&expires_in=1200. In diesem Beispiel enthält access_token Ihre vertraulichen Informationen, die nicht protokolliert werden sollten. Beachten Sie, dass die Synthetics-Services keine Canary-Artefakte speichern. Artefakte wie Protokolle, Screenshots und Berichte werden in einem Amazon-S3-Bucket in Ihrem Kundenkonto gespeichert.

Der erste Schritt besteht darin, die Synthetics-Konfiguration festzulegen.

// Import Synthetics dependency const synthetics = require('@aws/synthetics-puppeteer'); // Import Synthetics logger for logging url const log = require('@aws/synthetics-logger'); // Get Synthetics configuration const synConfig = synthetics.getConfiguration(); // Set restricted parameters synConfig.setConfig({ restrictedUrlParameters: ['access_token']; }); // Import SyntheticsLogHelper dependency const syntheticsLogHelper = require('@aws/synthetics-log-helper'); const sanitizedUrl = syntheticsLogHelper.getSanitizedUrl('URL'); const urlConfig = { restrictedUrlParameters = ['*'] }; const sanitizedUrl = syntheticsLogHelper.getSanitizedUrl('URL', urlConfig); logger.info('My example url is: ' + sanitizedUrl);

Als nächstes bereinigen und protokollieren Sie die URL

// Import SyntheticsLogHelper dependency const syntheticsLogHelper = require('@aws/synthetics-log-helper'); const sanitizedUrl = syntheticsLogHelper.getSanitizedUrl('https://example.com/learn/home?access_token=12345&token_type=Bearer&expires_in=1200');

Dies protokolliert Folgendes in Ihrem Canaryprotokoll.

My example url is: https://example.com/learn/home?access_token=REDACTED&token_type=Bearer&expires_in=1200

Sie können die Synthetics-Konfiguration für eine URL überschreiben, indem Sie einen optionalen Parameter mit Synthetics-Konfigurationsoptionen übergeben, wie im folgenden Beispiel gezeigt.

const urlConfig = { restrictedUrlParameters = ['*'] }; const sanitizedUrl = syntheticsLogHelper.getSanitizedUrl('https://example.com/learn/home?access_token=12345&token_type=Bearer&expires_in=1200', urlConfig); logger.info('My example url is: ' + sanitizedUrl);

Im obigen Beispiel werden alle Abfrageparameter geschwärzt und wie folgt protokolliert:

My example url is: https://example.com/learn/home?access_token=REDACTED&token_type=REDACTED&expires_in=REDACTED

erhalten SanitizedErrorMessage

Diese Funktion ist in syn-nodejs-puppeteer-3.2 und höher verfügbar. Es gibt bereinigte Fehlerzeichenfolgen zurück, indem alle URLs, die auf der Synthetics-Konfiguration basieren, bereinigt werden. Sie können die globale Synthetics-Konfiguration überschreiben, wenn Sie diese Funktion aufrufen, indem Sie einen optionalen stepConfig-Parameter übergeben.

Parameter

  • errorist der Fehler beim Desinfizieren. Es kann ein Fehler-Objekt oder eine Zeichenfolge sein.

  • stepConfig(Optional) überschreibt die globale Synthetics-Konfiguration für diese Funktion. Wenn stepConfig nicht übergeben wird, wird die globale Konfiguration verwendet, um die URL zu bereinigen.

Beispiel

In diesem Beispiel wird der folgende Fehler verwendet: Failed to load url: https://example.com/learn/home?access_token=12345&token_type=Bearer&expires_in=1200

Der erste Schritt besteht darin, die Synthetics-Konfiguration festzulegen.

// Import Synthetics dependency const synthetics = require('@aws/synthetics-puppeteer'); // Import Synthetics logger for logging url const log = require('@aws/synthetics-logger'); // Get Synthetics configuration const synConfig = synthetics.getConfiguration(); // Set restricted parameters synConfig.setConfig({ restrictedUrlParameters: ['access_token']; });

Als nächstes bereinigen und protokollieren Sie die Fehlermeldung

// Import SyntheticsLogHelper dependency const syntheticsLogHelper = require('@aws/synthetics-log-helper'); try { // Your code which can throw an error containing url which your script logs } catch (error) { const sanitizedErrorMessage = syntheticsLogHelper.getSanitizedErrorMessage(errorMessage); logger.info(sanitizedErrorMessage); }

Dies protokolliert Folgendes in Ihrem Canaryprotokoll.

Failed to load url: https://example.com/learn/home?access_token=REDACTED&token_type=Bearer&expires_in=1200

get SanitizedHeaders (Header, StepConfig=Null)

Diese Funktion ist in syn-nodejs-puppeteer-3.2 und höher verfügbar. Es gibt bereinigte Header basierend auf der restrictedHeaders-Eigenschaft von syntheticsConfiguration zurück. Die in der Eigenschaft restrictedHeaders angegebenen Header werden aus Protokollen, HAR-Dateien und Berichten entfernt.

Parameter

  • headersist ein Objekt, das die zu bereinigenden Header enthält.

  • stepConfig(Optional) überschreibt die globale Synthetics-Konfiguration für diese Funktion. Wenn stepConfig nicht übergeben wird, wird die globale Konfiguration verwendet, um die Header zu bereinigen.

Node.js Bibliotheksklassen und Funktionen, die nur für UI Canaries gelten

Die folgenden CloudWatch Synthetics-Bibliotheksfunktionen für Node.js sind nur für UI Canaries nützlich.

Synthetics-Klasse

Die folgenden Funktionen befinden sich in der Klasse Synthetics.

asynchron hinzufügen UserAgent (Seite, Benutzer); AgentString

Diese Funktion wird userAgentString an den User-Agent-Header der angegebenen Seite angehängt.

Beispiel:

await synthetics.addUserAgent(page, "MyApp-1.0");

Bewirkt, dass der User-Agent-Header der Seite auf browsers-user-agent-header-valueMyApp-1.0 gesetzt wird.

async executeStep (stepName, FunktionToExecute, [StepConfig]);

Führt den angegebenen Schritt aus und umschließt ihn mit start/pass /fail-Protokollierung, /fail-Screenshots und Messdaten zur start/pass Dauer. pass/fail

Anmerkung

Wenn Sie die Laufzeit syn-nodejs-2.1 oder höher verwenden, können Sie konfigurieren, ob und wann Screenshots erstellt werden. Weitere Informationen finden Sie unter SyntheticsConfiguration klasse.

Die executeStep-Funktion tut Folgendes:

  • Protokolliert, dass der Schritt gestartet wurde.

  • Erfasst einen Screenshot mit dem Namen <stepName>-starting.

  • Startet einen Timer.

  • Führt die bereitgestellte Funktion aus.

  • Wenn die Funktion normal zurückgegeben wird, gilt sie als „bestanden“. Wenn die Funktion scheitert, gilt sie als fehlgeschlagen.

  • Beendet den Timer.

  • Protokolliert, ob der Schritt bestanden oder fehlgeschlagen ist

  • Erfasst einen Screenshot mit dem Namen <stepName>-succeeded oder <stepName>-failed.

  • Gibt die Metrik stepName SuccessPercent aus, wobei „100“ für erfolgreich bzw. „0“ für nicht erfolgreich steht.

  • Gibt die Metrik stepName Duration aus, mit einem Wert basierend auf der Start- und der Endzeit des Schrittes.

  • Gibt schließlich zurück, was die functionToExecute zurückgegeben hat, oder wiederholt einen Throw-Vorgang von functionToExecute.

Wenn der Canary die Laufzeit syn-nodejs-2.0 oder höher verwendet, fügt diese Funktion dem Bericht des Canary auch eine Zusammenfassung der Schrittausführung hinzu. Die Zusammenfassung enthält Details zu jedem Schritt, wie Startzeit, Endzeit, Status (PASSED/FAILED), Fehlerursache (falls fehlgeschlagen) und Screenshots, die während der Ausführung jedes Schritts aufgenommen wurden.

Beispiel:

await synthetics.executeStep('navigateToUrl', async function (timeoutInMillis = 30000) { await page.goto(url, {waitUntil: ['load', 'networkidle0'], timeout: timeoutInMillis});});

Antwort:

Gibt zurück, was functionToExecute zurückgibt.

Updates mit syn-nodejs-2.2

Zunächst können Sie optional Schrittkonfigurationen übergebensyn-nodejs-2.2, um CloudWatch Synthetics-Konfigurationen auf Schrittebene zu überschreiben. Eine Liste der Optionen, die Sie an executeStep übergeben können, finden Sie unter SyntheticsConfiguration klasse.

Das folgende Beispiel überschreibt die false-Standardkonfiguration für continueOnStepFailure bis true und gibt an, wann Screenshots erstellt werden sollen.

var stepConfig = { 'continueOnStepFailure': true, 'screenshotOnStepStart': false, 'screenshotOnStepSuccess': true, 'screenshotOnStepFailure': false } await executeStep('Navigate to amazon', async function (timeoutInMillis = 30000) { await page.goto(url, {waitUntil: ['load', 'networkidle0'], timeout: timeoutInMillis}); }, stepConfig);

erhalten DefaultLaunchOptions ();

Die getDefaultLaunchOptions() Funktion gibt die Browser-Startoptionen zurück, die von CloudWatch Synthetics verwendet werden. Weitere Informationen finden Sie unter Startoptionen-Typ

// This function returns default launch options used by Synthetics. const defaultOptions = await synthetics.getDefaultLaunchOptions();

getPage();

Gibt die aktuell geöffnete Seite als Puppeteer-Objekt zurück. Weitere Informationen finden Sie unter Puppeteer API v1.14.0.

Beispiel:

let page = await synthetics.getPage();

Antwort:

Die Seite (Puppeteer-Objekt), die derzeit in der aktuellen Browsersitzung geöffnet ist.

holen RequestResponseLogHelper ();

Wichtig

In Canaries, die die Laufzeit syn-nodejs-puppeteer-3.2 oder höher verwenden, ist diese Funktion zusammen mit der RequestResponseLogHelper-Klasse veraltet. Jede Verwendung dieser Funktion bewirkt, dass eine Warnung in Ihren Canaryprotokollen angezeigt wird. Diese Funktion wird in zukünftigen Laufzeitversionen entfernt. Wenn Sie diese Funktion verwenden, verwenden Sie stattdessen RequestResponseLogHelper Klasse.

Verwenden Sie diese Funktion als Builder-Muster zum Optimieren der Anforderungs- und Antwortprotokollierungsmarkierungen.

Beispiel:

synthetics.setRequestResponseLogHelper(getRequestResponseLogHelper().withLogRequestHeaders(false));;

Antwort:

{RequestResponseLogHelper}

Start (Optionen)

Die Optionen für diese Funktion sind erst ab der Laufzeit-Version syn-nodejs-2.1 verfügbar.

Diese Funktion wird nur für UI-Canarys verwendet. Es schließt den vorhandenen Browser und startet einen neuen.

Anmerkung

CloudWatch Synthetics startet immer einen Browser, bevor Sie mit der Ausführung Ihres Skripts beginnen. Sie müssen launch() nicht aufrufen, es sei denn, Sie möchten einen neuen Browser mit benutzerdefinierten Optionen starten.

(Optionen) ist ein konfigurierbarer Satz von Optionen, die im Browser festgelegt werden sollen. Weitere Informationen finden Sie unter Startoptionen-Typ.

Wenn Sie diese Funktion ohne Optionen aufrufen, startet Synthetics einen Browser mit Standardargumenten executablePath und defaultViewport. Das Standardansichtsfenster in CloudWatch Synthetics ist 1920 mal 1080.

Sie können die von CloudWatch Synthetics verwendeten Startparameter überschreiben und beim Starten des Browsers zusätzliche Parameter übergeben. Mit dem folgenden Codeausschnitt wird beispielsweise ein Browser mit Standardargumenten und einem standardmäßigen ausführbaren Pfad gestartet, jedoch mit einem Ansichtsfenster von 800 x 600.

await synthetics.launch({ defaultViewport: { "deviceScaleFactor": 1, "width": 800, "height": 600 }});

Der folgende Beispielcode fügt den ignoreHTTPSErrors CloudWatch Synthetics-Startparametern einen neuen Parameter hinzu:

await synthetics.launch({ ignoreHTTPSErrors: true });

Sie können die Websicherheit deaktivieren, indem Sie args in den CloudWatch Synthetics-Startparametern ein --disable-web-security Flag hinzufügen:

// This function adds the --disable-web-security flag to the launch parameters const defaultOptions = await synthetics.getDefaultLaunchOptions(); const launchArgs = [...defaultOptions.args, '--disable-web-security']; await synthetics.launch({ args: launchArgs });

RequestResponseLogHelper Klasse

Wichtig

In Canaries, die die Laufzeit syn-nodejs-puppeteer-3.2 oder höher verwenden, ist diese Klasse veraltet. Jede Verwendung dieser Klasse bewirkt, dass eine Warnung in Ihren Canaryprotokollen angezeigt wird. Diese Funktion wird in zukünftigen Laufzeitversionen entfernt. Wenn Sie diese Funktion verwenden, verwenden Sie stattdessen RequestResponseLogHelper Klasse.

Behandelt die präzise Konfiguration und Erstellung von Zeichenfolgendarstellungen von Anforderungs- und Antwort-Nutzlasten.

class RequestResponseLogHelper { constructor () { this.request = {url: true, resourceType: false, method: false, headers: false, postData: false}; this.response = {status: true, statusText: true, url: true, remoteAddress: false, headers: false}; } withLogRequestUrl(logRequestUrl); withLogRequestResourceType(logRequestResourceType); withLogRequestMethod(logRequestMethod); withLogRequestHeaders(logRequestHeaders); withLogRequestPostData(logRequestPostData); withLogResponseStatus(logResponseStatus); withLogResponseStatusText(logResponseStatusText); withLogResponseUrl(logResponseUrl); withLogResponseRemoteAddress(logResponseRemoteAddress); withLogResponseHeaders(logResponseHeaders);

Beispiel:

synthetics.setRequestResponseLogHelper(getRequestResponseLogHelper() .withLogRequestPostData(true) .withLogRequestHeaders(true) .withLogResponseHeaders(true));

Antwort:

{RequestResponseLogHelper}

setzen RequestResponseLogHelper ();

Wichtig

In Canaries, die die Laufzeit syn-nodejs-puppeteer-3.2 oder höher verwenden, ist diese Funktion zusammen mit der RequestResponseLogHelper-Klasse veraltet. Jede Verwendung dieser Funktion bewirkt, dass eine Warnung in Ihren Canaryprotokollen angezeigt wird. Diese Funktion wird in zukünftigen Laufzeitversionen entfernt. Wenn Sie diese Funktion verwenden, verwenden Sie stattdessen RequestResponseLogHelper Klasse.

Verwenden Sie diese Funktion als Builder-Muster zum Einstellen der Anforderungs- und Antwortprotokollierungsmarkierungen.

Beispiel:

synthetics.setRequestResponseLogHelper().withLogRequestHeaders(true).withLogResponseHeaders(true);

Antwort:

{RequestResponseLogHelper}

async takeScreenshot(name, suffix);

Erstelle einen Screenshot (.PNG) der aktuellen Seite mit Name und Suffix (Optional).

Beispiel:

await synthetics.takeScreenshot("navigateToUrl", "loaded")

In diesem Beispiel wird ein Screenshot mit dem Namen 01-navigateToUrl-loaded.png aufgenommen und in den S3 Bucket des Canary hochgeladen.

Sie können einen Screenshot für einen bestimmten Canary-Schritt erstellen, indem Sie das stepName als ersten Parameter übergeben. Screenshots sind mit dem Canaryschritt in Ihren Berichten verknüpft, damit Sie jeden Schritt beim Debuggen verfolgen können.

CloudWatch Synthetics Canaries macht automatisch Screenshots vor dem Starten eines Schritts (die executeStep Funktion) und nach Abschluss des Schritts (es sei denn, Sie konfigurieren den Canary so, dass Screenshots deaktiviert werden). Sie können weitere Screenshots erstellen, indem Sie den Schrittnamen in der takeScreenshot-Funktion übergeben.

Im folgenden Beispiel wird ein Screenshot mit dem signupForm als Wert von stepName erstellt. Der Screenshot erhält den Namen 02-signupForm-address und wird mit dem Schritt namens signupForm im Canary-Bericht verknüpft.

await synthetics.takeScreenshot('signupForm', 'address')

BrokenLinkCheckerReport Klasse

Diese Klasse bietet Methoden, um eine Synthetics-Verknüpfung hinzuzufügen. Es wird nur auf Canarysn unterstützt, die die syn-nodejs-2.0-beta-Version der Laufzeitumgebung oder höher verwenden.

Um BrokenLinkCheckerReport zu verwenden, fügen Sie die folgenden Zeilen in das Skript ein:

const BrokenLinkCheckerReport = require('@aws/synthetics-broken-link-checker-report'); const brokenLinkCheckerReport = new BrokenLinkCheckerReport();

Nützliche Funktionsdefinitionen:

Link hinzufügen (syntheticsLink, ist kaputt)

syntheticsLink ist ein SyntheticsLink-Objekt, das eine Verknüpfung darstellt. Diese Funktion fügt den Link entsprechend dem Statuscode hinzu. Standardmäßig betrachtet es einen Link als unterbrochen, wenn der Statuscode nicht verfügbar ist oder der Statuscode 400 oder höher ist. Sie können dieses Standardverhalten überschreiben, indem Sie den optionalen Parameter isBrokenLink mit einem Wert vontrue oder false übergeben.

Diese Funktion hat keinen Rückgabewert.

getLinks()

Diese Funktion gibt ein Array von SyntheticsLink-Objekten zurück, die im Bericht zur Überprüfung von defekten Links enthalten sind.

erhalten TotalBrokenLinks ()

Diese Funktion gibt eine Zahl zurück, die die Gesamtzahl der defekten Links darstellt.

bekommen TotalLinksChecked ()

Diese Funktion gibt eine Zahl zurück, die die Gesamtzahl der im Bericht enthaltenen Links darstellt.

Wie benutzt man BrokenLinkCheckerReport

Das folgende Code-Snippet aus einem Canary-Skript veranschaulicht anhand eines Beispiels die Navigation zu einem Link und das Hinzufügen zum Bericht zur Überprüfung eines fehlerhaften Links.

  1. Importieren von SyntheticsLink, BrokenLinkCheckerReport und Synthetics.

    const BrokenLinkCheckerReport = require('@aws/synthetics-broken-link-checker-report'); const SyntheticsLink = require('@aws/synthetics-link'); // Synthetics dependency const synthetics = require('@aws/synthetics-puppeteer');
  2. Um einen Link zum Bericht hinzuzufügen, erstellen Sie eine Instance von BrokenLinkCheckerReport.

    let brokenLinkCheckerReport = new BrokenLinkCheckerReport();
  3. Navigieren Sie zu der URL, und fügen Sie sie dem Bericht zur Überprüfung fehlerhafter Links hinzu.

    let url = "https://amazon.com"; let syntheticsLink = new SyntheticsLink(url); // Navigate to the url. let page = await synthetics.getPage(); // Create a new instance of Synthetics Link let link = new SyntheticsLink(url) try { const response = await page.goto(url, {waitUntil: 'domcontentloaded', timeout: 30000}); } catch (ex) { // Add failure reason if navigation fails. link.withFailureReason(ex); } if (response) { // Capture screenshot of destination page let screenshotResult = await synthetics.takeScreenshot('amazon-home', 'loaded'); // Add screenshot result to synthetics link link.addScreenshotResult(screenshotResult); // Add status code and status description to the link link.withStatusCode(response.status()).withStatusText(response.statusText()) } // Add link to broken link checker report. brokenLinkCheckerReport.addLink(link);
  4. Fügen Sie den Bericht zu Synthetics hinzu. Dadurch wird für jeden Canary-Lauf eine JSON-Datei mit dem Namen BrokenLinkCheckerReport.json in Ihrem S3 Bucket erstellt. Sie können einen Link-Bericht in der Konsole für jeden Canary-Lauf zusammen mit Screenshots, Protokollen und HAR-Dateien sehen.

    await synthetics.addReport(brokenLinkCheckerReport);

Diese Klasse bietet Methoden zum Umschließen von Informationen. Es wird nur auf Canaries unterstützt, die die syn-nodejs-2.0-beta-Version der Laufzeit oder höher verwenden.

Um SyntheticsLink zu verwenden, fügen Sie die folgenden Zeilen in das Skript ein:

const SyntheticsLink = require('@aws/synthetics-link'); const syntheticsLink = new SyntheticsLink("https://www.amazon.com");

Diese Funktion gibt syntheticsLinkObject zurück

Nützliche Funktionsdefinitionen:

mit URL () url

url ist eine URL-Zeichenfolge. Diese Funktion gibt syntheticsLinkObject zurück

mit Text () text

text ist eine Zeichenfolge, die Ankertext darstellt. Diese Funktion gibt syntheticsLinkObject zurück. Es fügt Ankertext hinzu, der dem Link entspricht.

mit ParentUrl () parentUrl

parentUrl ist eine Zeichenfolge, die die übergeordnete URL (Quellseite) darstellt. Diese Funktion gibt syntheticsLink Object zurück

mit StatusCode (statusCode)

statusCode ist eine Zeichenfolge, die den Statuscode darstellt. Diese Funktion gibt syntheticsLinkObject zurück

mit FailureReason (failureReason)

failureReason ist eine Zeichenfolge, die den Grund für den Fehler darstellt. Diese Funktion gibt syntheticsLink Object zurück

hinzufügen ScreenshotResult (screenshotResult)

screenshotResult ist ein Objekt. Es ist eine Instance von ScreenshotResult, die von der Synthetics-Funktion takeScreenshot zurückgegeben wurde. Das Objekt umfasst Folgendes:

  • fileName – Eine Zeichenfolge, die screenshotFileName darstellt

  • pageUrl (optional)

  • error (optional)

Node.js Bibliotheksklassen und -funktionen, die nur für API Canaries gelten

Die folgenden CloudWatch Synthetics-Bibliotheksfunktionen für Node.js sind nur für API-Kanaren nützlich.

ausführen HttpStep (stepName, RequestOptions, [Rückruf], [StepConfig])

Führt die bereitgestellte HTTP-Anfrage als Schritt aus und veröffentlicht SuccessPercent () und Metriken. pass/fail Duration

execute HttpStep verwendet entweder native HTTP- oder HTTPS-Funktionen unter der Haube, je nachdem, welches Protokoll in der Anfrage angegeben ist.

Diese Funktion fügt dem Bericht des Canarys außerdem eine Zusammenfassung der Schrittausführung hinzu. Die Zusammenfassung enthält Details zu jeder HTTP-Anforderung, wie zum Beispiel die folgenden:

  • Startzeit

  • Endzeit

  • Status (PASSED/FAILED)

  • Fehlergrund, wenn fehlgeschlagen

  • HTTP-Aufrufdetails wie request/response Header, Hauptteil, Statuscode, Statusmeldung und Leistungszeiten.

Parameters

stepName () String

Legt den Namen des Schrittes fest. Dieser Name wird auch für die Veröffentlichung von CloudWatch Metriken für diesen Schritt verwendet.

RequestOptions () Object or String

Der Wert dieses Parameters kann eine URL, eine URL-Zeichenfolge oder ein Objekt sein. Wenn es sich um ein Objekt handelt, muss es sich um eine Gruppe konfigurierbarer Optionen handeln, um eine HTTP-Anforderung zu stellen. Es unterstützt alle Optionen in http.request (options [, callback]) in der Dokumentation. Node.js

Zusätzlich zu diesen Node.js Optionen unterstützt RequestOptions den zusätzlichen Parameter. body Sie können den Parameter body verwenden, um Daten als Anforderungstext zu übergeben.

Rückruf () response

(Optional) Dies ist eine Benutzerfunktion, die mit der HTTP-Antwort aufgerufen wird. Die Antwort ist vom Typ Class: http. IncomingMessage.

SchrittKonfiguration () object

(Optional) Verwenden Sie diesen Parameter, um globale Synthetics-Konfigurationen mit einer anderen Konfiguration für diesen Schritt zu überschreiben.

Beispiele für die Verwendung von execute HttpStep

Die folgende Reihe von Beispielen baut aufeinander auf, um die verschiedenen Verwendungsmöglichkeiten dieser Option zu veranschaulichen.

In diesem ersten Beispiel werden Anforderungsparameter konfiguriert. Sie können eine URL als RequestOptions übergeben:

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

Oder Sie können eine Reihe von Optionen übergeben:

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

Das nächste Beispiel erstellt eine Callback-Funktion, die eine Antwort akzeptiert. Wenn Sie keinen Callback angeben, überprüft CloudWatch Synthetics standardmäßig, ob der Status zwischen 200 und 299 (einschließlich) liegt.

// 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(); }); }); };

Das nächste Beispiel erstellt eine Konfiguration für diesen Schritt, die die globale CloudWatch Synthetics-Konfiguration überschreibt. Die Schrittkonfiguration in diesem Beispiel erlaubt Anforderungsheader, Antwortheader, Anfragetext (Post-Daten) und Antworttext in Ihrem Bericht und schränkt die Headerwerte '' und X-Amz-Security-Token 'Authorization' ein. Standardmäßig sind diese Werte aus Sicherheitsgründen nicht im Bericht enthalten. Wenn Sie sie einbeziehen, werden die Daten nur in Ihrem S3 Bucket gespeichert.

// 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 };

Dieses letzte Beispiel leitet Ihre Anfrage zur Ausführung weiter HttpStep und benennt den Schritt.

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

Mit diesen Beispielen fügt CloudWatch Synthetics die Details aus jedem Schritt in Ihrem Bericht hinzu und erstellt mithilfe von stepName Metriken für jeden Schritt.

Sie sehen successPercent- und duration-Metriken für den Schritt Verify GET products API. Sie können Ihre API-Leistung überwachen, indem Sie die Metriken für Ihre API-Aufrufschritte überwachen.

Ein vollständiges Beispielskript, das diese Funktionen verwendet, finden Sie unter Multi-step API Canary.