在 Amazon CloudWatch Logs 中使用订阅筛选条件 - AWS SDK for JavaScript

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

在 Amazon CloudWatch Logs 中使用订阅筛选条件

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何在 CloudWatch Logs 中为日志事件创建和删除筛选条件。

情景

通过订阅,可以从 CloudWatch Logs 提供对日志事件的实时源的访问,并将该源传输到 Amazon Kinesis 流或 AWS Lambda 等其它服务,以对其进行自定义处理、分析或将其加载到其它系统。订阅筛选条件定义用于筛选传输到您的 AWS 资源的日志事件的模式。

本示例使用一系列 Node.js 模块在 CloudWatch Logs 中列出、创建和删除订阅筛选条件。日志事件的目标是 Lambda 函数。这些 Node.js 模块使用 SDK for JavaScript,通过 CloudWatchLogs 客户端类的以下方法来管理订阅筛选条件:

有关 CloudWatch Logs 订阅的更多信息,请参阅《Amazon CloudWatch Logs 用户指南》中的使用订阅实时处理日志数据

先决条件任务

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

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

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

  • 创建 Lambda 函数作为日志事件的目标。您将需要使用此函数的 ARN。有关设置 Lambda 函数的更多信息,请参阅《Amazon CloudWatch Logs 用户指南》中的 AWS Lambda 订阅筛选条件

  • 创建一个 IAM 角色,其策略授予权限以调用您创建的 Lambda 函数并授予对 CloudWatch Logs 的完全访问权,或者将以下策略应用于您为 Lambda 函数创建的执行角色。有关创建 IAM 角色的更多信息,请参阅《IAM 用户指南》中的创建向 AWS 服务委派权限的角色

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "*" ] } ] }

描述现有订阅筛选条件

创建文件名为 cwl_describesubscriptionfilters.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 CloudWatch Logs,请创建 AWS.CloudWatchLogs 服务对象。创建一个包含描述现有筛选条件所需参数的 JSON 对象,其中包括日志组的名称以及您所要描述的筛选条件最大数。调用 describeSubscriptionFilters 方法。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the CloudWatchLogs service object var cwl = new AWS.CloudWatchLogs({ apiVersion: "2014-03-28" }); var params = { logGroupName: "GROUP_NAME", limit: 5, }; cwl.describeSubscriptionFilters(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.subscriptionFilters); } });

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

node cwl_describesubscriptionfilters.js

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

创建订阅筛选条件

创建文件名为 cwl_putsubscriptionfilter.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 CloudWatch Logs,请创建 AWS.CloudWatchLogs 服务对象。创建一个 JSON 对象,其中包含创建筛选条件所需的参数,包括目标 Lambda 函数 ARN、筛选条件名称、要筛选的字符串模式以及日志组名称。调用 putSubscriptionFilters 方法。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the CloudWatchLogs service object var cwl = new AWS.CloudWatchLogs({ apiVersion: "2014-03-28" }); var params = { destinationArn: "LAMBDA_FUNCTION_ARN", filterName: "FILTER_NAME", filterPattern: "ERROR", logGroupName: "LOG_GROUP", }; cwl.putSubscriptionFilter(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

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

node cwl_putsubscriptionfilter.js

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

删除订阅筛选条件

创建文件名为 cwl_deletesubscriptionfilters.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 CloudWatch Logs,请创建 AWS.CloudWatchLogs 服务对象。创建一个包含删除筛选条件所需的参数的 JSON 对象,其中包括筛选条件的名称和日志组。调用 deleteSubscriptionFilters 方法。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the CloudWatchLogs service object var cwl = new AWS.CloudWatchLogs({ apiVersion: "2014-03-28" }); var params = { filterName: "FILTER", logGroupName: "LOG_GROUP", }; cwl.deleteSubscriptionFilter(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

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

node cwl_deletesubscriptionfilter.js

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