View a markdown version of this page

Für Canary verfügbare Bibliotheksfunktionen Node.js - 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.

Für Canary verfügbare Bibliotheksfunktionen Node.js

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

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.executeStep(stepName, callbackFunc);} catch(ex) {synthetics.addExecutionError('Unable to take screenshot ', ex);}

holen 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 der Runtime-Version syn-nodejs-3.0 und höher verfügbar. Es gibt die Synthetics Laufzeitversion des Canarys zurück. Der Rückgabewert könnte beispielsweise syn-nodejs-3.0 sein.

erhalten 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);

executeStep (StepName, FunktionToExecute, [StepConfig])

Führt den angegebenen Schritt aus und umschließt ihn mit den Protokollierungs- und Duration-Metriken von start/pass /fail. pass/fail

Die executeStep-Funktion tut Folgendes:

  • Protokolliert, dass der Schritt gestartet wurde

  • Startet einen Timer

  • Führt die bereitgestellte Funktion aus

  • Wenn die Funktion normal zurückkehrt, gilt sie als bestanden. Wenn die Funktion auslöst, gilt sie als fehlgeschlagen

  • Beendet den Timer

  • Protokolliert, ob der Schritt bestanden oder fehlgeschlagen ist

  • Gibt die stepName SuccessPercent Metrik aus, 100 für bestanden oder 0 für Fehler

  • Gibt den ausstepName Duration metric, wobei der Wert auf den Start- und Endzeiten des Schritts basiert

  • Gibt zurück, was die Funktion ToExecute zurückgegeben hat, oder gibt erneut aus, was ausgelöst wurde functionToExecute

  • Fügt dem Bericht des Canary eine Zusammenfassung der einzelnen Schritte hinzu

Beispiel

await synthetics.executeStep(stepName, async function () { return new Promise((resolve, reject) => { const req = https.request(url, (res) => { console.log(`Status: ${res.statusCode}`); if (res.statusCode >= 400) { reject(new Error(`Request failed with status ${res.statusCode} for ${url}`)); } else { resolve(); } }); req.on('error', (err) => { reject(new Error(`Request failed for ${url}: ${err.message}`)); }); req.end(); }); });

execute HttpStep (StepName, RequestOptions, [Callback], [StepConfig])

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

execute HttpStep verwendet unter der Haube entweder native HTTP- oder HTTPS-Funktionen, 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, Text, Statuscode, Statusmeldung und Leistungszeiten.

Parameters

Schrittname () 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.

Schritt Config () 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, dass 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(); }); }); };

Im nächsten Beispiel wird eine Konfiguration für diesen Schritt erstellt, die die globale Synthetics-Konfiguration überschreibt. CloudWatch Die Schrittkonfiguration in diesem Beispiel erlaubt Anforderungsheader, Antwortheader, Anforderungstext (Postdaten) und Antworttext in Ihrem Bericht und schränkt die Header-Werte '' 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 übergibt Ihre Ausführungsanforderung HttpStep und benennt den Schritt.

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

Anhand dieser Beispiele 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.