帮助我们改进Amazon SDK for JavaScript版本 3 (V3) 文档,方法是使用反馈链接,或者在上创建议题或拉取请求GitHub
这些区域有:Amazon SDK for JavaScriptV3 API 参考指南详细描述了Amazon SDK for JavaScript版本 3 (V3)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon CloudWatch Logs 中使用订阅筛选器
此 Node.js 代码示例演示:
如何在 CloudWatch Logs 中创建和删除日志事件的筛选条件。
场景
通过订阅,可以从 CloudWatch Logs 提供对日志事件的实时源的访问,并将该源传输到 Amazon Kinesis 流或Amazon Lambda,用于自定义处理、分析或加载到其他系统。订阅筛选器定义用于筛选传输到您的日志事件的模式。Amazon资源。
在本示例中,使用一系列 Node.js 模块在 CloudWatch Logs 中列出、创建和删除订阅筛选条件。日志事件的目标是 Lambda 函数。Node.js 模块使用适用于 JavaScript 的开发工具包,通过以下方法来管理订阅筛选条件。CloudWatchLogs
客户端类:
有关 CloudWatch Logs 订阅的更多信息,请参阅。用订阅实时处理日志数据中的Amazon CloudWatch Logs 用户指南.
先决条件任
要设置和运行此示例,您必须先完成以下任务:
-
设置项目环境以运行这些 Node TypeScript 示例,然后安装所需的Amazon SDK for JavaScript和第三方模块。按照上的说明操作GitHub
. 使用用户凭证创建共享配置文件。有关提供共享凭证文件的更多信息,请参阅从共享凭证文件加载 Node.js 中的凭证。
创建Amazon Lambda函数作为日志事件的目标。您需要使用此函数的 Amazon 资源名称 (ARN)。有关设置 Lambda 函数的更多信息,请参阅。Lambda 的订阅筛选器中的Amazon CloudWatch Logs 用户指南.
创建一个 IAM 角色,其策略授予权限以调用您创建的 Lambda 函数并授予对 CloudWatch Logs 的完全访问权,或者将以下策略应用于您为 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) 导入/导出客户端服务对象和命令。
这需要 Node.js 版本 13.x 或更高版本。要下载并安装最新版本的 Node.js,请参阅。Node.js 下载内容。
. 如果您希望使用 CommonJS 语法,请参阅JavaScript ES6/常用JS 语法.
描述现有订阅筛选器
创建libs
创建文件名为的 Node.js 模块cloudWatchLogsClient.js
. 将下面的代码复制并粘贴到其中,这将创建 CloudWatch Logs 客户端对象。Replace领域
使用您的Amazonregion 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领域
使用您的Amazonregion 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领域
使用您的Amazonregion 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 上的