Amazon CloudWatch Logs 구독 필터 사용 - AWS SDK for JavaScript

곧 AWS SDK for JavaScript(v2)에 대한 지원이 종료될 예정임을 알려드립니다. 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 스트림 또는 AWS Lambda와 같은 다른 서비스에 전달할 수 있습니다. 구독 필터는 AWS 리소스에 전달되는 로그 이벤트를 필터링하는 데 사용할 패턴을 정의합니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 CloudWatch Logs에서 구독 필터를 나열, 생성 및 삭제합니다. 로그 이벤트의 대상은 Lambda 함수입니다. Node.js 모듈은 SDK for JavaScript로 CloudWatchLogs 클라이언트 클래스의 다음 메서드를 사용하여 구독 필터를 관리합니다.

자세한 내용은 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에서 찾을 수 있습니다.