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.
Stellen Sie CloudWatch Synthetics Canaries mithilfe von Terraform bereit
Erstellt von Dhrubajyoti Mukherjee () und Jean-Francois Landreau () AWS AWS
Quellcode-Repository: Stellen Sie CloudWatch Synthetics Canaries | Umgebung: Produktion | Technologien: DevOps; Unternehmensproduktivität DevelopmentAndTesting; Infrastruktur; Web- und mobile Apps |
AWSDienste: Amazon CloudWatch; Amazon S3; AmazonSNS; AmazonVPC; AWS Identity and Access Management |
Übersicht
Es ist wichtig, den Zustand eines Systems aus Kundensicht zu überprüfen und sicherzustellen, dass Kunden eine Verbindung herstellen können. Dies ist schwieriger, wenn die Kunden den Endpunkt nicht ständig anrufen. Amazon CloudWatch Synthetics unterstützt die Erstellung von Canaries, mit denen sowohl öffentliche als auch private Endgeräte getestet werden können. Durch die Verwendung von Canaries können Sie den Status eines Systems ermitteln, auch wenn es nicht verwendet wird. Diese Kanarien sind entweder Node.js Puppeteer-Skripte oder Python Selenium-Skripte.
Dieses Muster beschreibt, wie HashiCorp Terraform verwendet wird, um Canaries bereitzustellen, die private Endpunkte testen. Es bettet ein Puppeteer-Skript ein, das testet, ob a zurückkehrt. URL 200-OK
Das Terraform-Skript kann dann in das Skript integriert werden, das den privaten Endpunkt bereitstellt. Sie können die Lösung auch ändern, um öffentliche Endpunkte zu überwachen.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktives Amazon Web Services (AWS) -Konto mit einer virtuellen privaten Cloud (VPC) und privaten Subnetzen
Der Endpunkt, URL der von den privaten Subnetzen aus erreicht werden kann
Terraform ist in der Bereitstellungsumgebung installiert
Einschränkungen
Die aktuelle Lösung funktioniert für die folgenden CloudWatch Synthetics-Laufzeitversionen:
syn-nodejs-puppeteer-3.4
syn-nodejs-puppeteer-3,5
syn-nodejs-puppeteer-3,6
syn-nodejs-puppeteer-3,7
Wenn neue Runtime-Versionen veröffentlicht werden, müssen Sie möglicherweise die aktuelle Lösung aktualisieren. Sie müssen die Lösung auch ändern, um mit den Sicherheitsupdates Schritt zu halten.
Produktversionen
Terraform 1.3.0
Architektur
Amazon CloudWatch Synthetics basiert auf CloudWatch Lambda und Amazon Simple Storage Service (Amazon S3). Amazon CloudWatch bietet einen Assistenten zum Erstellen der Canaries und ein Dashboard, das den Status der Canaries Runs anzeigt. Die Lambda-Funktion führt das Skript aus. Amazon S3 speichert die Protokolle und Screenshots der Canary Runs.
Dieses Muster simuliert einen privaten Endpunkt über eine Amazon Elastic Compute Cloud (AmazonEC2) -Instance, die in den Zielsubnetzen bereitgestellt wird. Die Lambda-Funktion erfordert elastische Netzwerkschnittstellen an VPC dem Ort, an dem der private Endpunkt bereitgestellt wird.
Das Diagramm zeigt Folgendes:
Der Synthetics Canary initiiert die kanarische Lambda-Funktion.
Die kanarische Lambda-Funktion stellt eine Verbindung zur elastic network interface her.
Die Canary-Lambda-Funktion überwacht den Status des Endpunkts.
Der Synthetics Canary überträgt Laufdaten und CloudWatch Metriken in den S3-Bucket.
Auf der Grundlage der Metriken wird ein CloudWatch Alarm ausgelöst.
Der CloudWatch Alarm leitet das Thema Amazon Simple Notification Service (AmazonSNS) ein.
Tools
AWSDienste
Amazon CloudWatch hilft Ihnen dabei, die Kennzahlen Ihrer AWS Ressourcen und der Anwendungen, auf denen Sie laufen, AWS in Echtzeit zu überwachen.
AWSLambda ist ein Rechendienst, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
Amazon Simple Notification Service (AmazonSNS) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.
Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
Amazon Virtual Private Cloud (AmazonVPC) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk ähnelt einem herkömmlichen Netzwerk, das Sie in Ihrem eigenen Rechenzentrum betreiben würden, und bietet die Vorteile der Nutzung der skalierbaren Infrastruktur vonAWS. Dieses Muster verwendet VPC Endpunkte und elastische Netzwerkschnittstellen.
Andere Dienste
HashiCorp Terraform
ist ein Open-Source-Tool für Infrastruktur als Code (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können. Dieses Muster verwendet Terraform zur Bereitstellung der Infrastruktur. Puppeteer ist eine Node.js
Bibliothek. Die CloudWatch Synthetics-Laufzeit verwendet das Puppeteer-Framework.
Code
Die Lösung ist im GitHub watch-synthetics-canaryCloud-Terraform-Repository
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Sammeln Sie die Anforderungen für die Überwachung des PrivatenURL. | Sammeln Sie die vollständige URL Definition: Domäne, Parameter und Header. Verwenden Sie VPC Endpunkte, um privat mit Amazon S3 und Amazon CloudWatch zu kommunizieren. Beachten Sie, wie die Subnetze VPC und für den Endpunkt zugänglich sind. Beachten Sie die Häufigkeit von Canary Runs. | Cloud-Architekt, Netzwerkadministrator |
Ändern Sie die bestehende Lösung, um den privaten Bereich zu überwachenURL. | Ändern Sie die
| Cloud-Architekt |
Stellen Sie die Lösung bereit und betreiben Sie sie. | Gehen Sie wie folgt vor, um die Lösung bereitzustellen:
| Cloud-Architekt, DevOps Ingenieur |
Fehlerbehebung
Problem | Lösung |
---|---|
Das Löschen der bereitgestellten Ressourcen bleibt hängen. | Löschen Sie die Canary-Lambda-Funktion, die entsprechende elastic network interface und die Sicherheitsgruppe manuell in dieser Reihenfolge. |
Zugehörige Ressourcen
Zusätzliche Informationen
Artefakte aus dem Repository
Die Repository-Artefakte haben die folgende Struktur.
. ├── README.md ├── main.tf ├── modules │ ├── canary │ └── canary-infra ├── terraform.tfvars ├── tf.plan └── variable.tf
Die main.tf
Datei enthält das Kernmodul und stellt zwei Untermodule bereit:
canary-infra
stellt die für die Kanaren benötigte Infrastruktur bereit.canary
setzt die Kanarischen Inseln ein.
Die Eingabeparameter für die Lösung befinden sich in der terraform.tfvars
Datei. Sie können das folgende Codebeispiel verwenden, um einen Canary zu erstellen.
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 }
Es folgt die entsprechende .var-Datei.
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"
Die Lösung aufräumen
Wenn Sie dies in einer Entwicklungsumgebung testen, können Sie die Lösung bereinigen, um Kosten zu vermeiden.
Navigieren Sie in der AWS Management Console zur Amazon S3 S3-Konsole. Leeren Sie den Amazon S3 S3-Bucket, den die Lösung erstellt hat. Stellen Sie sicher, dass Sie bei Bedarf eine Sicherungskopie der Daten erstellen.
Führen Sie in Ihrer Entwicklungsumgebung den
destroy
Befehl aus demcloudwatch-synthetics-canary-terraform
Verzeichnis aus.terraform destroy