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.
Rubriques
Structure de configuration racine
La configuration racine définit la structure globale de votre plan d'API avancé Canary.
| 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, etsteps
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é | 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}" } ] }