在 Amazon CloudWatch 中使用警报操作 - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

我们已宣布即将终止对 Amazon SDK for JavaScript v2 的支持。建议您迁移到 Amazon SDK for JavaScript v3。有关日期、其他详细信息以及如何迁移的信息,请参阅链接的公告。

在 Amazon CloudWatch 中使用警报操作

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何根据 CloudWatch 警报自动更改 Amazon EC2 实例的状态。

情景

利用警报操作,您可以创建自动停止、终止、重启或恢复 Amazon EC2 实例的警报。当不再需要某个实例运行时,您可使用停止或终止操作。使用重启和恢复操作可以自动重启这些实例。

本示例使用一系列 Node.js 模块来定义 CloudWatch 中的警报操作,这些操作触发 Amazon EC2 实例的重启。这些 Node.js 模块使用 SDK for JavaScript,通过 CloudWatch 客户端类的以下方法来管理 Amazon EC2 实例:

有关 CloudWatch 警报操作的更多信息,请参阅《Amazon CloudWatch 用户指南》中的创建停止、终止、重启或恢复实例的警报

先决条件任务

要设置和运行此示例,您必须先完成以下任务:

在创建 IAM 角色时,使用以下角色策略。

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

通过创建全局配置对象然后为代码设置区域,来配置 SDK for JavaScript。在此示例中,区域设置为 us-west-2

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

创建并在警报上启用操作

创建文件名为 cw_enablealarmactions.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 CloudWatch,请创建 AWS.CloudWatch 服务对象。

创建 JSON 对象以保存用于创建警报的参数,将 ActionsEnabled 指定为 true,并为警报将触发的操作指定 ARN 数组。调用 AWS.CloudWatch 服务对象的 putMetricAlarm 方法,这会在警报不存在时创建警报,在警报存在时更新警报。

putMetricAlarm 的回调函数中,成功完成时,将创建一个包含 CloudWatch 警报名称的 JSON 对象。调用 enableAlarmActions 方法以启用警报操作。

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

要运行示例,请在命令行中键入以下内容。

node cw_enablealarmactions.js

此示例代码可在 GitHub 上的此处找到。

禁用警报上的操作

创建文件名为 cw_disablealarmactions.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 CloudWatch,请创建 AWS.CloudWatch 服务对象。创建一个包含 CloudWatch 警报名称的 JSON 对象。调用 disableAlarmActions 方法以禁用此警报的操作。

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

要运行示例,请在命令行中键入以下内容。

node cw_disablealarmactions.js

此示例代码可在 GitHub 上的此处找到。