

O AWS SDK para JavaScript v2 chegou ao fim do suporte. Recomendamos migrar para o [AWS SDK para JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/). Para ver detalhes e informações sobre como migrar, consulte este [anúncio](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/).

# Usar ações de alarmes no Amazon CloudWatch
<a name="cloudwatch-examples-using-alarm-actions"></a>

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

**Este exemplo de código Node.js mostra:**
+ Como alterar automaticamente o estado das instâncias do Amazon EC2 com base em um alarme do CloudWatch.

## O cenário
<a name="cloudwatch-examples-using-alarm-actions-scenario"></a>

Ao usar ações de alarme do , é possível criar alarmes que param, encerram, reiniciam ou recuperam as instâncias do Amazon EC2 automaticamente. Use as ações parar ou encerrar quando não for mais necessário que uma instância seja executada. Use as ações reiniciar e recuperar para reiniciar essas instâncias automaticamente. 

Neste exemplo, uma série de módulos de Node.js é usada para definir uma ação de alarme no CloudWatch que acionará a reinicialização de uma instância do Amazon EC2. Os módulos do Node.js usam o SDK para JavaScript para gerenciar instâncias do Amazon EC2 usando os métodos da classe de cliente do `CloudWatch`:
+ [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 obter mais informações sobre as ações de alarme do CloudWatch, consulte [Criar alarmes que param, encerram, reinicializam ou recuperam uma instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingAlarmActions.html), no *Guia do usuário do Amazon CloudWatch*.

## Tarefas de pré-requisito
<a name="cloudwatch-examples-using-alarm-actions-prerequisites"></a>

Para configurar e executar este exemplo, você deve primeiro concluir estas tarefas:
+ Instale o Node.js. Para obter mais informações sobre como instalar Node.js, consulte o [website de Node.js](http://nodejs.org).
+ Crie um arquivo de configurações compartilhado com as credenciais de usuário. Para obter mais informações sobre como fornecer um arquivo de credenciais compartilhadas, consulte [Carregar credenciais em Node.js do arquivo de credenciais compartilhado](loading-node-credentials-shared.md).
+ Crie uma função do IAM cuja política conceda permissão para descrever, reinicializar, interromper ou encerrar uma instância do Amazon EC2. Para obter mais informações sobre como criar um perfil do IAM, consulte [Criação de uma função para delegar permissões a um serviço da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) no *Guia do usuário do IAM*.

Use a política de função a seguir ao criar a função do 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 o SDK para JavaScript criando um objeto de configuração global e definindo a região do código. Neste exemplo, a região é definida como `us-west-2`.

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

## Criar e ativar ações em um alarme
<a name="cloudwatch-examples-using-alarm-actions-enabling"></a>

Crie um módulo do Node.js com o nome de arquivo `cw_enablealarmactions.js`. Não se esqueça de configurar o SDK conforme mostrado anteriormente. Para acessar o CloudWatch, crie um objeto de serviço do `AWS.CloudWatch`.

Crie um objeto JSON para manter os parâmetros da criação de um alarme especificando `ActionsEnabled` como `true` e uma matriz de ARNs para as ações que o alarme acionará. Chame o método `putMetricAlarm` do objeto de serviço `AWS.CloudWatch`. Isso criará o alarme se ele não existir ou o atualizará se ele já existir.

Na função de retorno de chamada do `putMetricAlarm`, mediante a conclusão bem-sucedida, crie um objeto JSON que contém o nome do alarme do CloudWatch. Chame o método `enableAlarmActions` para ativar a ação do 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);
      }
    });
  }
});
```

Para executar o exemplo, digite o seguinte na linha de comando.

```
node cw_enablealarmactions.js
```

Este código de exemplo pode ser encontrado [aqui no GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/cloudwatch/cw_enablealarmactions.js).

## Desabilitar ações em um alarme
<a name="cloudwatch-examples-using-alarm-actions-disabling"></a>

Crie um módulo do Node.js com o nome de arquivo `cw_disablealarmactions.js`. Não se esqueça de configurar o SDK conforme mostrado anteriormente. Para acessar o CloudWatch, crie um objeto de serviço do `AWS.CloudWatch`. Crie um objeto JSON que contenha o nome do alarme do CloudWatch. Chame o método `disableAlarmActions` para desativar as ações desse 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);
    }
  }
);
```

Para executar o exemplo, digite o seguinte na linha de comando.

```
node cw_disablealarmactions.js
```

Este código de exemplo pode ser encontrado [aqui no GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/cloudwatch/cw_disablealarmactions.js).