서버 접근 로깅으로 요청 기록

서버 접근 로깅으로 요청 기록

서버 접근 로깅은 버킷에 이루어진 요청에 대한 상세 기록을 제공해요. 서버 접근 로그는 운영 분석, 보안 상태 파악, 사용자 비용 배분(charge back)에 사용할 수 있어요.

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) 또는 콘솔
전달 지연 몇 시간 안에 몇 시간 안에

최선 방식(best-effort) 서버 로그 전달

서버 접근 로그 레코드는 최선 방식으로 전달돼요. 로깅에 제대로 구성된 버킷에 대한 대부분의 요청은 전달된 로그 레코드로 이어져요. 대부분의 로그 레코드는 기록된 시간으로부터 몇 시간 안에 전달되지만, 더 자주 전달될 수도 있어요.

서버 로깅의 완전성과 적시성은 보장되지 않아요. 특정 요청에 대한 로그 레코드는 요청이 실제로 처리된 후 한참 후에 전달되거나 전혀 전달되지 않을 수도 있어요. 로그 레코드가 중복으로 나타나는 것도 볼 수 있어요. 서버 로그의 목적은 버킷에 대한 트래픽의 성격을 파악하게 해 주는 것이에요. 로그 레코드가 드물게 분실되거나 중복되지만, 서버 로깅이 모든 요청의 완전한 회계를 위한 것은 아니라는 점을 알아두세요.

서버 로깅의 최선 방식 특성 때문에 사용량 보고서에는 전달된 서버 로그에 나타나지 않는 하나 이상의 접근 요청이 포함될 수 있어요. 이 사용량 보고서는 AWS Billing and Cost Management 콘솔의 Cost & usage reports에서 찾을 수 있어요.

버킷 로깅 상태 변경은 시간이 지나면서 적용된다

버킷의 로깅 상태 변경이 로그 파일 전달에 실제로 영향을 미치기까지는 시간이 걸려요. 예를 들어 버킷에 로깅을 활성화하면 다음 1시간에 이루어진 일부 요청은 로그로 기록되고, 다른 요청은 기록되지 않을 수 있어요. 로깅 대상 버킷을 버킷 A에서 버킷 B로 바꾼다고 가정해 보세요. 다음 1시간 동안 일부 로그는 계속 버킷 A로 전달되고, 다른 로그는 새 대상 버킷 B로 전달될 수 있어요. 마찬가지로 전달에 사용하는 CloudWatch Logs 로그 그룹을 바꾸면 전환 중에 일부 로그가 이전 로그 그룹으로 계속 전달될 수 있어요. 모든 경우에서 새 설정은 추가 조치 없이 결국 적용돼요.

요금

서버 접근 로깅 비용은 사용하는 전달 옵션에 따라 달라져요.

  • Amazon CloudWatch Logs – CloudWatch 벤디드 로그 요율로 수집 비용을 지불하며, 볼륨 기반의 계층형 요금이 적용돼요. CloudWatch Logs는 저장 전에 로그를 압축하므로 저장 볼륨이 수집 볼륨보다 훨씬 적어요. S3 Tables 미러를 활성화하면 저장이나 테이블 유지 관리에 추가 비용이 없어요. S3 Tables 요금의 쿼리 요청 비용만 지불해요. 현재 요율은 CloudWatch pricing을 참고하세요.
  • 일반 용도 Amazon S3 버킷 – 로그 전달에는 비용이 없어요. 표준 Amazon S3 저장 요율로 로그 파일 저장 비용만 지불해요. 로그 파일 전달에 데이터 전송 요금을 부과하지는 않지만, 로그 파일 접근에는 일반 데이터 전송 요율을 부과해요. 현재 요율은 Amazon S3 pricing을 참고하세요.

서버 접근 로그 전달 및 사용에 대한 자세한 내용은 다음 섹션을 참고하세요.

더 알아보기 (Learn more)