

# VPC 흐름 로그 문제 해결
<a name="flow-logs-troubleshooting"></a>

다음은 흐름 로그로 작업할 때 발생할 수 있는 문제입니다.

**Topics**
+ [불완전한 흐름 로그 레코드](#flow-logs-troubleshooting-incomplete-records)
+ [흐름 로그가 활성화되었지만 흐름 로그 레코드 또는 로그 그룹이 없음](#flow-logs-troubleshooting-no-log-group)
+ ['LogDestinationNotFoundException' 또는 'LogDestination에 대한 액세스가 거부됨' 오류](#flow-logs-troubleshooting-not-found)
+ [Amazon S3 버킷 정책 제한 초과](#flow-logs-troubleshooting-policy-limit)
+ [LogDestination 전송 불가](#flow-logs-troubleshooting-kms-id)
+ [흐름 로그 데이터 크기가 결제 데이터와 일치하지 않음](#flow-logs-data-size-mismatch)

## 불완전한 흐름 로그 레코드
<a name="flow-logs-troubleshooting-incomplete-records"></a>

**문제**  
흐름 로그 레코드가 불완전하거나 더 이상 게시되지 않습니다.

**원인**  
흐름 로그를 CloudWatch Logs 로그 그룹으로 전달하는 데 문제가 있거나 [SkipData 항목이 제공될 수 있습니다.](flow-logs-records-examples.md#flow-log-example-no-data)

**Solution**  
**흐름 로그** 탭에서 VPC, 서브넷 또는 네트워크 인터페이스를 확인합니다. 공유되는 VPC 또는 서브넷에 대한 흐름 로그를 설명할 수 없지만, 공유되는 VPC 또는 서브넷에서 생성한 네트워크 인터페이스에 대한 흐름 로그를 설명할 수는 있습니다. 오류가 있는 경우 **상태** 열에 오류가 표시됩니다. 또는 [describe-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-flow-logs.html) 명령을 사용하여 `DeliverLogsErrorMessage` 필드에 반환된 값을 확인하세요.

다음은 상태에 대해 가능한 오류 값입니다.
+ `Rate limited`: 이 오류는 CloudWatch Logs 스로틀링이 적용된 경우, 즉 네트워크 인터페이스에 대한 흐름 로그 레코드의 수가 특정 시간 범위 내에 게시될 수 있는 최대 레코드의 수보다 많은 경우에 발생할 수 있습니다. 이 오류는 만들 수 있는 CloudWatch Logs 로그 그룹 수 할당량에 도달한 경우에 발생하기도 합니다. 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [CloudWatch Service Quotas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html)를 참조하세요.
+ `Access error`: 이 오류는 다음과 같은 이유로 발생할 수 있습니다.
  + 흐름 로그용 IAM 역할에 CloudWatch 로그 그룹에 흐름 로그를 게시할 권한이 없습니다.
  + IAM 역할이 흐름 로그 서비스와 신뢰 관계를 갖지 않습니다.
  + 신뢰 관계는 흐름 로그 서비스를 주체로 지정하지 않습니다.

  자세한 내용은 [CloudWatch Logs에 흐름 로그를 게시하는 IAM 역할](flow-logs-iam-role.md) 단원을 참조하세요.
+ `Unknown error`: 흐름 로그 서비스에서 내부 오류가 발생했습니다.

## 흐름 로그가 활성화되었지만 흐름 로그 레코드 또는 로그 그룹이 없음
<a name="flow-logs-troubleshooting-no-log-group"></a>

**문제**  
흐름 로그를 생성했고 Amazon VPC 또는 Amazon EC2 콘솔에서 흐름 로그를 `Active`로 표시합니다. 하지만 CloudWatch Logs에서 어떠한 로그 스트림도 볼 수 없거나 Amazon S3 버킷에서 로그 파일을 볼 수 없습니다.

**가능한 원인**
+ 흐름 로그가 아직 생성되는 중입니다. 경우에 따라 흐름 로그를 생성한 후 로그 그룹이 생성되고 데이터가 표시되기까지 10분 이상 걸릴 수 있습니다.
+ 네트워크 인터페이스에 대해 기록된 트래픽이 아직 없습니다. CloudWatch Logs의 로그 그룹은 트래픽이 기록될 때만 생성됩니다.

**Solution**  
로그 그룹이 생성되거나 트래픽이 기록될 때까지 몇 분 정도 기다리세요.

## 'LogDestinationNotFoundException' 또는 'LogDestination에 대한 액세스가 거부됨' 오류
<a name="flow-logs-troubleshooting-not-found"></a>

**문제**  
흐름 로그를 생성할 때 `Access Denied for LogDestination` 또는 `LogDestinationNotFoundException` 오류가 발생합니다.

**가능한 원인**
+ Amazon S3 버킷에 데이터를 게시하는 흐름 로그를 생성하는 경우 이 오류는 지정된 S3 버킷을 찾을 수 없거나 버킷 정책에서 로그를 버킷에 전달할 수 없음을 나타냅니다.
+ Amazon CloudWatch Logs에 데이터를 게시하는 흐름 로그를 생성하는 경우 이 오류는 IAM 역할이 로그를 로그 그룹에 전달할 수 없음을 나타냅니다.

**Solution**
+ Amazon S3에 게시하는 경우 기존 S3 버킷에 ARN을 지정했는지, 그리고 그 ARN의 형식이 올바른지 확인합니다. S3 버킷을 소유하지 않은 경우 [버킷 정책](flow-logs-s3-permissions.md)이 필수 권한을 보유하고 있고 ARN에서 계정 ID와 버킷 이름을 올바르게 사용하는지 확인합니다.
+ CloudWatch Logs Logs에 게시하는 경우 [IAM 역할](flow-logs-iam-role.md)에 필수 권한이 있는지 확인합니다.

## Amazon S3 버킷 정책 제한 초과
<a name="flow-logs-troubleshooting-policy-limit"></a>

**문제**  
흐름 로그를 생성할 때 `LogDestinationPermissionIssueException` 오류가 발생합니다.

**가능한 원인**  
Amazon S3 버킷 정책은 크기가 20KB로 제한됩니다.

Amazon S3 버킷에 게시하는 흐름 로그가 생성될 때마다 폴더 경로를 포함하는 지정된 버킷 ARN을 버킷 정책의 `Resource` 요소에 자동으로 추가합니다.

동일한 버킷에 게시하는 여러 개의 흐름 로그를 생성하면 버킷 정책 제한을 초과할 수 있습니다.

**Solution**
+ 더 이상 필요 없는 흐름 로그 항목을 제거하여 버킷 정책을 정리합니다.
+ 개별 흐름 로그 항목을 다음으로 대체하여 전체 버킷에 권한을 부여합니다.

  ```
  arn:aws:s3:::bucket_name/*
  ```

  전체 버킷에 권한을 부여할 경우, 새 흐름 로그 구독이 버킷 정책에 새 권한을 추가합니다.

## LogDestination 전송 불가
<a name="flow-logs-troubleshooting-kms-id"></a>

**문제**  
흐름 로그를 생성할 때 `LogDestination <bucket name> is undeliverable` 오류가 발생합니다.

**가능한 원인**  
대상 Amazon S3 버킷은 AWS KMS(SSE-KMS)로 서버 측 암호화를 사용하여 암호화되며 버킷의 기본 암호화는 KMS 키 ID입니다.

**Solution**  
값은 KMS 키 ARN이어야 합니다. 기본 S3 암호화 유형을 KMS 키 ID에서 KMS 키 ARN으로 변경합니다. 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [기본 암호화 사용 설정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-bucket-encryption.html)을 참조하세요.

## 흐름 로그 데이터 크기가 결제 데이터와 일치하지 않음
<a name="flow-logs-data-size-mismatch"></a>

**문제**  
흐름 로그의 총 데이터 크기가 결제 데이터에 보고된 크기와 일치하지 않습니다.

**가능한 원인**  
흐름 로그에 SKIPDATA 항목이 있을 수 있습니다. SKIPDATA 항목에 관한 설명은 [데이터가 없고 건너뛴 레코드](flow-logs-records-examples.md#flow-log-example-no-data) 섹션을 참조하세요.

**Solution**  
로그 상태 필드의 다양한 항목에 대한 로그를 쿼리하여 로그 항목에 SKIPDATA 항목이 있는지 확인합니다.

SKIPDATA 확인을 위한 샘플 쿼리:

CW Insights:

```
fields @timestamp, @message, @logStream, @log
| filter interfaceId = 'eni-123'
| stats count(*) by interfaceId, logStatus
| sort by interfaceId, logStatus
```

Athena:

```
SELECT log_status, interface_id, count(1)
FROM vpc_flow_logs
WHERE interface_id IN ('eni-1', 'eni-2', 'eni-3')
GROUP BY log_status, interface_id
```