Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Déployez des CloudWatch canaris Synthetics à l'aide de Terraform
Créée par Dhrubajyoti Mukherjee (AWS) et Jean-Francois Landreau (AWS)
Récapitulatif
Il est important de valider l'état d'un système du point de vue du client et de confirmer que les clients sont en mesure de se connecter. Cela est plus difficile lorsque les clients n'appellent pas constamment le terminal. Amazon CloudWatch Synthetics prend en charge la création de canaris, qui peuvent tester des points de terminaison publics et privés. En utilisant des canaris, vous pouvez connaître l'état d'un système même s'il n'est pas utilisé. Ces canaris sont soit des scripts Node.js Puppeteer, soit des scripts Python Selenium.
Ce modèle décrit comment utiliser HashiCorp Terraform pour déployer des canaris qui testent des points de terminaison privés. Il intègre un script Puppeteer qui teste si une URL est renvoyée. 200-OK
Le script Terraform peut ensuite être intégré au script qui déploie le point de terminaison privé. Vous pouvez également modifier la solution pour surveiller les points de terminaison publics.
Conditions préalables et limitations
Prérequis
Un compte Amazon Web Services (AWS) actif avec un cloud privé virtuel (VPC) et des sous-réseaux privés
URL du point de terminaison accessible depuis les sous-réseaux privés
Terraform installé dans l'environnement de déploiement
Limites
La solution actuelle fonctionne pour les versions d'exécution de CloudWatch Synthetics suivantes :
syn-nodejs-puppeteer-3,4
syn-nodejs-puppeteer-3,5
syn-nodejs-puppeteer-3,6
syn-nodejs-puppeteer-3,7
À mesure que de nouvelles versions d'exécution sont publiées, vous devrez peut-être mettre à jour la solution actuelle. Vous devrez également modifier la solution pour suivre les mises à jour de sécurité.
Versions du produit
Terraform 1.3.0
Architecture
Amazon CloudWatch Synthetics est basé sur CloudWatch Lambda et Amazon Simple Storage Service (Amazon S3). Amazon CloudWatch propose un assistant pour créer les canaris et un tableau de bord qui affiche l'état des canaris. La fonction Lambda exécute le script. Amazon S3 stocke les journaux et les captures d'écran des Canary Runs.
Ce modèle simule un point de terminaison privé via une instance Amazon Elastic Compute Cloud (Amazon EC2) déployée dans les sous-réseaux ciblés. La fonction Lambda nécessite des interfaces réseau élastiques dans le VPC où le point de terminaison privé est déployé.

Le diagramme décrit les éléments suivants :
Le Synthetics Canary lance la fonction Lambda Canary.
La fonction Lambda Canary se connecte à l'interface Elastic Network.
La fonction Canary Lambda surveille l'état du terminal.
Le Synthetics Canary envoie les données d'exécution vers le compartiment S3 et les métriques. CloudWatch
Une CloudWatch alarme est déclenchée sur la base des métriques.
L' CloudWatch alarme lance la rubrique Amazon Simple Notification Service (Amazon SNS).
Outils
Services AWS
Amazon vous CloudWatch aide à surveiller les indicateurs de vos ressources AWS et des applications que vous exécutez sur AWS en temps réel.
AWS Lambda est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
Amazon Simple Notification Service (Amazon SNS) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.
Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
Amazon Virtual Private Cloud (Amazon VPC) vous aide à lancer des ressources AWS dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous exploiteriez dans votre propre centre de données, avec les avantages liés à l'utilisation de l'infrastructure évolutive d'AWS. Ce modèle utilise des points de terminaison VPC et des interfaces réseau élastiques.
Autres services
HashiCorp Terraform
est un outil open source d'infrastructure sous forme de code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources cloud. Ce modèle utilise Terraform pour déployer l'infrastructure. Puppeteer
est une bibliothèque Node.js. Le runtime CloudWatch Synthetics utilise le framework Puppeteer.
Code
La solution est disponible dans le watch-synthetics-canary-terraform référentiel GitHub cloud
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Rassemblez les exigences relatives à la surveillance de l'URL privée. | Rassemblez la définition complète de l'URL : domaine, paramètres et en-têtes. Pour communiquer en privé avec Amazon S3 et Amazon CloudWatch, utilisez des points de terminaison VPC. Notez comment le VPC et les sous-réseaux sont accessibles au point de terminaison. Tenez compte de la fréquence des courses de canaris. | Architecte cloud, administrateur réseau |
Modifiez la solution existante pour surveiller l'URL privée. | Modifiez le
| Architecte du cloud |
Déployez et exploitez la solution. | Pour déployer la solution, procédez comme suit :
| Architecte cloud, DevOps ingénieur |
Résolution des problèmes
Problème | Solution |
---|---|
La suppression des ressources provisionnées est bloquée. | Supprimez manuellement la fonction Lambda Canary, l'interface Elastic Network correspondante et le groupe de sécurité, dans cet ordre. |
Ressources connexes
Informations supplémentaires
Artefacts du référentiel
Les artefacts du référentiel se présentent dans la structure suivante.
.
├── README.md
├── main.tf
├── modules
│ ├── canary
│ └── canary-infra
├── terraform.tfvars
├── tf.plan
└── variable.tf
Le main.tf
fichier contient le module principal et déploie deux sous-modules :
canary-infra
déploie l'infrastructure requise pour les canaris.canary
déploie les canaris.
Les paramètres d'entrée de la solution se trouvent dans le terraform.tfvars
fichier. Vous pouvez utiliser l'exemple de code suivant pour créer un canari.
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
}
Le fichier .var correspondant suit.
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"
Nettoyage de la solution
Si vous testez cela dans un environnement de développement, vous pouvez nettoyer la solution pour éviter des coûts supplémentaires.
Sur la console de gestion AWS, accédez à la console Amazon S3. Videz le compartiment Amazon S3 créé par la solution. Assurez-vous de faire une sauvegarde des données, si nécessaire.
Dans votre environnement de développement, depuis le
cloudwatch-synthetics-canary-terraform
répertoire, exécutez ladestroy
commande.terraform destroy