본문 바로가기
개발 공부/AWS

[AWS] SAA 공부 (10)-2 S3 (Simple Storage Service) - 요청자 지불 / 이벤트 알림 / 성능 / 배치 작업 /

by sngynhy 2025. 4. 1.

S3 요청자 지불

S3에서 기본적으로 버킷 소유자(Bucket Owner)가 버킷과 관련된 모든 S3 스토리지 및 데이터 전송 비용을 지불하지만,
요청자 지불(Requester Pays) 기능을 활성화하면 객체를 다운로드하는 사용자(요청자)전송 비용을 부담하도록 설정 가능

  • 버킷 소유자는 데이터 저장 비용만 부담 > 전송 비용은 요청자 부담
  • 데이터를 많이 다운로드 하는 서비스에 적합 (ex. 공공 데이터셋)
  • 요청자는 AWS 계정이 있어야 하며, S3에서 데이터 전송 비용을 직접 지불

S3 이벤트 알림

버킷에서 특정 이벤트 발생 시 AWS 서비스로 자동 알림 전송

  • 파일 업로드, 삭제, 복사 등의 이벤트 감지
  • Lambda, SQS, SNS와 연계 가능
  • 원하는 만큼 S3 이벤트 생성 가능, 원하는 모든 타깃(Lambda, SQS, SNS)에 전송 가능
  • 비동기 방식으로 실시간 데이터 처리 가능
  • 서버 없이도 강력한 자동화 시스템 구축 가능
  • 파일 업로드 시 자동 데이터 처리, 실시간 로그 수집, 워크플로우 자동화 등에 활용

S3 성능

  • S3는 높은 요청 수로 자동 스케일링 처리
  • S3에서 첫 번째 바이트를 가져오는 데 100~200밀리초의 짧은 지연 시간을 갖음
  • 버킷 내에서 prefix당 초당 3,500개의 넣기(PUT), 복사(COPY), 올리기(POST), 삭제(DELETE)를 수행하거나
    5,500개의 가져오기(GET) 또는 헤드(HEAD) 요청을 가져옴
  • 버킷의 prefix 수는 제한 없음

S3 성능 최적화

  • 멀티파트 업로드
    • 업로드를 병렬화하여 전송 속도를 높여 대역폭을 최대화
    • 사이즈가 큰 파일 업로드 시 작은 파일 단위로 나누어 병렬로 업로드 후 모든 파일이 업로드 되면 큰 파일로 다시 합침
    • 파일의 크기가 100MB보다 크면 멀티파트 업로드 권장, 5GB보다 클 경우 필수 사용
  • S3 전송 가속화
    • 업로드, 다운로드를 위한 전송 가속화
    • 멀티파트 업로드와 호환
    • 파일을 AWS 엣지 위치로 전송하여 전송 속도를 높임 > 해당 데이터가 대상 지역의 S3 버킷으로 전달됨
    • 예를 들어, 미국에 있는 파일을 호주에 있는 S3 버킷에 업로드 하려고 할 때
      공공 인터넷을 사용하여 미국의 엣지 위치를 통해 해당 파일을 업로드한 후
      해당 엣지 위치에서 호주의 아마존 S3 버킷으로 빠른 프라이빗 AWS 네트워크를 통해 파일을 전송
      > 공공 인터넷의 사용량을 최소화하고, 프리이빗 AWS 네트워크의 사용량을 극대화

S3 바이트 범위 가져오기 (Byte-Range Fetch)

파일 전체를 다운로드하지 않고 특정 바이트 범위만 가져올 수 있는 기능

  • 병렬 다운로드 가능 > 여러 범위를 동시에 요청하여 속도 성능 향상
  • 특정 바이트 범위를 가져오는 데 실패한 경우에도 더 작은 바이ㅂ트 범위를 다시 시도 가능 (실패 시 복원력 향상)
  • 스트리밍 처리 가능 > 비디오, 로그 파일 등에서 특정 부분만 가져와 처리

바이트 범위 요청 방식

HTTP Range 헤더를 사용하여 특정 바이트 범위를 지정하는 방식으로 이루어짐

Range: bytes=0-999 // 파일의 처음 1000바이트(0~999) 요청
Range: bytes=1000-1999 // 파일의 1000~1999 바이트 요청
Range: bytes=500- // 500바이트부터 끝까지 요청
Range: bytes=0-499,1000-1499 // XXX 멀티 바이트 요청 불가 (S3는 멀티 범위 요청을 지원하지 않음)

 

S3 배치 작업 (Batch Operations)

단일 요청으로 S3 객체에서 대량 작업을 일괄적으로 수행하는 서비스
> S3에서 수백만~수십억 개의 객체에 대해 한 번의 요청으로 작업 수행 가능

  • 사용 사례
    • 한 번에 많은 S3 객체의 메타데이터와 프로퍼티 수정 가능
    • S3 버킷 간에 객체 복사
    • S3 버킷 내 암호화되지 않은 모든 객체를 암호화
    • ACL 또는 태그 수정
    • S3 Glacier에서 한 번에 많은 객체 복원 가능
    • Lambda 함수를 호출하여 S3 배치 작업의 모든 객체에서 사용자 지정 작업 수행
      • 객체 목록에서 원하는 모든 작업 수행 가능
  • 배치 작업 구성 요소
    • 객체의 목록
    • 수행할 작업
    • 옵션 매개 변수
  • 재시도 관리 > 실패한 작업 다시 실행
  • 진행 상황 추적
  • 작업 완료 알림
  • 보고서 생성

배치 작업에 포함할 객체 가져오기

  1. 대상 객체 목록 생성
    • S3 Inventory 기능 또는 CSV 파일(객체 목록이 포함)을 사용해 객체 목록 가져오기
  2. Batch 작업 생성 > 대상 객체를 포함하는 작업 요청 생성
    • S3 Select를 사용해 객체를 필터링
    • 실행할 작업 유형 선택 (ex. Delete, Copy 등)
  3. Batch Job 실행
    • S3 배치 작업에 수행할 작업, 매개 변수와 함께 객체 목록 전달
    • AWS가 비동기적으로 작업을 실행하며, 상태 모니터링 가능
  4. S3 배치가 작업을 수행하고 객체를 처리
    • 작업 완료 후 성공/실패 로그 확인 및 재시도 가능

=> S3 Inventory를 사용해 암호화되지 않은 모든 객체를 찾은 다음 S2 배치 작업을 사용해 한 번에 모두 암호화

⚡ S3 Inventory란?
S3 버킷의 객체 목록을 주기적으로 생성하는 기능
> 대규모 데이터 관리 및 비용 절감, 감사, 분석에 유용

S3 Storage Lens

S3 사용량과 스토리지 메트릭을 분석하는 서비스
> S3의 비용 최적화, 데이터 보호, 사용 패턴 파악하여 S3 사용 최적화

  • 30일 사용량 및 활동 메트릭 제공
  • 다중 계정 모니터링
    • 조직 수준, 특정 계정, 지역, 버킷 또는 접두사별로 데이터 집계 가능
  • 대시보드 제공 (기본 대시보드, 사용자 정의 대시보드)
    • 기본 대시보드에는 여러 지역과 계정의 데이터 표시 > 지역별, 계정별 세부 정보 확인 가능
    • S3에 의해 사전 구성 > 필터링 기능 필요 X
    • 객체 수, 평균 객체 사이즈, 보유한 버킷 수, 계정 등의 정보 확인
  • 모든 메트릭과 리포트를 CSV 또는 parquet 형식으로 S3 버킷으로 내보내기 가능

S3 Storage Lens 메트릭 종류

  • Summary Metrics - S3 스토리지에 대한 일반적인 인사이트 제공
    • 스토리지 바이트 > 스토리지 및 객체 크기
    • 사용 사례
      • 가장 빠르게 성장하거나 사용하지 않는 버킷과 접두사 식별
  • Cost-Optimization Metrics - 스토리지 비용을 관리하고 최적화할 수 있는 인사이트 제공
    • 오래된 데이터, 비효율적인 스토리지 클래스 탐지
    • 현재 버전이 아닌 버전에 대한 정보 제공
    • 스토리지 바이트 > 최신이 아닌 버전 객체의 수, 실제로 차지하는 공간, 불완전한 멀티파트 업로드 스토리지 바이트 수
    • 사용 사례
      • 어떤 버킷이 다중 파트 업로드에 실패했는지 또는 어떤 객체를 더 저렴한 스토리지 클래스로 전환할 수 있는지
      • 불완전한 업로드가 있는 경우 버킷에서 얼마나 많은 공간을 차지하는지 확인
  • Data-Protection Metrics > 데이터 보호 기능에 대한 인사이트 제공
    • 모든 버킷이 버전 관리 등을 통해 활성화되었는지 확인
    • 삭제된 객체 수, 버전 관리 상태 분석
    • 사용 사례
      • 데이터 보호 모범 사례를 따르지 않는 버킷을 식별
  • Access-management Metrics - S3 버킷 소유권에 대한 인사이트 제공
    • 사용 사례
      • 버킷이 현재 어떤 객체 소유권 설정을 사용하고 있는지 식별
  • Event  Metrics - S3 이벤트 알림에 대한 인사이트 제공
    • S3 이벤트 알림이 구성된 버킷의 수를 파악
  • Performance Metrics - S3 전송 가속에 대한 인사이트 제공
    • S3 전송 가속이 활성화된 버킷의 수를 확인
  • Activity Metrics
    • PUT, GET, DELETE 요청 수, 트래픽 양 등 확인
  • Detailed Status Code Metrics - HTTP 상태 코드에 대한 인사이트 제공
    • 버킷의 사용 유형 파악

S3 Storage Lens 가격

  • 무료 버전
    • 모든 고객에게 자동으로 제공
    • 약 28개의 사용량 지표 포함
    • 쿼리에 대한 데이터 14일 동안 조회 가능
  • 유료 버전
    • 고급 지표 및 권장 사항의 경우 추가 유료 지표 및 기능 사용 가능
      • 활동, 고급 비용 최적화, 고급 데이터 보호 및 상태 코드
    • CloudWatch Publishing
      • 추가 비용없이 CloudWatch 메트릭에 액세스 가능
    • S3 버킷 내의 접두사 수준에서 메트릭 수집
    • 결제 시 데이터 15개월 동안 사용