Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Déployez des CloudWatch canaris Synthetics à l'aide de Terraform - Recommandations AWS

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.

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

La description suit le schéma.

Le diagramme décrit les éléments suivants :

  1. Le Synthetics Canary lance la fonction Lambda Canary.

  2. La fonction Lambda Canary se connecte à l'interface Elastic Network.

  3. La fonction Canary Lambda surveille l'état du terminal.

  4. Le Synthetics Canary envoie les données d'exécution vers le compartiment S3 et les métriques. CloudWatch

  5. Une CloudWatch alarme est déclenchée sur la base des métriques.

  6. 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. Pour plus d'informations, consultez la section Informations supplémentaires.

Épopées

TâcheDescriptionCompé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 terraform.tfvars fichier :

  • name— Le nom de votre canari.

  • runtime_version— La version d'exécution du Canary. Nous vous recommandons d'utiliser syn-nodejs-puppeteer -3.7.

  • take_screenshot— Si une capture d'écran doit être prise.

  • api_hostname— Le nom d'hôte du point de terminaison surveillé.

  • api_path— Le chemin du point de terminaison surveillé.

  • vpc_id— L'ID VPC utilisé par la fonction Lambda Canary.

  • subnet_ids— Le sous-réseau IDs utilisé par la fonction Lambda Canary.

  • frequency— La fréquence de course du canari en minutes.

  • alert_sns_topic— Rubrique SNS à laquelle la notification CloudWatch d'alarme est envoyée.

Architecte du cloud

Déployez et exploitez la solution.

Pour déployer la solution, procédez comme suit :

  1. Depuis le cloudwatch-synthetics-canary-terraform répertoire de votre environnement de développement, initialisez Terraform.

    terraform init
  2. Planifiez et passez en revue les modifications.

    terraform plan
  3. Déployez la solution.

    terraform apply
Architecte cloud, DevOps ingénieur

Implémenter la solution de surveillance d'une URL privée

TâcheDescriptionCompé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 terraform.tfvars fichier :

  • name— Le nom de votre canari.

  • runtime_version— La version d'exécution du Canary. Nous vous recommandons d'utiliser syn-nodejs-puppeteer -3.7.

  • take_screenshot— Si une capture d'écran doit être prise.

  • api_hostname— Le nom d'hôte du point de terminaison surveillé.

  • api_path— Le chemin du point de terminaison surveillé.

  • vpc_id— L'ID VPC utilisé par la fonction Lambda Canary.

  • subnet_ids— Le sous-réseau IDs utilisé par la fonction Lambda Canary.

  • frequency— La fréquence de course du canari en minutes.

  • alert_sns_topic— Rubrique SNS à laquelle la notification CloudWatch d'alarme est envoyée.

Architecte du cloud

Déployez et exploitez la solution.

Pour déployer la solution, procédez comme suit :

  1. Depuis le cloudwatch-synthetics-canary-terraform répertoire de votre environnement de développement, initialisez Terraform.

    terraform init
  2. Planifiez et passez en revue les modifications.

    terraform plan
  3. Déployez la solution.

    terraform apply
Architecte cloud, DevOps ingénieur

Résolution des problèmes

ProblèmeSolution

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-infradéploie l'infrastructure requise pour les canaris.

  • canarydé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.

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

  2. Dans votre environnement de développement, depuis le cloudwatch-synthetics-canary-terraform répertoire, exécutez la destroy commande.

    terraform destroy
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.