Bibliotheksfunktionen sind für Node.js Canary 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 Canary verfügbar

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

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

getCanaryName();

Gibt den Namen des Canarys zurück.

getCanaryArn();

Gibt den ARN des Canarys aus.

getCanaryUserAgentString();

Gibt den benutzerdefinierten Benutzeragenten des Canary zurück.

getRuntimeVersion();

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.

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

ExecuteStep (stepName, functionToExecute, [SchrittConfig])

Führt den angegebenen Schritt aus und umschließt ihn mit Metriken und deren Dauer. start/pass/fail logging and 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 ausgelöst wird, 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 Fehlschlag

  • Gibt den ausstepName Duration metric, mit einem Wert, der auf der Start- und Endzeit des Schritts basiert

  • Gibt zurück, was functionToExecute zurückgegeben wurde, oder wirft erneut, was geworfen wurde functionToExecute

  • Fügt dem Canary-Bericht eine Zusammenfassung der Schrittausführung 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(); }); });

executeHttpStep(stepName, RequestOptions, [Rückruf], [StepConfig])

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

executeHttpStepverwendet entweder native HTTP- oder HTTPS-Funktionen unter der Haube, abhängig vom in der Anfrage angegebenen Protokoll.

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 Node.js-Dokumentation.

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 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 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 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 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 Mehrstufiger API-Canary.