

适用于 JavaScript 的 AWS SDK v2 已终止支持。建议您迁移到 [适用于 JavaScript 的 AWS SDK v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/)。有关更多详情和如何迁移的信息，请参阅本[公告](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)。

# 在 Amazon CloudWatch Logs 中使用订阅筛选条件
<a name="cloudwatch-examples-subscriptions"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/zh_cn/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**此 Node.js 代码示例演示：**
+ 如何在 CloudWatch Logs 中为日志事件创建和删除筛选条件。

## 情景
<a name="cloudwatch-examples-subscriptions-scenario"></a>

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

本示例使用一系列 Node.js 模块在 CloudWatch Logs 中列出、创建和删除订阅筛选条件。日志事件的目标是 Lambda 函数。这些 Node.js 模块使用 SDK for JavaScript，通过 `CloudWatchLogs` 客户端类的以下方法来管理订阅筛选条件：
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchLogs.html#putSubscriptionFilters-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchLogs.html#putSubscriptionFilters-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchLogs.html#describeSubscriptionFilters-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchLogs.html#describeSubscriptionFilters-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchLogs.html#deleteSubscriptionFilter-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchLogs.html#deleteSubscriptionFilter-property)

有关 CloudWatch Logs 订阅的更多信息，请参阅《Amazon CloudWatch Logs 用户指南》**中的[使用订阅实时处理日志数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Subscriptions.html)。

## 先决条件任务
<a name="cloudwatch-examples-subscriptions-prerequisites"></a>

要设置和运行此示例，您必须先完成以下任务：
+ 安装 Node.js。有关安装 Node.js 的更多信息，请参阅 [Node.js 网站](https://nodejs.org)。
+ 使用用户凭证创建共享配置文件。有关提供共享凭证文件的更多信息，请参阅[从共享凭证文件加载 Node.js 中的凭证](loading-node-credentials-shared.md)。
+ 创建 Lambda 函数作为日志事件的目标。您将需要使用此函数的 ARN。有关设置 Lambda 函数的更多信息，请参阅《Amazon CloudWatch Logs 用户指南》**中的 [AWS Lambda 订阅筛选条件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html#LambdaFunctionExample)。
+ 创建一个 IAM 角色，其策略授予权限以调用您创建的 Lambda 函数并授予对 CloudWatch Logs 的完全访问权，或者将以下策略应用于您为 Lambda 函数创建的执行角色。有关创建 IAM 角色的更多信息，请参阅《IAM 用户指南》**中的[创建向 AWS 服务委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

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

------
#### [ JSON ]

****  

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

------

## 描述现有订阅筛选条件
<a name="cloudwatch-examples-subscriptions-describing"></a>

创建文件名为 `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 上的此处](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/cloudwatch-logs/cwl_describesubscriptionfilters.js)找到。

## 创建订阅筛选条件
<a name="cloudwatch-examples-subscriptions-creating"></a>

创建文件名为 `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 上的此处](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/cloudwatch-logs/cwl_putsubscriptionfilter.js)找到。

## 删除订阅筛选条件
<a name="cloudwatch-examples-subscriptions-deleting"></a>

创建文件名为 `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 上的此处](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/cloudwatch-logs/cwl_deletesubscriptionfilter.js)找到。