

La versión 2 de AWS SDK para JavaScript ha llegado al final del soporte. Se recomienda que migre a [AWS SDK para JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/). Para ver detalles e información adicionales sobre cómo realizar la migración, consulte este [anuncio](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/).

# Uso de acciones de alarma en Amazon CloudWatch
<a name="cloudwatch-examples-using-alarm-actions"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/es_es/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**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
<a name="cloudwatch-examples-using-alarm-actions-scenario"></a>

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:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatch.html#enableAlarmActions-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatch.html#enableAlarmActions-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatch.html#disableAlarmActions-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatch.html#disableAlarmActions-property)

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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingAlarmActions.html) en la *Guía del usuario de Amazon CloudWatch*.

## Tareas previas necesarias
<a name="cloudwatch-examples-using-alarm-actions-prerequisites"></a>

Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:
+ Instale Node.js. Para obtener más información acerca de la instalación de Node.js consulte el [sitio web de Node.js](http://nodejs.org).
+ Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información acerca de cómo crear un archivo de credenciales compartidas, consulte [Carga de credenciales en Node.js desde el archivo de credenciales compartidas](loading-node-credentials-shared.md).
+ Cree un rol de IAM cuya política conceda permiso para describir, reiniciar, detener o terminar una instancia de Amazon EC2. Para obtener más información sobre cómo crear un rol de IAM, consulte [Creación de un rol para delegar permisos a un servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la *Guía del usuario de IAM*.

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

------
#### [ JSON ]

****  

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

------

## 
<a name="cloudwatch-examples-using-alarm-actions-configure-sdk"></a>

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
<a name="cloudwatch-examples-using-alarm-actions-enabling"></a>

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](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/cloudwatch/cw_enablealarmactions.js).

## Deshabilitar acciones en una alarma
<a name="cloudwatch-examples-using-alarm-actions-disabling"></a>

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](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/cloudwatch/cw_disablealarmactions.js).