Usar ações de alarmes no Amazon CloudWatch - AWS SDK for JavaScript

Anunciamos o próximo fim do suporte para o AWS SDK for JavaScript v2. Recomendamos migrar para o AWS SDK for JavaScript v3. Para saber as datas e receber detalhes adicionais e informações sobre como migrar, consulte o anúncio vinculado.

Usar ações de alarmes no Amazon CloudWatch

JavaScript code example that applies to Node.js execution

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

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:

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, no Guia do usuário do Amazon CloudWatch.

Tarefas de pré-requisito

Para configurar e executar este exemplo, você deve primeiro concluir estas tarefas:

Use a política de função a seguir ao criar a função do IAM.

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

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

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.

Desabilitar ações em um alarme

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.