View a markdown version of this page

서버 액세스 로깅을 사용한 요청 로깅 - Amazon Simple Storage Service

서버 액세스 로깅을 사용한 요청 로깅

서버 액세스 로깅은 버킷에 대해 이루어진 요청에 따른 상세 레코드를 제공합니다. 서버 액세스 로그는 운영 분석, 보안 태세 파악, 사용자 요금 청구 등에 활용될 수 있습니다.

Amazon S3는 주기적으로 액세스 로그 레코드를 수집하고, 이를 통합하여 사용자가 선택한 대상으로 전송합니다. Amazon CloudWatch Logs 또는 Amazon S3 범용 버킷에 로그를 전송할 수 있습니다.

참고

서버 액세스 로그는 2019년 3월 20일 이후에 시작된 리전의 잘못된 리전 리디렉션 오류에 대한 정보를 기록하지 않습니다. 버킷이 존재하는 리전 외부에서 객체 또는 버킷 요청이 생성되면 잘못된 리전 리디렉션 오류가 발생합니다.

전송 옵션

서버 액세스 로그를 두 대상에 전달할 수 있습니다. 둘 중 하나를 사용하거나 둘 다 사용할 수 있습니다.

  • Amazon CloudWatch Logs - CloudWatch Logs 로그 그룹에 구조화된 형식의 로그를 전송합니다. CloudWatch Logs Insights를 사용하여 로그를 쿼리하고, 계정 및 리전별 로그를 집계하며, AWS KMS를 통해 로그를 암호화할 수 있습니다. 로그 그룹에서 JSON 또는 Apache Parquet 형식으로 Amazon S3에 로그를 전송하거나 SQL 분석을 위해 Apache Iceberg 형식으로 S3 Tables에 로그를 미러링할 수도 있습니다. CloudWatch 벤디드 로그 수집 요금이 적용됩니다.

  • Amazon S3 범용 버킷 - 지정한 Amazon S3 버킷에 공백으로 구분된 텍스트 형식의 로그를 전송합니다. 로그 전송에는 요금이 부과되지 않습니다. 로그 파일의 스토리지에 대해서만 비용을 지불합니다. 대상 버킷은 소스 버킷과 AWS 리전 및 AWS 계정이 동일해야 합니다.

다음은 두 전송 옵션을 비교하는 표입니다.

서버 액세스 로그 전송 옵션 비교
기능 Amazon CloudWatch Logs Amazon S3 범용 버킷
대상 CloudWatch Logs 로그 그룹, Amazon S3(JSON 또는 Parquet) 또는 Amazon Data Firehose CloudWatch Logs 로그 그룹 전송을 확장하여 로그를 Iceberg 형식의 S3 Tables로 미러링할 수 있습니다. Amazon S3 버킷(공백으로 구분된 텍스트)
로그 형식 구조화된 JSON(로그 그룹), JSON 또는 Apache Parquet(Amazon S3), Apache Iceberg(S3 Tables) 공백으로 구분된 텍스트
쿼리 CloudWatch Logs Insights(로그 그룹), Amazon Athena 또는 Spark(S3 Tables) Amazon Athena
S3 Tables를 통한 SQL 분석 예(자동 Iceberg 미러) 아니요(ETL 필요)
교차 계정 집계 예(Amazon S3 및 Firehose 대상은 교차 계정 전송 지원) 아니요(동일한 계정만 해당)
교차 리전 집계 활성화 예(Amazon S3 및 Firehose 대상은 리전 간 전송 지원) 아니요(동일한 리전만 해당)
AWS KMS 암호화 아니요(SSE-S3만 해당)
설정 CloudWatch Logs API 또는 Amazon S3 콘솔 Amazon S3 API(PutBucketLogging) 또는 콘솔
전송 지연 시간 몇 시간 내에 몇 시간 내에

서버 로그 전송이 항상 보장되지는 않음

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

모든 서버 로깅이 제때 전송될 것이라고 보장할 수는 없습니다. 특정 요청에 대한 로그 레코드는 요청이 실제로 처리된 후에 오랫동안 전송되거나 전혀 전송되지 않을 수도 있습니다. 로그 레코드가 중복되는 경우가 발생할 수도 있습니다. 서버 로그는 버킷에 대한 트래픽의 특성을 파악할 용도로 제공되며, 로그 레코드가 손실되거나 중복되는 경우는 매우 드물지만 서버 로깅은 모든 요청을 완벽하게 기록할 목적으로 제공되는 것이 아니라는 점에 유의해야 합니다.

완벽한 전송을 보장할 수 없는 서버 로깅의 특성 때문에 사용 보고서에는 전송된 서버 로그에 포함되지 않은 액세스 요청이 하나 이상 포함될 수 있습니다. 이 사용 보고서는 AWS 결제 및 비용 관리 콘솔의 비용 및 사용량 보고서에서 찾을 수 있습니다.

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

버킷의 로깅 상태를 변경한 후 실제 로그 파일의 전송에 반영되려면 어느 정도 시간이 지나야 합니다. 예를 들어, 버킷에 로깅을 활성화할 경우 이후 1시간 동안 이루어진 요청 중 일부는 로깅되지만 일부는 로깅되지 않을 수도 있습니다. 버킷 A에서 버킷 B로 로깅하기 위한 대상 버킷을 변경한다고 가정해 보겠습니다. 다음 시간 동안 일부 로그는 버킷 A로 계속 전송되고 다른 로그는 새 대상 버킷 B로 전송될 수 있습니다. 마찬가지로 전송에 사용되는 CloudWatch Logs 로그 그룹을 변경하면 전환 중에 일부 로그가 이전 로그 그룹으로 계속 전송될 수 있습니다. 어떤 경우에도 사용자에 의한 추가 조치 없이 새로운 설정이 적용됩니다.

가격 책정

서버 액세스 로깅 비용은 사용하는 전송 옵션에 따라 달라집니다.

  • Amazon CloudWatch Logs - 수집 비용은 CloudWatch 벤디드 로그 요금이 적용되며, 볼륨에 따른 단계별 할인 요금제로 청구됩니다. CloudWatch Logs는 로그를 저장하기 전에 압축하므로 저장된 볼륨이 수집된 볼륨보다 훨씬 적습니다. S3 Tables 미러를 활성화하면 스토리지 또는 테이블 유지 관리에 대한 추가 요금이 부과되지 않습니다. S3 Tables 요금제에 따라 쿼리 요청에 대해서만 비용을 지불합니다. 현재 요금은 CloudWatch 요금을 참조하세요.

  • Amazon S3 범용 버킷 - 로그 전송에는 요금이 부과되지 않습니다. 로그 파일 스토리지 비용은 표준 Amazon S3 스토리지 요금에 따라 청구됩니다. 로그 파일 전송에 따른 데이터 전송 요금은 발생하지 않지만 로그 파일 액세스에 따른 일반 데이터 전송 요금은 부과됩니다. 현재 요금은 Amazon S3 요금을 참조하세요.

서버 액세스 로그 전송 및 사용에 대한 자세한 내용은 다음 섹션을 참조하세요.