Schreiben einer JSON-Konfiguration für den Blueprint Node.js Multi 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 Node.js Multi Checks

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

Struktur der Stammkonfiguration

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

Eigenschaften des Schemas
Eigenschaft Typ Erforderlich Description
globalSettings Object Nein Standardkonfigurationen, die auf alle Schritte angewendet wurden
variables Object Nein Schrittübergreifend wiederverwendbare Werte (max. 10)
steps Object Ja Erfassung 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

  • AußerglobalSettings, 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 überschrieben werden.

Eigenschaften

Eigenschaften für globale Einstellungen
Eigenschaft Typ Standard Bereich Description
stepTimeout Ganzzahl 30000 5000-300000 Standard-Timeout für alle Schritte (Millisekunden)

Beispiel

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

Variablen und Datenmanagement

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

Eigenschaften von Variablen

Eigenschaft Typ Description
Namen von Variablen Zeichenfolge Muss mit dem Muster übereinstimmen ^[a-zA-Z][a-zA-Z0-9_]*$
Variablenwerte Zeichenfolge Beliebiger Zeichenkettenwert

Einschränkungen

  • Maximal 10 Variablen pro Konfiguration

  • Variablennamen müssen mit einem Buchstaben beginnen

  • Variablennamen dürfen 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

Die einzelnen Schritte definieren die einzelnen Überwachungsvorgänge. Jeder Schritt ist von 1 bis 10 nummeriert und beinhaltet eine bestimmte Art von Prüfung.

Allgemeine Eigenschaften von Schritten

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

Überprüfung des Schrittnamens

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

  • Maximale Länge: 64 Zeichen

  • Muss mit einem Buchstaben beginnen

Nummerierung der Schritte

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

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

  • Mindestens 1 Schritt erforderlich

  • Maximal 10 Schritte sind zulässig

Beispiel

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

Überprüfen Sie die Typen

HTTP-Prüfungen

Überwachen Sie Webendpunkte und profitieren Sie von APIs einer umfassenden Überprüfung von Anfragen und Antworten.

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 Bereich 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 - - Hauptteil der Anfrage für POST/PUT Operationen
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 Informationen auf.

Erforderliche Eigenschaften

Eigenschaft Typ Description
domain Zeichenfolge Abzufragender Domainname (Hostnamenformat)

Optionale Eigenschaften

Eigenschaft Typ Standard Description
recordType Zeichenfolge „EIN“ Typ des DNS-Eintrags: ACNAME,MX,TXT, NS
nameserver Zeichenfolge - Spezifischer DNS-Server, der abgefragt werden soll
timeout Ganzzahl 30000 Timeout 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 Überprüfung 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-Anschluss (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 Verbindungs-Timeout (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 - Überprüfung der Verbindung und der Antwort

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

Standardauthentifizierung

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üsselauthentifizierung

Eigenschaft Typ Erforderlich Standard Description
type Zeichenfolge Ja - Muss "API_KEY" sein.
apiKey Zeichenfolge Ja - Wert des API-Schlüssels
headerName Zeichenfolge Nein „X-API-Schlüssel“ Header-Name für den API-Schlüssel

Beispiel

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

OAuth Kundenanmeldedaten

Eigenschaft Typ Erforderlich Standard Description
type Zeichenfolge Ja - Muss "OAUTH_CLIENT_CREDENTIALS" sein.
tokenUrl Zeichenfolge Ja - OAuth Token-Endpunkt-URL
clientId Zeichenfolge Ja - OAuth Client-ID
clientSecret Zeichenfolge Ja - OAuth Geheimes Client-Geheimnis
scope Zeichenfolge Nein - OAuth Geltungsbereich
audience Zeichenfolge Nein - OAuth Publikum
resource Zeichenfolge Nein - OAuth Ressource
tokenApiAuth Array Nein - Authentifizierungsmethoden der Token-API: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-Rolle ARN zum Signieren

Beispiel

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

Behauptungen 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 }

Behauptungen zur Antwortzeit

Eigenschaft Typ Erforderlich Standard Description
type Zeichenfolge Ja - Muss "RESPONSE_TIME" sein.
operator Zeichenfolge Ja - LESS_THAN, GREATER_THAN, EQUALS
value Zahl 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 Zeichenfolge/boolescher Wert Bedingt Erwarteter Wert (boolescher Wert für Operator) EXIST
{ "type": "HEADER", "headerName": "Content-Type", "operator": "CONTAINS", "value": "application/json" }

Behauptungen im Hauptteil

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 Zeichenfolge/boolescher Wert Ja - Erwarteter Wert (boolescher Wert für Operator) EXISTS
{ "type": "BODY", "target": "JSON", "path": "$.users[0].name", "operator": "EQUALS", "value": "John Doe" }

DNS-Assertionen

Behauptungen über Rekordwerte

Eigenschaft Typ Erforderlich Bereich 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 von Assertionen

Eigenschaft Typ Erforderlich Bereich 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 Bereich Description
type Zeichenfolge Ja - Muss "AUTHORITATIVE" sein.
value boolesch Ja - Erwarteter maßgeblicher Status

TTL-Assertionen

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

SSL-Assertionen

Behauptungen 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 des Betreffenden des Zertifikats

Eigenschaft Typ Erforderlich Standard Description
type Zeichenfolge Ja - Muss "CERTIFICATE_SUBJECT" sein.
field Zeichenfolge Ja - Fachfeld: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 des Ausstellers:, CN O
operator Zeichenfolge Ja - CONTAINS, EQUALS
value Zeichenfolge Ja - Erwarteter Feldwert

TCP-Assertionen

Behauptungen über eine erfolgreiche Verbindung

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

Behauptungen zu 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

Mit Extractors können Sie Daten aus Antworten erfassen, um sie in nachfolgenden Schritten oder zu Berichtszwecken 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 zur Körperextraktion
regex Zeichenfolge Nein - Muster für reguläre Ausdrücke
regexGroup Ganzzahl Nein 0 Regex-Erfassungsgruppe (mindestens 0)

Überprüfung des Namens der Extraktion

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

  • Muss mit einem Buchstaben beginnen

  • Kann Buchstaben, Zahlen und Unterstriche enthalten

Einschränkung — Die Substitution 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}" } ] }