

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
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform"></a>

*Dhrubajyoti Mukherjee und Jean-Francois Landreau, Amazon Web Services*

## Zusammenfassung
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-summary"></a>

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](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) 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 eine URL zurückkehrt. `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
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-prereqs"></a>

**Voraussetzungen**
+ Ein aktives Amazon Web Services (AWS) -Konto mit einer Virtual Private Cloud (VPC) und privaten Subnetzen
+ Die URL des Endpunkts, 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
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-architecture"></a>

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 (Amazon EC2) -Instance, die in den Zielsubnetzen bereitgestellt wird. Die Lambda-Funktion erfordert elastische Netzwerkschnittstellen in der VPC, in der der private Endpunkt bereitgestellt wird.

![\[Die Beschreibung folgt dem Diagramm.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/73ed0103-ec45-4653-bb29-f402a88f0c64/images/39aaed0f-f259-4f2a-98fb-8e3a340d0b02.png)


Das Diagramm zeigt Folgendes:

1. Der Synthetics Canary initiiert die kanarische Lambda-Funktion.

1. Die kanarische Lambda-Funktion stellt eine Verbindung zur elastic network interface her.

1. Die Canary-Lambda-Funktion überwacht den Status des Endpunkts.

1. Der Synthetics Canary überträgt Laufdaten und CloudWatch Metriken in den S3-Bucket.

1. Auf der Grundlage der Metriken wird ein CloudWatch Alarm ausgelöst.

1. Der CloudWatch Alarm leitet das Thema Amazon Simple Notification Service (Amazon SNS) ein.

## Tools
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-tools"></a>

**AWS-Services**
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) hilft Ihnen dabei, die Metriken Ihrer AWS-Ressourcen und der Anwendungen, die Sie auf AWS ausführen, in Echtzeit zu überwachen.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Rechenservice, 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 (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 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)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen, AWS-Ressourcen in einem von Ihnen definierten virtuellen Netzwerk zu starten. Dieses virtuelle Netzwerk ähnelt einem herkömmlichen Netzwerk, das Sie in Ihrem eigenen Rechenzentrum betreiben würden, mit den Vorteilen der skalierbaren Infrastruktur von AWS. Dieses Muster verwendet VPC-Endpunkte und elastische Netzwerkschnittstellen.

**Andere Dienste**
+ [HashiCorp Terraform](https://www.terraform.io/docs) 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](https://pptr.dev/) Bibliothek. Die CloudWatch Synthetics-Laufzeit verwendet das Puppeteer-Framework.

**Code**

[Die Lösung ist im Cloud-Repository verfügbar. GitHub watch-synthetics-canary-terraform](https://github.com/aws-samples/cloudwatch-synthetics-canary-terraform) Weitere Informationen finden Sie im Abschnitt *Zusätzliche Informationen*.

## Epen
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-epics"></a>

### Implementieren Sie die Lösung für die Überwachung einer privaten URL
<a name="implement-the-solution-for-monitoring-a-private-url"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ermitteln Sie die Anforderungen für die Überwachung der privaten URL. | Erfassen Sie die vollständige URL-Definition: Domäne, Parameter und Header. Verwenden Sie VPC-Endpunkte CloudWatch, um privat mit Amazon S3 und Amazon zu kommunizieren. Beachten Sie, wie der Endpunkt auf die VPC und die Subnetze zugreifen kann. Beachten Sie die Häufigkeit von Canary Runs. | Cloud-Architekt, Netzwerkadministrator | 
| Ändern Sie die bestehende Lösung, um die private URL zu überwachen. | Ändern Sie die `terraform.tfvars` Datei:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cloudwatch-synthetics-canaries-by-using-terraform.html) | Cloud-Architekt | 
| Stellen Sie die Lösung bereit und betreiben Sie sie. | Gehen Sie wie folgt vor, um die Lösung bereitzustellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cloudwatch-synthetics-canaries-by-using-terraform.html) | Cloud-Architekt, DevOps Ingenieur | 

## Fehlerbehebung
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-troubleshooting"></a>


| 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
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-resources"></a>
+ [Synthetische Überwachung verwenden](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html)
+ [Überwachen Sie API Gateway Gateway-Endpunkte mit Amazon CloudWatch Synthetics](https://aws.amazon.com/blogs/mt/monitor-api-gateway-endpoints-with-amazon-cloudwatch-synthetics/) (Blogbeitrag)

## Zusätzliche Informationen
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-additional"></a>

**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.

1. Navigieren Sie in der AWS-Managementkonsole 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.

1. Führen Sie in Ihrer Entwicklungsumgebung den `destroy` Befehl aus dem `cloudwatch-synthetics-canary-terraform` Verzeichnis aus.

   ```
   terraform destroy
   ```