CloudWatch에서 교차 계정 로깅 문제를 해결하려면 어떻게 해야 합니까?

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

Amazon CloudWatch 계정을 사용하여 교차 계정 로깅 관련 문제를 해결하고 싶습니다. 어떻게 해야 합니까?

간략한 설명

거의 실시간으로 계정 내에서 또는 다른 AWS 계정으로 CloudWatch 로그를 전송할 수 있습니다. 로그를 다른 AWS 계정과 공유하거나 해당 로그를 수신하는 것을 교차 계정 로깅이라고 합니다. Amazon Kinesis 또는 Amazon Kinesis Data Firehose 스트림을 사용하여 교차 계정 로깅을 설정할 수 있습니다. 또는 구독 필터를 사용하여 데이터를 Amazon OpenSearch로 스트리밍할 수 있습니다. CloudWatch 콘솔은 이러한 모든 옵션을 지원합니다. 교차 계정 로깅 사용에 대한 자세한 내용은 다음 문서를 참조하세요.

해결 방법

타겟으로서의 Kinesis Data Stream/Kinesis Data Firehose 전송 스트림 문제 해결

1.    Kinesis 스트림 또는 Kinesis Data Firehose가 활성 상태인지 확인합니다. Kinesis 콘솔에서 상태를 보거나 DescribeStream 또는 DescribeDeliveryStream API 호출을 사용할 수 있습니다.

2.    CloudWatch 로그 그룹 리전과 Kinesis 데이터 스트림 리전이 일치하는지 확인합니다.

3.    올바른 신뢰 권한이 있는 AWS Identity and Access Management(IAM) 역할을 생성했는지 확인합니다. IAM 역할은 CloudWatch 로그가 로그 이벤트를 Kinesis 데이터 스트림 또는 Kinesis Data Firehose에 전송하도록 허용해야 합니다.

이 예에서 로그 데이터 수신자 계정의 AWS 계정 ID는 999999999999입니다. 로그 데이터 발신자 AWS 계정 ID는 111111111111입니다. 계정 111111111111이 Kinesis Data Streams 또는 Kinesis Data Firehose 스트림에 대한 수신자 계정 신뢰 정책에서 허용되는지 확인합니다. 다음은 Kinesis Data Streams 또는 Kinesis Data Firehose 전송 스트림에 대한 IAM 신뢰 정책의 예입니다.

{
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "Service": "logs.region.amazonaws.com"
    },
    "Condition": {
      "StringLike": {
        "aws:SourceArn": [
          "arn:aws:logs:region:sourceAccountId:*",
          "arn:aws:logs:region:recipientAccountId:*"
        ]
      }
    },
    "Action": "sts:AssumeRole"
  }
}

다음 예에서는 Kinesis Data Streams에 대한 IAM 역할 정책을 보여 줍니다.

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "kinesis:PutRecord",
      "Resource": "arn:aws:kinesis:region:999999999999:stream/RecipientStream"
    }
  ]
}
 
IAM role policy for kinesis Firehose stream.
 
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "firehose:*"
      ],
      "Resource": [
        "arn:aws:firehose:region:999999999999:*"
      ]
    }
  ]
}

4.    IAM 정책의 리전 및 리소스 ARN이 올바른지 확인합니다.

5.    Kinesis Data Streams에 대한 구독 필터를 구성할 때 Kinesis Firehose를 선택하지 않았는지 확인합니다.

6.    스트리밍을 시작한 후 구독 필터에 대한 지표를 확인합니다. 필터 패턴이 유효하고 수신 로그 이벤트와 일치하는지 확인합니다. 자세한 내용은 CloudWatch 지표를 사용한 모니터링을 참조하세요. 다음 지표를 사용합니다.

  • ForwardedBytes - 구독 대상으로 전달되는 압축된 바이트 단위의 로그 이벤트 볼륨입니다.
  • ForwardedLogEvents - 구독 대상으로 전달된 로그 이벤트 수입니다.

7.    로그 이벤트를 대상으로 스트리밍할 때 오류가 없는지 확인하려면 다음 지표에서 대상 오류를 확인합니다. 로그 이벤트를 대상으로 스트리밍할 때 로그 이벤트에서 오류가 발생했음을 확인하는 데이터 포인트를 찾을 수 있습니다.

  • DeliveryErrors - 구독 대상으로 데이터를 전달할 때 CloudWatch가 오류를 수신한 로그 이벤트 수입니다.
  • DeliveryThrottling - 구독 대상으로 데이터를 전달할 때 CloudWatch 로그가 제한된 로그 이벤트 수입니다.

8.    Kinesis Data Streams 기능에 대한 인사이트를 제공하는 전용 스트림이 있는 경우 Kinesis Data Streams 또는 Kinesis Firehose에 대한 지표를 확인합니다. 자세한 내용은 Amazon CloudWatch를 사용하여 Amazon Kinesis Data Streams 서비스 모니터링CloudWatch 지표를 사용하여 Kinesis Data Firehose 모니터링 단원을 참조하세요.

대상으로 OpenSearch 문제 해결

1.    OpenSearch 도메인이 퍼블릭 액세스 또는 VPC 액세스를 허용하는지 확인합니다. 자세한 내용은 Amazon OpenSearch Service 도메인 생성 및 관리를 참조하세요.

2.    다음 역할 정책을 사용하여 AWS Lambda 함수에 lambda.amazonaws.com과 신뢰 관계가 있는 IAM 실행 역할이 있는지 확인합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "es:*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:es:region:account-id:domain/target-domain-name/*"
    }
  ]
}

3.    대상 OpenSearch 도메인이 VPC 액세스를 사용하는 경우 역할에 AWSLambdaVPCAccessExecutionRole 정책이 연결되어 있는지 확인합니다.


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


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