Menyebarkan kenari CloudWatch Synthetics dengan menggunakan Terraform - AWS Prescriptive Guidance

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.

Deskripsi mengikuti diagram.

Diagram menunjukkan yang berikut:

  1. Canary Synthetics memulai fungsi Lambda kenari.

  2. Fungsi Canary Lambda terhubung ke interface elastic network.

  3. Fungsi Lambda kenari memonitor status titik akhir.

  4. Canary Synthetics mendorong data run ke bucket dan metrik S3. CloudWatch

  5. CloudWatch Alarm dimulai berdasarkan metrik.

  6. 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. Untuk informasi selengkapnya, lihat bagian Informasi tambahan.

Epik

TugasDeskripsiKeterampilan 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 terraform.tfvars file:

  • name— Nama kenari Anda.

  • runtime_version— Versi runtime dari kenari. Kami merekomendasikan menggunakan syn-nodejs-puppeteer -3.7.

  • take_screenshot— Apakah tangkapan layar harus diambil.

  • api_hostname— Nama host dari titik akhir yang dipantau.

  • api_path— Jalur titik akhir yang dipantau.

  • vpc_id— ID VPC yang digunakan oleh fungsi Lambda kenari.

  • subnet_ids— Subnet IDs yang digunakan oleh fungsi Lambda kenari.

  • frequency— Frekuensi lari kenari dalam hitungan menit.

  • alert_sns_topic— Topik SNS tempat pemberitahuan CloudWatch alarm dikirim.

Arsitek awan

Menyebarkan dan mengoperasikan solusi.

Untuk menerapkan solusi, lakukan hal berikut:

  1. Dari cloudwatch-synthetics-canary-terraform direktori di lingkungan pengembangan Anda, inisialisasi Terraform.

    terraform init
  2. Rencanakan dan tinjau perubahannya.

    terraform plan
  3. Menyebarkan solusinya.

    terraform apply
Arsitek awan, DevOps insinyur

Pemecahan Masalah

IsuSolusi

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.

  1. Di AWS Management Console, navigasikan ke konsol Amazon S3. Kosongkan bucket Amazon S3 yang dibuat oleh solusi. Pastikan untuk mengambil cadangan data, jika diperlukan.

  2. Di lingkungan pengembangan Anda, dari cloudwatch-synthetics-canary-terraform direktori, jalankan destroy perintah.

    terraform destroy