View a markdown version of this page

Schreiben einer JSON-Konfiguration für den Blueprint mit Node.js mehreren Checks - Amazon CloudWatch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Schreiben einer JSON-Konfiguration für den Blueprint mit Node.js mehreren Checks

Mit dem Node.js Multichecks-Blueprint können Sie Canaries erstellen, die innerhalb eines einzigen Canary-Durchlaufs mehrere Validierungsprüfungen durchführen. Dieser Blueprint ist nützlich, wenn Sie mehrere Endpunkte testen, verschiedene Aspekte Ihrer Anwendung validieren oder eine Reihe verwandter Prüfungen nacheinander durchführen möchten.

Struktur der Stammkonfiguration

Die Root-Konfiguration definiert die Gesamtstruktur Ihres erweiterten API-Blueprint-Canary.

Eigenschaft Typ Erforderlich Description
globalSettings Objekt Nein Standardkonfigurationen, die auf alle Schritte angewendet werden
variables Objekt Nein Wiederverwendbare Werte für alle Schritte (max. 10)
steps Objekt Ja Sammlung von Überwachungsschritten (1—10 Schritte)

Beispiel

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

Regeln für die Validierung

  • Muss mindestens einen Schritt enthalten

  • Maximal 10 Schritte sind zulässig

  • NebenglobalSettings, und sind keine weiteren Eigenschaften zulässig variables steps

Globale Einstellungen

Globale Einstellungen bieten Standardkonfigurationen, die für alle Schritte gelten, sofern sie nicht auf Schrittebene außer Kraft gesetzt werden.

Eigenschaften

Eigenschaft Typ Standard Range Description
stepTimeout Ganzzahl 30000 5000-300000 Standard-Timeout für alle Schritte (Millisekunden)

Beispiel

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

Variablen und Datenmanagement

Mithilfe von Variablen können Sie wiederverwendbare Werte definieren, auf die in Ihrer gesamten Konfiguration mithilfe der ${variableName} Syntax verwiesen werden kann.

Eigenschaften von Variablen

Eigenschaft Typ Description
Variablennamen Zeichenfolge Muss dem Muster entsprechen ^[a-zA-Z][a-zA-Z0-9_]*$
Variable Werte Zeichenfolge Beliebiger Zeichenkettenwert

Einschränkungen

  • Maximal 10 Variablen pro Konfiguration

  • Variablennamen müssen mit einem Buchstaben beginnen

  • Variablennamen können nur Buchstaben, Zahlen und Unterstriche enthalten

  • Die maximale Länge ist im Schema nicht angegeben

Beispiel

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

Verwendung der Konfiguration

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

Definitionen der Schritte

Schritte definieren einzelne Überwachungsvorgänge. Jeder Schritt ist von 1 bis 10 nummeriert und enthält eine bestimmte Art der Prüfung.

Allgemeine Schritteigenschaften

Eigenschaft Typ Erforderlich Beschreibung
stepName Zeichenfolge Ja Eindeutiger Bezeichner für den Schritt
checkerType Zeichenfolge Ja Art der Prüfung: HTTPDNS,SSL, TCP
extractors Array Nein Konfiguration der Datenextraktion

Validierung des Schrittnamens

  • Muster - ^ [a-zA-Z] [a-z A-Z0-9 _-] *$

  • Maximale Länge: 64 Zeichen

  • Muss mit einem Buchstaben beginnen

Schritt Nummerierung

  • Die Schritte werden als Zeichenkettenschlüssel nummeriert: „1", „2",..., „10"

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

  • Mindestens 1 Schritt erforderlich

  • Maximal 10 Schritte erlaubt

Beispiel

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

Typen überprüfen

HTTP-Prüfungen

Überwachen Sie Web-Endpunkte und APIs mit einer umfassenden Anfrage- und Antwortvalidierung.

Erforderliche Eigenschaften

Eigenschaft Typ Description
url Zeichenfolge Ziel-URL (muss ein gültiges URI-Format haben)
httpMethod Zeichenfolge HTTP-Methode: GETPOST,PUT, PATCH,DELETE,HEAD, OPTIONS

Optionale Eigenschaften

Eigenschaft Typ Standard Range Description
timeout Ganzzahl 30000 5000-300000 Zeitlimit für Anfragen (Millisekunden)
waitTime Ganzzahl 0 0-60 Verzögerung vor der Anfrage (Sekunden)
headers object - - Benutzerdefinierte HTTP-Header
body Zeichenfolge - - Text für POST/PUT Operationen anfragen
authentication object - - Authentifizierungs-Konfiguration
assertions Array - - Regeln für die Validierung von Antworten

Beispiel

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

DNS-Prüfungen

Überprüfen Sie die DNS-Auflösung und zeichnen Sie die Informationen auf.

Erforderliche Eigenschaften

Eigenschaft Typ Description
domain Zeichenfolge Domainname, der abgefragt werden soll (Hostnamenformat)

Optionale Eigenschaften

Eigenschaft Typ Standard Description
recordType Zeichenfolge „A“ Typ des DNS-Eintrags: ACNAME,MX, TXT, NS
nameserver Zeichenfolge - Spezifischer DNS-Server, der abgefragt werden soll
timeout Ganzzahl 30000 Zeitlimit für Abfragen (5000-300000 ms)
port Ganzzahl 53 DNS-Serverport (1-65535)
protocol Zeichenfolge „UDP“ Protokoll: UDP oder TCP
assertions Array - Regeln für die Validierung von DNS-Antworten

Beispiel

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

SSL-Prüfungen

Überwachen Sie den Zustand und die Konfiguration des SSL-Zertifikats.

Erforderliche Eigenschaften

Eigenschaft Typ Description
hostname Zeichenfolge Ziel-Hostname (Hostnamenformat)

Optionale Eigenschaften

Eigenschaft Typ Standard Beschreibung
port Ganzzahl 443 SSL-Port (1-65535)
timeout Ganzzahl 30000 Verbindungs-Timeout (5000-300000 ms)
sni boolesch TRUE Angabe des Servernamens
verifyHostname boolesch TRUE Überprüfung des Hostnamens
allowSelfSigned boolesch FALSE Akzeptieren Sie selbstsignierte Zertifikate
assertions Array - Regeln für die Validierung von Zertifikaten

Beispiel

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

TCP-Prüfungen

Testen Sie die TCP-Port-Konnektivität und die Antwortvalidierung.

Erforderliche Eigenschaften

Eigenschaft Typ Description
hostname Zeichenfolge Ziel-Hostname (Hostnamenformat)
port Ganzzahl Zielport (1-65535)

Optionale Eigenschaften

Eigenschaft Typ Standard Beschreibung
timeout Ganzzahl 30000 Gesamtzeitlimit (5000-300000 ms)
connectionTimeout Ganzzahl 3000 Zeitlimit für die Verbindung (5000-300000 ms)
readTimeout Ganzzahl 2000 Timeout beim Lesen von Daten (5000-300000 ms)
sendData Zeichenfolge - Daten, die nach der Verbindung gesendet werden sollen
expectedResponse Zeichenfolge - Erwartete Antwortdaten
encoding Zeichenfolge "UTF-8" Datenkodierung:UTF-8,ASCII, HEX
assertions Array - Verbindungs- und Antwortvalidierung

Beispiel

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

Authentifizierungsmethoden

Keine Authentifizierung

{ "type": "NONE" }

Grundlegende Authentifizierung

Eigenschaft Typ Erforderlich Beschreibung
type Zeichenfolge Ja Muss "BASIC" sein.
username Zeichenfolge Ja Nutzername für die Authentifizierung
password Zeichenfolge Ja Passwort für die Authentifizierung

Beispiel

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

API-Schlüssel-Authentifizierung

Eigenschaft Typ Erforderlich Standard Description
type Zeichenfolge Ja - Muss "API_KEY" sein.
apiKey Zeichenfolge Ja - API-Schlüsselwert
headerName Zeichenfolge Nein "X-API-Key" Header-Name für den API-Schlüssel

Beispiel

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

OAuth-Client-Anmeldeinformationen

Eigenschaft Typ Erforderlich Standard Description
type Zeichenfolge Ja - Muss "OAUTH_CLIENT_CREDENTIALS" sein.
tokenUrl Zeichenfolge Ja - URL des OAuth-Token-Endpunkts
clientId Zeichenfolge Ja - OAuth-Client-ID
clientSecret Zeichenfolge Ja - Geheimer OAuth-Client
scope Zeichenfolge Nein - OAuth-Bereich
audience Zeichenfolge Nein - OAuth-Publikum
resource Zeichenfolge Nein - OAuth-Ressource
tokenApiAuth Array Nein - Token-API-Authentifizierungsmethoden:, BASIC_AUTH_HEADER REQUEST_BODY
tokenCacheTtl Ganzzahl Nein 3600 Token-Cache TTL (mindestens 60 Sekunden)

Beispiel

{ "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 Signatur (Version 4)

Eigenschaft Typ Erforderlich Beschreibung
type Zeichenfolge Ja Muss "SIGV4" sein.
service Zeichenfolge Ja Name des AWS Dienstes (z. B. „execute-api“)
region Zeichenfolge Ja AWS Region
roleArn Zeichenfolge Ja IAM-Rollen-ARN zum Signieren

Beispiel

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

Assertionen und Validierung

HTTP-Assertionen

Zusicherungen im Statuscode

Eigenschaft Typ Erforderlich Beschreibung
type Zeichenfolge Ja Muss "STATUS_CODE" sein.
operator Zeichenfolge Ja EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN, IN_RANGE
value Ganzzahl Bedingt HTTP-Statuscode (100-599)
rangeMin Ganzzahl Bedingt Minimaler Bereichswert (für) IN_RANGE
rangeMax Ganzzahl Bedingt Maximaler Bereichswert (fürIN_RANGE)
{ "type": "STATUS_CODE", "operator": "EQUALS", "value": 200 }

Assertionen zur Antwortzeit

Eigenschaft Typ Erforderlich Standard Description
type Zeichenfolge Ja - Muss "RESPONSE_TIME" sein.
operator Zeichenfolge Ja - LESS_THAN, GREATER_THAN, EQUALS
value number Ja - Zeitwert (mindestens 0)
unit Zeichenfolge Nein „MILLISEKUNDEN“ Muss "MILLISECONDS" sein.
{ "type": "RESPONSE_TIME", "operator": "LESS_THAN", "value": 500, "unit": "MILLISECONDS" }

Hauptaussagen

Eigenschaft Typ Erforderlich Beschreibung
type Zeichenfolge Ja Muss "HEADER" sein.
headerName Zeichenfolge Ja Name des zu validierenden Headers
operator Zeichenfolge Ja EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS, REGEX_MATCH, EXIST
value string/boolean Bedingt Erwarteter Wert (boolescher Wert für EXIST Operator)
{ "type": "HEADER", "headerName": "Content-Type", "operator": "CONTAINS", "value": "application/json" }

Hauptaussagen

Eigenschaft Typ Erforderlich Standard Description
type Zeichenfolge Ja - Muss "BODY" sein.
target Zeichenfolge Nein „JSON“ JSON oder TEXT
path Zeichenfolge Bedingt - JSONPath (erforderlich für das JSON-Ziel)
operator Zeichenfolge Ja - CONTAINS, NOT_CONTAINS, EQUALS, NOT_EQUALS, EXISTS
value string/boolean Ja - Erwarteter Wert (boolescher Wert für Operator) EXISTS
{ "type": "BODY", "target": "JSON", "path": "$.users[0].name", "operator": "EQUALS", "value": "John Doe" }

DNS-Assertionen

Wertezusicherungen aufzeichnen

Eigenschaft Typ Erforderlich Range Description
type Zeichenfolge Ja - Muss "RECORD_VALUE" sein.
operator Zeichenfolge Ja - EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS, REGEX_MATCH
value Zeichenfolge Ja - Erwarteter Rekordwert

Anzahl der Assertionen

Eigenschaft Typ Erforderlich Range Description
type Zeichenfolge Ja - Muss "RECORD_COUNT" sein.
operator Zeichenfolge Ja - EQUALS, GREATER_THAN, LESS_THAN
value Ganzzahl Ja ≥ 0 Erwartete Anzahl (mindestens 0)

Maßgebliche Behauptungen

Eigenschaft Typ Erforderlich Range Description
type Zeichenfolge Ja - Muss "AUTHORITATIVE" sein.
value boolesch Ja - Erwarteter autoritativer Status

TTL-Assertionen

Eigenschaft Typ Erforderlich Range Description
type Zeichenfolge Ja - Muss "TTL" sein.
operator Zeichenfolge Ja - EQUALS, GREATER_THAN, LESS_THAN
value Ganzzahl Ja ≥ 0 Erwarteter TTL (mindestens 0)

SSL-Zusicherungen

Assertionen zum Ablauf des Zertifikats

Eigenschaft Typ Erforderlich Standard Description
type Zeichenfolge Ja - Muss "CERTIFICATE_EXPIRY" sein.
operator Zeichenfolge Ja - GREATER_THAN, LESS_THAN
value Ganzzahl Ja - Zeitwert (mindestens 0)
unit Zeichenfolge Nein „TAGE“ DAYS, HOURS

Behauptungen über den Betreff des Zertifikats

Eigenschaft Typ Erforderlich Standard Description
type Zeichenfolge Ja - Muss "CERTIFICATE_SUBJECT" sein.
field Zeichenfolge Ja - Betrefffeld:CN,O,OU,C, ST L
operator Zeichenfolge Ja - CONTAINS, EQUALS, REGEX_MATCH
value Zeichenfolge Ja - Erwarteter Feldwert

Behauptungen des Zertifikatsausstellers

Eigenschaft Typ Erforderlich Standard Description
type Zeichenfolge Ja - Muss "CERTIFICATE_ISSUER" sein.
field Zeichenfolge Ja - Feld „Aussteller“:, CN O
operator Zeichenfolge Ja - CONTAINS, EQUALS
value Zeichenfolge Ja - Erwarteter Feldwert

TCP-Assertionen

Bestätigungen, dass die Verbindung erfolgreich war

Eigenschaft Typ Erforderlich Standard Description
type Zeichenfolge Ja - Muss "CONNECTION_SUCCESSFUL" sein.
value boolesch Ja - Erwarteter Verbindungsstatus

Bestätigungen der Antwortdaten

Eigenschaft Typ Erforderlich Standard Description
type Zeichenfolge Ja - Muss "RESPONSE_DATA" sein.
operator Zeichenfolge Ja - CONTAINS, EQUALS, NOT_CONTAINS, REGEX_MATCH, STARTS_WITH, ENDS_WITH
value Zeichenfolge Ja - Erwartete Antwortdaten
encoding Zeichenfolge Nein "UTF-8" UTF-8, ASCII, HEX

Datenextraktion

Extraktoren ermöglichen es Ihnen, Daten aus Antworten zu erfassen, um sie in nachfolgenden Schritten oder für Berichtszwecke zu verwenden.

Eigenschaften der Extraktion

Eigenschaft Typ Erforderlich Standard Description
name Zeichenfolge Ja - Variablenname für extrahierte Daten
type Zeichenfolge Ja - Art der Extraktion: BODY
path Zeichenfolge Nein - JSONPath für die Körperextraktion
regex Zeichenfolge Nein - Muster für reguläre Ausdrücke
regexGroup Ganzzahl Nein 0 Regex-Erfassungsgruppe (mindestens 0)

Validierung des Extraktionsnamens

  • Pattern: ^[a-zA-Z][a-zA-Z0-9_]*$

  • Muss mit einem Buchstaben beginnen

  • Kann Buchstaben, Zahlen und Unterstriche enthalten

Einschränkung — Die Ersetzung gilt nicht für Felder im Schema, die bestimmte ENUM-Werte haben

Extraktionstypen

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