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.
Für Node.js-Canary-Skripte verfügbare Bibliotheksfunktionen
In diesem Abschnitt werden die Bibliotheksfunktionen aufgelistet, die für Canary-Skripts von Node.js verfügbar sind.
Themen
Node.js-Bibliotheksfunktionen, die für alle Canarys 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.
addExecutionError(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); }
getCanaryName();
Gibt den Namen des Canarys zurück.
getCanaryArn();
Gibt den Wert ARN des Kanarienvogels zurück.
getCanaryUserAgentString();
Gibt den benutzerdefinierten Benutzeragenten des Canary zurück.
getRuntimeVersion();
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.
getLogLevel();
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();
setLogLevel();
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 asynchron executeStep (stepName, functionToExecute, [stepConfig]); und executeHttpStep(stepName,requestOptions, [Rückruf], []) stepConfig.
Funktionsdefinitionen:
setConfig(Optionen)
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.options
setConfig(Optionen) für alle Kanaren
Für Kanarienvögel, die eine neuere Version verwendensyn-nodejs-puppeteer-3.2
, setConfigkönnen die (Optionen) für die folgenden Parameter enthalten:
includeRequestHeaders
(boolean) – Gibt an, ob Anforderungs-Header in den Bericht aufgenommen werden sollen. Der Standardwert istfalse
.includeResponseHeaders
(boolean) – Gibt an, ob Antwort-Header in den Bericht aufgenommen werden sollen. Der Standardwert istfalse
.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 includeRequestHeadersalstrue
und restrictedHeadersals['Authorization']
übergeben.includeRequestBody
(boolean) – Gibt an, ob der Anforderungstext in den Bericht aufgenommen werden soll. Der Standardwert istfalse
.includeResponseBody
(boolean) – Gibt an, ob der Antworttext in den Bericht aufgenommen werden soll. Der Standardwert istfalse
.Wenn Sie entweder
includeResponseBody
oder aktivierenlogResponseBody
, wird das Datenobjekt in der Antwort einiger Clients nicht zurückgegebenAPIs, z. B. von aws-sdk v3-Clients. Dies liegt an einer Beschränkung von Node.js und dem Typ des verwendeten Antwortobjekts.
setConfig(Optionen) in Bezug auf CloudWatch Metriken
Für Kanarienvögel, die syn-nodejs-puppeteer-3.1
oder später verwenden, setConfigkönnen die (Optionen) für 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 dieFailed
-Metrik (mit derCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.failedRequestsMetric
(boolean) – Gibt an, ob dieFailed requests
-Metrik (mit derCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
._2xxMetric
(boolean) – Gibt an, ob die2xx
-Metrik (mit derCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
._4xxMetric
(boolean) – Gibt an, ob die4xx
-Metrik (mit derCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
._5xxMetric
(boolean) – Gibt an, ob die5xx
-Metrik (mit derCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.stepDurationMetric
(boolean) – Gibt an, ob dieStep duration
-Metrik (mit derCanaryName
-DimensionStepName
) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.stepSuccessMetric
(boolean) – Gibt an, ob dieStep success
-Metrik (mit derCanaryName
-DimensionStepName
) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.aggregatedFailedCanaryMetric
(boolean) – Gibt an, ob dieFailed
-Metrik (ohne dieCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.aggregatedFailedRequestsMetric
(boolean) – Gibt an, ob dieFailed Requests
-Metrik (ohne dieCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.aggregated2xxMetric
(boolean) – Gibt an, ob die2xx
-Metrik (ohne dieCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.aggregated4xxMetric
(boolean) – Gibt an, ob die4xx
-Metrik (ohne dieCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.aggregated5xxMetric
(boolean) – Gibt an, ob die5xx
-Metrik (ohne dieCanaryName
-Dimension) für diesen Canary emittiert werden soll. Der Standardwert isttrue
.visualMonitoringSuccessPercentMetric
(boolean) – Gibt an, ob dievisualMonitoringSuccessPercent
-Metrik für diesen Canary emittiert werden soll. Der Standardwert isttrue
.visualMonitoringTotalComparisonsMetric
(boolean) – Gibt an, ob dievisualMonitoringTotalComparisons
-Metrik für diesen Canary emittiert werden soll. Der Standardwert istfalse
.stepsReport
(boolean) – Gibt an, ob eine Zusammenfassung der Schrittausführung gemeldet werden soll. Der Standardwert isttrue
.includeUrlPassword
(boolean) — Ob ein Passwort aufgenommen werden soll, das in der erscheint. URL Standardmäßig werden Passwörter, die in erscheinen, aus Protokollen und Berichten entfernt, um zu verhindern, dass vertrauliche Daten offengelegt URLs werden. Der Standardwert istfalse
.restrictedUrlParameters
(Array) — Eine Liste von URL Pfad- oder Abfrageparametern, die geschwärzt werden sollen. Dies gilt für das URLs Auftreten in Protokollen, Berichten und Fehlern. Bei dem Parameter wird die Groß-/Kleinschreibung nicht beachtet. Sie können ein Sternchen (*) als Wert angeben, um alle URL Pfad- und Abfrageparameterwerte zu unkenntlich zu machen. 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 isttrue
.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 isttrue
.logRequestBody
(boolean) – Gibt an, ob Anforderungstexte zusammen mit den Anforderungen in Canary- Protokollen protokolliert werden sollen. Diese Konfiguration gilt nur, wennlogRequest
true
ist. Der Standardwert istfalse
.logResponseBody
(boolean) – Gibt an, ob Antworttexte zusammen mit den Antworten in Canary-Logs protokolliert werden sollen. Diese Konfiguration gilt nur, wennlogResponse
true
ist. Der Standardwert istfalse
.Wenn Sie entweder
includeResponseBody
oder aktivierenlogResponseBody
, wird das Datenobjekt in der Antwort einiger Clients nicht zurückgegebenAPIs, z. B. von aws-sdk v3-Clients. Dies liegt an einer Beschränkung von Node.js und dem Typ des verwendeten Antwortobjekts.logRequestHeaders
(boolean) – Gibt an, ob Anforderungsheader zusammen mit den Anforderungen in Canary-Protokollen protokolliert werden sollen. Diese Konfiguration gilt nur, wennlogRequest
true
ist. Der Standardwert istfalse
.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, wennlogResponse
true
ist. Der Standardwert istfalse
.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
disableAggregatedRequestMetriken ()
Verhindert, dass der Canary alle Anforderungsmesswerte ausgibt, die ohne CanaryName
-Dimension ausgegeben werden.
disableRequestMetrics()
Deaktiviert alle Anforderungsmetriken, einschließlich aller Canary-Metriken und Metriken, die über alle Canarys aggregiert werden.
disableStepMetrics()
Deaktiviert alle Schrittmetriken, einschließlich Metriken für den Schritterfolg und für die Schrittdauer.
enableAggregatedRequestMetriken ()
Ermöglicht dem Canary, alle Anforderungsmesswerte auszugeben, die ohne CanaryName
-Dimension ausgegeben werden.
enableRequestMetrics()
Aktiviert alle Anforderungsmetriken, einschließlich aller Canary-Metriken und Metriken, die über alle Canarys aggregiert werden.
enableStepMetrics()
Aktiviert alle Schrittmetriken, einschließlich Metriken für den Schritterfolg und für die Schrittdauer.
erhalte 2 xxMetric ()
Gibt zurück, ob der Canary eine 2xx
-Metrik mit der CanaryName
-Dimension ausgibt.
erhalte 4 () xxMetric
Gibt zurück, ob der Canary eine 4xx
-Metrik mit der CanaryName
-Dimension ausgibt.
erhalte 5 () xxMetric
Gibt zurück, ob der Canary eine 5xx
-Metrik mit der CanaryName
-Dimension ausgibt.
getAggregatedxxMetric(2)
Gibt zurück, ob der Canary eine 2xx
-Metrik ohne Dimension ausgibt.
getAggregatedxxMetric(4)
Gibt zurück, ob der Canary eine 4xx
-Metrik ohne Dimension ausgibt.
getAggregatedFailedCanaryMetric()
Gibt zurück, ob der Canary eine Failed
-Metrik ohne Dimension ausgibt.
getAggregatedFailedRequestsMetric()
Gibt zurück, ob der Canary eine Failed requests
-Metrik ohne Dimension ausgibt.
getAggregatedxxMetric(5)
Gibt zurück, ob der Canary eine 5xx
-Metrik ohne Dimension ausgibt.
getFailedCanaryMetrisch ()
Gibt zurück, ob der Canary eine Failed
-Metrik mit der CanaryName
-Dimension ausgibt.
getFailedRequestsMetrisch ()
Gibt zurück, ob der Canary eine Failed requests
-Metrik mit der CanaryName
-Dimension ausgibt.
getStepDurationMetrisch ()
Gibt zurück, ob der Canary eine Duration
-Metrik mit der CanaryName
-Dimension für dieses Canary ausgibt.
getStepSuccessMetrisch ()
Gibt zurück, ob der Canary eine StepSuccess
-Metrik mit der CanaryName
-Dimension für dieses Canary ausgibt.
mit 2 xxMetric (_2) xxMetric
Akzeptiert ein boolesches Argument, das angibt, ob eine 2xx
-Metrik mit der CanaryName
-Dimension für diesen Canary emittiert werden soll.
mit 4 xxMetric (_4) xxMetric
Akzeptiert ein boolesches Argument, das angibt, ob eine 4xx
-Metrik mit der CanaryName
-Dimension für diesen Canary emittiert werden soll.
mit 5 (_5) xxMetric xxMetric
Akzeptiert ein boolesches Argument, das angibt, ob eine 5xx
-Metrik mit der CanaryName
-Dimension für diesen Canary emittiert werden soll.
withAggregated2 xxMetric (aggregiert 2) xxMetric
Akzeptiert ein boolesches Argument, das angibt, ob eine 2xx
-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.
withAggregated4 xxMetric (aggregiert 4) xxMetric
Akzeptiert ein boolesches Argument, das angibt, ob eine 4xx
-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.
withAggregated5 xxMetric (aggregiert 5) xxMetric
Akzeptiert ein boolesches Argument, das angibt, ob eine 5xx
-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.
withAggregatedFailedCanaryMetric(Metrisch) aggregatedFailedCanary
Akzeptiert ein boolesches Argument, das angibt, ob eine Failed
-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.
withAggregatedFailedRequestsMetric(aggregatedFailedRequestsMetrisch)
Akzeptiert ein boolesches Argument, das angibt, ob eine Failed
requests
-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.
withFailedCanaryMetrisch (failedCanaryMetric)
Akzeptiert ein boolesches Argument, das angibt, ob eine Failed
-Metrik mit der CanaryName
-Dimension für diesen Canary emittiert werden soll.
withFailedRequestsMetrisch (failedRequestsMetric)
Akzeptiert ein boolesches Argument, das angibt, ob eine Failed
requests
-Metrik mit der CanaryName
-Dimension für diesen Canary emittiert werden soll.
withStepDurationMetrisch (stepDurationMetric)
Akzeptiert ein boolesches Argument, das angibt, ob eine Duration
-Metrik mit der CanaryName
-Dimension für diesen Canary emittiert werden soll.
withStepSuccessMetrisch (stepSuccessMetric)
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
withHarFile()
Akzeptiert ein boolesches Argument, das angibt, ob eine HAR Datei für diesen Canary erstellt werden soll.
withStepsReport()
Akzeptiert ein boolesches Argument, das angibt, ob eine Zusammenfassung der Schrittausführung für diesen Canary gemeldet werden soll.
withIncludeUrlPasswort ()
Akzeptiert ein boolesches Argument, das angibt, ob Passwörter, die URLs in Protokollen und Berichten vorkommen, eingeschlossen werden sollen.
withRestrictedUrlParameter ()
Akzeptiert ein Array von URL Pfad- oder Abfrageparametern zum Redigieren. Dies gilt für das URLs Erscheinen in Protokollen, Berichten und Fehlern. Sie können ein Sternchen (*) als Wert angeben, um alle URL Pfad- und Abfrageparameterwerte zu schwärzen
withLogRequest()
Akzeptiert ein boolesches Argument, das angibt, ob jede Anforderung in den Protokollen des Canarys protokolliert werden soll.
withLogResponse()
Akzeptiert ein boolesches Argument, das angibt, ob jede Antwort in den Protokollen des Canarys protokolliert werden soll.
withLogRequestKörper ()
Akzeptiert ein boolesches Argument, das angibt, ob jeder Anforderungstext in den Protokollen des Canarys protokolliert werden soll.
withLogResponseKörper ()
Akzeptiert ein boolesches Argument, das angibt, ob jeder Antworttext in den Protokollen des Canarys protokolliert werden soll.
withLogRequestÜberschriften ()
Akzeptiert ein boolesches Argument, das angibt, ob jeder Anforderungs-Header in den Protokollen des Canarys protokolliert werden soll.
withLogResponseÜberschriften ()
Akzeptiert ein boolesches Argument, das angibt, ob jeder Antwort-Header in den Protokollen des Canarys protokolliert werden soll.
getHarFile()
Gibt zurück, ob der Canary eine HAR Datei erstellt.
getStepsReport()
Gibt zurück, ob der Canary eine Zusammenfassung der Schrittausführung meldet
getIncludeUrlPasswort ()
Gibt zurück, ob der Canary Passwörter enthält, die URLs in Protokollen und Berichten vorkommen.
getRestrictedUrlParameter ()
Gibt zurück, ob der Canary URL Pfad- oder Abfrageparameter redigiert.
getLogRequest()
Gibt zurück, ob der Canary jede Anforderung in den Canaryprotokollen protokolliert.
getLogResponse()
Gibt zurück, ob der Canary jede Antwort in den Canaryprotokollen protokolliert.
getLogRequestKörper ()
Gibt zurück, ob der Canary jeden Anforderungstext in den Canaryprotokollen protokolliert.
getLogResponseKörper ()
Gibt zurück, ob der Canary jeden Antworttext in den Canaryprotokollen protokolliert.
getLogRequestÜberschriften ()
Gibt zurück, ob der Canary jeden Anforderungsheader in den Protokollen des Canarys.
getLogResponseÜberschriften ()
Gibt zurück, ob der Canary alle Antwort-Header in den Canaryprotokollen protokolliert.
Funktionen für alle Canarys
withIncludeRequestHeaders
(includeRequestHeaders)withIncludeResponseHeaders
(includeResponseHeaders)withRestrictedHeaders
(restrictedHeaders)withIncludeRequestBody
(includeRequestBody)withIncludeResponseBody
(includeResponseBody)enableReportingOptions
() — Aktiviert alle Berichtsoptionen-- includeRequestHeaders, includeResponseHeadersincludeRequestBody, und includeResponseBody,.disableReportingOptions
() — Deaktiviert alle Berichtsoptionen-- includeRequestHeaders, includeResponseHeadersincludeRequestBody, und includeResponseBody,.
setConfig(Optionen) für UI Canaries
setConfigKann für UI Canaries die folgenden booleschen 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 Funktion). executeStep Wenn Schritte fehlschlagen, wird der Canary-Lauf weiterhin als fehlgeschlagen markiert. Der Standardwert istfalse
.harFile
(boolean) — Ob eine Datei erstellt werden soll. HAR Der Standardwert istTrue
.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
disableStepScreenshots()
Deaktiviert alle Screenshot-Optionen (screenshotOnStepStart, screenshotOnStep Erfolg und screenshotOnStep Fehler).
enableStepScreenshots()
Aktiviert alle Screenshot-Optionen (screenshotOnStepStart, screenshotOnStep Erfolg und screenshotOnStep Fehler). Standardmäßig sind alle diese Methoden aktiviert.
getScreenshotOnStepFailure()
Gibt zurück, ob der Canary einen Screenshot macht, nachdem ein Schritt fehlschlägt.
getScreenshotOnStepStart()
Gibt zurück, ob der Canary einen Screenshot erstellt, bevor er einen Schritt startet.
getScreenshotOnStepSuccess()
Gibt zurück, ob der Canary nach erfolgreichem Abschluss eines Schritts einen Screenshot erstellt.
withScreenshotOnStepStart(screenshotOnStepStart)
Akzeptiert ein boolesches Argument, das angibt, ob ein Screenshot erstellt werden soll, bevor ein Schritt gestartet wird.
withScreenshotOnStepSuccess(screenshotOnStepErfolg)
Akzeptiert ein boolesches Argument, das angibt, ob nach erfolgreichem Abschluss eines Schritts ein Screenshot erstellt werden soll.
withScreenshotOnStepFailure(screenshotOnStepMisserfolg)
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('Synthetics'); // 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 Funktion disableStepScreenshots () 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 Kanarienvögel
APIKann für Kanarienvögel die folgenden booleschen Parameter enthalten: setConfig
continueOnHttpStepFailure
(boolean) — Ob mit der Ausführung des Canary-Skripts fortgefahren werden soll, nachdem ein HTTP Schritt fehlgeschlagen ist (dies bezieht sich auf die Funktion). executeHttpStep Wenn Schritte fehlschlagen, wird der Canary-Lauf weiterhin als fehlgeschlagen markiert. Der Standardwert isttrue
.
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. Die visuelle Überwachung wird auf 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
syntheticsConfiguration.withVisualVarianceThresholdPercentage(desiredPercentage)
Legen Sie den akzeptablen Prozentsatz für die Screenshot-Varianz in visuellen Vergleichen fest.
syntheticsConfiguration. withVisualVarianceHighlightHexColor(“ #fafa00 „)
Legen Sie die Hervorhebungsfarbe fest, die Varianzbereiche angibt, wenn Sie Canary-Lauf-Berichte betrachten, die visuelle Überwachung verwenden.
syntheticsConfiguration.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 Protokollanweisungen in der lokalen Protokolldatei werden "DEBUG: „,"INFO: „usw. vorangestellt, um der Protokollebene der aufgerufenen Funktion zu entsprechen.
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('SyntheticsLogger');
Nützliche Funktionsdefinitionen:
log.debug (message
, ex
);
Parameter: message
ist die zu protokollierende Nachricht. ex
ist 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. ex
ist 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. ex
ist 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. ex
ist 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. ex
ist 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. Mit dieser Klasse können Sie Header und Fehlermeldungen bereinigenURLs, um vertrauliche Informationen zu unkenntlich zu machen.
Anmerkung
Synthetics bereinigt alle URLs protokollierten Fehlermeldungen, bevor sie auf der Grundlage der Synthetics-Konfigurationseinstellung in Protokolle, Berichte, HAR Dateien und Canary-Run-Fehler aufgenommen werden. restrictedUrlParameters
Sie müssen getSanitizedUrl
oder getSanitizedErrorMessage
nur verwenden, wenn Sie Fehler in Ihrem Skript protokollierenURLs. 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.
getSanitizedUrl(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 festlegen, dass sensible URL Parameter wie Passwort und Access_Token geschwärzt werden, indem Sie die Eigenschaft festlegen. restrictedUrlParameters
Standardmäßig werden Kennwörter in URLs geschwärzt. Sie können URL Passwörter bei Bedarf aktivieren, indem Sie sie includeUrlPassword
auf true setzen.
Diese Funktion gibt einen Fehler aus, wenn der URL übergebene Wert nicht gültig URL ist.
Parameter
url
ist eine Zeichenfolge und soll bereinigt URL werden.stepConfig
(Optional) überschreibt die globale Synthetics-Konfiguration für diese Funktion. Wenn nicht übergebenstepConfig
wird, wird die globale Konfiguration verwendet, um die zu bereinigen. URL
Beispiel
In diesem Beispiel wird das 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('Synthetics'); // Import Synthetics logger for logging url const log = require('SyntheticsLogger'); // Get Synthetics configuration const synConfig = synthetics.getConfiguration(); // Set restricted parameters synConfig.setConfig({ restrictedUrlParameters: ['access_token']; });
Desinfizieren und protokollieren Sie als Nächstes URL
// Import SyntheticsLogHelper dependency const syntheticsLogHelper = require('SyntheticsLogHelper'); const sanitizedUrl = synthetics.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 a überschreiben, URL indem Sie einen optionalen Parameter mit Synthetics-Konfigurationsoptionen übergeben, wie im folgenden Beispiel.
const urlConfig = { restrictedUrlParameters = ['*'] }; const sanitizedUrl = synthetics.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
getSanitizedErrorNachricht
Diese Funktion ist in syn-nodejs-puppeteer-3.2
und höher verfügbar. Es gibt bereinigte Fehlerzeichenfolgen zurück, indem alle URLs vorhandenen Zeichenketten basierend auf der Synthetics-Konfiguration bereinigt werden. Sie können die globale Synthetics-Konfiguration überschreiben, wenn Sie diese Funktion aufrufen, indem Sie einen optionalen stepConfig
-Parameter übergeben.
Parameter
error
ist der Fehler bei der Bereinigung. Es kann ein Fehler-Objekt oder eine Zeichenfolge sein.stepConfig
(Optional) überschreibt die globale Synthetics-Konfiguration für diese Funktion. Wenn nicht übergebenstepConfig
wird, wird die globale Konfiguration verwendet, um die zu bereinigen. URL
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('Synthetics'); // Import Synthetics logger for logging url const log = require('SyntheticsLogger'); // 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('SyntheticsLogHelper'); try { // Your code which can throw an error containing url which your script logs } catch (error) { const sanitizedErrorMessage = synthetics.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
getSanitizedHeaders(Header, =null) stepConfig
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 restrictedHeaders
Eigenschaft angegebenen Header wurden aus Protokollen, HAR Dateien und Berichten entfernt.
Parameter
headers
ist ein Objekt, das die zu bereinigenden Header enthält.stepConfig
(Optional) überschreibt die globale Synthetics-Konfiguration für diese Funktion. WennstepConfig
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 addUserAgent (Seite,); userAgentString
Diese Funktion hängt an userAgentString
an den User-Agent-Header der angegebenen Seite.
Beispiel:
await synthetics.addUserAgent(page, "MyApp-1.0");
Bewirkt, dass der User-Agent-Header der Seite auf
gesetzt wird.browsers-user-agent-header-value
MyApp-1.0
asynchron executeStep (stepName, functionToExecute, [stepConfig]);
Führt den angegebenen Schritt aus und umschließt ihn mit Metriken start/pass/fail logging, start/pass/fail screenshots, and pass/fail und deren Dauer.
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 vonfunctionToExecute
.
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, z. B. 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);
getDefaultLaunchOptionen ();
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 APIPuppeteer
Beispiel:
let page = synthetics.getPage();
Antwort:
Die Seite (Puppeteer-Objekt), die derzeit in der aktuellen Browsersitzung geöffnet ist.
getRequestResponseLogHelper();
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}
setRequestResponseLogHelper();
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}
asynchron takeScreenshot (Name, Suffix);
Macht einen Screenshot (. PNG) der aktuellen Seite mit Namen 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('BrokenLinkCheckerReport'); const brokenLinkCheckerReport = new BrokenLinkCheckerReport();
Nützliche Funktionsdefinitionen:
addLink(syntheticsLink
, isBroken)
ist ein syntheticsLink
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.
getTotalBrokenLinks ()
Diese Funktion gibt eine Zahl zurück, die die Gesamtzahl der defekten Links darstellt.
getTotalLinksGeprüft ()
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.
Importieren von
SyntheticsLink
,BrokenLinkCheckerReport
undSynthetics
.const BrokenLinkCheckerReport = require('BrokenLinkCheckerReport'); const SyntheticsLink = require('SyntheticsLink'); // Synthetics dependency const synthetics = require('Synthetics');
Um einen Link zum Bericht hinzuzufügen, erstellen Sie eine Instance von
BrokenLinkCheckerReport
.let brokenLinkCheckerReport = new BrokenLinkCheckerReport();
Navigieren Sie zu dem URL und fügen Sie ihn dem Bericht zur Überprüfung defekter 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);
Fügen Sie den Bericht zu Synthetics hinzu. Dadurch wird für jeden Canary-Run eine JSON Datei mit dem Namen
BrokenLinkCheckerReport.json
in Ihrem S3-Bucket erstellt. In der Konsole siehst du für jeden Canary-Run einen Links-Bericht sowie Screenshots, Logs und HAR Dateien.await synthetics.addReport(brokenLinkCheckerReport);
SyntheticsLink Klasse
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('SyntheticsLink'); const syntheticsLink = new SyntheticsLink("https://www.amazon.com");
Diese Funktion gibt syntheticsLink
zurückObject
Nützliche Funktionsdefinitionen:
withUrl(url
)
ist eine URL Zeichenfolge. Diese Funktion gibt url
syntheticsLink
zurückObject
withText(text
)
ist eine Zeichenfolge, die Ankertext darstellt. Diese Funktion gibt text
syntheticsLink
zurück. Es fügt Ankertext hinzu, der dem Link entspricht.Object
withParentUrl(parentUrl
)
ist eine Zeichenfolge, die die übergeordnete Seite (Quellseite) darstelltURL. Diese Funktion gibt parentUrl
syntheticsLink
zurückObject
withStatusCode(statusCode
)
ist eine Zeichenfolge, die den Statuscode darstellt. Diese Funktion gibt statusCode
syntheticsLink
zurückObject
withFailureReason(failureReason
)
ist eine Zeichenfolge, die den Grund für den Fehler darstellt. Diese Funktion gibt failureReason
syntheticsLink
zurückObject
addScreenshotResult(screenshotResult
)
ist ein Objekt. Es ist eine Instance von screenshotResult
ScreenshotResult
, die von der Synthetics-Funktion takeScreenshot
zurückgegeben wurde. Das Objekt umfasst Folgendes:
fileName
– Eine Zeichenfolge, diescreenshotFileName
darstelltpageUrl
(optional)error
(optional)
Klassen und Funktionen der Bibliothek Node.js, die nur für API Kanarienvögel gelten
Die folgenden CloudWatch Synthetics-Bibliotheksfunktionen für Node.js sind nur für API Kanarienvögel nützlich.
executeHttpStep(stepName,requestOptions, [Rückruf], []) stepConfig
Führt die bereitgestellte HTTP Anfrage als Schritt aus und veröffentlicht Metriken SuccessPercent
(Pass/Fail). Duration
executeHttpStepverwendet entweder HTTP oder HTTPS systemeigene Funktionen im Hintergrund, 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 Einzelheiten zu jeder HTTP Anfrage, z. B. die folgenden:
Startzeit
Endzeit
Status (PASSED/FAILED)
-
Fehlergrund, wenn fehlgeschlagen
-
HTTPAnrufdetails wie Anforderungs-/Antwort-Header, Hauptteil, Statuscode, Statusmeldung und Leistungszeiten.
Parameter
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 einURL, eine URL Zeichenfolge oder ein Objekt sein. Wenn es sich um ein Objekt handelt, muss es sich um eine Reihe konfigurierbarer Optionen handeln, um eine HTTP Anfrage stellen zu können. Es unterstützt alle Optionen in http.request(options[, callback])
requestOptionsUnterstützt zusätzlich zu diesen Optionen in Node.js den zusätzlichen Parameterbody
. 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
stepConfig(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 executeHttpStep
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 übergeben URL als requestOptions:
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 ermöglicht Anforderungskopfzeilen, Antwort-Header, Anforderungstext (Postdaten) und Antworttext in Ihrem Bericht und schränkt die Header-Werte „X-AMZ-Security-Token“ und „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 an den Schritt weiter executeHttpStepund benennt ihn.
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 Metriken für jeden Schritt mithilfe von stepName.
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 Anrufschritte überwachen.
Ein vollständiges Beispielskript, das diese Funktionen verwendet, finden Sie unter Mehrstufiger Kanarienvogel API.