Nous avons annoncé
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.
Utilisation des actions d'alarme sur Amazon CloudWatch
Cet exemple de code Node.js présente :
Comment modifier automatiquement l'état de vos instances Amazon EC2 en fonction d'une CloudWatch alarme.
Scénario
À l'aide d'actions d'alarme, vous pouvez créer des alarmes qui arrêtent, mettent fin, redémarrent ou restaurent automatiquement vos instances Amazon EC2. Vous pouvez utiliser les actions d'arrêt ou de mise hors service quand vous n'avez plus besoin qu'une instance s'exécute. Vous pouvez utiliser les actions de redémarrage et de récupération pour redémarrer automatiquement ces instances.
Dans cet exemple, une série de modules Node.js sont utilisés pour définir une action d'alarme CloudWatch qui déclenche le redémarrage d'une instance Amazon EC2. Les modules Node.js utilisent le SDK pour gérer les instances Amazon EC2 JavaScript à l'aide des méthodes suivantes de CloudWatch
la classe client :
Pour plus d'informations sur les actions CloudWatch d'alarme, consultez la section Créer des alarmes pour arrêter, résilier, redémarrer ou récupérer une instance dans le guide de CloudWatch l'utilisateur Amazon.
Tâches prérequises
Pour configurer et exécuter cet exemple, vous devez d'abord :
-
Installez Node.js. Pour plus d'informations sur l'installation de Node.js, consultez le site web de Node.js
. Créez un fichier de configurations partagé avec vos informations d'identification utilisateur. Pour plus d'informations sur le fichier d'informations d'identification partagé, consultez Chargement des informations d'identification dans Node.js à partir du fichier d'informations d'identification partagé.
-
Créez un rôle IAM dont la politique autorise la description, le redémarrage, l'arrêt ou la mise hors service d'une instance Amazon EC2. Pour plus d'informations sur la création d'un rôle IAM, consultez la section Création d'un rôle pour déléguer des autorisations à un AWS service dans le Guide de l'utilisateur IAM.
Utilisez la stratégie de rôle suivante lors de la création du rôle IAM.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:Describe*", "ec2:Describe*", "ec2:RebootInstances", "ec2:StopInstances*", "ec2:TerminateInstances" ], "Resource": [ "*" ] } ] }
Configurez le SDK pour JavaScript en créant un objet de configuration global, puis en définissant la région pour votre code. Dans cet exemple, la région est us-west-2
.
// Load the SDK for JavaScript var AWS = require('aws-sdk'); // Set the Region AWS.config.update({region: 'us-west-2'});
Création et activation d'actions sur une alarme
Créez un module Node.js nommé cw_enablealarmactions.js
. Veillez à configurer le kit SDK comme indiqué précédemment. Pour y accéder CloudWatch, créez un objet AWS.CloudWatch
de service.
Créez un objet JSON qui contiendra les paramètres nécessaires à la création d'une alarme, en spécifiant la valeur true
pour ActionsEnabled
et un ensemble d'ARN pour les actions qui seront déclenchées par l'alarme. Appelez la méthode putMetricAlarm
de l'objet de service AWS.CloudWatch
, qui crée l'alarme si elle n'existe pas ou la met à jour si elle existe.
Dans la fonction de rappel duputMetricAlarm
, une fois l'opération terminée, créez un objet JSON contenant le nom de l' CloudWatch alarme. Appelez la méthode enableAlarmActions
pour activer l'action d'alarme.
// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatch service object var cw = new AWS.CloudWatch({ apiVersion: "2010-08-01" }); var params = { AlarmName: "Web_Server_CPU_Utilization", ComparisonOperator: "GreaterThanThreshold", EvaluationPeriods: 1, MetricName: "CPUUtilization", Namespace: "AWS/EC2", Period: 60, Statistic: "Average", Threshold: 70.0, ActionsEnabled: true, AlarmActions: ["ACTION_ARN"], AlarmDescription: "Alarm when server CPU exceeds 70%", Dimensions: [ { Name: "InstanceId", Value: "INSTANCE_ID", }, ], Unit: "Percent", }; cw.putMetricAlarm(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Alarm action added", data); var paramsEnableAlarmAction = { AlarmNames: [params.AlarmName], }; cw.enableAlarmActions(paramsEnableAlarmAction, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Alarm action enabled", data); } }); } });
Pour exécuter l'exemple, entrez ce qui suit dans la ligne de commande.
node cw_enablealarmactions.js
Cet exemple de code se trouve ici sur GitHub
Désactivation des actions sur une alarme
Créez un module Node.js nommé cw_disablealarmactions.js
. Veillez à configurer le kit SDK comme indiqué précédemment. Pour y accéder CloudWatch, créez un objet AWS.CloudWatch
de service. Créez un objet JSON contenant le nom de l' CloudWatch alarme. Appelez la méthode disableAlarmActions
pour désactiver les actions pour cette alarme.
// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatch service object var cw = new AWS.CloudWatch({ apiVersion: "2010-08-01" }); cw.disableAlarmActions( { AlarmNames: ["Web_Server_CPU_Utilization"] }, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } } );
Pour exécuter l'exemple, entrez ce qui suit dans la ligne de commande.
node cw_disablealarmactions.js
Cet exemple de code se trouve ici sur GitHub