

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Firehose에 CloudWatch Logs 전송


CloudWatch Logs 이벤트는 CloudWatch 구독 필터를 사용하여 Firehose로 전송할 수 있습니다. 자세한 내용은 [Amazon Data Firehose를 사용한 구독 필터](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html#FirehoseExample)를 참조하세요.

CloudWatch Logs 이벤트는 압축된 gzip 형식으로 Firehose로 전송됩니다. 압축 해제된 로그 이벤트를 Firehose 대상에 전송하려면 Firehose의 압축 해제 기능을 사용하여 CloudWatch Logs의 압축을 자동으로 해제할 수 있습니다.

**중요**  
Firehose는 현재 Amazon OpenSearch Service 대상으로 CloudWatch Logs를 전송하는 것을 지원하지 않습니다. Amazon CloudWatch는 여러 로그 이벤트를 하나의 Firehose 레코드로 결합하고 Amazon OpenSearch Service는 하나의 레코드로 된 여러 로그 이벤트를 받아들일 수 없기 때문입니다. 대신 [CloudWatch Logs에서 Amazon OpenSearch Service에 대한 구독 필터 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_OpenSearch_Stream.html)을 고려할 수 있습니다.

# CloudWatch Logs 압축 해제


Firehose를 사용하여 CloudWatch Logs를 전송하고 압축 해제된 데이터를 Firehose 스트림 대상으로 전송하려는 경우 Firehose [데이터 형식 변환](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html)(Parquet, ORC) 또는 [동적 파티셔닝](https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning.html)을 사용합니다. Firehose 스트림에 대해 압축 해제를 활성화해야 합니다.

 AWS Management Console AWS Command Line Interface 또는 AWS SDKs.

**참고**  
스트림에서 압축 해제 기능을 활성화하는 경우, 해당 스트림은 Vended Logs가 아닌 CloudWatch Logs 구독 필터에만 사용합니다. CloudWatch Logs와 Vended Logs를 모두 수집하는 데 사용되는 스트림에서 압축 해제 기능을 활성화하면 Firehose로의 Vended Logs 수집이 실패합니다. 이 압축 해제 기능은 CloudWatch Logs에만 적용됩니다.

# CloudWatch Logs 압축 해제 후 메시지 추출


압축 해제를 활성화하면 메시지 추출도 활성화할 수 있습니다. 메시지 추출을 사용할 때 Firehose는 압축 해제된 CloudWatch Logs 레코드에서 소유자, 로그 그룹, 로그 스트림 등의 모든 메타데이터를 필터링하고 메시지 필드 내의 콘텐츠만 전송합니다. Splunk 대상으로 데이터를 전송하는 경우 Splunk에서 데이터를 구문 분석하기 위해 메시지 추출을 활성화해야 합니다. 다음은 메시지 추출을 사용하거나 사용하지 않은 압축 해제 후의 샘플 출력입니다.

그림 1: 메시지 추출 없이 압축 해제 후 샘플 출력:

```
{
 "owner": "111111111111",
 "logGroup": "CloudTrail/logs",
 "logStream": "111111111111_CloudTrail/logs_us-east-1",
 "subscriptionFilters": [
 "Destination"
 ],
 "messageType": "DATA_MESSAGE",
 "logEvents": [
 {
 "id": "31953106606966983378809025079804211143289615424298221568",
 "timestamp": 1432826855000,
 "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root1\"}"
 },
 {
 "id": "31953106606966983378809025079804211143289615424298221569",
 "timestamp": 1432826855000,
 "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root2\"}"
 },
 {
 "id": "31953106606966983378809025079804211143289615424298221570",
 "timestamp": 1432826855000,
 "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root3\"}"
 }
 ]
}
```

그림 2: 메시지 추출을 사용한 압축 해제 후 샘플 출력:

```
{"eventVersion":"1.03","userIdentity":{"type":"Root1"}
{"eventVersion":"1.03","userIdentity":{"type":"Root2"}
{"eventVersion":"1.03","userIdentity":{"type":"Root3"}
```

# 콘솔에서 새 Firehose 스트림에 대한 압축 해제 활성화


**를 사용하여 새 Firehose 스트림에서 압축 해제를 활성화하려면 AWS Management Console**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/kinesis](https://console.aws.amazon.com/kinesis) Kinesis 콘솔을 엽니다.

1. 탐색 창에서 **Amazon Data Firehose**를 선택합니다.

1. **Firehose 스트림 생성**을 선택합니다.

1. **소스 및 대상 선택**에서  
****소스****  
Firehose 스트림의 소스 다음 중 하나의 소스를 선택합니다.  
   + **Direct PUT** - 생산자 애플리케이션이 직접 쓰는 대상 Firehose 스트림을 생성하려면 이 옵션을 선택합니다. Firehose의 Direct PUT와 통합된 AWS 서비스 및 에이전트와 오픈 소스 서비스 목록은 [이](create-name.md) 섹션을 참조하세요.
   + **Kinesis 스트림:** Kinesis 데이터 스트림을 데이터 소스로 사용하는 Firehose 스트림을 구성하려면 이 옵션을 선택합니다. 그러면 Firehose를 사용하여 기존 Kinesis 데이터 스트림에서 간편하게 데이터를 읽고 대상에 로드할 수 있습니다. 자세한 내용은 [Writing to Firehose Using Kinesis Data Streams](https://docs.aws.amazon.com/firehose/latest/dev/writing-with-kinesis-streams.html)를 참조하세요.  
****Destination****  
Firehose 스트림의 대상. 다음 중 하나를 선택합니다.  
   + Amazon S3
   + Splunk

1. **Firehose 스트림 이름**에 스트림 이름을 입력합니다.

1. (선택 사항) **레코드 변환에서:**
   + **Amazon CloudWatch Logs의 소스 레코드 압축 해제** 섹션에서 **압축 해제 켜기**를 선택합니다.
   + 압축 해제 후 메시지 추출을 사용하려면 **메시지 추출 켜기**를 선택합니다.

# 기존 Firehose 스트림에서 압축 해제 활성화


이 섹션에서는 기존 Firehose 스트림에서 압축 해제를 활성화하는 지침을 제공합니다. 여기에는 Lambda 처리가 비활성화된 스트림과 Lambda 처리가 이미 활성화된 스트림이라는 두 가지 시나리오가 포함됩니다. 다음 섹션에서는 Lambda 함수 생성 또는 수정, Firehose 설정 업데이트, 내장 Firehose 압축 해제 기능의 성공적인 구현을 보장하기 위한 CloudWatch 지표 모니터링 등 각 사례에 대한 단계별 절차를 간략하게 설명합니다.

## Lambda 처리가 비활성화된 경우 압축 해제 활성화


Lambda 처리가 비활성화된 기존 Firehose 스트림에서 압축 해제를 활성화하려면 먼저 Lambda 처리를 활성화해야 합니다. 이 조건은 기존 스트림에만 유효합니다. 다음 단계에서는 Lambda 처리가 활성화되지 않은 기존 스트림에서 압축 해제를 활성화하는 방법을 보여줍니다.

1. Lambda 함수를 생성합니다. 더미 레코드 패스스루를 생성하거나 이 [블루프린트](https://github.com/aws-samples/aws-kinesis-firehose-resources/tree/main/blueprints/kinesis-firehose-cloudwatch-logs-processor)를 사용하여 새 Lambda 함수를 생성할 수 있습니다.

1. 현재 Firehose 스트림을 업데이트하여 Lambda 처리를 활성화하고 처리를 위해 생성한 Lambda 함수를 사용합니다.

1. 새 Lambda 함수로 스트림을 업데이트한 후 Firehose 콘솔로 돌아가 압축 해제를 활성화합니다.

1. 1단계에서 활성화한 Lambda 처리를 비활성화합니다. 이제 1단계에서 생성한 기능을 삭제할 수 있습니다.

## Lambda 처리가 활성화된 경우 압축 해제 활성화


압축 해제를 수행하기 위해 Lambda 함수가 있는 Firehose 스트림이 이미 있는 경우 Firehose 압축 해제 기능으로 바꿀 수 있습니다. 계속하기 전에 Lambda 함수 코드를 검토하여 압축 해제 또는 메시지 추출만 수행하는지 확인합니다. Lambda 함수의 출력은 [그림 1 또는 그림 2](Message_extraction.md)에 표시된 예제와 비슷해야 합니다. 출력이 비슷한 경우 다음 단계를 사용하여 Lambda 함수를 교체할 수 있습니다.

1. 현재 Lambda 함수를 이 [블루프린트](https://github.com/aws-samples/aws-kinesis-firehose-resources/tree/main/blueprints/kinesis-firehose-cloudwatch-logs-processor)로 바꿉니다. 새로운 블루프린트 Lambda 함수는 수신 데이터가 압축되었는지 압축 해제되었는지 자동으로 감지합니다. 입력 데이터가 압축된 경우에만 압축 해제를 수행합니다.

1. 압축 해제를 위해 내장 Firehose 옵션을 사용하여 압축 해제를 켭니다.

1. Firehose 스트림이 아직 활성화되지 않은 경우 CloudWatch 지표를 활성화합니다. 지표 `CloudWatchProcessorLambda_IncomingCompressedData`를 모니터링하고이 지표가 0으로 변경될 때까지 기다립니다. 이렇게 하면 Lambda 함수로 전송된 모든 입력 데이터가 압축 해제되고 Lambda 함수가 더 이상 필요하지 않습니다.

1. Lambda 데이터 변환은 더 이상 스트림 압축을 풀 필요가 없으므로 제거합니다.

# Firehose 스트림에서 압축 해제 비활성화


****

를 사용하여 데이터 스트림에서 압축 해제를 비활성화하려면 AWS Management Console

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/kinesis](https://console.aws.amazon.com/kinesis) Kinesis 콘솔을 엽니다.

1. 탐색 창에서 **Amazon Data Firehose**를 선택합니다.

1. 편집하려는 Firehose 스트림을 선택합니다.

1. **Firehose 스트림 세부 정보** 페이지에서 **구성** 탭을 선택합니다.

1. **레코드 변환 및 변환** 섹션에서 **편집**을 선택합니다.

1. **Amazon CloudWatch Logs에서 소스 레코드 압축 해제**에서 **압축 해제 켜기**를 해제한 다음 **변경 사항 저장**을 선택합니다.

# Firehose의 압축 해제 문제 해결


다음 표는 Firehose가 데이터 압축 해제 및 처리 중에 오류 S3 버킷으로 레코드 전송, 오류 로깅, 지표 전송을 포함하여 오류를 처리하는 방법을 보여줍니다. 또한 승인되지 않은 데이터 풋 작업에 대해 반환된 오류 메시지도 설명합니다.


| 문제 | Solution | 
| --- | --- | 
| 압축 해제 중에 오류가 발생할 경우 소스 데이터는 어떻게 되나요? |  Amazon Data Firehose가 레코드의 압축을 풀 수 없는 경우 레코드는 Firehose 스트림 생성 시간 동안 지정한 오류 S3 버킷에 있는 그대로(압축된 형식) 전달됩니다. 레코드와 함께 전달된 객체에는 오류 코드와 오류 메시지도 포함되며 이러한 객체는 `decompression-failed`라는 S3 버킷 접두사로 전달됩니다. Firehose는 레코드의 압축 해제 실패 후에도 다른 레코드를 계속 처리합니다.  | 
| 압축 해제 성공 후 처리 파이프라인에 오류가 발생할 경우 소스 데이터는 어떻게 됩니까? |  동적 분할 및 데이터 형식 변환과 같은 압축 해제 후 처리 단계에서 Amazon Data Firehose 오류가 발생하는 경우 레코드는 Firehose 스트림 생성 시간 동안 지정한 오류 S3 버킷으로 압축된 형식으로 전송됩니다. 전송된 객체에는 레코드와 함께 오류 코드 및 오류 메시지도 포함됩니다.  | 
| 오류 또는 예외가 발생할 경우 어떻게 알 수 있나요? |  압축 해제 중에 오류 또는 예외가 발생하는 경우 CloudWatch Logs를 구성하면 Firehose는 오류 메시지를 CloudWatch Logs에 기록합니다. 또한 Firehose는 모니터링할 수 있는 CloudWatch 지표로 지표를 전송합니다. Firehose에서 내보낸 지표를 기반으로 경보를 선택적으로 생성할 수도 있습니다.  | 
| put 작업이 CloudWatch Logs에서 오지 않으면 어떻게 되나요? | puts 고객이 CloudWatch Logs에서 오지 않으면 다음 오류 메시지가 반환됩니다.<pre>Put to Firehose failed for AccountId: <accountID>, FirehoseName:  <firehosename> because the request is not originating from allowed source types.</pre> | 
| Firehose는 압축 해제 기능을 위해 어떤 지표를 방출합니까? | Firehose는 모든 레코드의 압축 해제에 대한 지표를 내보냅니다. 기간(1분), 통계(합계), 날짜 범위를 선택하여 DecompressedRecords 실패 또는 성공 또는 DecompressedBytes 실패 또는 성공의 수를 구해야 합니다. 자세한 내용은 [CloudWatch Logs 압축 해제 지표](monitoring-with-cloudwatch-metrics.md#decompression-metrics-cw) 섹션을 참조하세요. | 