帮助我们改进Amazon SDK for JavaScript版本 3 (V3) 文档,方法是使用反馈链接,或者在上创建议题或拉取请求GitHub
这些区域有:Amazon SDK for JavaScriptV3 API 参考指南详细描述了Amazon SDK for JavaScript版本 3 (V3)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon CloudWatch 中使用警报操作
此 Node.js 代码示例演示:
如何根据 CloudWatch 警报自动更改 Amazon EC2 实例的状态。
场景
通过警报操作,您可以创建自动停止、终止、重启或恢复 Amazon EC2 实例的警报。当不再需要某个实例运行时,您可使用停止或终止操作。使用重启和恢复操作可以自动重启这些实例。
在此示例中,使用了一系列 Node.js 模块来定义 CloudWatch 中的警报操作,这些操作触发 Amazon EC2 实例的重启。Node.js 模块使用适用于 JavaScript 的开发工具包,通过以下方法来管理 Amazon EC2 实例。CloudWatch
客户端类:
有关 CloudWatch 警报操作的更多信息,请参阅创建警报以停止、终止、重启或恢复实例中的Amazon CloudWatch 用户指南.
先决条件任
要设置和运行此示例,您必须先完成以下任务:
-
设置项目环境以运行这些 Node TypeScript 示例,然后安装所需的Amazon SDK for JavaScript和第三方模块。按照上的说明操作GitHub
. 使用用户凭证创建共享配置文件。有关提供共享凭证文件的更多信息,请参阅从共享凭证文件加载 Node.js 中的凭证。
创建一个 IAM 角色,其策略授予描述、重启、停止或终止 Amazon EC2 实例的权限。有关创建 IAM 角色的更多信息,请参阅创建向Amazon服务中的IAM 用户指南.
这些示例使用 ECMASCRIPT6 (ES6)。这需要 Node.js 版本 13.x 或更高版本。要下载并安装最新版本的 Node.js,请参阅。Node.js 下载内容。
但是,如果你更喜欢使用 CommonJS 语法,请参阅JavaScript ES6/常用JS 语法
在创建 IAM 角色时,使用以下角色策略。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:Describe*", "ec2:Describe*", "ec2:RebootInstances", "ec2:StopInstances*", "ec2:TerminateInstances" ], "Resource": [ "*" ] } ] }
这些示例演示了如何使用 ECMASCRIPT6 (ES6) 导入/导出客户端服务对象和命令。
这需要 Node.js 版本 13.x 或更高版本。要下载并安装最新版本的 Node.js,请参阅。Node.js 下载内容。
. 如果您希望使用 CommonJS 语法,请参阅JavaScript ES6/常用JS 语法.
针对警报创建和启用操作
创建libs
创建文件名为的 Node.js 模块cloudWatchClient.js
. 将下面的代码复制并粘贴到其中,这将创建 CloudWatch 客户端对象。Replace领域
使用您的Amazonregion region。
import { CloudWatchClient } from "@aws-sdk/client-cloudwatch"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon CloudWatch service client object. export const cwClient = new CloudWatchClient({ region: REGION });
这个代码是可用的GitHub 上的位置
创建文件名为 enableAlarmActions.js
的 Node.js 模块。确保按前面所示配置开发工具包,包括下载 CloudWatch 客户端。
创建 JSON 对象以保存用于创建警报的参数,并指定ActionsEnabled
如同true
并为警报将触发的操作提供一系列 Amazon 资源名称 (ARN)。调用PutMetricAlarmCommand
方法CloudWatch
客户端服务对象,这会在警报不存在时创建警报,在警报存在时更新警报。
在适用于的回调函数中PutMetricAlarmCommand
,在成功完成时,创建一个包含 CloudWatch 警报的名称的 JSON 对象。调用 EnableAlarmActionsCommand
方法以启用警报操作。
ReplaceALARM_NAME
用警报的名称,INSTANCE_ID
将用 Amazon EC2 实例的 ID。
// Import required AWS SDK clients and commands for Node.js import { PutMetricAlarmCommand, EnableAlarmActionsCommand, } from "@aws-sdk/client-cloudwatch"; import { cwClient } from "./libs/cloudWatchClient.js"; // Set the parameters export const params = { AlarmName: "ALARM_NAME", //ALARM_NAME ComparisonOperator: "GreaterThanThreshold", EvaluationPeriods: 1, MetricName: "CPUUtilization", Namespace: "AWS/EC2", Period: 60, Statistic: "Average", Threshold: 70.0, ActionsEnabled: true, AlarmActions: ["ACTION_ARN"], //e.g., "arn:aws:automate:us-east-1:ec2:stop" AlarmDescription: "Alarm when server CPU exceeds 70%", Dimensions: [ { Name: "InstanceId", Value: "INSTANCE_ID", }, ], Unit: "Percent", }; export const run = async () => { try { const data = await cwClient.send(new PutMetricAlarmCommand(params)); console.log("Alarm action added; RequestID:", data); return data; const paramsEnableAlarmAction = { AlarmNames: [params.AlarmName], }; try { const data = await cwClient.send( new EnableAlarmActionsCommand(paramsEnableAlarmAction) ); console.log("Alarm action enabled; RequestID:", data.$metadata.requestId); } catch (err) { console.log("Error", err); return data; } } catch (err) { console.log("Error", err); } }; // Uncomment this line to run execution within this file. // run();
要运行示例,请在命令提示符处输入以下内容。
node enableAlarmActions.js
可以找到这个示例代码GitHub 上的位置
禁用警报上的操作
创建libs
创建文件名为的 Node.js 模块cloudWatchClient.js
. 将下面的代码复制并粘贴到其中,这将创建 CloudWatch 客户端对象。Replace领域
使用您的Amazonregion region。
import { CloudWatchClient } from "@aws-sdk/client-cloudwatch"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon CloudWatch service client object. export const cwClient = new CloudWatchClient({ region: REGION });
这个代码是可用的GitHub 上的位置
创建文件名为 disableAlarmActions.js
的 Node.js 模块。确保按前面所示配置开发工具包,包括下载 CloudWatch 客户端。创建一个包含 CloudWatch 警报的名称的 JSON 对象。调用 DisableAlarmActionsCommand
方法以禁用此警报的操作。
ReplaceALARM_NAME
警报名称。
// Import required AWS SDK clients and commands for Node.js import { DisableAlarmActionsCommand } from "@aws-sdk/client-cloudwatch"; import { cwClient } from "./libs/cloudWatchClient.js"; // Set the parameters export const params = { AlarmNames: "ALARM_NAME" }; // e.g., "Web_Server_CPU_Utilization" export const run = async () => { try { const data = await cwClient.send(new DisableAlarmActionsCommand(params)); console.log("Success, alarm disabled:", data); return data; } catch (err) { console.log("Error", err); } }; // Uncomment this line to run execution within this file. // run();
要运行示例,请在命令提示符处输入以下内容。
node disableAlarmActions.js
可以找到这个示例代码GitHub 上的位置