Amazon CloudWatch Logs でのサブスクリプションフィルターの使用 - AWS SDK for JavaScript

AWS SDK for JavaScript v2 の近日発表 end-of-support しました。AWS SDK for JavaScript v3 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon CloudWatch Logs でのサブスクリプションフィルターの使用

JavaScript code example that applies to Node.js execution

この Node.js コード例は以下を示しています。

  • CloudWatch Logs でログイベントのフィルターを作成および削除する方法。

シナリオ

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

この例では、一連の Node.js モジュールを使用して CloudWatch Logs のサブスクリプションフィルターを一覧表示、作成、削除します。ログイベントの送信先は Lambda 関数です。Node.js モジュールは、CloudWatchLogs クライアントクラスの次のメソッドを使用してサブスクリプションフィルターを管理するために SDK for JavaScript を使用します。

CloudWatch Logs サブスクリプションの詳細については、Amazon CloudWatch Logs ユーザーガイドサブスクリプションを使用したログデータのリアルタイム処理を参照してください。

前提条件タスク

この例をセットアップして実行するには、まず次のタスクを完了する必要があります。

  • Node.js をインストールします。Node.js をインストールする方法の詳細については、Node.js ウェブサイトを参照してください。

  • ユーザーの認証情報を使用して、共有設定ファイルを作成します。共有認証情報ファイルの提供の詳細については、共有認証情報ファイルから Node.js に認証情報をロードする を参照してください。

  • ログイベントの送信先として Lambda 関数を作成します。この関数の ARN を使用する必要があります。Lambda 関数の設定の詳細については、Amazon CloudWatch Logs ユーザーガイドAWS Lambda によるサブスクリプションフィルターを参照してください。

  • 作成した Lambda 関数を呼び出す許可を付与したり、CloudWatch Logs へのフルアクセス権限を付与したりするポリシーを持つ IAM ロールを作成するか、Lambda 関数用に作成する実行ロールに次のポリシーを適用します。IAM ロールの作成の詳細については、IAM ユーザーガイドAWS のサービスに許可を委任するロールの作成を参照してください。

IAM ロールを作成するときに、以下のロールポリシーを使用します。

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

既存のサブスクリプションのフィルターの記述

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にあります。

サブスクリプションフィルターを作成する

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にあります。

サブスクリプションフィルターの削除

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にあります。