View a markdown version of this page

Membuat kenari cetak biru multi cek - Amazon CloudWatch

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

Membuat kenari cetak biru multi cek

Cetak biru multi cek Amazon CloudWatch Synthetics membantu Anda membuat kenari Synthetics dengan menyediakan konfigurasi JSON sederhana. Anda dapat menghemat biaya dengan menggabungkan hingga 10 jenis HTTP/DNS/SSL/TCP pemeriksaan yang berbeda secara berurutan berbasis langkah. Setiap pemeriksaan mencakup pernyataan yang memberikan verifikasi dasar terhadap hasil pemeriksaan.

Kenari multi cek dirancang untuk kasus penggunaan sederhana yang hanya memerlukan pemeriksaan dasar tanpa browser tanpa kepala. Untuk kasus penggunaan yang lebih kompleks, tinjau jenis kenari lain yang disediakan Amazon CloudWatch Synthetics.

Prasyarat

  • Harus menggunakan syn-nodejs-3.0+ untuk membuat kenari multi cek

  • Saat menggunakan konfigurasi Authentication and Secrets Manager, Anda harus memastikan ken ExecutionRoleArn ari mengizinkan izin untuk mengakses rahasia ini

  • Saat menggunakan Otentikasi untuk Sigv4, Anda harus memastikan ken ExecutionRoleArn ari mengizinkan izin untuk mengakses peran terkait

Batasan

  • Ukuran Respon HTTP tidak boleh lebih besar dari 1 MB

  • Maksimal 10 variabel yang ditentukan.

  • Saat menggunakan JSON RFC, JSON Pemeriksaan mungkin memiliki bidang duplikat yang disediakan namun hanya bidang berurutan terakhir yang akan digunakan

  • Di dalamnya Konsol Manajemen AWS, kenari multi cek akan secara default menampilkan metrik langkah multi pemeriksaan untuk dengan mudah mengidentifikasi ketersediaan setiap cek. Saat cek dihapus, grafik ini mungkin masih menampilkan pemeriksaan dalam grafik ketersediaan sampai metrik berhenti aktif setidaknya selama 3 jam

Struktur pengemasan, skema JSON, dan pengaturan konfigurasi

Konfigurasi Pemeriksaan JSON yang akan digunakan untuk kenari harus diberi nama blueprint-config.json. Konfigurasi harus mengikuti skema dan mengikuti instruksi di bawah iniMenulis konfigurasi JSON untuk cetak biru Node.js multi Pemeriksaan.

Kompres blueprint-config.json ke file ZIP dan berikan di salah satu alur kerja pembuatan berikut. Ketika ada synthetics.json konfigurasi, maka itu juga dikompresi dalam file ZIP yang sama. Berikut ini adalah contoh file zip yang disebutmulti-checks.zip.

multi-checks.zip ├── blueprint-config.json └── synthetics.json

Membuat kenari multi cek di Konsol Manajemen AWS

  1. Buka konsol CloudWatch sintetis Amazon.

  2. Pilih Buat Canary.

  3. Di bawah Gunakan cetak biru, pilih multi cek.

    Di bawah Konfigurasi Pemer iksaan, Anda akan melihat dua tab, Cek dan konfigurasi Canary.

  4. Pilih versi runtime syn-nodejs-3.0 atau yang lebih baru.

  5. Ikuti prosedur di bawah Menulis konfigurasi JSON untuk cetak biru Node.js multi Pemeriksaan ini untuk menjelaskan pemeriksaan yang ingin Anda lakukan. Atau, konsol memberi Anda konfigurasi JSON default yang dapat Anda bangun.

  6. Pilih Buat Canary.

Membuat kenari multi check menggunakan AWS API sintetis

Gunakan CreateCanary API dan di dalam Code parameter, berikan al field/value BlueprintTypes="multi-checks" ih-alih Handler. Ketika Handler keduanya BlueprintTypes dan ditentukan, a ValidationException ditampilkan. Versi runtime yang disediakan harus syn-nodejs-3.0 atau lebih baru.

aws synthetics create-canary \ --name my-multi-check-canary \ --code ZipFile="ZIP_BLOB",BlueprintTypes="multi-checks" \ --runtime-version syn-nodejs-3.0 \ ... // Or if you wanted to use S3 to provide your code. aws synthetics create-canary \ --name my-multi-check-canary \ --code S3Bucket="my-code-bucket",S3Key="my-zip-code-key",BlueprintTypes="multi-checks" \ ...

Membuat kenari multi cek di CloudFormation

Dalam CloudFormation template Anda untuk kenari multi cek, di dalam Code parameter, berikan al field/value BlueprintTypes="multi-checks" ih-alih Handler. Ketika Handler keduanya BlueprintTypes dan ditentukan, a ValidationException ditampilkan. Versi runtime yang disediakan harussyn-nodejs-3.0 or later.

Contoh template:

SyntheticsCanary: Type: 'AWS::Synthetics::Canary' Properties: Name: MyCanary RuntimeVersion: syn-nodejs-3.0 Schedule: {Expression: 'rate(5 minutes)', DurationInSeconds: 3600} ... Code: S3Bucket: "my-code-bucket" S3Key: "my-zip-code-key" BlueprintTypes: ["multi-checks"] ...

Konfigurasi autentikasi

Saat kenari Anda membuat permintaan HTTP ke titik akhir yang diautentikasi, Anda dapat mengonfigurasi langkah-langkah burung kenari cetak biru Anda untuk menggunakan salah satu dari empat jenis otentikasi: Basic, API Key, OAuth Client Credentials, dan SigV4. Daripada menyiapkan header permintaan sendiri, Anda dapat menentukan jenis otentikasi dalam definisi cetak biru Anda. Sintetis mengikuti jenis otentikasi yang ditentukan untuk mengisi komponen permintaan HTTP Anda dengan informasi otentikasi yang disediakan.

Anda menentukan jenis otentikasi dalam langkah cetak biru Anda dengan bagian Otentikasi. Anda menentukan skema otentikasi yang ingin Anda gunakan, properti yang diperlukan untuk skema otentikasi yang Anda pilih, dan Synthetics menggunakan informasi yang disediakan untuk membuat header otentikasi untuk permintaan HTTP Anda.

Karena menyimpan rahasia (seperti kata sandi atau kunci API) dalam teks biasa adalah masalah keamanan, Synthetics mendukung integrasi dengan AWS Secrets Manager. Saat Anda ingin mengotentikasi permintaan HTTP di kenari cetak biru Synthetics, Anda dapat merujuk ke rahasia yang menyimpan informasi otentikasi Anda dan Synthetics menangani pengambilan rahasia dan menyimpannya di kenari Anda. Pendekatan ini memberikan rahasia untuk Synthetics sambil menyimpan rahasia Anda dengan aman, tanpa menentukannya dalam teks biasa dalam konfigurasi cetak biru Anda.

Untuk informasi selengkapnya AWS Secrets Manager, lihat Apa itu AWS Secrets Manager?

Autentikasi dasar

Synthetics mengimplementasikan skema otentikasi HTTP Dasar yang didefinisikan dalam RFC 7617. Prosesnya bekerja sebagai berikut:

  • Pasangan nama pengguna dan kata sandi disediakan dari konfigurasi cetak biru.

  • User-pass dibuat dengan menggabungkan nama pengguna, karakter titik dua (“:”), dan kata sandi.

  • User-pass di UTF-8 kodekan, kemudian diubah menjadi string yang dikodekan base64.

  • User-pass yang dikodekan base64 ini disediakan di header “Otorisasi” dengan format berikut: Otorisasi: Dasar {base64-encoded-user-pass}

Misalnya, jika agen pengguna ingin mengirim id pengguna “Aladdin” dan kata sandi “open susan”, ia menggunakan bidang header berikut: Otorisasi: Dasar == QWxhZGRpbjpvcGVuIHNlc2FtZQ

Contoh konfigurasi:

"Authentication": { "type": "BASIC", "username": MY_USERNAME, // Required "password": MY_PASSWORD // Required }

Otentikasi kunci API

Anda dapat memberikan kunci API untuk mengotentikasi permintaan HTTP Anda. Saat Anda menggunakan otentikasi kunci API, kunci API yang Anda berikan dimasukkan ke dalam header HTTP X-API-Key "”. Jika Anda memiliki sumber daya khusus yang mencari header kunci API di header selain yang ini, Anda dapat secara opsional menentukan nama header yang berbeda agar Synthetics memasukkan kunci API ke dalamnya.

Contoh konfigurasi:

"Authentication": { "type": "API_KEY", "apiKey": S0A1M2P3L4E5, // Required "header": X-Specific-Header // Optional, defaults to "X-API-Key" }

Otentikasi SIGv4

AWS SIGv4 (Signature Version 4) adalah protokol pen AWS andatanganan untuk menambahkan informasi otentikasi ke permintaan AWS API. Untuk membuat SigV4-authenticated permintaan, Anda perlu menentukan wilayah dan layanan yang Anda minta, serta ARN (Nama Sumber AWS Daya) yang mengidentifikasi peran IAM yang Anda ingin kenari mengambil saat membuat permintaan SIGv4 ini. Synthetics mengambil peran IAM yang disediakan di Rolearn, dan menggunakannya untuk mengotentikasi permintaan API Anda. AWS

Contoh konfigurasi:

"Authentication": { "type": "SIGV4", "region": us-west-2, // Required "service": s3, // Required "roleArn": arn:AWS:iam:12345678912:role/SampleRole // Required }

Pertimbangan SIGv4

Agar Synthetics dapat mengambil peran yang Anda berikan di bagian otentikasi SIGv4, kebijakan kepercayaan yang dilampirkan pada peran tersebut harus dikonfigurasi untuk memungkinkan burung kenari mengambil ROLearn yang disediakan. Prinsi AWS p yang perlu Anda percayai adalah peran yang diasumsikan kenari Anda AWS STS. Dibutuhkan format aws:sts::{account_running_the_canary}:assumed-role/<canary_name>/<assumed_role_name> arn:.

Misalnya, jika Anda memiliki kenari yang berjalan di akun 0123456789012, bernama test-canary, dan peran yang diasumsikan bernama canary-assume-role, maka kebijakan kepercayaan perlu menyertakan pernyataan ini agar burung kenari dapat mengasumsikan otentikasi ROLearn untuk SIGv4 dengan benar:

{ "Effect": "Allow", "Principal": { "AWS": "arn:AWS:sts::123456789012:assumed-role/test-canary/" }, "Action": "sts:AssumeRole" }

Kredenensi klien OAuth

Synthetics mengimplementasikan jenis hibah KredenSIAL Klien OAuth seperti yang didefinisikan dalam RFC 6479 Bagian 4.4. Jika Anda ingin membuat permintaan HTTP ke titik akhir yang diautentikasi dengan Token Pembawa yang dikeluarkan oleh titik akhir token OAuth, Synthetics dapat meminta dan mengelola token pembawa atas nama Anda. Saat Anda menggunakan skema OAuth, Synthetics melakukan langkah-langkah berikut:

  • Menggunakan skema otentikasi Dasar dengan clientID dan ClientSecret untuk mengotentikasi permintaan ke TokenUrl, titik akhir yang mengeluarkan token pembawa

  • Jika Anda memberikan parameter cakupan, audiens, dan sumber daya opsional, parameter tersebut disertakan dalam permintaan token

  • Menggunakan token akses yang dikembalikan oleh TokenURL untuk mengotentikasi permintaan HTTP Anda

  • Menyimpan token penyegaran yang dikembalikan dari TokenURL dengan aman untuk permintaan token di masa mendatang

Contoh konfigurasi:

"Authentication": { "type": "OAUTH_CLIENT_CREDENTIALS", "tokenUrl": ..., // Required "clientId": ..., // Required "clientSecret": ..., // Required "scope": ..., // Optional "audience": ..., // Optional "resource": ..., // Optional }

Pertimbangan OAuth

Synthetics menyegarkan token OAuth ketika respons 401 atau 407 dikembalikan.

AWS Secrets Manager integrasi

Untuk menghindari penyimpanan nilai rahasia (seperti kata sandi atau kunci API) dalam teks biasa, Synthetics menyediakan integrasi dengan AWS Secrets Manager. Anda dapat mereferensikan seluruh nilai rahasia dalam konfigurasi cetak biru Anda dengan format ${AWS_SECRET:<secret_name>}, atau untuk mereferensikan kunci ${AWS_SECRET:<secret_name>:<secret_key>} tertentu.

Misalnya, jika Anda memiliki rahasia bernama login/basic -auth-, menyimpan nama pengguna dan kata sandi dengan struktur JSON berikut:

{ "username": "Aladdin", "password": "open sesame" }

Anda dapat mereferensikan nama pengguna dan kata sandi dalam konfigurasi cetak biru Anda sebagai berikut, dan Synthetics menangani pengambilan nilai rahasia dan menggunakan kuncinya untuk mengotentikasi permintaan Anda:

"Authentication": { "type": "BASIC", "username": ${AWS_SECRET:login/basic-auth-credentials:username}, "password": ${AWS_SECRET:login/basic-auth-credentials:password} }

Untuk memungkinkan Synthetics mengambil rahasia yang ditentukan, peran ARN yang diasumsikan oleh burung kenari harus memiliki keduanya secretsmanager:GetSecretValue dan secretsmanager:DescribeSecret izin. Jika rahasia dienkripsi menggunakan kunci yang dikelola pelanggan alih-alih kunci terkel AWS ola AWS/secretsmanager, maka Anda juga memerlukan izin KMS:Decrypt untuk kunci tersebut.

Contoh izin:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": "arn:AWS:secretsmanager:us-east-1:123456789012:secret:secretName-AbCdEf" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:AWS:kms:us-east-1:123456789012:key/key-id" } ] }

Pemecahan masalah

Kegagalan pemecahan masalah umum

Kode yang mendasari cetak biru multi cek ditulis dalam TypeScript. Lihat halaman pemecahan masalah kenari untuk kegagalan umum: Memec ahkan masalah kenari yang gagal.

Kesalahan sintaks konfigurasi pemeriksaan JSON

Jika ada kesalahan sintaksis yang terkait dengan konfigurasi pemeriksaan JSON burung kenari, Konsol Manajemen AWS itu akan memberi Anda alasan kegagalan saat Anda mencoba membuat kenari. Jika Anda membuat kenari menggunakan API atau CloudFormation, Anda akan melihat kegagalan saat kenari dieksekusi untuk pertama kalinya. Disarankan untuk menggunakan alur kerja pembaruan kenari yang aman untuk kenari multi cek. Untuk informasi selengkapnya, lihat Mel akukan pembaruan kenari yang aman.

Kegagalan jaringan atau batas waktu

Untuk kegagalan intermiten atau konsisten terkait dengan batas waktu, kegagalan koneksi jaringan (misalnya, ENOTFOUND, ECONNRESET) pertimbangkan untuk mengaktifkan DEBUG log sehingga proses berikut akan memberikan rincian tambahan lebih lanjut tentang mengapa Pemeriksaan gagal. Untuk melakukannya, berikan Variabel Lingkungan CW_SYNTHETICS_LOG_LEVEL: “DEBUG”.

Jika masih ada kegagalan yang tidak dapat Anda debug, pertimbangkan untuk menghubungi AWS Dukungan atau memeriksa apakah ada jenis Canary lain yang disediakan dari CloudWatch Synthetics lebih cocok dengan kasus penggunaan Anda.