CloudWatch 콘솔을 사용하여 Kinesis에 대한 구독 필터를 생성, 구성 및 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 4월 12일

CloudWatch 콘솔을 사용하여 Amazon CloudWatch Logs를 Amazon Kinesis로 스트리밍하기 위한 구독 필터를 생성하고 싶습니다. 어떻게 해야 합니까?

간략한 설명

CloudWatch 로그는 거의 실시간으로 동일한 계정으로 전송되거나 교차 계정 Kinesis 또는 Amazon Kinesis Data Firehose 대상으로 전송될 수 있습니다. 구독 필터를 사용하여 이 작업을 수행할 수 있습니다. CloudWatch Logs 콘솔은 대상 및 설정 구성을 지원합니다.

필터 패턴 구문을 사용하여 구독 필터를 구성하는 방법에 대한 자세한 내용은 필터 및 패턴 구문을 참조하세요.

해결 방법

동일한 계정 또는 현재 계정의 Kinesis 데이터 스트림에 대한 구독 구성

참고: CloudWatch 로그 그룹 리전과 Kinesis 대상 리전은 동일해야 합니다.

구독을 생성하기 전에 다음을 수행합니다.

사용자 지정 IAM 역할 및 역할 정책을 생성하려면 다음을 수행합니다.

1.    관리자 권한이 있는 사용자로 IAM 콘솔을 엽니다.

2.    탐색 창에서 [Policies]를 선택합니다.

3.    콘텐츠 창에서 [정책 생성]을 선택합니다.

4.    다음 JSON 정책 문서를 복사하여 JSON 탭에 붙여 넣습니다.

역할 권한

{
  "Statement": [{
    "Effect": "Allow",
    "Action": "kinesis:PutRecord",
    "Resource": "arn:aws:kinesis:<REGION>:<ACCOUNT_ID>:stream/<STREAM_NAME>"
  }]
}

5.    IAM 콘솔을 엽니다.

6.    콘솔의 탐색 창에서 [역할]를 선택한 다음, [역할 생성]을 선택합니다.

7.    [사용자 지정 신뢰 정책] 역할 유형을 선택합니다.

8.    사용자 지정 신뢰 정책 섹션에서 역할에 대한 사용자 지정 신뢰 정책을 입력하거나 붙여 넣습니다. 자세한 내용은 IAM 정책 생성을 참조하세요.

9.    [Next]를 선택합니다.

10.    이전 단계에서 생성한 사용자 지정 IAM 정책을 선택합니다.

11.    [다음], [역할 생성]을 선택합니다.

신뢰 정책

{
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "Service": "logs.region.amazonaws.com"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "StringLike": {
        "aws:SourceArn": "arn:aws:logs:<REGION>:<ACCOUNT_ID>:*"
      }
    }
  }
}

Kinesis 스트림과 IAM 역할을 생성한 후 구독 필터를 생성할 수 있습니다.

1.    CloudWatch 콘솔을 엽니다.

2.    로그 그룹을 선택합니다.

3.    작업, 구독 필터를 선택합니다.

4.    대상을 구성하려면 Kinesis 구독 필터 생성을 선택합니다.

5.    현재 계정을 선택합니다.

6.    드롭다운 목록에서 Kinesis 데이터 스트림을 선택합니다.

7.    이전에 생성한 IAM 역할을 선택합니다.

8.    배포 방법을 검토합니다.

로그 스트림별 - 다운스트림 소비자가 로그 스트림별로 로그 이벤트를 집계할 수 있지만 확인하지만, 효율성이 떨어질 수 있습니다. 이 방법을 사용하면 더 많은 샤드가 필요하기 때문에 스트리밍 비용이 더 많이 발생할 수도 있습니다.

랜덤 - Kinesis 스트림 샤드에 로드를 분산하지만, 다운스트림 소비자는 로그 스트림별로 로그 이벤트를 집계할 수 없습니다.

9.    로그 형식 및 필터 구성:

로그 형식을 선택합니다. 형식은 Amazon VPC 흐름 로그, AWS CloudTrail 또는 Amazon VPC, CloudTrail 또는 Lambda에서 게시한 로그의 경우 AWS Lambda일 수 있습니다. 또는 들어오는 로그 이벤트에 따라 JSON, 공백으로 구분 또는 기타를 선택할 수 있습니다.

구독 필터 패턴 섹션에서 필터 패턴을 정의합니다.

구독 필터의 이름을 입력합니다.

10.    기존 로그 이벤트 데이터로 패턴을 확인합니다.

11.    확인 후 스트리밍 시작을 선택합니다.

12.    (선택 사항) 로그 이벤트 흐름의 유효성을 검사하여 데이터 스트림이 작동하는지 확인합니다.

교차 계정 Kinesis 데이터 스트림 대상에 대한 구성

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

CloudWatch 로그 이벤트를 서로 다른 AWS 계정 및 리전의 Kinesis 데이터 스트림으로 전송할 수 있습니다. 이렇게 하려면 다음 예제와 같이 AWS 리전을 지정하면서 구독과 교차 계정 로그 데이터 공유를 설정합니다.

참고: 이 예시에서는 us-east-1 리전의 CloudWatch Logs가 us-west-2에 있는 다른 AWS 사용자의 Kinesis 데이터 스트림으로 전송됩니다. 로그 데이터 수신자의 AWS 계정 ID는 222222222222이고 로그 데이터 발신자의 AWS 계정 ID는 111111111111입니다.

수신자 계정 222222222222에서 대상 데이터 스트림을 생성합니다.

1.    IAM 역할 및 신뢰 정책을 사용하여 데이터 수신자 계정의 Kinesis에 대상 데이터 스트림을 생성합니다.

2.    create-stream 명령을 사용하여 데이터 스트림을 생성합니다. --region을 지정해야 합니다. 예를 들어 이 명령은 us-west-2YourStreamName 데이터 스트림을 생성합니다.

aws kinesis create-stream --stream-name "YourStreamName" --shard-count 1 --region us-west-2

3.    describe-stream 명령을 사용하여 StreamDescription.StreamStatus 속성을 확인합니다. --region을 지정해야 합니다. 예를 들어 이 명령은 us-west-2에서 YourStreamName 스트림을 확인합니다.

aws kinesis describe-stream --stream-name "YourStreamName" --region us-west-2

4.    put-destination 명령을 사용하여 CloudWatch Logs 대상을 생성합니다. --role-arn에 대한 --region을 소스 CloudWatch 로그와 동일한 리전으로 설정합니다. 예를 들어 us-east-1의 수신자 계정 222222222222에 로그 대상을 생성하는 수신자/대상 계정 222222222222에서 다음 명령을 실행해야 합니다.

aws logs put-destination \
  --destination-name "testDestination" \
  --target-arn "arn:aws:kinesis:us-west-2:222222222222:stream/YourStreamName" \
  --role-arn "arn:aws:iam::222222222222:role/YourIAMRoleName" --region us-east-1

소스 계정 111111111111에서 구독 필터를 생성

구독 필터를 생성하려면 다음을 수행합니다.

1.    로그 그룹을 선택합니다.

2.    작업, 구독 필터를 선택합니다.

3.    대상을 선택하려면 다음 옵션 중에서 선택합니다.

Kinesis 구독 필터 생성: Kinesis 데이터 스트림 대상에 대한 구독 필터를 생성

4.    대상이 교차 계정이므로 다른 계정을 선택합니다.

5.    교차 계정 Kinesis 또는 Kinesis Firehose 대상의 경우 대상 ARN을 제공합니다.

6.    배포 방법을 선택합니다.

로그 스트림별 - 다운스트림 소비자가 로그 스트림별로 로그 이벤트를 집계할 수 있지만 확인하지만, 효율성이 떨어질 수 있습니다. 이 방법을 사용하면 더 많은 샤드가 필요하기 때문에 스트리밍 비용이 더 많이 발생할 수도 있습니다.

랜덤 - Kinesis 스트림 샤드에 로드를 분산하지만, 다운스트림 소비자는 로그 스트림별로 로그 이벤트를 집계할 수 없습니다.

7.    로그 형식 및 필터 구성:

로그 형식을 선택합니다. 형식은 Amazon VPC 흐름 로그, CloudTrail 또는 Amazon VPC, CloudTrail 또는 Lambda에서 게시한 로그의 경우 AWS Lambda일 수 있습니다. 또는 들어오는 로그 이벤트에 따라 JSON, 공백으로 구분 또는 기타를 선택할 수 있습니다.

구독 필터 패턴 섹션에서 필터 패턴을 정의합니다.

구독 필터의 이름을 입력합니다.

8.    기존 로그 이벤트 데이터로 패턴을 확인합니다.

9.    확인 후 스트리밍 시작을 선택합니다.

10.    (선택 사항) 로그 이벤트 흐름의 유효성을 검사하여 데이터 스트림이 작동하는지 확인합니다.

문제 해결

  • Kinesis 스트림이 활성 상태이고 Kinesis 콘솔에서 볼 수 있는지 확인합니다. 또는 DescribeStream API 호출을 사용할 수 있습니다.
  • CloudWatch 로그 그룹과 Kinesis 데이터 스트림 리전이 동일한지 확인합니다.
  • logs.yourregion.amazonaws.com에 대한 신뢰 권한이 있고 권한 kinesis:putrecords를 허용하는 IAM 역할이 있는지 확인합니다.
  • IAM 정책의 리전 및 리소스가 올바른지 확인합니다.
  • Kinesis 데이터 스트림에 대한 구독 필터를 구성할 때 Kinesis Firehose를 선택하지 않았는지 확인합니다.
  • 스트리밍을 시작한 후 구독 필터의 지표가 필터 패턴이 유효하고 수신하는 로그 이벤트와 일치하는지 확인합니다. 이렇게 하려면 다음 지표를 검토합니다. ForwardedBytes: 구독 대상으로 전달된 압축된 바이트의 로그 이벤트 볼륨입니다. ForwardedLogEvents: 구독 대상으로 전달된 로그 이벤트 수입니다.
  • 로그 이벤트를 대상으로 스트리밍할 때 오류가 없는지 확인하려면 다음 지표를 확인합니다. DeliveryErrors: CloudWatch Logs에서 구독 대상으로 데이터를 전달할 때 오류를 수신한 로그 이벤트 수입니다. DeliveryThrottling: 구독 대상으로 데이터를 전달할 때 CloudWatch Logs가 제한되었음을 나타내는 로그 이벤트 수입니다.
  • 전용 Kinesis 스트림이 있는 경우 스트림의 지표를 확인하여 기능을 확인합니다.
  • 교차 계정 로깅 문제를 해결하려면 CloudWatch 교차 계정 설정 문제 해결을 참조하세요.

이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?