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 Node.js multi Checks
Il blueprint Node.js multi check consente di creare canarini che eseguono più controlli di convalida all'interno di un'unica esecuzione. 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 tra i passaggi (max 10) |
steps |
Oggetto | Sì | Raccolta di 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
Deve contenere almeno un passaggio
Sono consentiti al massimo 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 passaggio.
Proprietà
| Proprietà | Tipo | Predefinito | Intervallo | Description |
|---|---|---|---|---|
stepTimeout |
integer | 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à variabili
| Proprietà | Tipo | Description |
|---|---|---|
| Nomi delle variabili | string | Deve corrispondere al modello ^[a-zA-Z][a-zA-Z0-9_]*$ |
| Valori variabili | string | 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 |
string | Sì | Tipo di controllo:HTTP,DNS, SSL TCP |
extractors |
array | No | Configurazione dell'estrazione dei dati |
Convalida del nome della fase
Schema - ^ [a-zA-Z] [a-zA-Z0-9_-] *$
Lunghezza massima: 64 caratteri
Deve iniziare con una lettera
Numerazione dei passaggi
I passaggi sono numerati come chiavi di stringa: «1", «2",..., «10"
Modello: ^ ([1-9] |10) $
È richiesto almeno 1 passaggio
Sono consentiti al massimo 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 APIs con una convalida completa delle richieste e delle risposte.
Proprietà richieste
| Proprietà | Tipo | Description |
|---|---|---|
url |
stringa | URL di destinazione (deve essere un formato URI valido) |
httpMethod |
string | Metodo HTTP: GETPOST,PUT,PATCH,DELETE,HEAD, OPTIONS |
Proprietà opzionali
| Proprietà | Tipo | Predefinito | Intervallo | Description |
|---|---|---|---|---|
timeout |
integer | 30000 | 5000-300000 | Timeout della richiesta (millisecondi) |
waitTime |
integer | 0 | 0-60 | Ritardo prima della richiesta (secondi) |
headers |
oggetto | - | - | Intestazioni HTTP personalizzate |
body |
string | - | - | Corpo della richiesta per POST/PUT le operazioni |
authentication |
oggetto | - | - | Configurazione di autenticazione |
assertions |
array | - | - | Regole di convalida delle risposte |
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à richieste
| Proprietà | Tipo | Description |
|---|---|---|
domain |
stringa | Nome di dominio da interrogare (formato hostname) |
Proprietà opzionali
| Proprietà | Tipo | Predefinito | Description |
|---|---|---|---|
recordType |
stringa | «A» | Tipo di record DNS:A,CNAME,MX, TXT NS |
nameserver |
string | - | Server DNS specifico da interrogare |
timeout |
integer | 30000 | Timeout della query (5000-300000 ms) |
port |
integer | 53 | Porta server DNS (1-65535) |
protocol |
string | «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 dei certificati SSL.
Proprietà richieste
| Proprietà | Tipo | Description |
|---|---|---|
hostname |
stringa | Nome host di destinazione (formato hostname) |
Proprietà opzionali
| Proprietà | Tipo | Predefinito | Descrizione |
|---|---|---|---|
port |
integer | 443 | Porta SSL (1-65535) |
timeout |
integer | 30000 | Timeout di 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à richieste
| Proprietà | Tipo | Description |
|---|---|---|
hostname |
stringa | Nome host di destinazione (formato hostname) |
port |
integer | Porta di destinazione (1-65535) |
Proprietà opzionali
| Proprietà | Tipo | Predefinito | Descrizione |
|---|---|---|---|
timeout |
integer | 30000 | Timeout complessivo (5000-300000ms) |
connectionTimeout |
integer | 3000 | Timeout di connessione (5000-300000ms) |
readTimeout |
integer | 2000 | Timeout di lettura dei dati (5000-300000ms) |
sendData |
string | - | Dati da inviare dopo la connessione |
expectedResponse |
string | - | Dati di risposta previsti |
encoding |
string | «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 Base
| Proprietà | Tipo | Campo obbligatorio | Descrizione |
|---|---|---|---|
type |
stringa | Sì | Deve essere "BASIC" |
username |
string | Sì | Nome utente per l'autenticazione |
password |
string | Sì | Password per l'autenticazione |
Esempio
{ "type": "BASIC", "username": "admin", "password": "${AWS_SECRET:basic-auth:password}" }
Autenticazione con chiave API
| Proprietà | Tipo | Obbligatorio | Predefinito | Description |
|---|---|---|---|---|
type |
stringa | Sì | - | Deve essere "API_KEY" |
apiKey |
string | Sì | - | Valore della chiave API |
headerName |
string | No | «Chiave X-API» | Nome dell'intestazione per la chiave API |
Esempio
{ "type": "API_KEY", "apiKey": "${AWS_SECRET:api-credentials}", "headerName": "Authorization" }
OAuth credenziali del client
| Proprietà | Tipo | Obbligatorio | Predefinito | Description |
|---|---|---|---|---|
type |
stringa | Sì | - | Deve essere "OAUTH_CLIENT_CREDENTIALS" |
tokenUrl |
string | Sì | - | OAuth URL dell'endpoint del token |
clientId |
string | Sì | - | OAuth ID cliente |
clientSecret |
string | Sì | - | OAuth segreto del cliente |
scope |
string | No | - | OAuth ambito |
audience |
string | No | - | OAuth pubblico |
resource |
string | No | - | OAuth risorsa |
tokenApiAuth |
array | No | - | Metodi di autenticazione dell'API token:BASIC_AUTH_HEADER, REQUEST_BODY |
tokenCacheTtl |
integer | No | 3600 | Token cache TTL (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 |
string | Sì | Nome del AWS servizio (ad esempio, «execute-api») |
region |
string | Sì | AWS regione |
roleArn |
string | Sì | ARN del ruolo IAM 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 del codice di stato
| Proprietà | Tipo | Campo obbligatorio | Descrizione |
|---|---|---|---|
type |
stringa | Sì | Deve essere "STATUS_CODE" |
operator |
string | 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 dell'intervallo massimo (perIN_RANGE) |
{ "type": "STATUS_CODE", "operator": "EQUALS", "value": 200 }
Asserzioni sul tempo di risposta
| Proprietà | Tipo | Obbligatorio | Predefinito | Description |
|---|---|---|---|---|
type |
stringa | Sì | - | Deve essere "RESPONSE_TIME" |
operator |
string | Sì | - | LESS_THAN, GREATER_THAN, EQUALS |
value |
number | Sì | - | Valore temporale (minimo 0) |
unit |
string | No | «MILLISECONDI» | Deve essere "MILLISECONDS" |
{ "type": "RESPONSE_TIME", "operator": "LESS_THAN", "value": 500, "unit": "MILLISECONDS" }
Asserzioni della testa
| Proprietà | Tipo | Campo obbligatorio | Descrizione |
|---|---|---|---|
type |
stringa | Sì | Deve essere "HEADER" |
headerName |
string | Sì | Nome dell'intestazione da convalidare |
operator |
string | Sì | EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS, REGEX_MATCH, EXIST |
value |
stringa/booleano | Condizionale | Valore previsto (booleano per operatore) EXIST |
{ "type": "HEADER", "headerName": "Content-Type", "operator": "CONTAINS", "value": "application/json" }
Asserzioni corporee
| Proprietà | Tipo | Obbligatorio | Predefinito | Description |
|---|---|---|---|---|
type |
stringa | Sì | - | Deve essere "BODY" |
target |
string | No | «JSON» | JSON o TEXT |
path |
string | Condizionale | - | JSONPath (richiesto per il target JSON) |
operator |
string | Sì | - | CONTAINS, NOT_CONTAINS, EQUALS, NOT_EQUALS, EXISTS |
value |
stringa/booleano | Sì | - | Valore previsto (booleano per operatore) EXISTS |
{ "type": "BODY", "target": "JSON", "path": "$.users[0].name", "operator": "EQUALS", "value": "John Doe" }
Asserzioni DNS
Registra asserzioni di valore
| Proprietà | Tipo | Richiesto | Intervallo | Description |
|---|---|---|---|---|
type |
stringa | Sì | - | Deve essere "RECORD_VALUE" |
operator |
string | Sì | - | EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS, REGEX_MATCH |
value |
string | Sì | - | Valore record previsto |
Registra le asserzioni relative al conteggio
| Proprietà | Tipo | Richiesto | Intervallo | Description |
|---|---|---|---|---|
type |
stringa | Sì | - | Deve essere "RECORD_COUNT" |
operator |
string | Sì | - | EQUALS, GREATER_THAN, LESS_THAN |
value |
integer | Sì | ≥ 0 | Conteggio previsto (minimo 0) |
Affermazioni 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 |
string | Sì | - | EQUALS, GREATER_THAN, LESS_THAN |
value |
integer | Sì | ≥ 0 | TTL previsto (minimo 0) |
Asserzioni SSL
Affermazioni sulla scadenza dei certificati
| Proprietà | Tipo | Obbligatorio | Predefinito | Description |
|---|---|---|---|---|
type |
stringa | Sì | - | Deve essere "CERTIFICATE_EXPIRY" |
operator |
string | Sì | - | GREATER_THAN, LESS_THAN |
value |
integer | Sì | - | Valore temporale (minimo 0) |
unit |
string | No | «GIORNI» | DAYS, HOURS |
Affermazioni relative all'oggetto del certificato
| Proprietà | Tipo | Obbligatorio | Predefinito | Description |
|---|---|---|---|---|
type |
stringa | Sì | - | Deve essere "CERTIFICATE_SUBJECT" |
field |
string | Sì | - | Campo dell'oggetto:CN,O,OU,C, ST L |
operator |
string | Sì | - | CONTAINS, EQUALS, REGEX_MATCH |
value |
string | Sì | - | Valore del campo previsto |
Dichiarazioni dell'emittente del certificato
| Proprietà | Tipo | Obbligatorio | Predefinito | Description |
|---|---|---|---|---|
type |
stringa | Sì | - | Deve essere "CERTIFICATE_ISSUER" |
field |
string | Sì | - | Campo emittente:, CN O |
operator |
string | Sì | - | CONTAINS, EQUALS |
value |
string | Sì | - | Valore del campo previsto |
asserzioni TCP
Asserzioni di successo della connessione
| Proprietà | Tipo | Obbligatorio | Predefinito | Description |
|---|---|---|---|---|
type |
stringa | Sì | - | Deve essere "CONNECTION_SUCCESSFUL" |
value |
booleano | Sì | - | Stato della connessione previsto |
Asserzioni di dati di risposta
| Proprietà | Tipo | Obbligatorio | Predefinito | Description |
|---|---|---|---|---|
type |
stringa | Sì | - | Deve essere "RESPONSE_DATA" |
operator |
string | Sì | - | CONTAINS, EQUALS, NOT_CONTAINS, REGEX_MATCH, STARTS_WITH, ENDS_WITH |
value |
string | Sì | - | Dati di risposta previsti |
encoding |
string | 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 | Predefinito | Description |
|---|---|---|---|---|
name |
stringa | Sì | - | Nome variabile per i dati estratti |
type |
string | Sì | - | Tipo di estrazione: BODY |
path |
string | No | - | JSONPath per l'estrazione del corpo |
regex |
string | No | - | modello di espressione regolare |
regexGroup |
integer | 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}" } ] }