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.
Argomenti
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 | Sì | 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
globalSettingsvariables, esteps
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 | Sì | Identificatore univoco per la fase |
checkerType
|
stringa | Sì | 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 | Sì | Deve essere "BASIC" |
username
|
stringa | Sì | Nome utente per l'autenticazione |
password
|
stringa | Sì | 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 | Sì | - | Deve essere "API_KEY" |
apiKey
|
stringa | Sì | - | 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 | Sì | - | Deve essere "OAUTH_CLIENT_CREDENTIALS" |
tokenUrl
|
stringa | Sì | - | URL dell'endpoint del token OAuth |
clientId
|
stringa | Sì | - | ID del cliente OAuth |
clientSecret
|
stringa | Sì | - | 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 | Sì | Deve essere "SIGV4" |
service
|
stringa | Sì | Nome del AWS servizio (ad esempio, «execute-api») |
region
|
stringa | Sì | AWS regione |
roleArn
|
stringa | Sì | 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 | Sì | Deve essere "STATUS_CODE" |
operator
|
stringa | Sì | 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 | Sì | - | Deve essere "RESPONSE_TIME" |
operator
|
stringa | Sì | - | LESS_THAN, GREATER_THAN, EQUALS |
value
|
numero | Sì | - | 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 | Sì | Deve essere "HEADER" |
headerName
|
stringa | Sì | Nome dell'intestazione da convalidare |
operator
|
stringa | Sì | 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 | Sì | - | Deve essere "BODY" |
target
|
stringa | No | «JSON» | JSON o TEXT |
path
|
stringa | Condizionale | - | JSONPath (obbligatorio per il target JSON) |
operator
|
stringa | Sì | - | CONTAINS, NOT_CONTAINS, EQUALS,
NOT_EQUALS, EXISTS |
value
|
string/boolean | Sì | - | 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 | Sì | - | Deve essere "RECORD_VALUE" |
operator
|
stringa | Sì | - | EQUALS, NOT_EQUALS, CONTAINS,
NOT_CONTAINS, REGEX_MATCH |
value
|
stringa | Sì | - | Valore record previsto |
Asserzioni sul conteggio dei record
| Proprietà | Tipo | Richiesto | Intervallo | Description |
|---|---|---|---|---|
type
|
stringa | Sì | - | Deve essere "RECORD_COUNT" |
operator
|
stringa | Sì | - | EQUALS, GREATER_THAN, LESS_THAN |
value
|
intero | Sì | ≥ 0 | Conteggio previsto (minimo 0) |
Asserzioni autorevoli
| Proprietà | Tipo | Richiesto | Intervallo | Description |
|---|---|---|---|---|
type
|
stringa | Sì | - | Deve essere "AUTHORITATIVE" |
value
|
booleano | Sì | - | Status autorevole previsto |
Asserzioni TTL
| Proprietà | Tipo | Richiesto | Intervallo | Description |
|---|---|---|---|---|
type
|
stringa | Sì | - | Deve essere "TTL" |
operator
|
stringa | Sì | - | EQUALS, GREATER_THAN, LESS_THAN |
value
|
intero | Sì | ≥ 0 | TTL previsto (minimo 0) |
Asserzioni SSL
Asserzioni sulla scadenza del certificato
| Proprietà | Tipo | Obbligatorio | Predefinita | Description |
|---|---|---|---|---|
type
|
stringa | Sì | - | Deve essere "CERTIFICATE_EXPIRY" |
operator
|
stringa | Sì | - | GREATER_THAN, LESS_THAN |
value
|
intero | Sì | - | Valore temporale (minimo 0) |
unit
|
stringa | No | «GIORNI» | DAYS, HOURS |
Dichiarazioni relative all'oggetto del certificato
| Proprietà | Tipo | Obbligatorio | Predefinita | Description |
|---|---|---|---|---|
type
|
stringa | Sì | - | Deve essere "CERTIFICATE_SUBJECT" |
field
|
stringa | Sì | - | Campo oggetto:CN,O,OU,C, ST L |
operator
|
stringa | Sì | - | CONTAINS, EQUALS, REGEX_MATCH |
value
|
stringa | Sì | - | Valore previsto del campo |
Asserzioni dell'emittente del certificato
| Proprietà | Tipo | Obbligatorio | Predefinita | Description |
|---|---|---|---|---|
type
|
stringa | Sì | - | Deve essere "CERTIFICATE_ISSUER" |
field
|
stringa | Sì | - | Campo emittente:, CN O |
operator
|
stringa | Sì | - | CONTAINS, EQUALS |
value
|
stringa | Sì | - | Valore previsto del campo |
Asserzioni TCP
Asserzioni di successo della connessione
| Proprietà | Tipo | Obbligatorio | Predefinita | Description |
|---|---|---|---|---|
type
|
stringa | Sì | - | Deve essere "CONNECTION_SUCCESSFUL" |
value
|
booleano | Sì | - | Stato della connessione previsto |
Asserzioni sui dati di risposta
| Proprietà | Tipo | Obbligatorio | Predefinita | Description |
|---|---|---|---|---|
type
|
stringa | Sì | - | Deve essere "RESPONSE_DATA" |
operator
|
stringa | Sì | - | CONTAINS, EQUALS, NOT_CONTAINS,
REGEX_MATCH, STARTS_WITH, ENDS_WITH |
value
|
stringa | Sì | - | 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 | Sì | - | Nome della variabile per i dati estratti |
type
|
stringa | Sì | - | 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}" } ] }