有关 CloudWatch Events 的更多信息,请参阅 使用 PutEvents 添加事件 中的 Amazon CloudWatch Events 用户指南 .

先决条件任务

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

  • 安装 Node.js。有关安装 Node.js 的更多信息,请参阅 Node.js 网站

  • 使用用户凭证创建共享配置文件。有关提供共享凭证文件的更多信息,请参阅 从共享凭证文件加载 Node.js 中的凭证

  • 创建 Lambda 函数 hello-world 将蓝图用作事件的目标。要了解如何操作,请参阅 第 1 步:创建AWS Lambda功能 中的 Amazon CloudWatch Events 用户指南 .

  • 创建 IAM 角色,其策略向 CloudWatch Events 授予权限并包括 events.amazonaws.com 作为可信任的实体。有关创建 IAM 角色的更多信息,请参阅 创建向AWS服务 中的 IAM 用户指南 .

在创建 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 事件,请创建 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 上的此处找到。

添加AWS Lambda功能目标

创建文件名为 cwe_puttargets.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 CloudWatch 事件,请创建AWS.CloudWatchEvents服务对象。创建一个 JSON 对象,其中包含指定要附加到目标的规则所需的参数的 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 事件,请创建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);