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 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à 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 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 stringa Metodo HTTP: GETPOST,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 - - 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 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 query (5000-300000 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 dei certificati SSL.

Proprietà richieste

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

Proprietà opzionali

Proprietà Tipo Predefinita Descrizione
port intero 443 Porta SSL (1-65535)
timeout intero 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 intero Porta di destinazione (1-65535)

Proprietà opzionali

Proprietà Tipo Predefinita Descrizione
timeout intero 30000 Timeout complessivo (5000-300000ms)
connectionTimeout intero 3000 Timeout di connessione (5000-300000ms)
readTimeout intero 2000 Timeout di lettura dei dati (5000-300000ms)
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 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 «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 Predefinita Description
type stringa - Deve essere "OAUTH_CLIENT_CREDENTIALS"
tokenUrl stringa - OAuth URL dell'endpoint del token
clientId stringa - OAuth ID cliente
clientSecret stringa - OAuth segreto del cliente
scope stringa No - OAuth ambito
audience stringa No - OAuth pubblico
resource stringa No - OAuth risorsa
tokenApiAuth array No - Metodi di autenticazione dell'API token:BASIC_AUTH_HEADER, REQUEST_BODY
tokenCacheTtl numero intero 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 }

AWSFirma (versione 4)

Proprietà Tipo Campo obbligatorio Descrizione
type stringa Deve essere "SIGV4"
service stringa Nome del AWS servizio (ad esempio, «execute-api»)
region stringa AWSregione
roleArn stringa 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 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 dell'intervallo massimo (perIN_RANGE)
{ "type": "STATUS_CODE", "operator": "EQUALS", "value": 200 }

Asserzioni sul tempo 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" }

Asserzioni della testa

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 stringa/booleano 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 (richiesto per il target JSON)
operator stringa - 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 stringa - EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS, REGEX_MATCH
value stringa - Valore record previsto

Registra le asserzioni relative al conteggio

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)

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

Asserzioni SSL

Affermazioni sulla scadenza dei certificati

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

Affermazioni relative all'oggetto del certificato

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

Dichiarazioni 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 del campo previsto

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 di 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 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}" } ] }