Menulis konfigurasi JSON untuk cetak biru Node.js multi Checks - Amazon CloudWatch

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menulis konfigurasi JSON untuk cetak biru Node.js multi Checks

Cetak biru multi cek Node.js memungkinkan Anda membuat kenari yang melakukan beberapa pemeriksaan validasi dalam satu canary run. Cetak biru ini berguna ketika Anda ingin menguji beberapa titik akhir, memvalidasi berbagai aspek aplikasi Anda, atau melakukan serangkaian pemeriksaan terkait secara berurutan.

Struktur konfigurasi root

Konfigurasi root mendefinisikan keseluruhan struktur canary cetak biru API tingkat lanjut Anda.

Properti skema
Properti Tipe Diperlukan Deskripsi
globalSettings Objek Tidak Konfigurasi default diterapkan ke semua langkah
variables Objek Tidak Nilai yang dapat digunakan kembali di seluruh langkah (maks 10)
steps Objek Ya Pengumpulan langkah pemantauan (1-10 langkah)

Contoh

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

Aturan validasi

  • Harus berisi setidaknya satu langkah

  • Maksimal 10 langkah diizinkan

  • Tidak ada properti tambahan yang diizinkan di luarglobalSettings,variables, dan steps

Pengaturan global

Pengaturan global menyediakan konfigurasi default yang berlaku untuk semua langkah kecuali diganti pada tingkat langkah.

Sifat-sifat

Properti pengaturan global
Properti Tipe Default Kisaran Deskripsi
stepTimeout Integer 30000 5000-300000 Batas waktu default untuk semua langkah (milidetik)

Contoh

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

Variabel dan manajemen data

Variabel memungkinkan Anda untuk menentukan nilai yang dapat digunakan kembali yang dapat direferensikan di seluruh konfigurasi Anda menggunakan ${variableName} sintaks.

Properti variabel

Properti Tipe Deskripsi
Nama variabel string Harus cocok pola ^[a-zA-Z][a-zA-Z0-9_]*$
Nilai variabel string Nilai string apa pun

Batasan

  • Maksimum 10 variabel per konfigurasi

  • Nama variabel harus dimulai dengan huruf

  • Nama variabel hanya dapat berisi huruf, angka, dan garis bawah

  • Panjang maksimum tidak ditentukan dalam skema

Contoh

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

Penggunaan konfigurasi

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

Definisi langkah

Langkah-langkah menentukan operasi pemantauan individu. Setiap langkah diberi nomor dari 1 hingga 10 dan berisi jenis cek tertentu.

Properti langkah umum

Properti Tipe Diperlukan Deskripsi
stepName string Ya Pengidentifikasi unik untuk langkah
checkerType string Ya Jenis cek:HTTP,DNS,SSL, TCP
extractors array Tidak Konfigurasi ekstraksi data

Validasi nama langkah

  • Pola - ^ [A-za-z] [A-za-Z0-9_-] *$

  • Panjang maksimum - 64 karakter

  • Harus dimulai dengan surat

Penomoran langkah

  • Langkah-langkah diberi nomor sebagai tombol string: “1", “2",..., “10"

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

  • Minimal 1 langkah yang diperlukan

  • Maksimal 10 langkah diizinkan

Contoh

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

Periksa jenis

Pemeriksaan HTTP

Pantau titik akhir web dan APIs dengan validasi permintaan dan respons yang komprehensif.

Properti yang dibutuhkan

Properti Tipe Deskripsi
url string URL target (harus format URI yang valid)
httpMethod string Metode HTTP: GETPOST,PUT,PATCH,DELETE,HEAD, OPTIONS

Properti opsional

Properti Tipe Default Kisaran Deskripsi
timeout Integer 30000 5000-300000 Minta batas waktu (milidetik)
waitTime integer 0 0-60 Tunda sebelum permintaan (detik)
headers object - - Header HTTP kustom
body string - - Permintaan badan untuk POST/PUT operasi
authentication object - - Konfigurasi autentikasi
assertions array - - Aturan validasi respons

Contoh

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

Pemeriksaan DNS

Validasi resolusi DNS dan merekam informasi.

Properti yang dibutuhkan

Properti Tipe Deskripsi
domain string Nama domain untuk kueri (format nama host)

Properti opsional

Properti Tipe Default Deskripsi
recordType string “A” Jenis catatan DNS:A,,CNAME,MX, TXT NS
nameserver string - Server DNS khusus untuk kueri
timeout integer 30000 Batas waktu kueri (5000-300000ms)
port integer 53 Port server DNS (1-65535)
protocol string “UDP” Protokol: UDP atau TCP
assertions array - Aturan validasi respons DNS

Contoh

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

Pemeriksaan SSL

Pantau kesehatan dan konfigurasi sertifikat SSL.

Properti yang dibutuhkan

Properti Tipe Deskripsi
hostname string Target nama host (format nama host)

Properti opsional

Properti Tipe Default Deskripsi
port Integer 443 Port SSL (1-65535)
timeout integer 30000 Batas waktu koneksi (5000-300000ms)
sni boolean BETUL Indikasi Nama Server
verifyHostname boolean BETUL Verifikasi nama host
allowSelfSigned boolean SALAH Terima sertifikat yang ditandatangani sendiri
assertions array - Aturan validasi sertifikat

Contoh

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

Pemeriksaan TCP

Uji konektivitas port TCP dan validasi respons.

Properti yang dibutuhkan

Properti Tipe Deskripsi
hostname string Target nama host (format nama host)
port integer Port target (1-65535)

Properti opsional

Properti Tipe Default Deskripsi
timeout Integer 30000 Batas waktu keseluruhan (5000-300000ms)
connectionTimeout integer 3000 Batas waktu koneksi (5000-300000ms)
readTimeout integer 2000 Batas waktu baca data (5000-300000ms)
sendData string - Data untuk dikirim setelah koneksi
expectedResponse string - Data respons yang diharapkan
encoding string “UTF-8" Pengkodean data:UTF-8,, ASCII HEX
assertions array - Koneksi dan validasi respons

Contoh

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

Metode otentikasi

Tidak ada otentikasi

{ "type": "NONE" }

Otentikasi dasar

Properti Tipe Diperlukan Deskripsi
type string Ya Harus "BASIC"
username string Ya Nama pengguna untuk otentikasi
password string Ya Kata sandi untuk otentikasi

Contoh

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

Otentikasi kunci API

Properti Tipe Diperlukan Default Deskripsi
type string Ya - Harus "API_KEY"
apiKey string Ya - Nilai kunci API
headerName string Tidak “Tombol X-api” Nama header untuk kunci API

Contoh

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

OAuth kredensi klien

Properti Tipe Diperlukan Default Deskripsi
type string Ya - Harus "OAUTH_CLIENT_CREDENTIALS"
tokenUrl string Ya - OAuth URL titik akhir token
clientId string Ya - OAuth ID klien
clientSecret string Ya - OAuth rahasia klien
scope string Tidak - OAuth ruang lingkup
audience string Tidak - OAuth penonton
resource string Tidak - OAuth sumber daya
tokenApiAuth array Tidak - Metode autentikasi Token API:BASIC_AUTH_HEADER, REQUEST_BODY
tokenCacheTtl integer Tidak 3600 Token cache TTL (minimal 60 detik)

Contoh

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

AWSTanda Tangan (Versi 4)

Properti Tipe Diperlukan Deskripsi
type string Ya Harus "SIGV4"
service string Ya Nama AWS layanan (misalnya, “execute-api”)
region string Ya AWSwilayah
roleArn string Ya IAM peran ARN untuk penandatanganan

Contoh

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

Pernyataan dan validasi

Pernyataan HTTP

Pernyataan kode status

Properti Tipe Diperlukan Deskripsi
type string Ya Harus "STATUS_CODE"
operator string Ya EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN, IN_RANGE
value bilangan bulat Bersyarat Kode status HTTP (100-599)
rangeMin integer Bersyarat Nilai rentang minimum (untukIN_RANGE)
rangeMax integer Bersyarat Nilai rentang maksimum (untukIN_RANGE)
{ "type": "STATUS_CODE", "operator": "EQUALS", "value": 200 }

Pernyataan waktu respons

Properti Tipe Diperlukan Default Deskripsi
type string Ya - Harus "RESPONSE_TIME"
operator string Ya - LESS_THAN, GREATER_THAN, EQUALS
value number Ya - Nilai waktu (minimum 0)
unit string Tidak “MILIDETIK” Harus "MILLISECONDS"
{ "type": "RESPONSE_TIME", "operator": "LESS_THAN", "value": 500, "unit": "MILLISECONDS" }

Pernyataan kepala

Properti Tipe Diperlukan Deskripsi
type string Ya Harus "HEADER"
headerName string Ya Nama header untuk memvalidasi
operator string Ya EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS, REGEX_MATCH, EXIST
value senar/boolean Bersyarat Nilai yang diharapkan (boolean untuk EXIST operator)
{ "type": "HEADER", "headerName": "Content-Type", "operator": "CONTAINS", "value": "application/json" }

Pernyataan tubuh

Properti Tipe Diperlukan Default Deskripsi
type string Ya - Harus "BODY"
target string Tidak “JSON” JSON atau TEXT
path string Bersyarat - JSONPath (diperlukan untuk target JSON)
operator string Ya - CONTAINS, NOT_CONTAINS, EQUALS, NOT_EQUALS, EXISTS
value senar/boolean Ya - Nilai yang diharapkan (boolean untuk EXISTS operator)
{ "type": "BODY", "target": "JSON", "path": "$.users[0].name", "operator": "EQUALS", "value": "John Doe" }

Pernyataan DNS

Catat pernyataan nilai

Properti Tipe Diperlukan Kisaran Deskripsi
type string Ya - Harus "RECORD_VALUE"
operator string Ya - EQUALS, NOT_EQUALS, CONTAINS, NOT_CONTAINS, REGEX_MATCH
value string Ya - Nilai rekor yang diharapkan

Rekam penegasan hitungan

Properti Tipe Diperlukan Kisaran Deskripsi
type string Ya - Harus "RECORD_COUNT"
operator string Ya - EQUALS, GREATER_THAN, LESS_THAN
value bilangan bulat Ya ≥ 0 Jumlah yang diharapkan (minimum 0)

Pernyataan otoritatif

Properti Tipe Diperlukan Kisaran Deskripsi
type string Ya - Harus "AUTHORITATIVE"
value boolean Ya - Status otoritatif yang diharapkan

Pernyataan TTL

Properti Tipe Diperlukan Kisaran Deskripsi
type string Ya - Harus "TTL"
operator string Ya - EQUALS, GREATER_THAN, LESS_THAN
value bilangan bulat Ya ≥ 0 TTL yang diharapkan (minimal 0)

Pernyataan SSL

Pernyataan kedaluwarsa sertifikat

Properti Tipe Diperlukan Default Deskripsi
type string Ya - Harus "CERTIFICATE_EXPIRY"
operator string Ya - GREATER_THAN, LESS_THAN
value bilangan bulat Ya - Nilai waktu (minimum 0)
unit string Tidak “HARI” DAYS, HOURS

Pernyataan subjek sertifikat

Properti Tipe Diperlukan Default Deskripsi
type string Ya - Harus "CERTIFICATE_SUBJECT"
field string Ya - Bidang subjek:CN,O,OU,C,ST, L
operator string Ya - CONTAINS, EQUALS, REGEX_MATCH
value string Ya - Nilai bidang yang diharapkan

Pernyataan penerbit sertifikat

Properti Tipe Diperlukan Default Deskripsi
type string Ya - Harus "CERTIFICATE_ISSUER"
field string Ya - Bidang penerbit:CN, O
operator string Ya - CONTAINS, EQUALS
value string Ya - Nilai bidang yang diharapkan

Pernyataan TCP

Pernyataan keberhasilan koneksi

Properti Tipe Diperlukan Default Deskripsi
type string Ya - Harus "CONNECTION_SUCCESSFUL"
value boolean Ya - Status koneksi yang diharapkan

Pernyataan data respons

Properti Tipe Diperlukan Default Deskripsi
type string Ya - Harus "RESPONSE_DATA"
operator string Ya - CONTAINS, EQUALS, NOT_CONTAINS, REGEX_MATCH, STARTS_WITH, ENDS_WITH
value string Ya - Data respons yang diharapkan
encoding string Tidak “UTF-8" UTF-8, ASCII, HEX

Ekstraksi data

Ekstraktor memungkinkan Anda untuk menangkap data dari tanggapan untuk digunakan dalam langkah berikutnya atau untuk tujuan pelaporan.

Sifat ekstraksi

Properti Tipe Diperlukan Default Deskripsi
name string Ya - Nama variabel untuk data yang diekstraksi
type string Ya - Jenis ekstraksi: BODY
path string Tidak - JSONPath untuk ekstraksi tubuh
regex string Tidak - Pola ekspresi reguler
regexGroup integer Tidak 0 Grup penangkapan Regex (minimal 0)

Validasi nama ekstraksi

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

  • Harus dimulai dengan surat

  • Dapat berisi huruf, angka, dan garis bawah

Batasan - Substitusi tidak berlaku untuk bidang dalam skema yang memiliki nilai ENUM tertentu

Jenis ekstraksi

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