

AWS SDK for JavaScript v2 はサポート終了となりました。[AWS SDK for JavaScript 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/ja_jp/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**この Node.js コード例は以下を示しています。**
+ CloudWatch Logs でログイベントのフィルターを作成および削除する方法。

## シナリオ
<a name="cloudwatch-examples-subscriptions-scenario"></a>

サブスクリプションにより、CloudWatch Logs からのログイベントのリアルタイムフィードにアクセスし、カスタム処理、分析、他のシステムへのロードを行うために、Amazon Kinesis stream や AWS Lambda などの他のサービスにそのフィードを配信することができます。サブスクリプションフィルターにより、AWS リソースに配信されるログイベントをフィルタリングするために使用するパターンを定義できます。

この例では、一連の Node.js モジュールを使用して CloudWatch Logs のサブスクリプションフィルターを一覧表示、作成、削除します。ログイベントの送信先は Lambda 関数です。Node.js モジュールは、`CloudWatchLogs` クライアントクラスの次のメソッドを使用してサブスクリプションフィルターを管理するために SDK for JavaScript を使用します。
+ [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)を参照してください。
+ 作成した Lambda 関数を呼び出す許可を付与したり、CloudWatch Logs へのフルアクセス権限を付与したりするポリシーを持つ IAM ロールを作成するか、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 モジュールを作成します。前に示したように SDK を必ず設定します。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 モジュールを作成します。前に示したように SDK を必ず設定します。CloudWatch Logs にアクセスするには、`AWS.CloudWatchLogs` サービスオブジェクトを作成します。送信先の Lambda 関数の ARN、フィルターの名前、フィルタリング用の文字列パターン、ロググループの名前など、フィルターの作成に必要なパラメータを含む JSON オブジェクトを作成します。`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 モジュールを作成します。前に示したように SDK を必ず設定します。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)にあります。