표준 로깅(레거시) 구성 - Amazon CloudFront

표준 로깅(레거시) 구성

Notes
  • 이 주제는 이전 버전의 표준 로깅에 관한 내용입니다. 최신 버전은 표준 로깅(v2) 구성를 참조하세요.

  • 표준 로깅(레거시)을 이미 사용 설정했고 Amazon S3에 대한 표준 로깅(v2)을 사용하려는 경우 다른 Amazon S3 버킷을 지정하거나 동일한 버킷에서 별도의 경로를 사용하는 것이 좋습니다(예: 로그 접두사 또는 파티셔닝 사용). 이렇게 하면 어떤 로그 파일이 어떤 배포와 연결되어 있는지 추적하고 로그 파일이 서로 덮어쓰는 것을 방지할 수 있습니다.

표준 로깅(레거시)을 시작하려면 다음 단계를 완료합니다.

  1. 로그를 수신할 Amazon S3 버킷을 선택하고 필수 권한을 추가합니다.

  2. CloudFront 콘솔 또는 CloudFront API에서 표준 로깅(레거시)을 구성합니다. 로그를 수신할 Amazon S3 버킷만 선택할 수 있습니다.

  3. 액세스 로그를 확인합니다.

표준 로그용 Amazon S3 버킷 선택

배포에 대해 로깅을 활성화하는 경우 CloudFront에서 로그 파일을 저장할 Amazon S3 버킷을 지정할 수 있습니다. Amazon S3를 오리진으로 사용할 경우에는 로그 파일에 별도의 버킷을 사용하는 것이 좋습니다.

CloudFront에서 액세스 로그를 저장하려는 Amazon S3 버킷을 지정합니다(예: amzn-s3-demo-bucket.s3.amazonaws.com).

동일 버킷에 여러 배포에 대한 로그 파일을 저장할 수 있습니다. 로깅을 활성화할 경우 파일 이름에 접두사(선택 사항)를 지정하여 배포와 연결되는 로그 파일을 추적할 수 있습니다.

S3 버킷 선택 관련
  • 버킷에 액세스 제어 목록(ACL)이 활성화되어 있어야 합니다. CloudFront 콘솔에서 ACL이 활성화되지 않은 버킷을 선택하면 오류 메시지가 표시됩니다. 권한 섹션을 참조하세요.

  • 버킷 소유자로 설정된 S3 객체 소유권이 적용된 Amazon S3 버킷을 선택하지 마세요. 이 설정은 버킷과 그 안의 객체에 대한 ACL을 비활성화하여 CloudFront에서 버킷으로 로그 파일을 전송하지 못하도록 합니다.

  • 다음 AWS 리전에서는 Amazon S3 버킷을 선택하지 마세요. CloudFront는 이러한 리전의 버킷에 표준 로그를 전달하지 않습니다.

    • 아프리카(케이프타운)

    • 아시아 태평양(홍콩)

    • 아시아 태평양(하이데라바드)

    • 아시아 태평양(자카르타)

    • 아시아 태평양(멜버른)

    • 캐나다 서부(캘거리)

    • 유럽(밀라노)

    • 유럽(스페인)

    • 유럽(취리히)

    • 이스라엘(텔아비브)

    • 중동(바레인)

    • 중동(UAE)

권한

중요

2023년 4월부터 CloudFront 표준 로그에 사용되는 새 S3 버킷에 대해 S3 ACL을 활성화해야 합니다. 버킷을 생성할 때 ACL을 활성화하거나 기존 버킷에 ACL을 활성화할 수 있습니다.

변경 사항에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서새 S3 버킷에 대한 기본 설정 FAQAWS 뉴스 블로그2023년 4월에 예정된 Amazon S3 보안 변경 사항을 참조하세요.

로그 파일용으로 지정하는 버킷에 대해 AWS 계정에 다음 권한이 있어야 합니다.

  • 버킷의 ACL에서 FULL_CONTROL 권한을 부여받아야 합니다. 버킷 소유자인 경우 기본적으로 계정에 이 권한이 있습니다. 이 권한이 없을 경우 버킷 소유자가 버킷에 대한 ACL을 업데이트해야 합니다.

  • s3:GetBucketAcl

  • s3:PutBucketAcl

버킷에 대한 ACL

배포를 생성하거나 업데이트하고 로깅을 활성화할 경우 CloudFront는 이러한 권한을 사용하여 버킷에 대한 ACL을 업데이트함으로써 awslogsdelivery 계정에 FULL_CONTROL 권한을 부여합니다. awslogsdelivery 계정이 로그 파일을 버킷에 기록합니다. ACL을 업데이트하는 데 필요한 권한이 계정에 없을 경우 배포를 생성하거나 업데이트할 수 없습니다.

프로그래밍 방식으로 버킷 생성 요청을 제출했는데 지정한 이름의 버킷이 이미 존재하는 경우, S3는 해당 버킷에 대한 권한을 기본값으로 재설정합니다. 액세스 로그를 S3 버킷에 저장하도록 CloudFront를 구성했는데 더 이상 해당 버킷에서 로그를 가져오지 않는 경우, 버킷에 대한 권한을 점검하여 CloudFront가 필요한 권한을 가지고 있는지 확인하세요.

버킷에 대한 ACL 복원

awslogsdelivery 계정에 대한 권한을 제거할 경우 CloudFront는 S3 버킷에 로그를 저장할 수 없습니다. CloudFront에서 배포에 대한 로그를 다시 저장할 수 있게 하려면 다음 중 하나를 수행하여 ACL 권한을 복원합니다.

  • CloudFront의 배포에 대한 로깅을 비활성화한 다음 이를 다시 활성화합니다. 자세한 내용은 표준 로깅 단원을 참조하십시오.

  • Amazon S3 콘솔의 S3 버킷으로 이동하고 권한을 추가하여 awslogsdelivery에 대한 ACL 권한을 수동으로 추가합니다. awslogsdelivery에 대한 ACL을 추가하려면 계정에 대해 다음과 같이 정식 ID를 입력해야 합니다.

    c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0

    S3 버킷에 ACL을 추가하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 ACL 구성을 참조하세요.

각 로그 파일의 ACL

버킷의 ACL 외에도 각 로그 파일마다 ACL이 있습니다. 버킷 소유자에게는 각 로그 파일에 대한 FULL_CONTROL 권한이 있으며, 배포 소유자(버킷 소유자와 다른 경우)에게는 아무런 권한이 없습니다. awslogsdelivery 계정에는 읽기 및 쓰기 권한이 있습니다.

로깅 비활성화

로깅을 비활성화하더라도 CloudFront가 버킷이나 로그 파일에 대한 ACL이 자동으로 삭제되지 않습니다. 필요한 경우 ACL을 삭제할 수 있습니다.

SSE-KMS 버킷에 필요한 키 정책

표준 로그의 S3 버킷이 고객 관리형 키를 사용하여 AWS KMS keys(SSE-KMS)로 서버 측 암호화를 사용하는 경우, 고객 관리형 키의 키 정책에 다음 설명을 추가해야 합니다. 이렇게 하면 CloudFront가 버킷에 로그 파일을 쓸 수 있습니다. CloudFront는 로그 파일을 버킷에 쓸 수 없기 때문에 SSE-KMS와 함께 AWS 관리형 키를 사용할 수 없습니다.

{ "Sid": "Allow CloudFront to use the key to deliver logs", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "kms:GenerateDataKey*", "Resource": "*" }

표준 로그의 S3 버킷이 S3 버킷 키와 함께 SSE-KMS를 사용하는 경우 정책 설명에 kms:Decrypt 권한을 추가해야 합니다. 이 경우 전체 정책 설명은 다음과 같습니다.

{ "Sid": "Allow CloudFront to use the key to deliver logs", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }
참고

S3 버킷에 대해 SSE-KMS를 사용 설정할 때 고객 관리형 키에 대한 전체 ARN을 지정합니다. 자세한 내용은 Amazon Simple Storage Service 사용 설명서AWS KMS keys(SSE-KMS)로 서버 측 암호화 지정을 참조하세요.

표준 로깅(레거시) 사용

표준 로그를 사용하려면 CloudFront 콘솔 또는 CloudFront API를 사용합니다.

표준 로깅(레거시) 사용(CloudFront 콘솔)

CloudFront 배포에 대한 표준 로그를 사용하려면 다음과 같이 합니다(콘솔의 경우).
  1. CloudFront 콘솔을 사용하여 새 배포를 만들거나 기존 배포를 업데이트합니다.

  2. 표준 로깅 섹션의 로그 전송에서 켜기를 선택합니다.

  3. (선택 사항) 쿠키 로깅에서 로그에 쿠키를 포함하려면 켜기를 선택합니다. 자세한 내용은 쿠키 로깅 단원을 참조하십시오.

    작은 정보

    쿠키 로깅은 배포의 모든 표준 로그에 적용되는 전역 설정입니다. 별도의 전송 대상에서 이 설정을 재정의할 수 없습니다.

  4. 전송 대상 섹션에서 Amazon S3(레거시)를 지정합니다.

  5. Amazon S3 버킷을 지정합니다. 버킷이 아직 없는 경우 생성을 선택하거나 설명서를 보고 버킷을 만들 수 있습니다.

  6. (선택 사항) 로그 접두사에서, CloudFront에서 이 배포에 대한 액세스 로그 파일 이름에 접두사로 지정하려는 문자열(해당하는 경우)을 지정합니다(예: exampleprefix/). 후행 슬래시(/)는 선택 사항이지만 로그 파일을 쉽게 검색할 수 있도록 넣는 것이 좋습니다. 자세한 내용은 로그 접두사 단원을 참조하십시오.

  7. 배포를 업데이트하거나 만드는 단계를 완료합니다.

  8. 로그 페이지에서 배포 옆의 표준 로그 상태가 활성화됨인지 확인합니다.

    표준 로깅 전송 및 로그 필드에 대한 자세한 내용은 표준 로깅 참조 섹션을 참조하시기 바랍니다.

표준 로깅(레거시) 사용(CloudFront API)

CloudFront API를 사용하여 배포에 대한 표준 로그를 사용 설정할 수도 있습니다.

배포에 대한 표준 로그를 사용하려면 다음과 같이 합니다(CloudFront API의 경우).

표준 로깅 설정 편집

CloudFront 콘솔 또는 CloudFront API를 사용하여 로깅을 활성화/비활성화하거나, 로그가 저장되는 Amazon S3 버킷을 변경하고 로그 파일의 접두사를 변경할 수 있습니다. 로깅 설정에 대한 변경 내용은 12시간 내에 적용됩니다.

자세한 정보는 다음 주제를 참조하십시오.

  • CloudFront 콘솔을 사용하여 배포를 업데이트하려면 배포 업데이트 섹션을 참조하세요.

  • CloudFront API를 사용하여 배포를 업데이트하려면 Amazon CloudFront API 참조UpdateDistribution을 참조하세요.

Amazon S3로 로그 전송

Amazon S3로 로그를 전송하면 로그가 다음 형식으로 표시됩니다.

파일 이름 형식

CloudFront에서 Amazon S3 버킷에 저장하는 각 로그 파일의 이름에는 다음 파일 이름 형식이 사용됩니다.

<optional prefix>/<distribution ID>.YYYY-MM-DD-HH.unique-ID.gz

날짜 및 시간이 협정 세계시(UTC)로 표시됩니다.

예를 들어 접두사로 example-prefix를 사용하고 배포 ID가 EMLARXS9EXAMPLE이면 파일 이름은 다음과 같습니다.

example-prefix/EMLARXS9EXAMPLE.2019-11-14-20.RT4KCN4SGK9.gz

배포에 대한 로깅을 활성화할 경우 파일 이름에 접두사(선택 사항)를 지정하여 배포와 연결되는 로그 파일을 추적할 수 있습니다. 로그 파일 접두사의 값을 포함하고 접두사가 슬래시(/)로 끝나지 않으면 CloudFront에서 슬래시를 자동으로 추가합니다. 접두사가 슬래시로 끝나면 CloudFront에서 슬래시를 추가하지 않습니다.

파일 이름의 끝에 붙은 .gz는 CloudFront에서 로그 파일이 gzip으로 압축되었음을 나타냅니다.

표준 로그 파일 형식

로그 파일의 각 항목은 단일 최종 사용자 요청에 대한 세부 정보를 제공합니다. 이러한 로그 파일은 다음과 같은 특성을 갖습니다.

  • W3C 확장 로그 파일 형식을 사용합니다.

  • 탭으로 구분된 값을 포함합니다.

  • 레코드를 포함합니다. 이 때 레코드가 시간 순서대로 나열되어 있지 않을 수도 있습니다.

  • 두 헤더 행(파일 형식 버전이 표시된 행과 각 레코드에 포함된 W3C 필드가 나열된 행)을 포함합니다.

  • 필드 값에서 공백 및 다른 특정 문자에 상응하는 URL 인코딩 값을 포함합니다.

    상응하는 URL 인코딩 값은 다음과 같은 문자에 사용됩니다.

    • ASCII 문자 코드 0~32

    • ASCII 문자 코드 127 이상

    • 다음 표의 모든 문자

    URL 인코딩 표준은 RFC 1738에 정의되어 있습니다.

URL 인코딩 값

문자

%3C

<

%3E

>

%22

"

%23

#

%25

%

%7B

{

%7D

}

%7C

|

%5C

\

%5E

^

%7E

~

%5B

[

%5D

]

%60

`

%27

'

%20

공백

로그 파일 삭제

CloudFront는 Amazon S3 버킷에서 로그 파일을 자동으로 삭제하지 않습니다. Amazon S3 버킷에서 로그 파일을 삭제하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service 콘솔 사용 설명서객체 삭제를 참조하시기 바랍니다.

요금

표준 로깅은 CloudFront의 선택적 기능입니다. CloudFront는 표준 로그 사용에 대한 요금을 부과하지 않습니다. 하지만 Amazon S3에 파일을 저장하고 액세스하는 데 일반적인 Amazon S3 요금이 부과됩니다. 사용자는 언제든지 이를 삭제할 수 있습니다.

Amazon S3 요금에 대한 자세한 내용은 Amazon S3 요금을 참조하세요.

CloudFront 요금에 대한 자세한 내용은 CloudFront 요금을 참조하세요.