View a markdown version of this page

Funzioni di libreria disponibili per Canary Node.js - Amazon CloudWatch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Funzioni di libreria disponibili per Canary Node.js

Questa sezione descrive le funzioni di libreria disponibili per gli script Canary che utilizzano il runtime. Node.js

aggiungi ExecutionError (errorMessage, ex);

errorMessage descrive l'errore e ex è l'eccezione che si verifica

Puoi utilizzare addExecutionError per impostare gli errori di esecuzione per il tuo canary. Fa fallire il canary senza interrompere l'esecuzione dello script. Inoltre, non influisce sui tuoi parametri successPercent.

È necessario tenere traccia degli errori come errori di esecuzione solo se non sono importanti per indicare il successo o il fallimento dello script canary.

Di seguito è illustrato un esempio dell'uso dell'elemento addExecutionError. Stai monitorando la disponibilità del tuo endpoint e acquisendo screenshot dopo che la pagina è stata caricata. Poiché l'errore di acquisizione di uno screenshot non determina la disponibilità dell'endpoint, puoi rilevare eventuali errori riscontrati durante l'acquisizione di screenshot e aggiungerli come errori di esecuzione. I parametri di disponibilità indicheranno comunque che l'endpoint è attivo e funzionante, ma lo stato del canary verrà contrassegnato come non riuscito. Il seguente blocco di codice di esempio rileva tale errore e lo aggiunge come errore di esecuzione.

try {await synthetics.executeStep(stepName, callbackFunc);} catch(ex) {synthetics.addExecutionError('Unable to take screenshot ', ex);}

ottenere CanaryName ();

Restituisce il nome del canary.

ottenere CanaryArn ();

Restituisce l'ARN del canary.

ottenere CanaryUserAgentString ();

Restituisce l'agente utente personalizzato del canary.

ottenere RuntimeVersion ();

Questa funzione è disponibile nella versione runtime syn-nodejs-3.0 e successive. Restituisce la versione di runtime di Synthetics del canary. Ad esempio, il valore restituito potrebbe essere syn-nodejs-3.0.

ottieni LogLevel ();

Recupera il livello di log corrente per la libreria Synthetics. I valori possibili sono i seguenti:

  • 0: Debug

  • 1: Info

  • 2: Warn

  • 3: Error

Esempio:

let logLevel = synthetics.getLogLevel();

set LogLevel ();

Imposta il livello di log per la libreria Synthetics. I valori possibili sono i seguenti:

  • 0: Debug

  • 1: Info

  • 2: Warn

  • 3: Error

Esempio:

synthetics.setLogLevel(0);

executeStep (StepName, funzioneToExecute, [StepConfig])

Esegue il passaggio fornito, inserendolo nelle metriche /fail logging e duration. start/pass pass/fail

La funzione executeStep svolge anche le operazioni seguenti:

  • Registra l'inizio del passaggio

  • Avvia un timer

  • Esegue la funzione fornita

  • Quando la funzione ritorna normalmente, conta come passaggio. Se la funzione viene generata, viene considerata fallita

  • Termina il timer

  • Registra se il passaggio è riuscito o non è riuscito

  • Emette la stepName SuccessPercent metrica, 100 per il passaggio o 0 per l'errore

  • Emette ilstepName Duration metric, con un valore basato sull'ora di inizio e di fine del passo

  • Restituisce ciò che la funzione ha ToExecute restituito o rigetta ciò che ha generato functionToExecute

  • Aggiunge un riepilogo dell'esecuzione delle fasi al rapporto del canarino

Esempio

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

Esegue la richiesta HTTP fornita come passaggio e pubblica () e metriche. SuccessPercent pass/fail Duration

execute HttpStep utilizza funzioni native HTTP o HTTPS predefinite, a seconda del protocollo specificato nella richiesta.

Questa funzione aggiunge anche un riepilogo dell'esecuzione delle fasi al report del canary. Il riepilogo include dettagli su ogni richiesta HTTP, ad esempio:

  • Ora di inizio

  • Ora di fine

  • Stato (PASSED/FAILED)

  • Motivo dell'errore, se non è riuscita

  • Dettagli della chiamata HTTP come request/response header, body, codice di stato, messaggio di stato e tempi delle prestazioni.

Parameters

StepName () String

Specifica il nome della fase. Questo nome viene utilizzato anche per pubblicare le CloudWatch metriche relative a questo passaggio.

requestOptions () Object or String

Il valore di questo parametro può essere un URL, una stringa URL o un oggetto. Se si tratta di un oggetto, deve essere un insieme di opzioni configurabili per effettuare una richiesta HTTP. Supporta tutte le opzioni in http.request (options [, callback]) nella documentazione. Node.js

Oltre a queste Node.js opzioni, RequestOptions supporta il parametro aggiuntivo. body Puoi utilizzare il parametro body per trasferire i dati come corpo della richiesta.

callback () response

(Facoltativo) Questa è una funzione utente che viene richiamata con la risposta HTTP. La risposta è del tipo Class: http. IncomingMessage.

StepConfig () object

(Facoltativo) Utilizza questo parametro per sostituire le configurazioni Synthetics globali con una configurazione diversa per questa fase.

Esempi di utilizzo di execute HttpStep

La seguente serie di esempi si basa l'uno sull'altro per illustrare i vari usi di questa opzione.

Questo primo esempio configura i parametri della richiesta. Puoi passare un URL come RequestOptions:

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

Oppure puoi trasferire una serie di opzioni:

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

L'esempio seguente crea una funzione di callback che accetta una risposta. Per impostazione predefinita, se non si specifica il callback, CloudWatch Synthetics verifica che lo stato sia compreso tra 200 e 299 inclusi.

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

L'esempio successivo crea una configurazione per questo passaggio che sovrascrive la configurazione globale di Synthetics CloudWatch . La configurazione dei passaggi in questo esempio consente le intestazioni di richiesta, le intestazioni di risposta, il corpo della richiesta (dati di post) e il corpo della risposta nel rapporto e limita i valori di intestazione «» e «AutorizzazioneX-Amz-Security-Token». Per impostazione predefinita, questi valori non vengono inclusi nel report per motivi di sicurezza. Se scegli di includerli, i dati vengono archiviati solo nel bucket S3.

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

Questo ultimo esempio passa la richiesta di esecuzione HttpStep e assegna un nome al passaggio.

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

Con questo set di esempi, CloudWatch Synthetics aggiunge i dettagli di ogni passaggio del rapporto e produce metriche per ogni passaggio utilizzando StepName.

Vedrai i parametri successPercent e duration per la fase Verify GET products API. Puoi monitorare le prestazioni delle API monitorando i parametri per le fasi delle chiamate API.

Per uno script completo di esempio che utilizza queste funzioni, consulta Multi-step API canarie.