Écrire une configuration JSON pour le plan Node.js Multi Checks - Amazon CloudWatch

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Écrire une configuration JSON pour le plan Node.js Multi Checks

Le plan multi-contrôles Node.js vous permet de créer des canaris qui effectuent plusieurs contrôles de validation au cours d'une seule exécution Canary. Ce plan est utile lorsque vous souhaitez tester plusieurs points de terminaison, valider différents aspects de votre application ou effectuer une série de vérifications connexes en séquence.

Structure de configuration racine

La configuration racine définit la structure globale de votre plan d'API avancé Canary.

Propriétés du schéma
Propriété Type Obligatoire Description
globalSettings Objet Non Configurations par défaut appliquées à toutes les étapes
variables Objet Non Valeurs réutilisables d'une étape à l'autre (maximum 10)
steps Objet Oui Recueil des étapes de surveillance (1 à 10 étapes)

Exemple

{ "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" } } }

Règles de validation

  • Doit contenir au moins une étape

  • Maximum de 10 étapes autorisées

  • Aucune propriété supplémentaire n'est autorisée au-delà de globalSettingsvariables, et steps

Paramètres globaux

Les paramètres globaux fournissent des configurations par défaut qui s'appliquent à toutes les étapes sauf si elles sont remplacées au niveau de l'étape.

Propriétés

Propriétés des paramètres globaux
Propriété Type Par défaut Range Description
stepTimeout integer 30 000 5000-300000 Délai d'expiration par défaut pour toutes les étapes (millisecondes)

Exemple

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

Gestion des variables et des données

Les variables vous permettent de définir des valeurs réutilisables qui peuvent être référencées dans l'ensemble de votre configuration à l'aide de ${variableName} la syntaxe.

Propriétés variables

Propriété Type Description
Noms de variables chaîne Doit correspondre au modèle ^[a-zA-Z][a-zA-Z0-9_]*$
Valeurs variables chaîne N'importe quelle valeur de chaîne

Limites

  • Maximum de 10 variables par configuration

  • Les noms de variables doivent commencer par une lettre

  • Les noms de variables ne peuvent contenir que des lettres, des chiffres et des traits de soulignement

  • Longueur maximale non spécifiée dans le schéma

Exemple

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

Utilisation de la configuration

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

Définitions des étapes

Les étapes définissent les opérations de surveillance individuelles. Chaque étape est numérotée de 1 à 10 et contient un type de contrôle spécifique.

Propriétés communes des étapes

Propriété Type Obligatoire Description
stepName chaîne Oui Identifiant unique pour l'étape
checkerType chaîne Oui Type de contrôle : HTTPDNS,SSL, TCP
extractors array Non Configuration de l'extraction des données

Validation du nom des étapes

  • Motif - ^ [A-zA-z] [A-zA-Z0-9_-] *$

  • Longueur maximale : 64 caractères

  • Doit commencer par une lettre

Numérotation des étapes

  • Les étapes sont numérotées sous forme de chaînes de caractères : « 1 », « 2 »,..., « 10 »

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

  • 1 étape minimum requise

  • Maximum de 10 étapes autorisées

Exemple

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

Types de chèques

Contrôles HTTP

Surveillez les points de terminaison Web APIs grâce à une validation complète des demandes et des réponses.

Propriétés requises

Propriété Type Description
url chaîne URL cible (le format d'URI doit être valide)
httpMethod chaîne Méthode HTTP : GETPOST,PUT,PATCH,DELETE,HEAD, OPTIONS

Propriétés facultatives

Propriété Type Par défaut Range Description
timeout integer 30 000 5000-300000 Délai d'expiration de la demande (millisecondes)
waitTime entier 0 0 à 60 Délai avant la demande (secondes)
headers objet - - En-têtes HTTP personnalisés
body chaîne - - Organisme demandeur pour les POST/PUT opérations
authentication objet - - Configuration de l’authentification
assertions array - - Règles de validation des réponses

Exemple

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

Contrôles DNS

Validez la résolution DNS et enregistrez les informations.

Propriétés requises

Propriété Type Description
domain chaîne Nom de domaine à interroger (format de nom d'hôte)

Propriétés facultatives

Propriété Type Par défaut Description
recordType chaîne « UN » Type d'enregistrement DNS : ACNAME,MX,TXT, NS
nameserver chaîne - Serveur DNS spécifique à interroger
timeout entier 30 000 Délai d'expiration de la requête (5000-300000 ms)
port entier 53 Port du serveur DNS (1-65535)
protocol chaîne « UDP » Protocole : UDP ou TCP
assertions array - Règles de validation des réponses DNS

Exemple

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

Contrôles SSL

Surveillez l'état et la configuration des certificats SSL.

Propriétés requises

Propriété Type Description
hostname chaîne Nom d'hôte cible (format du nom d'hôte)

Propriétés facultatives

Propriété Type Par défaut Description
port integer 443 Port SSL (1-65535)
timeout entier 30 000 Délai d'expiration de la connexion (5000-300000 ms)
sni boolean TRUE Indication du nom du serveur
verifyHostname boolean TRUE Vérification du nom d'hôte
allowSelfSigned boolean FALSE Accepter les certificats auto-signés
assertions array - Règles de validation des certificats

Exemple

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

Contrôles TCP

Testez la connectivité du port TCP et la validation des réponses.

Propriétés requises

Propriété Type Description
hostname chaîne Nom d'hôte cible (format du nom d'hôte)
port entier Port cible (1-65535)

Propriétés facultatives

Propriété Type Par défaut Description
timeout integer 30 000 Délai d'attente global (5000-300000 ms)
connectionTimeout entier 3000 Délai d'expiration de la connexion (5000-300000 ms)
readTimeout entier 2000 Délai de lecture des données (5000-300000 ms)
sendData chaîne - Données à envoyer après la connexion
expectedResponse chaîne - Données relatives aux réponses attendues
encoding chaîne « UTF-8 » Codage des données :UTF-8,ASCII, HEX
assertions array - Validation de la connexion et des réponses

Exemple

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

Méthodes d’authentification

Aucune authentification

{ "type": "NONE" }

Authentification basique

Propriété Type Obligatoire Description
type chaîne Oui Doit être "BASIC"
username chaîne Oui Nom d'utilisateur pour l'authentification
password chaîne Oui Mot de passe pour l'authentification

Exemple

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

Authentification par clé d'API

Propriété Type Obligatoire Par défaut Description
type chaîne Oui - Doit être "API_KEY"
apiKey chaîne Oui - Valeur de la clé d'API
headerName chaîne Non « Clé X-API » Nom de l'en-tête de la clé API

Exemple

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

OAuth informations d'identification du client

Propriété Type Obligatoire Par défaut Description
type chaîne Oui - Doit être "OAUTH_CLIENT_CREDENTIALS"
tokenUrl chaîne Oui - OAuth URL du terminal du jeton
clientId chaîne Oui - OAuth identifiant du client
clientSecret chaîne Oui - OAuth secret du client
scope chaîne Non - OAuth portée
audience chaîne Non - OAuth public
resource chaîne Non - OAuth ressource
tokenApiAuth array Non - Méthodes d'authentification de l'API Token :BASIC_AUTH_HEADER, REQUEST_BODY
tokenCacheTtl entier Non 3600 Cache de jetons TTL (minimum 60 secondes)

Exemple

{ "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 }

AWSSignature (version 4)

Propriété Type Obligatoire Description
type chaîne Oui Doit être "SIGV4"
service chaîne Oui Nom du AWS service (par exemple, « execute-api »)
region chaîne Oui AWSrégion
roleArn chaîne Oui ARN du rôle IAM pour la signature

Exemple

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

Assertions et validation

assertions HTTP

Assertions de code d'état

Propriété Type Obligatoire Description
type chaîne Oui Doit être "STATUS_CODE"
operator chaîne Oui EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN, IN_RANGE
value entier Conditionnel Code d'état HTTP (100-599)
rangeMin entier Conditionnel Valeur de plage minimale (pourIN_RANGE)
rangeMax entier Conditionnel Valeur de plage maximale (pourIN_RANGE)
{ "type": "STATUS_CODE", "operator": "EQUALS", "value": 200 }

Assertions relatives au temps de réponse

Propriété Type Obligatoire Par défaut Description
type chaîne Oui - Doit être "RESPONSE_TIME"
operator chaîne Oui - LESS_THAN, GREATER_THAN, EQUALS
value number Oui - Valeur temporelle (minimum 0)
unit chaîne Non « MILLISECONDES » Doit être "MILLISECONDS"
{ "type": "RESPONSE_TIME", "operator": "LESS_THAN", "value": 500, "unit": "MILLISECONDS" }

Affirmations de la tête

Propriété Type Obligatoire Description
type chaîne Oui Doit être "HEADER"
headerName chaîne Oui Nom de l'en-tête à valider
operator chaîne Oui EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS, REGEX_MATCH, EXIST
value chaîne/booléen Conditionnel Valeur attendue (booléen pour EXIST opérateur)
{ "type": "HEADER", "headerName": "Content-Type", "operator": "CONTAINS", "value": "application/json" }

Assertions corporelles

Propriété Type Obligatoire Par défaut Description
type chaîne Oui - Doit être "BODY"
target chaîne Non « JSON » JSON ou TEXT
path chaîne Conditionnel - JSONPath (obligatoire pour la cible JSON)
operator chaîne Oui - CONTAINS, NOT_CONTAINS, EQUALS, NOT_EQUALS, EXISTS
value chaîne/booléen Oui - Valeur attendue (booléen pour EXISTS opérateur)
{ "type": "BODY", "target": "JSON", "path": "$.users[0].name", "operator": "EQUALS", "value": "John Doe" }

Assertions DNS

Assertions de valeur d'enregistrement

Propriété Type Obligatoire Range Description
type chaîne Oui - Doit être "RECORD_VALUE"
operator chaîne Oui - EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS, REGEX_MATCH
value chaîne Oui - Valeur d'enregistrement attendue

Nombre record d'assertions

Propriété Type Obligatoire Range Description
type chaîne Oui - Doit être "RECORD_COUNT"
operator chaîne Oui - EQUALS, GREATER_THAN, LESS_THAN
value entier Oui ≥ 0 Nombre attendu (minimum 0)

Assertions faisant autorité

Propriété Type Obligatoire Range Description
type chaîne Oui - Doit être "AUTHORITATIVE"
value boolean Oui - Statut d'autorité attendu

Assertions TTL

Propriété Type Obligatoire Range Description
type chaîne Oui - Doit être "TTL"
operator chaîne Oui - EQUALS, GREATER_THAN, LESS_THAN
value entier Oui ≥ 0 TTL attendu (minimum 0)

Assertions SSL

Assertions relatives à l'expiration des certificats

Propriété Type Obligatoire Par défaut Description
type chaîne Oui - Doit être "CERTIFICATE_EXPIRY"
operator chaîne Oui - GREATER_THAN, LESS_THAN
value entier Oui - Valeur temporelle (minimum 0)
unit chaîne Non « JOURS » DAYS, HOURS

Assertions relatives au sujet du certificat

Propriété Type Obligatoire Par défaut Description
type chaîne Oui - Doit être "CERTIFICATE_SUBJECT"
field chaîne Oui - Domaine d'objet : CNO,OU,C,ST, L
operator chaîne Oui - CONTAINS, EQUALS, REGEX_MATCH
value chaîne Oui - Valeur de champ attendue

Assertions de l'émetteur du certificat

Propriété Type Obligatoire Par défaut Description
type chaîne Oui - Doit être "CERTIFICATE_ISSUER"
field chaîne Oui - Champ émetteur :CN, O
operator chaîne Oui - CONTAINS, EQUALS
value chaîne Oui - Valeur de champ attendue

Assertions TCP

Assertions de réussite de la connexion

Propriété Type Obligatoire Par défaut Description
type chaîne Oui - Doit être "CONNECTION_SUCCESSFUL"
value boolean Oui - État de connexion attendu

Assertions relatives aux données de réponse

Propriété Type Obligatoire Par défaut Description
type chaîne Oui - Doit être "RESPONSE_DATA"
operator chaîne Oui - CONTAINS, EQUALS, NOT_CONTAINS, REGEX_MATCH, STARTS_WITH, ENDS_WITH
value chaîne Oui - Données relatives aux réponses attendues
encoding chaîne Non « UTF-8 » UTF-8, ASCII, HEX

Extraction de données

Les extracteurs vous permettent de saisir des données à partir des réponses pour les utiliser dans les étapes suivantes ou à des fins de reporting.

Propriétés d'extraction

Propriété Type Obligatoire Par défaut Description
name chaîne Oui - Nom de variable pour les données extraites
type chaîne Oui - Type d'extraction : BODY
path chaîne Non - JSONPath pour l'extraction du corps
regex chaîne Non - Modèle d'expression régulière
regexGroup entier Non 0 Groupe de capture Regex (minimum 0)

Validation du nom d'extraction

  • Modèle : ^[a-zA-Z][a-zA-Z0-9_]*$

  • Doit commencer par une lettre

  • Peut contenir des lettres, des chiffres et des traits de soulignement

Limitation — La substitution ne s'applique pas aux champs du schéma qui ont des valeurs ENUM spécifiques

Types d'extraction

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