View a markdown version of this page

Scrittura di una configurazione JSON per il blueprint Multi Checks 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à.

Scrittura di una configurazione JSON per il blueprint Multi Checks Node.js

Il blueprint dei controlli Node.js multipli consente di creare canarini che eseguono più controlli di convalida in una singola esecuzione di canary. Questo modello è utile quando si desidera testare più endpoint, convalidare diversi aspetti dell'applicazione o eseguire una serie di controlli correlati in sequenza.

Struttura di configurazione principale

La configurazione root definisce la struttura generale del tuo blueprint API avanzato Canary.

Proprietà Tipo Campo obbligatorio Description
globalSettings Oggetto No Configurazioni predefinite applicate a tutti i passaggi
variables Oggetto No Valori riutilizzabili in tutti i passaggi (max 10)
steps Oggetto Raccolta delle fasi di monitoraggio (1-10 fasi)

Esempio

{ "globalSettings": { "stepTimeout": 30000, "userAgent": "CloudWatch-Synthetics-Advanced/1.0" }, "variables": { "baseUrl": "https://api.example.com", "apiVersion": "v1" }, "steps": { "1": { "stepName": "healthCheck", "checkerType": "HTTP", "url": "${baseUrl}/health", "httpMethod": "GET" } } }

Regole di convalida

  • Devono contenere almeno un passaggio

  • Sono consentiti un massimo di 10 passaggi

  • Non sono consentite proprietà aggiuntive oltre a globalSettings variables, e steps

Impostazioni globali

Le impostazioni globali forniscono configurazioni predefinite che si applicano a tutti i passaggi a meno che non vengano sovrascritte a livello di fase.

Proprietà

Proprietà Tipo Predefinita Intervallo Description
stepTimeout intero 30000 5000-300000 Timeout predefinito per tutti i passaggi (millisecondi)

Esempio

{ "globalSettings": { "stepTimeout": 60000, } }

Gestione delle variabili e dei dati

Le variabili consentono di definire valori riutilizzabili a cui è possibile fare riferimento in tutta la configurazione utilizzando ${variableName} la sintassi.

Proprietà delle variabili

Proprietà Tipo Description
Nomi delle variabili stringa Deve corrispondere al modello ^[a-zA-Z][a-zA-Z0-9_]*$
Valori variabili stringa Qualsiasi valore di stringa

Limitazioni

  • Massimo 10 variabili per configurazione

  • I nomi delle variabili devono iniziare con una lettera

  • I nomi delle variabili possono contenere solo lettere, numeri e caratteri di sottolineatura

  • Lunghezza massima non specificata nello schema

Esempio

{ "variables": { "baseUrl": "https://api.example.com", "apiKey": "${AWS_SECRET:my-api-key}", "timeout": "30000", "userEmail": "test@example.com" } }

Utilizzo della configurazione

{ "steps": { "1": { "url": "${baseUrl}/users", "timeout": "${timeout}", "headers": { "Authorization": "Bearer ${apiKey}" } } } }

Definizioni dei passaggi

Le fasi definiscono le singole operazioni di monitoraggio. Ogni fase è numerata da 1 a 10 e contiene un tipo specifico di controllo.

Proprietà comuni dei passaggi

Proprietà Tipo Campo obbligatorio Descrizione
stepName stringa Identificatore univoco per la fase
checkerType stringa Tipo di controllo:HTTP,,DNS, SSL TCP
extractors array No Configurazione dell'estrazione dei dati

Convalida del nome del passaggio

  • Schema - ^ [a-zA-Z] [a-z A-Z0-9 _-] *$

  • Lunghezza massima: 64 caratteri

  • Deve iniziare con una lettera

Numerazione dei passaggi

  • I passaggi sono numerati come stringhe di tasti: «1", «2",..., «10"

  • Motivo: ^ ([1-9] |10) $

  • È richiesto almeno 1 passaggio

  • Sono consentiti un massimo di 10 passaggi

Esempio

{ "steps": { "1": { "stepName": "loginAPI", "checkerType": "HTTP", "url": "https://api.example.com/login", "httpMethod": "POST" }, "2": { "stepName": "dnsCheck", "checkerType": "DNS", "domain": "example.com" } } }

Tipi di controllo

Controlli HTTP

Monitora gli endpoint web e le API con una convalida completa di richieste e risposte.

Proprietà obbligatorie

Proprietà Tipo Description
url stringa URL di destinazione (deve essere un formato URI valido)
httpMethod stringa Metodo HTTP:GET,POST,PUT, PATCH,DELETE,HEAD, OPTIONS

Proprietà opzionali

Proprietà Tipo Predefinita Intervallo Description
timeout intero 30000 5000-300000 Timeout della richiesta (millisecondi)
waitTime intero 0 0-60 Ritardo prima della richiesta (secondi)
headers oggetto - - Intestazioni HTTP personalizzate
body stringa - - Organismo richiedente per POST/PUT le operazioni
authentication oggetto - - Configurazione di autenticazione
assertions array - - Regole di convalida della risposta

Esempio

{ "stepName": "createUser", "checkerType": "HTTP", "url": "https://api.example.com/users", "httpMethod": "POST", "timeout": 15000, "headers": { "Content-Type": "application/json", "X-API-Version": "v1" }, "body": "{\"name\":\"John Doe\",\"email\":\"john@example.com\"}", "authentication": { "type": "API_KEY", "apiKey": "${AWS_SECRET:api-credentials}", "headerName": "X-API-Key" }, "assertions": [ { "type": "STATUS_CODE", "operator": "EQUALS", "value": 201 } ] }

Controlli DNS

Convalida la risoluzione DNS e registra le informazioni.

Proprietà obbligatorie

Proprietà Tipo Description
domain stringa Nome di dominio da interrogare (formato hostname)

Proprietà opzionali

Proprietà Tipo Predefinita Description
recordType stringa «A» Tipo di record DNS:A,,CNAME,MX, TXT NS
nameserver stringa - Server DNS specifico da interrogare
timeout intero 30000 Timeout della richiesta (5000-30000 ms)
port intero 53 Porta server DNS (1-65535)
protocol stringa «UDP» Protocollo: UDP o TCP
assertions array - regole di convalida della risposta DNS

Esempio

{ "stepName": "dnsResolution", "checkerType": "DNS", "domain": "example.com", "recordType": "A", "nameserver": "8.8.8.8", "timeout": 10000, "assertions": [ { "type": "RECORD_VALUE", "operator": "CONTAINS", "value": "192.168" } ] }

Controlli SSL

Monitora lo stato e la configurazione del certificato SSL.

Proprietà obbligatorie

Proprietà Tipo Description
hostname stringa Nome host di destinazione (formato del nome host)

Proprietà opzionali

Proprietà Tipo Predefinita Descrizione
port intero 443 Porta SSL (1-65535)
timeout intero 30000 Timeout della connessione (5000-300000 ms)
sni booleano TRUE Indicazione del nome del server
verifyHostname booleano TRUE Verifica del nome host
allowSelfSigned booleano FALSE Accetta certificati autofirmati
assertions array - Regole di convalida dei certificati

Esempio

{ "stepName": "sslCertCheck", "checkerType": "SSL", "hostname": "secure.example.com", "port": 443, "sni": true, "verifyHostname": true, "assertions": [ { "type": "CERTIFICATE_EXPIRY", "operator": "GREATER_THAN", "value": 30, "unit": "DAYS" } ] }

Controlli TCP

Verifica la connettività della porta TCP e la convalida della risposta.

Proprietà obbligatorie

Proprietà Tipo Description
hostname stringa Nome host di destinazione (formato del nome host)
port intero Porta di destinazione (1-65535)

Proprietà opzionali

Proprietà Tipo Predefinita Descrizione
timeout intero 30000 Timeout complessivo (5000-300000 ms)
connectionTimeout intero 3000 Timeout della connessione (5000-30000 ms)
readTimeout intero 2000 Timeout di lettura dei dati (5000-30000 ms)
sendData stringa - Dati da inviare dopo la connessione
expectedResponse stringa - Dati di risposta previsti
encoding stringa "UTF-8" Codifica dei dati:UTF-8,, ASCII HEX
assertions array - Convalida della connessione e della risposta

Esempio

{ "stepName": "databaseConnection", "checkerType": "TCP", "hostname": "db.example.com", "port": 3306, "connectionTimeout": 5000, "sendData": "SELECT 1", "expectedResponse": "1", "assertions": [ { "type": "CONNECTION_SUCCESSFUL", "value": true } ] }

Metodi di autenticazione

Nessuna autenticazione

{ "type": "NONE" }

Autenticazione di base

Proprietà Tipo Campo obbligatorio Descrizione
type stringa Deve essere "BASIC"
username stringa Nome utente per l'autenticazione
password stringa Password per l'autenticazione

Esempio

{ "type": "BASIC", "username": "admin", "password": "${AWS_SECRET:basic-auth:password}" }

Autenticazione con chiave API

Proprietà Tipo Obbligatorio Predefinita Description
type stringa - Deve essere "API_KEY"
apiKey stringa - Valore della chiave API
headerName stringa No "X-API-Key" Nome dell'intestazione per la chiave API

Esempio

{ "type": "API_KEY", "apiKey": "${AWS_SECRET:api-credentials}", "headerName": "Authorization" }

Credenziali del client OAuth

Proprietà Tipo Obbligatorio Predefinita Description
type stringa - Deve essere "OAUTH_CLIENT_CREDENTIALS"
tokenUrl stringa - URL dell'endpoint del token OAuth
clientId stringa - ID del cliente OAuth
clientSecret stringa - Segreto del cliente OAuth
scope stringa No - Ambito OAuth
audience stringa No - Pubblico OAuth
resource stringa No - Risorsa OAuth
tokenApiAuth array No - Metodi di autenticazione dell'API dei token:, BASIC_AUTH_HEADER REQUEST_BODY
tokenCacheTtl numero intero No 3600 TTL della cache dei token (minimo 60 secondi)

Esempio

{ "type": "OAUTH_CLIENT_CREDENTIALS", "tokenUrl": "https://auth.example.com/oauth/token", "clientId": "${AWS_SECRET:oauth-creds:client_id}", "clientSecret": "${AWS_SECRET:oauth-creds:client_secret}", "scope": "read write", "tokenCacheTtl": 7200 }

AWS Firma (versione 4)

Proprietà Tipo Campo obbligatorio Descrizione
type stringa Deve essere "SIGV4"
service stringa Nome del AWS servizio (ad esempio, «execute-api»)
region stringa AWS regione
roleArn stringa Ruolo IAM ARN per la firma

Esempio

{ "type": "SIGV4", "service": "execute-api", "region": "us-east-1", "roleArn": "arn:aws:iam::123456789012:role/SyntheticsRole" }

Asserzioni e convalida

Asserzioni HTTP

Asserzioni relative al codice di stato

Proprietà Tipo Campo obbligatorio Descrizione
type stringa Deve essere "STATUS_CODE"
operator stringa EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN, IN_RANGE
value intero Condizionale Codice di stato HTTP (100-599)
rangeMin intero Condizionale Valore minimo dell'intervallo (per) IN_RANGE
rangeMax intero Condizionale Valore massimo dell'intervallo (perIN_RANGE)
{ "type": "STATUS_CODE", "operator": "EQUALS", "value": 200 }

Asserzioni sui tempi di risposta

Proprietà Tipo Obbligatorio Predefinita Description
type stringa - Deve essere "RESPONSE_TIME"
operator stringa - LESS_THAN, GREATER_THAN, EQUALS
value numero - Valore temporale (minimo 0)
unit stringa No «MILLISECONDI» Deve essere "MILLISECONDS"
{ "type": "RESPONSE_TIME", "operator": "LESS_THAN", "value": 500, "unit": "MILLISECONDS" }

Affermazioni principali

Proprietà Tipo Campo obbligatorio Descrizione
type stringa Deve essere "HEADER"
headerName stringa Nome dell'intestazione da convalidare
operator stringa EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS, REGEX_MATCH, EXIST
value string/boolean Condizionale Valore previsto (booleano per operatore) EXIST
{ "type": "HEADER", "headerName": "Content-Type", "operator": "CONTAINS", "value": "application/json" }

Asserzioni corporee

Proprietà Tipo Obbligatorio Predefinita Description
type stringa - Deve essere "BODY"
target stringa No «JSON» JSON o TEXT
path stringa Condizionale - JSONPath (obbligatorio per il target JSON)
operator stringa - CONTAINS, NOT_CONTAINS, EQUALS, NOT_EQUALS, EXISTS
value string/boolean - Valore previsto (booleano per operatore) EXISTS
{ "type": "BODY", "target": "JSON", "path": "$.users[0].name", "operator": "EQUALS", "value": "John Doe" }

Asserzioni DNS

Asserzioni di valore da record

Proprietà Tipo Richiesto Intervallo Description
type stringa - Deve essere "RECORD_VALUE"
operator stringa - EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS, REGEX_MATCH
value stringa - Valore record previsto

Asserzioni sul conteggio dei record

Proprietà Tipo Richiesto Intervallo Description
type stringa - Deve essere "RECORD_COUNT"
operator stringa - EQUALS, GREATER_THAN, LESS_THAN
value intero ≥ 0 Conteggio previsto (minimo 0)

Asserzioni autorevoli

Proprietà Tipo Richiesto Intervallo Description
type stringa - Deve essere "AUTHORITATIVE"
value booleano - Status autorevole previsto

Asserzioni TTL

Proprietà Tipo Richiesto Intervallo Description
type stringa - Deve essere "TTL"
operator stringa - EQUALS, GREATER_THAN, LESS_THAN
value intero ≥ 0 TTL previsto (minimo 0)

Asserzioni SSL

Asserzioni sulla scadenza del certificato

Proprietà Tipo Obbligatorio Predefinita Description
type stringa - Deve essere "CERTIFICATE_EXPIRY"
operator stringa - GREATER_THAN, LESS_THAN
value intero - Valore temporale (minimo 0)
unit stringa No «GIORNI» DAYS, HOURS

Dichiarazioni relative all'oggetto del certificato

Proprietà Tipo Obbligatorio Predefinita Description
type stringa - Deve essere "CERTIFICATE_SUBJECT"
field stringa - Campo oggetto:CN,O,OU,C, ST L
operator stringa - CONTAINS, EQUALS, REGEX_MATCH
value stringa - Valore previsto del campo

Asserzioni dell'emittente del certificato

Proprietà Tipo Obbligatorio Predefinita Description
type stringa - Deve essere "CERTIFICATE_ISSUER"
field stringa - Campo emittente:, CN O
operator stringa - CONTAINS, EQUALS
value stringa - Valore previsto del campo

Asserzioni TCP

Asserzioni di successo della connessione

Proprietà Tipo Obbligatorio Predefinita Description
type stringa - Deve essere "CONNECTION_SUCCESSFUL"
value booleano - Stato della connessione previsto

Asserzioni sui dati di risposta

Proprietà Tipo Obbligatorio Predefinita Description
type stringa - Deve essere "RESPONSE_DATA"
operator stringa - CONTAINS, EQUALS, NOT_CONTAINS, REGEX_MATCH, STARTS_WITH, ENDS_WITH
value stringa - Dati di risposta previsti
encoding stringa No "UTF-8" UTF-8, ASCII, HEX

Estrazione dei dati

Extractors consente di acquisire dati dalle risposte per utilizzarli nei passaggi successivi o per scopi di reporting.

Proprietà di estrazione

Proprietà Tipo Obbligatorio Predefinita Description
name stringa - Nome della variabile per i dati estratti
type stringa - Tipo di estrazione: BODY
path stringa No - JSONPath per l'estrazione del corpo
regex stringa No - Modello di espressione regolare
regexGroup numero intero No 0 Gruppo di acquisizione Regex (minimo 0)

Convalida del nome di estrazione

  • Modello: ^[a-zA-Z][a-zA-Z0-9_]*$

  • Deve iniziare con una lettera

  • Può contenere lettere, numeri e caratteri di sottolineatura

Limitazione: la sostituzione non si applica ai campi dello schema che hanno valori ENUM specifici

Tipi di estrazione

{ "name": "userId", "type": "BODY", "path": "$.user.id" }
{ "stepName": "loginAndExtract", "checkerType": "HTTP", "url": "https://api.example.com/login", "httpMethod": "POST", "body": "{\"username\":\"test\",\"password\":\"pass\"}", "extractors": [ { "name": "textVariable", "type": "BODY", "path": "$.myvalue" } ] }, { "stepName": "substituteVariable", "checkerType": "HTTP", "url": "https://api.example.com/get/${textVariable}", "httpMethod": "GET", "assertions": [ { "type": "BODY", "target": "JSON", "path": "$.users[0].name", "operator": "EQUALS", "value": "${textVariable}" } ] }