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 규칙은 다음 두 가지 주요 동작으로 구성됨
- Transition Actions
- 일정 기간 후 객체를 다른 스토리지 클래스로 이전
- 예:
- 60일 후 Standard-IA로 이전
- 180일 후 Glacier로 이전 (아카이빙 목적)
- 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 생성
- Management 탭 → Create lifecycle rule
- 규칙 이름: DemoRule
- 버킷의 모든 객체에 적용 선택 후 동의
- 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. 실습 개요
- S3 버킷 생성
- 이름: demo-stephane-v3-event-notifications
- 리전: eu-west-1 (Ireland)
- Create bucket 클릭 후 생성 완료
- Event Notifications 설정 위치
- S3 버킷 → Properties 탭 → Event notifications 섹션
- 두 가지 옵션 존재:
- 이벤트 알림 생성(Create event notification)
- EventBridge 통합(모든 이벤트를 EventBridge로 전송)
→ 이번 실습에서는 단순 이벤트 알림만 구성
3. 이벤트 알림 생성
- 이벤트 이름: DemoEventNotification
- 필터(접두사/접미사): 생략 (모든 객체에 적용)
- 이벤트 유형(Event types):
- “All object create events” 선택 (객체 생성 시마다 알림 발생)
- 필요 시 삭제, 복구 등 세부 이벤트도 선택 가능
- 대상(Target):
- Lambda, SNS, SQS 중 SQS Queue 선택
4. Amazon SQS 대기열 생성
- SQS 콘솔 → Create queue
- 이름: DemoS3Notification
- 기본 설정 그대로 생성
- 생성 완료 후, 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. 이벤트 테스트
- SQS 콘솔 → Queue 선택 → Send and receive messages
- Poll for messages 클릭
- Amazon S3가 보낸 테스트 메시지 수신 확인 가능
- S3 버킷에 객체 업로드
- Add files → coffee.jpg 업로드
- 업로드 후 SQS에서 Poll for messages 클릭
- 결과 확인
- 메시지 내용 확인:
- "eventName": "ObjectCreated:Put"
- "s3": { "object": { "key": "coffee.jpg" } }
- 즉, 객체가 업로드되면서 S3 → SQS로 이벤트가 전달됨을 확인
- 메시지 삭제 후 정리 완료
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 초과 파일: 필수 사용
작동 방식
- 큰 파일을 여러 "조각(Part)"으로 분할
- 각 조각을 병렬 업로드
- 모든 조각 업로드 후 S3가 자동으로 병합
장점
- 네트워크 대역폭 효율 향상
- 실패 시 개별 파트만 재전송 가능 → 복원력 증가
- 업로드 속도 및 안정성 개선
4. S3 전송 가속화 (S3 Transfer Acceleration)
- 개념: 전 세계 **AWS Edge Location(엣지 위치)**을 통해
데이터를 가장 가까운 엣지로 업로드 후, AWS 내부 전용 네트워크로 버킷에 전달.
- 효과
- 공용 인터넷 사용 최소화
- AWS 전용망을 통한 고속·안정적 전송
- 호환성
- 적용 예시
- 미국 → 호주 버킷 업로드 시,
미국의 엣지 위치 → AWS 내부 네트워크 → 호주 S3 버킷 순서로 전송됨.
즉, 지리적으로 멀리 떨어진 지역 간 파일 전송 속도를 극적으로 단축시킴.
5. 다운로드 최적화: 범위 가져오기 (Range Fetches)
- Range Fetches (Byte-Range Fetches):
파일의 특정 바이트 구간만 요청하는 기능.
활용 사례
- 병렬 다운로드 가속
- 파일을 여러 바이트 범위로 나눠 병렬 다운로드
- 실패 시 특정 범위만 재시도 → 복원력 향상
- 파일 일부만 읽기
- 예: 파일 헤더(처음 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 함수를 실행해 맞춤형 처리 수행 가능
구성 요소
- 객체 목록 (Manifest):
- 어떤 객체들에 대해 작업할지 정의
- S3 Inventory로 객체 목록을 생성하고,
- S3 Select로 필요한 객체만 필터링
- 작업 정의 (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개월 보관
주요 메트릭 유형 및 사용 사례
- 요약 메트릭 (Summary Metrics)
- StorageBytes, ObjectCount 등
- 스토리지 사용량 및 객체 크기 추세 분석
- 예: 빠르게 성장하거나 사용되지 않는 버킷 식별
- 비용 최적화 메트릭 (Cost Optimization Metrics)
- NonCurrentVersionBytes, IncompleteMultipartUploadBytes 등
- 비효율적 스토리지 사용 탐지 및 정리
- 예: 불완전한 멀티파트 업로드로 낭비되는 공간 확인
- 데이터 보호 메트릭 (Data Protection Metrics)
- VersioningEnabledBucketCount, MFADeleteEnabledBucketCount, CrossRegionReplicationRuleCount 등
- 데이터 보호 모범 사례 준수 여부 점검
- 예: 버전 관리나 암호화가 비활성화된 버킷 식별
- 액세스 관리 메트릭 (Access Management Metrics)
- 버킷의 소유권 및 권한 설정 파악
- 예: 퍼블릭 액세스 위험이 있는 버킷 탐지
- 퍼포먼스 메트릭 (Performance Metrics)
- TransferAccelerationEnabledBucketCount 등
- S3 전송 가속이 활성화된 버킷 추적
- 액티비티 메트릭 (Activity Metrics)
- AllRequests, GetRequests, PutRequests, BytesDownloaded 등
- 요청량 및 데이터 전송량 분석
- 상세 상태 코드 메트릭 (Detailed Status Code Metrics)
- 200OKStatusCount, 403ForbiddenErrorCount 등
- HTTP 요청 성공/실패 현황 파악
무료 vs 유료 메트릭 비교
| 구분 |
무료 메트릭 |
고급(유료) 메트릭 |
| 제공 항목 수 |
약 28개 기본 지표 |
추가적인 활동/보호/비용/상태 코드 지표 |
| 데이터 보존 기간 |
14일 |
15개월 |
| 기능 |
기본 사용량 분석 |
고급 최적화, 데이터 보호 인사이트, 권장 사항 제공 |
| CloudWatch 연동 |
지원 |
동일하게 지원 |
요약
- S3 Storage Lens는 S3 전반의 사용량, 비용, 보안 상태를 한눈에 파악하게 해주는 중앙 집중형 분석 도구이다.
- 무료/유료 지표 구분, 조직 단위 데이터 집계, 기본 대시보드의 자동 구성이 핵심 포인트다.
- 시험에서는 “S3 스토리지 사용 및 보호 상태를 시각적으로 분석하는 서비스는?” → S3 Storage Lens로 기억하면 된다.