将事件发送到 Amazon CloudWatch Events - AWS SDK for JavaScript

帮助我们改进AWS SDK for JavaScript版本 3 (V3) 文档,方法是使用反馈链接,或者在上创建议题或拉取请求GitHub.

这些区域有:AWS SDK for JavaScriptV3 API 参考指南详细描述了所有的 API 操作AWS SDK for JavaScript版本 3 (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 模块使用适用于 JavaScript 的开发工具包使用以下方法来管理实例:CloudWatchEvents客户端类:

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

先决条件任

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

  • 设置项目环境以运行这些 Node TypeScript 示例,然后安装所需的AWS SDK for JavaScript和第三方模块。按照上的说明操作GitHub.

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

  • 创建AWS Lambda使用hello-world蓝图作为事件的目标。要了解如何操作,请参阅第 1 步:创建 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" } ] }
重要

这些示例演示了如何使用 ECMASCRIPT6 (ES6) 导入/导出客户端服务对象和命令。

创建计划规则

创建libs并创建文件名为的 Node.js 模块。cloudWatchEventsClient.js. 将下面的代码复制并粘贴到其中,这将创建 CloudWatch Events 客户端对象。Replace领域使用您的AWSregion region。

import { CloudWatchEventsClient } from "@aws-sdk/client-cloudwatch-events"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon CloudWatch service client object. export const cweClient = new CloudWatchEventsClient({ region: REGION });

这个代码是可用的GitHub 上的位置.

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

  • 规则的名称

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

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

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

// Import required AWS SDK clients and commands for Node.js import { PutRuleCommand } from "@aws-sdk/client-cloudwatch-events"; import { cweClient } from "./libs/cloudWatchEventsClient.js"; // Set the parameters export const params = { Name: "DEMO_EVENT", RoleArn: "IAM_ROLE_ARN", //IAM_ROLE_ARN ScheduleExpression: "rate(5 minutes)", State: "ENABLED", }; export const run = async () => { try { const data = await cweClient.send(new PutRuleCommand(params)); console.log("Success, scheduled rule created; Rule ARN:", data); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; // Uncomment this line to run execution within this file. // run();

要运行示例,请在命令提示符处输入以下内容。

node putRule.js

可以找到这个示例代码GitHub 上的位置.

添加 Lambda 函数目标

创建libs创建文件名为的 Node.js 模块cloudWatchEventsClient.js. 将下面的代码复制并粘贴到其中,这将创建 CloudWatch Events 客户端对象。Replace领域使用您的AWSregion region。

import { CloudWatchEventsClient } from "@aws-sdk/client-cloudwatch-events"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon CloudWatch service client object. export const cweClient = new CloudWatchEventsClient({ region: REGION });

这个代码是可用的GitHub 上的位置.

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

注意

ReplaceLAMBDA_函数_ARN使用 Lambda 函数的 ARN。

// Import required AWS SDK clients and commands for Node.js import { PutTargetsCommand } from "@aws-sdk/client-cloudwatch-events"; import { cweClient } from "./libs/cloudWatchEventsClient.js"; // Set the parameters export const params = { Rule: "DEMO_EVENT", Targets: [ { Arn: "LAMBDA_FUNCTION_ARN", //LAMBDA_FUNCTION_ARN Id: "myCloudWatchEventsTarget", }, ], }; export const run = async () => { try { const data = await cweClient.send(new PutTargetsCommand(params)); console.log("Success, target added; requestID: ", data); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; // Uncomment this line to run execution within this file. // run();

要运行示例,请在命令提示符处输入以下内容。

node putTargets.js

可以找到这个示例代码GitHub 上的.

发送事件

创建libs创建文件名为的 Node.js 模块cloudWatchEventsClient.js. 将下面的代码复制并粘贴到其中,这将创建 CloudWatch Events 客户端对象。Replace领域使用您的AWSregion region。

import { CloudWatchEventsClient } from "@aws-sdk/client-cloudwatch-events"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon CloudWatch service client object. export const cweClient = new CloudWatchEventsClient({ region: REGION });

这个代码是可用的GitHub 上的.

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

注意

Replace资源CE_ARN资源受事件的影响。

// Import required AWS SDK clients and commands for Node.js import { PutEventsCommand } from "@aws-sdk/client-cloudwatch-events"; import { cweClient } from "./libs/cloudWatchEventsClient.js"; // Set the parameters export const params = { Entries: [ { Detail: '{ "key1": "value1", "key2": "value2" }', DetailType: "appRequestSubmitted", Resources: [ "RESOURCE_ARN", //RESOURCE_ARN ], Source: "com.company.app", }, ], }; export const run = async () => { try { const data = await cweClient.send(new PutEventsCommand(params)); console.log("Success, event sent; requestID:", data); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; // Uncomment this line to run execution within this file. // run();

要运行示例,请在命令提示符处输入以下内容。

node putEvents.js

可以找到这个示例代码GitHub 上的.