将事件发送到 Amazon CloudWatch Events - 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 Events

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何创建和更新用于触发事件的规则。

  • 如何定义一个或多个目标以响应事件。

  • 如何发送与目标匹配的事件以进行处理。

情景

CloudWatch Events 提供几乎实时的系统事件流,这些事件描述了 Amazon Web Services 资源中针对任何不同目标的更改。通过简单规则,您可以匹配事件并将事件路由到一个或多个目标函数或流。

本示例使用一系列 Node.js 模块将事件发送到 CloudWatch Events。这些 Node.js 模块使用 SDK for JavaScript,通过 CloudWatchEvents 客户端类的以下方法来管理实例:

有关 CloudWatch Events 的更多信息,请参阅《Amazon CloudWatch Events User Guide》中的 Adding Events with PutEvents

先决条件任务

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

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchEventsFullAccess", "Effect": "Allow", "Action": "events:*", "Resource": "*" }, { "Sid": "IAMPassRoleForCloudWatchEvents", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/AWS_Events_Invoke_Targets" } ] }

在创建 IAM 角色时,使用以下信任关系。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

创建计划规则

创建文件名为 cwe_putrule.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 CloudWatch Events,请创建一个 AWS.CloudWatchEvents 服务对象。创建一个包含指定新计划规则所需的参数的 JSON 对象,其中包括下列内容:

  • 规则的名称

  • 您之前创建的 IAM 角色的 ARN

  • 每五分钟触发计划的表达式

调用 putRule 方法以创建规则。回调返回新规则或更新后规则的 ARN。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Name: "DEMO_EVENT", RoleArn: "IAM_ROLE_ARN", ScheduleExpression: "rate(5 minutes)", State: "ENABLED", }; cwevents.putRule(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.RuleArn); } });

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

node cwe_putrule.js

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

添加 Amazon Lambda 函数目标

创建文件名为 cwe_puttargets.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 CloudWatch Events,请创建一个 AWS.CloudWatchEvents 服务对象。创建一个包含指定要附加到目标的规则所需的参数的 JSON 对象,其中包括您创建的 Lambda 函数的 ARN。调用 AWS.CloudWatchEvents 服务对象的 putTargets 方法。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Rule: "DEMO_EVENT", Targets: [ { Arn: "LAMBDA_FUNCTION_ARN", Id: "myCloudWatchEventsTarget", }, ], }; cwevents.putTargets(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

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

node cwe_puttargets.js

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

发送事件

创建文件名为 cwe_putevents.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 CloudWatch Events,请创建一个 AWS.CloudWatchEvents 服务对象。创建一个包含发送事件所需的参数的 JSON 对象。对于每个事件,包括事件源、受事件影响的任意资源的 ARN 以及事件详细信息。调用 AWS.CloudWatchEvents 服务对象的 putEvents 方法。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Entries: [ { Detail: '{ "key1": "value1", "key2": "value2" }', DetailType: "appRequestSubmitted", Resources: ["RESOURCE_ARN"], Source: "com.company.app", }, ], }; cwevents.putEvents(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Entries); } });

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

node cwe_putevents.js

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