在 Amazon CloudWatch Logs 中使用订阅筛选器 - 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 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 模块使用适用于 JavaScript 的开发工具包,通过以下方法来管理订阅筛选条件。CloudWatchLogs客户端类:

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

先决条件任

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

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

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

  • 创建AWS Lambda函数作为日志事件的目标。您需要使用此函数的 Amazon 资源名称 (ARN)。有关设置 Lambda 函数的更多信息,请参阅。Lambda 的订阅筛选器中的Amazon CloudWatch Logs 用户指南.

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

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

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

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

描述现有订阅筛选器

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

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

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

创建文件名为 describeSubscriptionFilters.js 的 Node.js 模块。确保按前面所示配置开发工具包,包括下载 CloudWatch 客户端。创建一个包含描述现有筛选条件所需参数的 JSON 对象,其中包括日志组的名称以及要描述的筛选条件最大数。调用 DescribeSubscriptionFiltersCommand 方法。

注意

ReplaceGROUP_NAME用组的名称进行操作。

// Import required AWS SDK clients and commands for Node.js import { DescribeSubscriptionFiltersCommand } from "@aws-sdk/client-cloudwatch-logs"; import { cwlClient } from "./libs/cloudWatchLogsClient.js"; // Set the parameters export const params = { logGroupName: "GROUP_NAME", //GROUP_NAME limit: 5 }; export const run = async () => { try { const data = await cwlClient.send( new DescribeSubscriptionFiltersCommand(params) ); console.log("Success", data.subscriptionFilters); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; // Uncomment this line to run execution within this file. // run();

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

node describeSubscriptionFilters.js

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

创建订阅筛选器

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

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

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

创建文件名为 describeSubscriptionFilters.js 的 Node.js 模块。确保按前面所示配置开发工具包,包括下载 CloudWatch 客户端。创建一个包含创建筛选条件所需参数的 JSON 对象,其中包括目标 Lambda 函数 ARN、筛选器的名称、要筛选的字符串模式以及日志组名称等参数。调用 PutSubscriptionFiltersCommand 方法。

注意

ReplaceLAMBDA_FUNC-ARN使用 Lambda 函数的 ARN,FILTER _NAME用筛选器的名称,并LOG_GROUP(位于日志组中)。

// Import required AWS SDK clients and commands for Node.js import { PutSubscriptionFilterCommand, } from "@aws-sdk/client-cloudwatch-logs"; import { cwlClient } from "./libs/cloudWatchLogsClient.js"; // Set the parameters export const params = { destinationArn: "LAMBDA_FUNCTION_ARN", //LAMBDA_FUNCTION_ARN filterName: "FILTER_NAME", //FILTER_NAME filterPattern: "ERROR", logGroupName: "LOG_GROUP", //LOG_GROUP }; export const run = async () => { try { const data = await cwlClient.send(new PutSubscriptionFilterCommand(params)); console.log("Success", data.subscriptionFilters); return data; //For unit tests. } catch (err) { console.log("Error", err); } }; // Uncomment this line to run execution within this file. // run();

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

node describeSubscriptionFilters.js

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

删除订阅筛选器

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

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

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

创建文件名为 deletesubScriptionFilters.js 的 Node.js 模块。确保按前面所示配置开发工具包,包括下载 CloudWatch 客户端。创建一个包含删除筛选条件所需的参数的 JSON 对象,其中包括筛选条件的名称和日志组。调用 DeleteSubscriptionFiltersCommand 方法。

注意

ReplaceFILTER _NAME用筛选器的名称,并LOG_GROUP(位于日志组中)。

// Import required AWS SDK clients and commands for Node.js import { DeleteSubscriptionFilterCommand } from "@aws-sdk/client-cloudwatch-logs"; import { cwlClient } from "./libs/cloudWatchLogsClient.js"; // Set the parameters export const params = { filterName: "FILTER", //FILTER logGroupName: "LOG_GROUP", //LOG_GROUP }; export const run = async () => { try { const data = await cwlClient.send( new DeleteSubscriptionFilterCommand(params) ); console.log( "Success, subscription filter deleted", data ); return data; //For unit tests. } catch (err) { console.log("Error", err); } }; // Uncomment this line to run execution within this file. // run();

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

node deletesubScriptionFilters.js

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