상세 컨텐츠

본문 제목

AWS - 고급 Amazon S3

클라우드

by myeongjaechoi 2025. 10. 24. 18:47

본문

Amazon S3 – 객체의 스토리지 클래스 전환 및 수명 주기 관리

1. 객체 이동(Transition) 개념

  • Amazon S3에서는 객체를 다른 스토리지 클래스로 이전(Transition) 할 수 있음
  • 예시:
    • Standard → Standard-IA → Intelligent-Tiering → One-Zone-IA
    • 또는 → Glacier Flexible Retrieval / Glacier Deep Archive
  • 전환은 수작업으로 할 수도 있고, Lifecycle Rule을 통해 자동화할 수도 있음

2. Lifecycle Rules 구성 요소

Lifecycle 규칙은 다음 두 가지 주요 동작으로 구성됨

  1. Transition Actions
    • 일정 기간 후 객체를 다른 스토리지 클래스로 이전
    • 예:
      • 60일 후 Standard-IA로 이전
      • 180일 후 Glacier로 이전 (아카이빙 목적)
  2. Expiration Actions
    • 일정 기간 후 객체를 자동 삭제
    • 예:
      • 액세스 로그를 365일 뒤 삭제
      • 버저닝 활성화 시, 모든 이전 버전 삭제 가능
      • 2주 이상 완료되지 않은 멀티파트 업로드 자동 삭제 가능

3. Lifecycle Rule의 세부 조건

  • Prefix (접두어) 기준 적용 가능
    → 특정 경로(images/, logs/)에만 규칙 적용
  • Tag 기반 적용 가능
    → 예: Department=Finance 태그가 있는 객체만 대상

4. 예시 시나리오

(1) 이미지 처리 파이프라인

  • EC2 애플리케이션이 프로필 사진 업로드 후 썸네일 생성
  • 썸네일은 원본으로 재생성 가능하며 60일만 유지
객체 초기 클래스 60일 후
원본 이미지 Standard Glacier로 이전
썸네일 이미지 One-Zone IA 삭제 (만료)

(2) 삭제 복구 정책

  • 삭제된 객체를 30일 내에 즉시 복구 가능해야 함
  • 이후 365일까지는 Glacier Deep Archive에서 복구 가능

구현 방법:

  • 버저닝(Versioning) 활성화 → 삭제 마커로 관리
  • 현재 버전이 아닌 객체(Noncurrent version)
    30일 후 Standard-IA로, 이후 Deep Archive로 이전

5. 최적 전환 시점 결정 – Amazon S3 Analytics

  • S3 Analytics는 객체의 접근 패턴을 분석해
    Standard ↔ Standard-IA 전환 시점 추천
  • One-Zone IA나 Glacier 클래스와는 비호환
  • 결과는 .csv 리포트로 제공되며, 분석 결과는
    초기 실행 후 24~48시간 내 업데이트

✅ 정리 요약

기능 설명
Transition 객체를 다른 스토리지 클래스로 자동 이전
Expiration 객체를 일정 기간 후 자동 삭제
Prefix / Tag 특정 경로나 태그에만 규칙 적용
Versioning 삭제된 객체 복구 및 비활성 버전 관리 가능
S3 Analytics 접근 패턴 기반 최적 전환 시점 제안

Amazon S3 – Lifecycle Rule (수명 주기 규칙) 실습 및 구성 이해

1. Lifecycle Rule 생성

  1. Management 탭 → Create lifecycle rule
  2. 규칙 이름: DemoRule
  3. 버킷의 모든 객체에 적용 선택 후 동의
  4. Lifecycle 규칙에는 총 5가지 작업 항목이 있음

2. 다섯 가지 규칙 작업 (Rule Actions)

작업 이름 설명 예시 설정
① 스토리지 클래스 간 최신 버전의 객체 이동 최신 버전(가장 최근 버전)의 객체를 일정 기간 후 다른 스토리지 클래스로 자동 이동 30일 후 Standard-IA, 60일 후 Intelligent-Tiering, 90일 후 Glacier Instant Retrieval, 180일 후 Glacier Flexible Retrieval, 365일 후 Deep Archive
② 스토리지 클래스 간 이전 버전 객체 이동 새로운 버전에 의해 덮어써진 **이전 객체 버전(비활성 버전)**을 이동 90일 후 Glacier Flexible Retrieval
③ 객체의 최신 버전 만료 가장 최신 객체 버전을 일정 기간 후 자동 삭제 700일 후 만료
④ 최신 버전이 아닌 객체 영구 삭제 오래된 객체 버전(버저닝된 이전 버전)을 일정 기간 후 완전히 삭제 700일 후 삭제
⑤ 만료된 객체 삭제 마커 및 미완료 멀티파트 업로드 삭제 불필요한 삭제 마커나 업로드 중단 파일 자동 정리 필요 시 활성화 가능

3. 설정 후 검토 및 실행

  • Lifecycle 규칙 생성 후 시간 순서대로 전환 및 만료 일정 확인 가능
  • 규칙은 백그라운드에서 자동 실행
  • 설정 완료 시 S3가 객체를 지정된 일정에 따라
    • 스토리지 클래스를 자동 변경
    • 필요 시 자동 삭제 처리

4. 핵심 요약

개념 설명
최신 버전 사용자에게 현재 노출되는 가장 최근 객체
이전 버전 새로운 객체에 의해 덮어씌워진 과거 버전
전환(Transition) 객체를 다른 스토리지 클래스로 자동 이동
만료(Expiration) 객체를 일정 기간 후 자동 삭제
자동화 목적 스토리지 비용 절감 및 장기 보관 데이터 관리 효율화

💡 실무 포인트

  • Lifecycle 규칙은 버저닝이 활성화된 버킷에서 특히 유용함
  • 백업, 로그, 아카이빙 데이터 관리 자동화에 자주 활용
  • 전환 주기 설정 시 최소 보관 기간(Glacier 90일, Deep Archive 180일 등) 을 반드시 고려해야 함

S3 요청자 지불 (Requester Pays)

개념

  • 일반적으로 S3 버킷 소유자(bucket owner) 가 스토리지 및 데이터 전송 비용을 부담한다.
  • 그러나 요청자 지불(Requester Pays) 기능을 활성화하면, 객체 다운로드를 요청한 사용자(requester)데이터 전송 비용을 지불하게 된다.

동작 방식

구분 비용 부담 주체
스토리지 비용 버킷 소유자
객체 다운로드(전송) 비용 요청자(Requester)

사용 시나리오

  • 대용량 데이터셋을 외부 계정이나 고객에게 공유할 때 유용하다.
  • 예: 연구 데이터, 공공 데이터 등 대규모 파일을 여러 사용자가 접근하는 경우.

주의 사항

  • 요청자는 익명일 수 없음.
    → 반드시 AWS 계정 인증이 필요하다.
    → 그래야 AWS가 해당 요청자에게 정확히 요금을 청구할 수 있음.
  • 요청자 지불 버킷을 사용하려면 --request-payer requester 옵션을 명시해야 한다.
    (CLI 예시: aws s3 cp s3://my-bucket/data.csv . --request-payer requester)

요약

“요청자 지불 버킷(Requester Pays)”은 데이터 다운로드 비용을 요청자가 부담하도록 하는 기능이다.
대규모 데이터 공유 시 비용 분담과 관리 효율성을 높이는 데 유용하다.

Amazon S3 이벤트 알림 (S3 Event Notifications)

1. 개념

  • 이벤트(Event): S3에서 발생하는 특정 동작을 의미한다.
    예: 객체 생성, 삭제, 복구, 복제 등.
  • **S3 이벤트 알림(Event Notifications)**은 S3 버킷에서 발생한 이벤트를 감지하고, 이를 다른 AWS 서비스(SNS, SQS, Lambda 등) 로 전달하여 자동으로 반응하도록 하는 기능이다.

2. 이벤트 필터링

  • 특정 객체나 조건에만 알림을 보내도록 필터(Filter) 를 설정할 수 있다.
    • 예: 파일명이 .jpg 로 끝나는 객체에만 알림 전송.
  • 이를 통해 불필요한 이벤트 트리거를 최소화하고 비용 효율을 높인다.

3. 주요 사용 사례

  • S3에 업로드된 이미지 파일의 자동 썸네일 생성 (Lambda 트리거)
  • 객체 업로드 시 메타데이터 기록 시스템에 자동 등록
  • 로그 파일 업로드 시 데이터 파이프라인(SQS, Kinesis 등) 으로 전송

4. 이벤트 알림의 대상(Targets)

S3 이벤트는 다음 세 가지 주요 서비스로 전송할 수 있다.

대상 설명
Amazon SNS (Simple Notification Service) 이벤트를 여러 구독자에게 알림 형태로 전송
Amazon SQS (Simple Queue Service) 이벤트를 큐에 저장하여 비동기적으로 처리
AWS Lambda 이벤트 발생 시 서버리스 함수 자동 실행

5. 권한(Access Policy) 설정

  • S3가 이벤트를 전송하려면 각 대상 리소스에 권한(policy) 이 필요하다.
    | 대상 | 필요한 정책 |
    |------|--------------|
    | SNS | SNS 리소스 정책 (S3가 SNS 토픽에 메시지 게시 가능하도록 허용) |
    | SQS | SQS 액세스 정책 (S3가 큐에 메시지 전송 가능하도록 허용) |
    | Lambda | Lambda 리소스 정책 (S3가 함수를 호출할 수 있도록 허용) |

중요:
S3 버킷 IAM 역할을 직접 사용하는 것이 아니라,
SNS/SQS/Lambda 리소스 정책에 S3 서비스의 접근 권한을 명시적으로 허용해야 한다.


6. EventBridge와의 통합

  • S3 이벤트는 내부적으로 Amazon EventBridge 로 전달된다.
  • EventBridge를 사용하면 S3 이벤트를 18가지 이상의 AWS 서비스 로 확장 전송 가능하다.
  • EventBridge의 장점:
    • 고급 필터링 (메타데이터, 객체 크기, 이름 등)
    • 다중 타깃 전송 (예: Step Functions, Kinesis, Firehose 등)
    • 아카이빙, 안정적 이벤트 전달 지원

7. 요약

S3 이벤트 알림은 S3에서 발생한 특정 이벤트를 감지해 자동으로 다른 AWS 서비스에 알림을 보내는 기능이다.
이를 통해 시스템 간 연동, 자동화, 이벤트 기반 워크플로우 구현이 가능하다.

Amazon S3 이벤트 알림 실습 (S3 Event Notifications + SQS 연동)

1. 목표

  • Amazon S3 버킷에서 객체가 생성될 때 자동으로 SQS 대기열에 알림이 전송되도록 설정한다.
  • 이를 통해 S3 → SQS 이벤트 흐름을 이해하고, 이벤트 기반 자동화의 동작 원리를 익힌다.

2. 실습 개요

  1. S3 버킷 생성
    • 이름: demo-stephane-v3-event-notifications
    • 리전: eu-west-1 (Ireland)
    • Create bucket 클릭 후 생성 완료
  2. Event Notifications 설정 위치
    • S3 버킷 → Properties 탭 → Event notifications 섹션
    • 두 가지 옵션 존재:
      • 이벤트 알림 생성(Create event notification)
      • EventBridge 통합(모든 이벤트를 EventBridge로 전송)
        → 이번 실습에서는 단순 이벤트 알림만 구성

3. 이벤트 알림 생성

  1. 이벤트 이름: DemoEventNotification
  2. 필터(접두사/접미사): 생략 (모든 객체에 적용)
  3. 이벤트 유형(Event types):
    • “All object create events” 선택 (객체 생성 시마다 알림 발생)
    • 필요 시 삭제, 복구 등 세부 이벤트도 선택 가능
  4. 대상(Target):
    • Lambda, SNS, SQS 중 SQS Queue 선택

4. Amazon SQS 대기열 생성

  1. SQS 콘솔 → Create queue
    • 이름: DemoS3Notification
    • 기본 설정 그대로 생성
  2. 생성 완료 후, S3가 SQS에 메시지를 전송할 수 있도록 권한 부여 필요

5. SQS 액세스 정책 수정

S3 버킷이 SQS Queue로 메시지를 보낼 수 있도록 Queue Policy를 추가해야 한다.

(1) 문제 상황

  • S3 이벤트 저장 시 “대상 구성을 확인할 수 없음” 오류 발생
    → 이유: SQS 대기열이 S3의 메시지를 허용하지 않음

(2) 해결 방법

  • SQS → Edit → Access Policy 수정
  • Policy Generator 사용
    • Policy Type: SQS Queue Policy
    • Effect: Allow
    • Action: SendMessage
    • Principal: *
    • ARN: 현재 SQS Queue ARN
  • Generate Policy 후 저장

참고: 이 정책은 예제에서는 “모두 허용” 형태이지만,
실제 환경에서는 S3 버킷 ARN만 허용하도록 제한해야 한다.


6. 이벤트 알림 연결

  • 다시 S3 콘솔로 돌아가서 DemoEventNotification 생성 재시도
  • 이제 정상적으로 SQS Queue를 대상(Target) 으로 지정 가능
  • 설정 저장 후 이벤트 연결 성공

7. 이벤트 테스트

  1. SQS 콘솔 → Queue 선택 → Send and receive messages
    • Poll for messages 클릭
    • Amazon S3가 보낸 테스트 메시지 수신 확인 가능
  2. S3 버킷에 객체 업로드
    • Add files → coffee.jpg 업로드
    • 업로드 후 SQS에서 Poll for messages 클릭
  3. 결과 확인
    • 메시지 내용 확인:
      • "eventName": "ObjectCreated:Put"
      • "s3": { "object": { "key": "coffee.jpg" } }
    • 즉, 객체가 업로드되면서 S3 → SQS로 이벤트가 전달됨을 확인
  4. 메시지 삭제 후 정리 완료

8. 정리

항목 내용
이벤트 발생 시점 S3 객체가 생성될 때 (ObjectCreated:Put)
이벤트 전달 대상 SQS Queue (DemoS3Notification)
권한 필요성 SQS Queue Policy에 S3의 메시지 전송 허용 필요
활용 예시 Lambda나 백엔드에서 SQS 메시지를 수신해 이미지 썸네일 생성 등 자동 처리

9. 확장 포인트

  • SNS 또는 Lambda를 대상으로 알림을 보낼 수도 있다.
  • EventBridge 통합 활성화 시,
    S3 이벤트를 고급 필터링 및 다중 서비스로 전달 가능 (예: Step Functions, Firehose 등).

10. 핵심 요약

Amazon S3 이벤트 알림은 S3 버킷 내에서 발생한 이벤트를 SQS, SNS, Lambda 또는 EventBridge로 전송하여 이벤트 기반 자동화를 구현하는 핵심 기능이다.
이 실습에서는 S3 → SQS 구성을 통해 객체 업로드 시 자동 이벤트 전송 과정을 직접 확인했다.

Amazon S3 성능 및 최적화 (Performance & Optimization)

1. S3 기본 성능 특성

  • 자동 스케일링 지원
    Amazon S3는 매우 높은 요청 수를 자동으로 처리하도록 설계됨.
  • 낮은 지연 시간 (Latency)
    첫 번째 바이트를 가져오기까지 약 100~200ms 수준.
  • 기본적으로 매우 높은 처리량을 제공함.

2. 요청 처리량 (Request Rate)

요청 유형 접두사(prefix)당 초당 최대 요청 수
PUT / COPY / POST / DELETE 3,500건/초
GET / HEAD 5,500건/초
  • 접두사(Prefix): 버킷 이름과 객체 키(key) 사이의 경로를 의미.
    예:
    • 객체 경로: folder1/sub1/file.txt → 접두사: folder1/sub1/
    • folder1/sub2/file.txt는 다른 접두사로 간주됨.
  • 접두사 단위로 성능이 분리됨
    여러 접두사에 요청을 분산하면 병렬 성능 향상 가능.

예시:
4개의 서로 다른 접두사를 사용하면
→ GET 요청 기준 5,500 × 4 = 22,000 요청/초 달성 가능.


3. 업로드 성능 향상: 멀티파트 업로드 (Multipart Upload)

  • 100MB 초과 파일: 멀티파트 업로드 권장
  • 5GB 초과 파일: 필수 사용

작동 방식

  1. 큰 파일을 여러 "조각(Part)"으로 분할
  2. 각 조각을 병렬 업로드
  3. 모든 조각 업로드 후 S3가 자동으로 병합

장점

  • 네트워크 대역폭 효율 향상
  • 실패 시 개별 파트만 재전송 가능 → 복원력 증가
  • 업로드 속도 및 안정성 개선

4. S3 전송 가속화 (S3 Transfer Acceleration)

  • 개념: 전 세계 **AWS Edge Location(엣지 위치)**을 통해
    데이터를 가장 가까운 엣지로 업로드 후, AWS 내부 전용 네트워크로 버킷에 전달.
  • 효과
    • 공용 인터넷 사용 최소화
    • AWS 전용망을 통한 고속·안정적 전송
  • 호환성
    • 멀티파트 업로드와 함께 사용 가능
  • 적용 예시
    • 미국 → 호주 버킷 업로드 시,
      미국의 엣지 위치 → AWS 내부 네트워크 → 호주 S3 버킷 순서로 전송됨.

즉, 지리적으로 멀리 떨어진 지역 간 파일 전송 속도를 극적으로 단축시킴.


5. 다운로드 최적화: 범위 가져오기 (Range Fetches)

  • Range Fetches (Byte-Range Fetches):
    파일의 특정 바이트 구간만 요청하는 기능.

활용 사례

  1. 병렬 다운로드 가속
    • 파일을 여러 바이트 범위로 나눠 병렬 다운로드
    • 실패 시 특정 범위만 재시도 → 복원력 향상
  2. 파일 일부만 읽기
    • 예: 파일 헤더(처음 50바이트)만 빠르게 읽기
    • 전체 다운로드 없이 필요한 정보만 즉시 조회 가능

장점

  • 다운로드 속도 향상
  • 리소스 절약 (필요한 부분만 전송)

6. 종합 요약

기능 목적 특징
접두사 분산 설계 성능 확장 접두사별 요청 제한 (3,500 / 5,500)
멀티파트 업로드 대용량 업로드 가속 병렬 전송, 자동 병합
전송 가속화 지역 간 전송 속도 향상 Edge Location → AWS 전용망 사용
Range Fetches 효율적 다운로드 병렬 다운로드 및 부분 요청

7. 핵심 정리

  • Amazon S3는 자동 스케일링낮은 지연 시간으로
    매우 높은 요청 처리량을 기본 제공한다.
  • 접두사 단위의 요청 분산이 중요하며,
    대용량 파일은 멀티파트 업로드로 업로드하고,
    지리적으로 먼 위치에서는 전송 가속화를 활용한다.
  • Range Fetches로 다운로드 효율까지 높이면
    업로드·다운로드 전 구간에서 최적 성능을 확보할 수 있다.

Amazon S3 Batch Operations

핵심 개념
Amazon S3 Batch Operations단일 요청으로 여러 S3 객체에 대해 대량 작업을 수행할 수 있는 서비스이다. 직접 스크립트를 작성하지 않아도 대규모 객체를 효율적으로 처리할 수 있다.


주요 기능 및 사용 사례

  • 메타데이터 및 속성 수정: 한 번에 여러 객체의 메타데이터나 속성을 변경 가능
  • 버킷 간 객체 복사: 여러 객체를 다른 S3 버킷으로 일괄 복사 가능
  • 암호화 적용: 암호화되지 않은 모든 객체를 한 번에 암호화 가능
  • ACL 및 태그 수정: 접근 제어나 태깅을 일괄 변경 가능
  • Glacier 복원: S3 Glacier에 저장된 객체를 대량으로 복원 가능
  • Lambda 호출: 각 객체마다 사용자 지정 Lambda 함수를 실행해 맞춤형 처리 수행 가능

구성 요소

  1. 객체 목록 (Manifest):
    • 어떤 객체들에 대해 작업할지 정의
    • S3 Inventory로 객체 목록을 생성하고,
    • S3 Select로 필요한 객체만 필터링
  2. 작업 정의 (Operation):
    • 수행할 작업 종류 (복사, 태깅 수정, 암호화 등)
    • 필요한 매개변수 및 설정 포함

S3 Batch Operations를 사용하는 이유

  • 자동 재시도 관리
  • 작업 진행 상황 추적
  • 완료 알림 및 결과 보고서 제공
  • 안정적이고 대규모 병렬 처리 가능

대표 예시

  • S3 Inventory로 암호화되지 않은 객체 목록을 얻고,
  • S3 Batch Operations로 해당 객체 모두를 암호화 작업 수행.

요약
S3 Batch Operations는 S3 객체를 수천, 수백만 단위로 자동화해 관리할 수 있게 해주는 대량 처리 도구이며,
S3 Inventory + S3 Select 조합으로 대상 객체를 필터링해 효율적으로 대규모 작업을 수행할 수 있다.

Amazon S3 Storage Lens

핵심 개념
Amazon S3 Storage Lens는 AWS 전체 조직 또는 개별 계정, 리전, 버킷, 접두사 단위로 스토리지 사용 현황을 분석하고 최적화할 수 있는 시각화 도구이다.
비용 절감, 데이터 보호 강화, 이상 징후 탐지를 위한 인사이트를 제공한다.


주요 특징

  • 조직 단위 분석: AWS Organizations 전역의 계정, 지역, 버킷, 접두사별 데이터 집계
  • 대시보드 제공:
    • 기본 대시보드(Default Dashboard): Amazon S3가 미리 구성하며 삭제는 불가하지만 비활성화 가능
    • 사용자 정의 대시보드(Custom Dashboard): 특정 범위(계정, 리전, 버킷 등)에 대한 사용자 지정 분석 가능
  • 데이터 내보내기: CSV 또는 Parquet 형식으로 S3 버킷에 저장 가능
  • 기간별 데이터 제공:
    • 기본 메트릭은 30일
    • 결제 시점 기준 데이터는 최대 15개월 보관

주요 메트릭 유형 및 사용 사례

  1. 요약 메트릭 (Summary Metrics)
    • StorageBytes, ObjectCount 등
    • 스토리지 사용량 및 객체 크기 추세 분석
    • 예: 빠르게 성장하거나 사용되지 않는 버킷 식별
  2. 비용 최적화 메트릭 (Cost Optimization Metrics)
    • NonCurrentVersionBytes, IncompleteMultipartUploadBytes 등
    • 비효율적 스토리지 사용 탐지 및 정리
    • 예: 불완전한 멀티파트 업로드로 낭비되는 공간 확인
  3. 데이터 보호 메트릭 (Data Protection Metrics)
    • VersioningEnabledBucketCount, MFADeleteEnabledBucketCount, CrossRegionReplicationRuleCount 등
    • 데이터 보호 모범 사례 준수 여부 점검
    • 예: 버전 관리나 암호화가 비활성화된 버킷 식별
  4. 액세스 관리 메트릭 (Access Management Metrics)
    • 버킷의 소유권 및 권한 설정 파악
    • 예: 퍼블릭 액세스 위험이 있는 버킷 탐지
  5. 퍼포먼스 메트릭 (Performance Metrics)
    • TransferAccelerationEnabledBucketCount 등
    • S3 전송 가속이 활성화된 버킷 추적
  6. 액티비티 메트릭 (Activity Metrics)
    • AllRequests, GetRequests, PutRequests, BytesDownloaded 등
    • 요청량 및 데이터 전송량 분석
  7. 상세 상태 코드 메트릭 (Detailed Status Code Metrics)
    • 200OKStatusCount, 403ForbiddenErrorCount 등
    • HTTP 요청 성공/실패 현황 파악

무료 vs 유료 메트릭 비교

구분 무료 메트릭 고급(유료) 메트릭
제공 항목 수 약 28개 기본 지표 추가적인 활동/보호/비용/상태 코드 지표
데이터 보존 기간 14일 15개월
기능 기본 사용량 분석 고급 최적화, 데이터 보호 인사이트, 권장 사항 제공
CloudWatch 연동 지원 동일하게 지원

요약

  • S3 Storage Lens는 S3 전반의 사용량, 비용, 보안 상태를 한눈에 파악하게 해주는 중앙 집중형 분석 도구이다.
  • 무료/유료 지표 구분, 조직 단위 데이터 집계, 기본 대시보드의 자동 구성이 핵심 포인트다.
  • 시험에서는 “S3 스토리지 사용 및 보호 상태를 시각적으로 분석하는 서비스는?” → S3 Storage Lens로 기억하면 된다.

'클라우드' 카테고리의 다른 글

AWS - S3  (1) 2025.10.21
AWS - 세 개의 아키텍처 예시 및 Beanstalk  (0) 2025.10.21
AWS - DNS, Route 53  (0) 2025.10.19
AWS - RDS, Aurora, ElastiCache  (0) 2025.10.18
AWS - Load Balancer  (0) 2025.10.17

관련글 더보기