Uso de acciones de alarma en Amazon CloudWatch - AWS SDK for JavaScript

Anunciamos el próximo fin del soporte para AWS SDK for JavaScript v2. Se recomienda que migre a AWS SDK for JavaScript v3. Para ver las fechas, los detalles adicionales y la información sobre cómo realizar la migración, consulte el anuncio enlazado.

Uso de acciones de alarma en Amazon CloudWatch

JavaScript code example that applies to Node.js execution

Este ejemplo de código de Node.js muestra:

  • Cómo cambiar el estado de sus instancias de Amazon EC2 automáticamente en función de una alarma de CloudWatch.

El escenario

Mediante las acciones de alarma, puede crear alarmas que paran, terminan, reinician o recuperan automáticamente sus instancias de Amazon EC2. Puede utilizar las acciones parar o terminar cuando ya no necesita que se ejecute una instancia. Puede usar las acciones reiniciar y recuperar para reiniciar automáticamente esas instancias.

En este ejemplo se usan una serie de módulos de Node.js para definir una acción de alarma en CloudWatch que desencadene el reinicio de una instancia de Amazon EC2. Los módulos de Node.js usan el SDK para JavaScript para gestionar instancias de Amazon EC2 mediante los métodos de clase de cliente CloudWatch siguientes:

Para obtener más información acerca de las acciones de alarma de CloudWatch, consulte Crear alarmas para parar, terminar, reiniciar o recuperar una instancia en la Guía del usuario de Amazon CloudWatch.

Tareas previas necesarias

Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:

Utilice la siguiente política de funciones al crear la función de IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:Describe*", "ec2:Describe*", "ec2:RebootInstances", "ec2:StopInstances*", "ec2:TerminateInstances" ], "Resource": [ "*" ] } ] }

Configure el SDK para JavaScript creando un objeto de configuración global y luego configurando la región para su código. En este ejemplo, la región está establecida en us-west-2.

// Load the SDK for JavaScript var AWS = require('aws-sdk'); // Set the Region AWS.config.update({region: 'us-west-2'});

Creación y habilitación de acciones en una alarma

Cree un módulo de Node.js con el nombre de archivo cw_enablealarmactions.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Para obtener acceso a CloudWatch, cree un objeto de servicio de AWS.CloudWatch.

Cree un objeto JSON para contener los parámetros para crear una alarma y especifique ActionsEnabled como true y una matriz de ARN para las acciones que la alarma desencadenará. Llame al método putMetricAlarm del objeto de servicio AWS.CloudWatch, que crea la alarma si no existe o la actualiza si existe.

En la función de devolución de llamada para putMetricAlarm, al realizarse correctamente cree un objeto JSON que contenga el nombre de la alarma de CloudWatch. Llame al método enableAlarmActions para habilitar la acción de alarma.

// 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); } }); } });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node cw_enablealarmactions.js

Este código de ejemplo se puede encontrar aquí en GitHub.

Deshabilitar acciones en una alarma

Cree un módulo de Node.js con el nombre de archivo cw_disablealarmactions.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Para obtener acceso a CloudWatch, cree un objeto de servicio de AWS.CloudWatch. Cree un objeto JSON que contenga el nombre de la alarma de CloudWatch. Llame al método disableAlarmActions para deshabilitar las acciones para esta alarma.

// 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); } } );

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node cw_disablealarmactions.js

Este código de ejemplo se puede encontrar aquí en GitHub.