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

LaAWS SDK for JavaScript versión 3 (v3) es una reescritura de la versión 2 con algunas funciones nuevas y excelentes, incluida la arquitectura modular. Para obtener más información, consulte la Guía para desarrolladores de la versiónAWS SDK for JavaScript 3.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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 las instancias Amazon EC2 automáticamente en función de una alarma de CloudWatch.

El escenario

Mediante las acciones de alarma de, puede crear alarmas que paran, terminan, reinician o recuperan automáticamente sus instancias 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 van a utilizar una serie de módulos de Node.js para definir una acción de alarma en CloudWatch que desencadena el reinicio de una instancia Amazon EC2. Los módulos de Node.js usan el SDK para JavaScript para administrar instancias de Amazon EC2 mediante estos métodos delCloudWatchclase de cliente:

Para obtener más información acerca de las acciones de alarma de CloudWatch, consulteCrear alarmas para parar, terminar, reiniciar o recuperar una instanciaen laGuí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 acceder a CloudWatch, cree unAWS.CloudWatchobjeto de servicio.

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 elputMetricAlarm, 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 muestra 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 acceder a CloudWatch, cree unAWS.CloudWatchobjeto de servicio. 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 muestra se puede encontrar aquí en GitHub.