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.
Argomenti
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 SuccessPercentmetrica, 100 per il passaggio o 0 per l'erroreEmette il
stepName Duration metric, con un valore basato sull'ora di inizio e di fine del passoRestituisce ciò che ha functionToExecute restituito o rigetta ciò che ha lanciato
functionToExecuteAggiunge 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])
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.