

# 표준 로깅 참조
<a name="standard-logs-reference"></a>

다음 섹션은 표준 로깅(v2)과 표준 로깅(레거시) 모두에 적용됩니다.

**Topics**
+ [로그 파일 전송 타이밍](#access-logs-timing)
+ [요청 URL 또는 헤더가 최대 크기를 초과했을 때 요청이 기록되는 방법](#access-logs-request-URL-size)
+ [로그 파일 필드](#BasicDistributionFileFormat)
+ [로그 분석](#access-logs-analyzing)

## 로그 파일 전송 타이밍
<a name="access-logs-timing"></a>

CloudFront는 1시간 동안 여러 번 배포에 대한 표준 로그를 전송합니다. 일반적으로 로그 파일에는 지정된 시간 동안 CloudFront에서 수신한 요청에 대한 정보가 들어 있습니다. CloudFront는 일반적으로 로그에 표시된 이벤트가 발생하고 한 시간 이내에 해당 기간 동안의 로그 파일을 대상으로 전송합니다. 하지만 한 기간에 대한 일부 또는 전체 로그 파일 항목이 때때로 최대 24시간까지 지연되기도 합니다. 로그 항목이 지연되는 경우 CloudFront는 해당 항목을 로그 파일에 저장하며 파일 이름에는 파일이 전송된 날짜 및 시간이 아니라 요청이 *발생한* 기간의 날짜 및 시간이 포함됩니다.

CloudFront는 로그 파일을 생성할 때 로그 파일에 포함되는 기간 중에 객체에 대한 요청을 받은 모든 엣지 로케이션의 배포 관련 정보를 통합합니다.

CloudFront는 CloudFront에서 배포와 연결된 객체에 대해 받는 요청 수에 따라 한 기간 동안 두 개 이상의 파일을 저장할 수 있습니다.

CloudFront는 로깅을 활성화하고 약 4시간이 지나면 액세스 로그들을 안정적으로 전송하기 시작합니다. 그 전에는 일부 액세스 로그들을 가져올 수 있습니다.

**참고**  
해당 기간 동안 객체를 요청하는 사용자가 없으면 해당 기간 동안 아무런 로그 파일도 수신되지 않습니다.

## 요청 URL 또는 헤더가 최대 크기를 초과했을 때 요청이 기록되는 방법
<a name="access-logs-request-URL-size"></a>

쿠키를 포함하여 모든 요청 헤더의 총 크기가 20KB를 초과하거나 URL이 8192바이트를 초과하면 CloudFront가 요청을 완전히 구문 분석할 수 없고 요청을 기록할 수 없습니다. 요청이 기록되지 않으므로 로그 파일에 반환된 HTTP 오류 상태 코드가 표시되지 않습니다.

요청 본문이 최대 크기를 초과하면 HTTP 오류 상태 코드를 포함하여 요청이 기록됩니다.

## 로그 파일 필드
<a name="BasicDistributionFileFormat"></a>

배포에 대한 로그 파일에는 33개의 필드가 포함되어 있습니다. 다음 목록에는 각 필드 이름이 해당 필드의 정보에 대한 설명과 함께 순서대로 포함되어 있습니다.

1. **`date`**

   이벤트가 발생한 날짜가 `YYYY-MM-DD` 형식으로 표시됩니다. 예를 들어 `2019-06-30`입니다. 날짜 및 시간이 협정 세계시(UTC)로 표시됩니다. WebSocket 연결의 경우, 연결이 종료된 날짜가 됩니다.

1. **`time`**

   CloudFront 서버에서 요청 응답을 완료한 시간(UTC)입니다(예: `01:42:39`). WebSocket 연결의 경우, 연결이 종료된 시간이 됩니다.

1. **`x-edge-location`**

   요청을 처리한 엣지 로케이션입니다. 각 엣지 로케이션은 3자 코드와 임의로 배정된 번호로 식별됩니다(예: DFW3). 3자 코드는 일반적으로 엣지 로케이션의 지리적 위치 부근 공항을 나타내는 국제 항공 수송 협회(IATA) 공항 코드에 상응합니다. 이러한 약어는 향후에 변경될 수 있습니다.

1. **`sc-bytes`**

   요청에 대한 응답으로 서버가 최종 사용자에게 보낸 총 바이트 수(헤더 포함)입니다. WebSocket 및 gRPC 연결의 경우, 연결을 통해 서버에서 클라이언트로 전송된 총 바이트 수입니다.

1. **`c-ip`**

   요청을 한 최종 사용자의 IP 주소(예: `192.0.2.183` 또는 `2001:0db8:85a3::8a2e:0370:7334`)입니다. 최종 사용자가 HTTP 프록시 또는 로드 밸런서를 사용하여 요청을 전송하는 경우, 해당 필드 값은 프록시 또는 로드 밸런서의 IP 주소입니다. `x-forwarded-for` 필드도 참조하십시오.

1. **`cs-method`**

   최종 사용자로부터 수신된 HTTP 요청 메서드입니다.

1. **`cs(Host)`**

   CloudFront 배포의 도메인 이름(예: d111111abcdef8.cloudfront.net)입니다.

1. **`cs-uri-stem`**

   경로 및 객체를 식별하는 요청 URL의 일부(예: `/images/cat.jpg`)입니다. URL과 쿼리 문자열의 물음표(?)는 로그에 포함되지 않습니다.

1. **`sc-status`**

   다음 값 중 하나를 포함합니다.
   + 서버 응답의 HTTP 상태 코드(예: `200`)입니다.
   + `000`(서버가 요청에 응답하기 전에 최종 사용자가 연결을 종료했음을 나타냄) 서버가 응답을 전송하기 시작한 후 최종 사용자가 연결을 종료하는 경우, 이 필드에는 서버가 전송하기 시작하는 응답의 HTTP 상태 코드가 포함됩니다.

1. **`cs(Referer)`**

   요청의 `Referer` 헤더 값입니다. 다음은 요청을 시작한 도메인 이름입니다. 일반적인 참조자에는 검색 엔진, 객체에 직접 연결하는 기타 웹 사이트 및 자체 웹 사이트가 포함됩니다.

1. **`cs(User-Agent)`**

   요청의 `User-Agent` 헤더 값입니다. `User-Agent` 헤더는 요청을 제출한 디바이스 유형 및 브라우저 등의 요청 소스를 식별하고 검색 엔진에서 요청이 온 경우에는 어느 검색 엔진인지 식별합니다.

1. **`cs-uri-query`**

   요청 URL의 쿼리 문자열 부문(있는 경우)입니다.

   URL에 쿼리 문자열이 포함되지 않은 경우 이 필드의 값은 하이픈(-)입니다. 자세한 내용은 [쿼리 문자열 파라미터 기반의 콘텐츠 캐싱](QueryStringParameters.md) 섹션을 참조하세요.

1. **`cs(Cookie)`**

   이름-값 페어 및 관련 속성을 포함한 요청의 `Cookie` 헤더입니다.

   쿠키 로깅을 활성화하는 경우 CloudFront는 오리진에 전달하도록 선택한 쿠키와 관계없이 모든 요청의 쿠키를 기록합니다. 요청에 쿠키 헤더가 포함되지 않은 경우 이 필드의 값은 하이픈(-)입니다. 쿠키에 대한 자세한 내용은 [쿠키 기반의 콘텐츠 캐싱](Cookies.md) 단원을 참조하십시오.

1. **`x-edge-result-type`**

   마지막 바이트가 서버를 떠난 후 서버가 응답을 분류한 방식입니다. 경우에 따라 서버가 응답을 전송할 준비가 된 시간과 가 응답 전송을 완료한 시간 사이에 결과 유형이 변경될 수 있습니다. `x-edge-response-result-type` 필드도 참조하십시오.

   예를 들어 HTTP 스트리밍에서 서버가 캐시 스트림의 한 세그먼트를 찾는다고 가정해 보십시오. 이 시나리오에서 이 필드의 값은 보통 `Hit`입니다. 그러나 서버가 전체 세그먼트를 전달하기 전에 최종 사용자가 연결을 종료하면 최종 결과 유형(및 이 필드 값)은 `Error`가 됩니다.

   콘텐츠가 캐시 가능하지 않고 오리진으로 직접 프록시 처리되므로 WebSocket 및 gRPC 연결에서 이 필드의 값이 `Miss`가 됩니다.

   가능한 값은 다음과 같습니다.
   + `Hit` - 서버가 캐시에서 최종 사용자에게 객체를 제공했습니다.
   + `RefreshHit` - 서버가 캐시에서 객체를 찾았지만 객체가 만료되었기 때문에 서버가 오리진에 접속하여 캐시에 최신 버전의 객체가 있는지 확인했습니다.
   + `Miss` - 캐시의 객체로는 요청을 충족할 수 없어서 서버가 요청을 오리진으로 전달했으며 결과가 최종 사용자에게 반환되었습니다.
   + `LimitExceeded` - CloudFront 할당량(이전에는 제한이라고 함)이 초과되어 요청이 거부되었습니다.
   + `CapacityExceeded` - 객체 제공을 요청하는 시점에 용량이 충분하지 않아 서버에서 HTTP 503 상태 코드가 반환되었습니다.
   + `Error` - 일반적으로 이는 요청으로 인해 클라이언트 오류(`sc-status` 필드 값이 `4xx` 범위에 있음) 또는 서버 오류(`sc-status` 필드 값이 `5xx` 범위에 있음)가 발생했음을 의미합니다. `sc-status` 필드의 값이 `200`인 경우 또는 이 필드의 값이 `Error`이고 `x-edge-response-result-type` 필드의 값이 `Error`가 아닌 경우, HTTP 요청이 성공했지만 모든 바이트를 수신하기 전에 클라이언트의 연결이 끊어졌음을 의미합니다.
   + `Redirect` - 서버는 배포 설정에 따라 최종 사용자를 HTTP에서 HTTPS로 리디렉션했습니다.
   + `LambdaExecutionError` - 잘못된 연결, 함수 시간 초과, AWS 종속성 문제 또는 기타 일반 가용성 문제로 인해 배포와 연결된 Lambda@Edge 함수가 완료되지 않았습니다.

1. **`x-edge-request-id`**

   요청을 고유하게 식별하는 불투명 문자열입니다. CloudFront는 `x-amz-cf-id` 응답 헤더에도 이 문자열을 전송합니다.

1. **`x-host-header`**

   최종 사용자가 이 요청에 대한 `Host` 헤더에 포함한 값입니다. 객체 URL에 CloudFront 도메인 이름(예: d111111abcdef8.cloudfront.net)을 사용하는 경우, 이 필드에는 도메인 이름이 포함됩니다. 객체 URL(예: www.example.com)에 대체 도메인 이름(CNAME)을 사용하는 경우, 이 필드에 대체 도메인 이름이 포함됩니다.

   대체 도메인 이름을 사용하는 경우 배포와 연결된 도메인 이름은 필드7에 있는 `cs(Host)` 섹션을 참조하세요.

1. **`cs-protocol`**

   최종 사용자 요청 프로토콜(`http`, `https`, `grpcs`, `ws` 또는 `wss`)입니다.

1. **`cs-bytes`**

   최종 사용자가 요청에 포함한 데이터의 바이트 수(헤더 포함)입니다. WebSocket 및 gRPC 연결의 경우, 연결에서 클라이언트로부터 서버로 전송된 총 바이트 수입니다.

1. **`time-taken`**

   서버가 최종 사용자 요청을 수신한 시점부터 서버에서 출력 대기열에 대한 응답의 최종 바이트를 쓰는 시점 간의 시간 차이(1/1,000초 단위, 예: 0.082)로, 서버에서 측정됩니다. 최종 사용자 관점에서 보면 전체 응답을 가져오는 데 걸리는 총 시간은 네트워크 지연 시간과 TCP 버퍼링으로 인해 이 값보다 큽니다.

1. **`x-forwarded-for`**

   최종 사용자가 HTTP 프록시 또는 로드 밸런서를 사용하여 요청을 전송하는 경우, `c-ip` 필드의 값은 프록시 또는 로드 밸런서의 IP 주소입니다. 이 경우 이 필드는 요청을 시작한 최종 사용자의 IP 주소입니다. 이 필드에는 여러 개의 쉼표로 구분된 IP 주소가 포함될 수 있습니다. 각 IP 주소는 IPv4 주소(예:`192.0.2.183`) 또는 IPv6 주소(예:`2001:0db8:85a3::8a2e:0370:7334`)일 수 있습니다.

   최종 사용자가 HTTP 프록시 또는 로드 밸런서를 사용하지 않은 경우 이 필드의 값은 하이픈(-)입니다.

1. **`ssl-protocol`**

   요청에 HTTPS가 사용된 경우, 이 필드에는 최종 사용자 및 서버가 요청 및 응답 전송을 위해 협상한 SSL/TLS 프로토콜이 포함됩니다. 가능한 값 목록은 [최종 사용자와 CloudFront 간에 지원되는 프로토콜 및 암호](secure-connections-supported-viewer-protocols-ciphers.md)에서 지원되는 SSL/TLS 프로토콜을 참조하세요.

   필드 17의 `cs-protocol`이 `http`인 경우 이 필드의 값은 하이픈(-)입니다.

1. **`ssl-cipher`**

   요청에 HTTPS가 사용되는 경우, 이 필드에는 최종 사용자 및 서버가 요청 및 응답 암호화를 위해 협상한 SSL/TLS 암호가 포함됩니다. 가능한 값 목록은 [최종 사용자와 CloudFront 간에 지원되는 프로토콜 및 암호](secure-connections-supported-viewer-protocols-ciphers.md)에서 지원되는 SSL/TLS 암호를 참조하세요.

   필드 17의 `cs-protocol`이 `http`인 경우 이 필드의 값은 하이픈(-)입니다.

1. **`x-edge-response-result-type`**

   최종 사용자에게 응답을 반환하기 직전에 서버에서 응답을 분류한 방식입니다. `x-edge-result-type` 필드도 참조하십시오. 가능한 값은 다음과 같습니다.
   + `Hit` - 서버가 캐시에서 최종 사용자에게 객체를 제공했습니다.
   + `RefreshHit` - 서버가 캐시에서 객체를 찾았지만 객체가 만료되었기 때문에 서버가 오리진에 접속하여 캐시에 최신 버전의 객체가 있는지 확인했습니다.
   + `Miss` - 캐시의 객체로는 요청을 충족할 수 없어서 서버가 요청을 오리진 서버로 전달했으며 결과가 최종 사용자에게 반환되었습니다.
   + `LimitExceeded` - CloudFront 할당량(이전에는 제한이라고 함)이 초과되어 요청이 거부되었습니다.
   + `CapacityExceeded` - 객체 제공을 요청하는 시점에 엣지 로케이션의 용량이 충분하지 않아 서버에서 503 오류가 반환되었습니다.
   + `Error` - 일반적으로 이는 요청으로 인해 클라이언트 오류(`sc-status` 필드 값이 `4xx` 범위에 있음) 또는 서버 오류(`sc-status` 필드 값이 `5xx` 범위에 있음)가 발생했음을 의미합니다.

     `x-edge-result-type` 필드의 값이 `Error`이고 이 필드의 값이 `Error`가 아닌 경우 다운로드를 완료하기 전에 클라이언트 연결이 끊어졌습니다.
   + `Redirect` - 서버는 배포 설정에 따라 최종 사용자를 HTTP에서 HTTPS로 리디렉션했습니다.
   + `LambdaExecutionError` - 잘못된 연결, 함수 시간 초과, AWS 종속성 문제 또는 기타 일반 가용성 문제로 인해 배포와 연결된 Lambda@Edge 함수가 완료되지 않았습니다.

1. **`cs-protocol-version`**

   최종 사용자가 요청에서 지정한 HTTP 버전입니다. 가능한 값은 `HTTP/0.9`, `HTTP/1.0`, `HTTP/1.1`, `HTTP/2.0` 및 `HTTP/3.0`입니다.

1. **`fle-status`**

   배포에 대해 [필드 레벨 암호화](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html)가 구성될 때, 요청 본문이 처리되었는지를 나타내는 코드가 이 필드에 포함됩니다. 서버가 성공적으로 요청 본문을 처리하고, 지정된 필드 값을 암호화하고, 요청을 오리진으로 전달할 때 이 필드 값은 `Processed`입니다. 이 경우 `x-edge-result-type` 값은 계속해서 클라이언트 측 또는 서버 측 오류를 나타낼 수 있습니다.

   이 필드에 가능한 값은 다음과 같습니다.
   + `ForwardedByContentType` - 어떠한 콘텐츠 유형도 구성되지 않았기 때문에 서버가 요청을 구문 분석 또는 암호화 없이 오리진에 전달했습니다.
   + `ForwardedByQueryArgs` - 요청에 필드 레벨 암호화 구성에 없는 쿼리 인수가 포함되기 때문에 서버가 요청을 구문 분석 또는 암호화 없이 오리진에 전달했습니다.
   + `ForwardedDueToNoProfile` - 필드 레벨 암호화 구성에 어떠한 프로필도 지정되지 않았기 때문에 서버가 요청을 구문 분석 또는 암호화 없이 오리진에 전달했습니다.
   + `MalformedContentTypeClientError` - `Content-Type` 헤더 값이 유효하지 않은 형식이기 때문에 서버가 요청을 거부하고 최종 사용자에게 HTTP 400 상태 코드를 반환했습니다.
   + `MalformedInputClientError` - 요청 본문이 유효하지 않은 형식이기 때문에 서버가 요청을 거부하고 최종 사용자에게 HTTP 400 상태 코드를 반환했습니다.
   + `MalformedQueryArgsClientError` - 쿼리 인수가 비어 있거나 유효하지 않은 형식이기 때문에 서버가 요청을 거부하고 최종 사용자에게 HTTP 400 상태 코드를 반환했습니다.
   + `RejectedByContentType` - 필드 레벨 암호화 구성에 어떠한 콘텐츠 유형도 지정되지 않았기 때문에 서버가 요청을 거부하고 최종 사용자에게 HTTP 400 상태 코드를 반환했습니다.
   + `RejectedByQueryArgs` - 필드 레벨 암호화 구성에 어떠한 쿼리 인수도 지정되지 않았기 때문에 서버가 요청을 거부하고 최종 사용자에게 HTTP 400 상태 코드를 반환했습니다.
   + `ServerError` - 오리진 서버가 오류를 반환했습니다.

   요청이 필드 레벨 암호화 할당량(이전에는 제한이라고 함) 을 초과하면 이 필드에 다음 오류 코드 중 하나가 포함되고 서버는 HTTP 상태 코드 400을 최종 사용자에게 반환합니다. 필드 레벨 암호화의 현재 할당량에 대한 목록은 [필드 레벨 암호화에 대한 할당량](cloudfront-limits.md#limits-field-level-encryption) 단원을 참조하세요.
   + `FieldLengthLimitClientError` - 암호화되도록 구성된 필드가 허용되는 최대 길이를 초과했습니다.
   + `FieldNumberLimitClientError` - 배포가 암호화하도록 구성된 요청에 허용된 필드 수보다 많은 필드가 있습니다.
   + `RequestLengthLimitClientError` - 필드 레벨 암호화 구성 시 요청 본문의 길이가 허용되는 최대 길이를 초과했습니다.

   배포에 대해 필드 레벨 암호화가 구성되지 않은 경우 이 필드의 값은 하이픈(-)입니다.

1. **`fle-encrypted-fields`**

   서버가 암호화하여 오리진에 전달한 [필드 레벨 암호화](field-level-encryption.md)의 수입니다. CloudFront 서버는 데이터를 암호화하면서 처리된 요청을 오리진으로 스트리밍합니다. 따라서 `fle-status` 값이 오류인 경우에도 이 필드에 값이 있을 수 있습니다.

   배포에 대해 필드 레벨 암호화가 구성되지 않은 경우 이 필드의 값은 하이픈(-)입니다.

1. **`c-port`**

   최종 사용자가 보낸 요청의 포트 번호입니다.

1. **`time-to-first-byte`**

   요청을 수신한 후 응답의 첫 바이트를 쓸 때까지의 시간(초)이며 서버에서 측정합니다.

1. **`x-edge-detailed-result-type`**

   이 필드에는 `x-edge-result-type` 필드와 동일한 값이 포함됩니다. 단, 다음과 같은 경우는 예외입니다.
   + 객체가 [Origin Shield](origin-shield.md) 계층에서 최종 사용자에게 제공된 경우 이 필드에 `OriginShieldHit`가 포함합니다.
   + 객체가 CloudFront 캐시에 없고 [오리진 요청 Lambda @Edge 함수](lambda-at-the-edge.md)에 의해 응답이 생성된 경우 이 필드에는 `MissGeneratedResponse`가 포함됩니다.
   + `x-edge-result-type` 필드의 값이 `Error`인 경우 이 필드에는 오류에 대한 추가 정보를 제공하는 다음 값 중 하나가 포함됩니다.
     + `AbortedOrigin` - 서버에 오리진 관련된 문제가 발생했습니다.
     + `ClientCommError` - 서버와 최종 사용자 간의 통신 문제로 인해 최종 사용자에게 대한 응답이 중단되었습니다.
     + `ClientGeoBlocked` - 최종 사용자의 지리적 위치에서 요청을 거부하도록 배포가 구성됩니다.
     + `ClientHungUpRequest` - 요청을 보내는 동안 최종 사용자가 중간에 중지했습니다.
     + `Error` - 오류 유형이 기타 모든 카테고리에 적합하지 않아 오류가 발생했습니다. 이러한 오류 유형은 서버가 캐시에서 오류 응답을 제공할 때 발생할 수 있습니다.
     + `InvalidRequest` - 서버가 최종 사용자로부터 잘못된 요청을 받았습니다.
     + `InvalidRequestBlocked` - 요청한 리소스에 대한 액세스가 차단됩니다.
     + `InvalidRequestCertificate` - 배포가 HTTPS 연결이 설정된 SSL/TLS 인증서와 일치하지 않습니다.
     + `InvalidRequestHeader` - 요청에 잘못된 헤더가 포함되어 있습니다.
     + `InvalidRequestMethod` - 사용되었던 HTTP 요청 메서드를 처리하도록 배포가 구성되지 않았습니다. 이러한 문제는 배포에서 캐시 가능한 요청만 지원하는 경우 발생할 수 있습니다.
     + `OriginCommError` - 오리진에 연결하거나 오리진에서 데이터를 읽는 동안 요청 시간이 초과되었습니다.
     + `OriginConnectError` - 서버를 오리진에 연결할 수 없습니다.
     + `OriginContentRangeLengthError` - 오리진 응답의 `Content-Length` 헤더가 `Content-Range` 헤더의 길이와 일치하지 않습니다.
     + `OriginDnsError` - 서버에서 오리진의 도메인 이름을 확인할 수 없습니다.
     + `OriginError` - 오리진에서 잘못된 응답을 반환했습니다.
     + `OriginHeaderTooBigError` - 오리진에서 반환한 헤더가 너무 커서 엣지 서버가 처리할 수 없습니다.
     + `OriginInvalidResponseError` - 오리진에서 잘못된 응답을 반환했습니다.
     + `OriginReadError` - 오리진에서 서버를 읽을 수 없습니다.
     + `OriginWriteError` - 오리진에 서버를 쓸 수 없습니다.
     + `OriginZeroSizeObjectError` - 오리진에서 전송된 크기가 0인 객체로 인해 오류가 발생했습니다.
     + `SlowReaderOriginError` - 최종 사용자가 오리진 오류를 일으킨 메시지를 느리게 읽었습니다.

1. **`sc-content-type`**

   응답의 HTTP `Content-Type` 헤더 값입니다.

1. **`sc-content-len`**

   응답의 HTTP `Content-Length` 헤더 값입니다.

1. **`sc-range-start`**

   응답에 HTTP `Content-Range` 헤더가 포함되어 있으면 이 필드에 범위 시작 값이 포함됩니다.

1. **`sc-range-end`**

   응답에 HTTP `Content-Range` 헤더가 포함되어 있으면 이 필드에 범위 끝 값이 포함됩니다.

1. **`distribution-tenant-id`**

   배포 테넌트의 ID입니다.

1. **`connection-id`**

   TLS 연결의 고유 식별자입니다.

   이 필드에 대한 정보를 가져오려면 먼저 배포에 대해 mTLS를 활성화해야 합니다. 자세한 내용은 [CloudFront에 대한 상호 TLS 인증(뷰어 mTLS)CloudFront에 대한 오리진 상호 TLS](mtls-authentication.md) 섹션을 참조하세요.

   

다음은 배포 시 로그 파일 예제입니다.

```
#Version: 1.0
#Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-result-type x-edge-request-id x-host-header cs-protocol cs-bytes time-taken x-forwarded-for ssl-protocol ssl-cipher x-edge-response-result-type cs-protocol-version fle-status fle-encrypted-fields c-port time-to-first-byte x-edge-detailed-result-type sc-content-type sc-content-len sc-range-start sc-range-end
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ==	d111111abcdef8.cloudfront.net	https	23	0.001	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.001	Hit	text/html	78	-	-
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	k6WGMNkEzR5BEM_SaF47gjtX9zBDO2m349OY2an0QPEaUum1ZOLrow==	d111111abcdef8.cloudfront.net	https	23	0.000	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.000	Hit	text/html	78	-	-
2019-12-04	21:02:31	LAX1	392	192.0.2.100	GET	d111111abcdef8.cloudfront.net	/index.html	200	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Hit	f37nTMVvnKvV2ZSvEsivup_c2kZ7VXzYdjC-GUQZ5qNs-89BlWazbw==	d111111abcdef8.cloudfront.net	https	23	0.001	-	TLSv1.2	ECDHE-RSA-AES128-GCM-SHA256	Hit	HTTP/2.0	-	-	11040	0.001	Hit	text/html	78	-	-	
2019-12-13	22:36:27	SEA19-C1	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/favicon.ico	502	http://www.example.com/	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Error	1pkpNfBQ39sYMnjjUQjmH2w1wdJnbHYTbag21o_3OfcQgPzdL2RSSQ==	www.example.com	http	675	0.102	-	-	-	Error	HTTP/1.1	-	-	25260	0.102	OriginDnsError	text/html	507	-	-
2019-12-13	22:36:26	SEA19-C1	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/	502	-	Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36	-	-	Error	3AqrZGCnF_g0-5KOvfA7c9XLcf4YGvMFSeFdIetR1N_2y8jSis8Zxg==	www.example.com	http	735	0.107	-	-	-	Error	HTTP/1.1	-	-	3802	0.107	OriginDnsError	text/html	507	-	-
2019-12-13	22:37:02	SEA19-C2	900	192.0.2.200	GET	d111111abcdef8.cloudfront.net	/	502	-	curl/7.55.1	-	-	Error	kBkDzGnceVtWHqSCqBUqtA_cEs2T3tFUBbnBNkB9El_uVRhHgcZfcw==	www.example.com	http	387	0.103	-	-	-	Error	HTTP/1.1	-	-	12644	0.103	OriginDnsError	text/html	507	-	-
```

## 로그 분석
<a name="access-logs-analyzing"></a>

시간당 액세스 로그를 여러 개 받을 수 있기 때문에, 지정된 기간에 받는 모든 로그 파일을 한 파일로 결합하는 것이 좋습니다. 그러고 나면 이 기간의 데이터를 보다 정확하고 완전하게 분석할 수 있습니다.

액세스 로그를 분석하는 한 가지 방법은 [Amazon Athena](https://aws.amazon.com/athena/)를 사용하는 것입니다. Athena는 CloudFront를 비롯하여 AWS 서비스에 대한 데이터를 분석할 수 있는 대화형 쿼리 서비스입니다. 자세한 내용은 *Amazon Athena 사용 설명서*의 [Amazon CloudFront 로그 쿼리](https://docs.aws.amazon.com/athena/latest/ug/cloudfront-logs.html)를 참조하세요.

또한 다음 AWS 블로그 게시물에서는 액세스 로그를 분석하는 몇 가지 방법을 설명합니다.
+ [ Amazon CloudFront Request Logging](https://aws.amazon.com/blogs/aws/amazon-cloudfront-request-logging/)(HTTP를 통해 전송되는 콘텐츠의 경우)
+ [ Enhanced CloudFront Logs, Now With Query Strings](https://aws.amazon.com/blogs/aws/enhanced-cloudfront-logs-now-with-query-strings/)