메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

서버 액세스 로깅

개요

버킷 액세스 요청을 추적하기 위해 액세스 로깅을 활성화할 수 있습니다. 각 액세스 로그 레코드는 한 액세스 요청에 대한 세부 정보(요청자, 버킷 이름, 요청 시간, 요청 작업, 응답 상태, 오류 코드 등)를 제공합니다. 액세스 로그 정보는 보안 및 액세스 감사에 유용할 수 있습니다. 또한 고객 기반을 이해하고 Amazon S3 청구 비용을 파악할 수 있습니다.

참고

Amazon S3 버킷에 대해 서버 액세스 로깅을 활성화하는 데는 추가 비용이 들지 않지만, 시스템에서 제공하는 로그 파일에 대해서는 일반적인 스토리지 요금이 발생합니다. (로그 파일은 언제든지 삭제할 수 있습니다.) 로그 파일 전송 시 데이터 전송 요금은 발생하지 않지만 다른 데이터 전송과 마찬가지로 전송된 로그 파일에 액세스하는 데는 비용이 부과됩니다.

기본적으로 로깅은 비활성화되어 있으며, 액세스 로깅을 활성화하려면 다음과 같은 작업을 수행해야 합니다.

  • Amazon S3에서 액세스 로그 전송을 활성화하려는 버킷에 로깅 구성을 추가하여 로그가 전송되도록 합니다. 이 버킷을 원본 버킷이라고 합니다.

  • 액세스 로그를 저장할 버킷의 Amazon S3 Log Delivery 그룹에 쓰기 권한을 부여합니다. 이 버킷을 대상 버킷이라고 합니다.

로그가 전송되도록 하기 위해 다음 로깅 구성 정보를 제공합니다.

  • Amazon S3가 액세스 로그를 객체로 저장할 대상 버킷의 이름. 원본 버킷을 포함하여 계정에 있는 모든 버킷은 로그 전송 대상으로 지정할 수 있지만, 편리하게 로그를 관리하기 위해서는 원본과 다른 버킷에 액세스 로그를 저장하는 것이 좋습니다. 원본 버킷과 동일한 버킷에 액세스 로그를 저장해야 한다면 로그 객체를 구별할 수 있도록 모든 로그 객체 키에 접두사를 지정하는 것이 좋습니다.

    참고

    원본 및 대상 버킷 모두 동일한 AWS 계정에서 소유하고 있어야 합니다.

  • (선택 사항) Amazon S3에서 모든 로그 객체 키에 지정한 접두사. 접두사를 사용하면 더 쉽게 로그 객체를 구분할 수 있습니다.

    예를 들어 접두사 값을 logs/로 지정할 경우 Amazon S3가 만드는 각 로그 객체의 키는 다음 예와 같이 logs/ 접두사로 시작합니다.

    Copy
    logs/2013-11-01-21-32-16-E568B2907131C0C0

    로그를 삭제할 경우에도 키 접두사가 유용하게 사용됩니다. 예를 들어 Amazon S3가 특정 키 접두사를 가진 객체를 삭제하도록 수명 주기 구성 규칙을 설정할 수 있습니다. 자세한 내용은 로그 파일 삭제를 참조하십시오.

  • (선택 사항) 생성된 로그의 액세스 권한. 기본적으로 버킷 소유자에게는 항상 로그 객체에 대한 모든 액세스 권한이 부여됩니다. 필요할 경우 다른 사용자에게 액세스 권한을 부여할 수 있습니다.

로그 객체 키 형식

Amazon S3는 대상 버킷에 업로드한 로그 객체에 대해 다음과 같은 객체 키 형식을 사용합니다.

Copy
TargetPrefixYYYY-mm-DD-HH-MM-SS-UniqueString

키에서 YYYY, mm, DD, HH, MM 및 SS는 각각 로그 파일이 전송된 연도와 월, 일, 시, 분, 초에 대한 숫자를 나타냅니다.

로그 파일에는 해당 파일이 전송된 시간 이전에 기록된 레코드가 포함될 수 있지만, 특정 기간의 모든 로그 레코드가 전송되었는지 여부는 확인할 수 없습니다.

키의 UniqueString 구성 요소는 파일의 덮어쓰기를 방지할 목적으로 사용되는 것으로, 특별한 의미가 없으므로 로그 처리 소프트웨어가 무시해도 됩니다.

로그 전송 방법

Amazon S3는 주기적으로 액세스 로그 레코드를 수집하여 로그 파일에 레코드를 통합한 다음 대상 버킷의 로그 객체로 로그 파일을 업로드합니다. 여러 원본 버킷에서 로깅을 활성화하고 동일한 대상 버킷을 지정한 경우 대상 버킷에 이러한 모든 원본 버킷의 액세스 로그가 저장되지만, 각 로그 객체는 특정 원본 버킷의 액세스 로그 레코드만 보고합니다.

Amazon S3는 Log Delivery라고 하는 특별 로그 전송 계정을 사용하여 액세스 로그를 기록합니다. 이 쓰기는 일반적인 액세스 제어 제약 조건을 따릅니다. 버킷의 ACL(액세스 제어 목록)에 권한 부여 항목을 추가하여 Log Delivery 그룹에 대상 버킷에 대한 쓰기 권한을 부여해야 합니다. Amazon S3 콘솔을 사용하여 버킷의 로깅을 활성화할 경우 콘솔은 원본 버킷에 로깅을 활성화하고, Log Delivery 그룹에 쓰기 권한을 부여하도록 대상 버킷의 ACL을 업데이트합니다.

서버 로그 전송은 보장되지 않음

서버 액세스 로그 레코드는 최대한 전송하겠지만 항상 모든 레코드가 전송된다고 보장할 수는 없습니다. 버킷에 대해 적절히 로깅이 구성된 대부분의 요청은 로그 레코드가 전송될 것이며, 대부분 기록된 지 몇 시간 내로 레코드가 전송됩니다.

그러나 모든 서버 로깅이 제때 전송될 것이라고 보장할 수는 없습니다. 요청에 따라서는 실제로 요청이 처리된 지 한참 후에 로그 레코드가 전송되거나 아예 전송되지 않을 수도 있습니다. 서버 로그는 버킷에 대한 트래픽의 특성을 파악할 용도로 제공되며, 모든 요청의 완벽한 기록을 제공할 목적으로 개발된 것이 아닙니다. 실제로 로그 레코드가 누락되는 경우는 매우 드물지만 서버 로깅 자체가 모든 요청을 완벽하게 기록할 목적으로 제공되는 것이 아닙니다.

완벽한 전송을 보장할 수 없는 서버 로깅의 특성에 따라 AWS 포털에 제공되는 사용 보고서(AWS Management Console의 청구 및 비용 관리 보고서)에는 전송된 서버 로그에 포함되지 않은 액세스 요청이 하나 이상 포함될 수 있습니다.

버킷 로깅 상태 변경 시 일정 기간에 걸쳐 단계적으로 반영됨

버킷의 로깅 상태를 변경한 후 실제 로그 파일의 전송에 반영되려면 어느 정도 시간이 지나야 합니다. 예를 들어 버킷에 대해 로깅을 활성화할 경우 이후 1시간 동안 이루어진 요청 중 일부는 기록되지만 일부는 기록되지 않을 수도 있습니다. 버킷 A에서 버킷 B로 로깅의 대상 버킷을 변경할 경우 이후 1시간 동안 일부 로그는 버킷 A로 계속 전송될 수 있지만, 다른 로그는 새로운 대상 버킷 B로 전송될 수 있습니다. 그러나 추가 작업을 수행하지 않아도 어느 정도 기간이 지나면 새 설정에 따라 모든 로그가 전송됩니다.

서버 액세스 로깅에 대한 자세한 내용은 다음 단원을 참조하십시오.

이 페이지에서: