Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyebarkan kenari CloudWatch Synthetics dengan menggunakan Terraform
Dhrubajyoti Mukherjie dan Jean-Francois Landerau, Amazon Web Services
Ringkasan
Penting untuk memvalidasi kesehatan sistem dari perspektif pelanggan dan mengonfirmasi bahwa pelanggan dapat terhubung. Ini lebih sulit ketika pelanggan tidak terus-menerus memanggil titik akhir. Amazon CloudWatch Synthetics mendukung pembuatan kenari, yang dapat menguji titik akhir publik dan pribadi. Dengan menggunakan kenari, Anda dapat mengetahui status suatu sistem meskipun tidak digunakan. Burung kenari ini adalah skrip Dalang Node.js atau skrip Python Selenium.
Pola ini menjelaskan cara menggunakan HashiCorp Terraform untuk menyebarkan kenari yang menguji titik akhir pribadi. Ini menyematkan skrip Dalang yang menguji apakah URL kembali. 200-OK Skrip Terraform kemudian dapat diintegrasikan dengan skrip yang menyebarkan titik akhir pribadi. Anda juga dapat memodifikasi solusi untuk memantau titik akhir publik.
Prasyarat dan batasan
Prasyarat
Akun Amazon Web Services (AWS) aktif dengan virtual private cloud (VPC) dan subnet pribadi
URL titik akhir yang dapat dicapai dari subnet pribadi
Terraform diinstal di lingkungan penerapan
Keterbatasan
Solusi saat ini berfungsi untuk versi runtime CloudWatch Synthetics berikut:
syn-nodejs-puppeteer-3,4
syn-nodejs-puppeteer-3,5
syn-nodejs-puppeteer-3,6
syn-nodejs-puppeteer-3,7
Saat versi runtime baru dirilis, Anda mungkin perlu memperbarui solusi saat ini. Anda juga perlu memodifikasi solusi untuk mengikuti pembaruan keamanan.
Versi produk
Terraform 1.3.0
Arsitektur
Amazon CloudWatch Synthetics didasarkan pada, CloudWatch Lambda, dan Amazon Simple Storage Service (Amazon S3). Amazon CloudWatch menawarkan wizard untuk membuat kenari dan dasbor yang menampilkan status kenari berjalan. Fungsi Lambda menjalankan skrip. Amazon S3 menyimpan log dan tangkapan layar dari kenari berjalan.
Pola ini mensimulasikan titik akhir pribadi melalui instans Amazon Elastic Compute Cloud (Amazon EC2) yang diterapkan di subnet yang ditargetkan. Fungsi Lambda memerlukan antarmuka jaringan elastis di VPC tempat titik akhir pribadi digunakan.

Diagram menunjukkan yang berikut:
Canary Synthetics memulai fungsi Lambda kenari.
Fungsi Canary Lambda terhubung ke interface elastic network.
Fungsi Lambda kenari memonitor status titik akhir.
Canary Synthetics mendorong data run ke bucket dan metrik S3. CloudWatch
CloudWatch Alarm dimulai berdasarkan metrik.
CloudWatch Alarm memulai topik Amazon Simple Notification Service (Amazon SNS).
Alat
Layanan AWS
Amazon CloudWatch membantu Anda memantau metrik sumber daya AWS Anda dan aplikasi yang Anda jalankan di AWS secara real time.
AWS Lambda adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
Amazon Simple Notification Service (Amazon SNS) membantu Anda mengoordinasikan dan mengelola pertukaran pesan antara penayang dan klien, termasuk server web dan alamat email.
Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
Amazon Virtual Private Cloud (Amazon VPC) membantu Anda meluncurkan sumber daya AWS ke jaringan virtual yang telah Anda tentukan. Jaringan virtual ini menyerupai jaringan tradisional yang akan Anda operasikan di pusat data Anda sendiri, dengan manfaat menggunakan infrastruktur AWS yang dapat diskalakan. Pola ini menggunakan titik akhir VPC dan antarmuka jaringan elastis.
Layanan lainnya
HashiCorp Terraform
adalah alat infrastruktur sumber terbuka sebagai kode (IAc) yang membantu Anda menggunakan kode untuk menyediakan dan mengelola infrastruktur dan sumber daya cloud. Pola ini menggunakan Terraform untuk menyebarkan infrastruktur. Puppeteer
adalah perpustakaan Node.js. Runtime CloudWatch Synthetics menggunakan framework Puppeteer.
Kode
Solusinya tersedia di watch-synthetics-canary-terraform repositori GitHub cloud
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kumpulkan persyaratan untuk memantau URL pribadi. | Kumpulkan definisi URL lengkap: domain, parameter, dan header. Untuk berkomunikasi secara pribadi ke Amazon S3 dan CloudWatch Amazon, gunakan titik akhir VPC. Perhatikan bagaimana VPC dan subnet dapat diakses ke titik akhir. Pertimbangkan frekuensi lari kenari. | Arsitek cloud, Administrator jaringan |
Ubah solusi yang ada untuk memantau URL pribadi. | Ubah
| Arsitek awan |
Menyebarkan dan mengoperasikan solusi. | Untuk menerapkan solusi, lakukan hal berikut:
| Arsitek awan, DevOps insinyur |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Penghapusan sumber daya yang disediakan macet. | Hapus fungsi Lambda kenari secara manual, elastis network interface yang sesuai, dan grup keamanan, dalam urutan itu. |
Sumber daya terkait
Informasi tambahan
Artefak repositori
Artefak repositori berada dalam struktur berikut.
. ├── README.md ├── main.tf ├── modules │ ├── canary │ └── canary-infra ├── terraform.tfvars ├── tf.plan └── variable.tf
main.tfFile berisi modul inti, dan menyebarkan dua submodul:
canary-inframenyebarkan infrastruktur yang dibutuhkan untuk burung kenari.canarymenyebarkan burung kenari.
Parameter input untuk solusi terletak di terraform.tfvars file. Anda dapat menggunakan contoh kode berikut untuk membuat satu kenari.
module "canary" { source = "./modules/canary" name = var.name runtime_version = var.runtime_version take_screenshot = var.take_screenshot api_hostname = var.api_hostname api_path = var.api_path reports-bucket = module.canary_infra.reports-bucket role = module.canary_infra.role security_group_id = module.canary_infra.security_group_id subnet_ids = var.subnet_ids frequency = var.frequency alert_sns_topic = var.alert_sns_topic }
File.var yang sesuai mengikuti.
name = "my-canary" runtime_version = "syn-nodejs-puppeteer-3.7" take_screenshot = false api_hostname = "mydomain.internal" api_path = "/path?param=value" vpc_id = "vpc_id" subnet_ids = ["subnet_id1"] frequency = 5 alert_sns_topic = "arn:aws:sns:eu-central-1:111111111111:yyyyy"
Membersihkan solusinya
Jika Anda menguji ini di lingkungan pengembangan, Anda dapat membersihkan solusi untuk menghindari biaya yang masih harus dibayar.
Di AWS Management Console, navigasikan ke konsol Amazon S3. Kosongkan bucket Amazon S3 yang dibuat oleh solusi. Pastikan untuk mengambil cadangan data, jika diperlukan.
Di lingkungan pengembangan Anda, dari
cloudwatch-synthetics-canary-terraformdirektori, jalankandestroyperintah.terraform destroy