在亚马逊中使用订阅筛选条件 CloudWatch 日志 - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon SDK for JavaScriptV3 API 参考指南详细描述了Amazon SDK for JavaScript版本 3 (V3) 的所有 API 操作。

从 2022 年 10 月 1 日起,Amazon SDK for JavaScript(v3) 将终止对 Internet Explorer 11(IE 11)的支持。有关详细信息,请参阅 Amazon SDK for JavaScript(v3) 中宣布终止对 Internet Explorer 11 的支持

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在亚马逊中使用订阅筛选条件 CloudWatch 日志

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何在为日志事件添加和删除筛选条件 CloudWatch 日志。

场景

订阅可访问来自的实时日志事件源 CloudWatch 记录该源并将其传输到其他服务,例如 Amazon Kinesis 直播或Amazon Lambda,用于自定义处理、分析或加载到其他系统。订阅筛选器定义用于筛选传输到您的 Log 事件的模式。Amazon资源。

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

有关 的更多信息 CloudWatch 日志订阅,请参阅使用订阅实时处理日志数据中的亚马逊 CloudWatch 日志用户指南.

决决决条件任务

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

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

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

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

  • 创建一个 IAM 角色,其策略授予权限以调用您创建的 Lambda 函数并授予对的完全访问权 CloudWatch 记录或将以下策略应用于您为 Lambda 函数创建的执行角色。有关创建 IAM 角色的更多信息,请参阅创建向委派权限的角色Amazon服务中的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 记录客户端对象。Replace领域使用调用Amazon此处。

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 记录客户端对象。Replace领域用您的Amazon此处。

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_FUNCTION-使用 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 记录客户端对象。Replace领域使用调用Amazon此处。

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.