Funzioni di libreria disponibili per Node.js canary - 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 Node.js canary

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

addExecutionError(ErrorMessage, ad esempio);

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

getCanaryName();

Restituisce il nome del canary.

getCanaryArn();

Restituisce l'ARN del canary.

getCanaryUserAgentString();

Restituisce l'agente utente personalizzato del canary.

getRuntimeVersion();

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.

getLogLevel();

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

setLogLevel();

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, [ functionToExecuteStepConfig])

Esegue il passaggio fornito, avvolgendolo con le metriche di durata. start/pass/fail logging and 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 ha functionToExecute restituito o rigetta ciò che ha lanciato functionToExecute

  • Aggiunge un riepilogo dell'esecuzione delle fasi al rapporto di Canary

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

executeHttpStep(StepName, RequestOptions, [callback], [StepConfig])

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

executeHttpSteputilizza automaticamente funzioni native HTTP o HTTPS, 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 di Node.js.

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

richiamata () 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 executeHttpStep

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 trasferire 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 della fase in questo esempio consente le intestazioni della richiesta, le intestazioni della risposta, il corpo della richiesta (dopo i dati) e il corpo della risposta nel report e di limitare i valori di intestazione “X-Amz-Security-Token” e “Authorization”. 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 a executeHttpStepe assegna un nome alla fase.

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 Canary dell'API in più fasi.