Scrittura di una configurazione JSON per il blueprint Node.js multi Checks - 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 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.

Struttura di configurazione principale

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

Proprietà dello schema
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 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, 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 passaggio.

Proprietà

Proprietà di impostazione globali
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 Identificatore univoco per la fase
checkerType string 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 Deve essere "BASIC"
username string Nome utente per l'autenticazione
password string 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 - Deve essere "API_KEY"
apiKey string - 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 - Deve essere "OAUTH_CLIENT_CREDENTIALS"
tokenUrl string - OAuth URL dell'endpoint del token
clientId string - OAuth ID cliente
clientSecret string - 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 Deve essere "SIGV4"
service string Nome del AWS servizio (ad esempio, «execute-api»)
region string AWS regione
roleArn string 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 Deve essere "STATUS_CODE"
operator string 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 - Deve essere "RESPONSE_TIME"
operator string - LESS_THAN, GREATER_THAN, EQUALS
value number - 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 Deve essere "HEADER"
headerName string Nome dell'intestazione da convalidare
operator string 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 - Deve essere "BODY"
target string No «JSON» JSON o TEXT
path string Condizionale - JSONPath (richiesto per il target JSON)
operator string - CONTAINS, NOT_CONTAINS, EQUALS, NOT_EQUALS, EXISTS
value stringa/booleano - 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 - Deve essere "RECORD_VALUE"
operator string - EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS, REGEX_MATCH
value string - Valore record previsto

Registra le asserzioni relative al conteggio

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

Affermazioni 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 string - EQUALS, GREATER_THAN, LESS_THAN
value integer ≥ 0 TTL previsto (minimo 0)

Asserzioni SSL

Affermazioni sulla scadenza dei certificati

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

Affermazioni relative all'oggetto del certificato

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

Dichiarazioni dell'emittente del certificato

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

asserzioni TCP

Asserzioni di successo della connessione

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

Asserzioni di dati di risposta

Proprietà Tipo Obbligatorio Predefinito Description
type stringa - Deve essere "RESPONSE_DATA"
operator string - CONTAINS, EQUALS, NOT_CONTAINS, REGEX_MATCH, STARTS_WITH, ENDS_WITH
value string - 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 - Nome variabile per i dati estratti
type string - 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}" } ] }