Amazon S3 소개
개념
AWS의 핵심 스토리지 서비스 : “무한히 확장 가능한 스토리지” : 많은 웹·AWS 서비스가 S3에 의존 : 백업, 아카이브, 재해 복구, 데이터 레이크, 정적 웹 호스팅 등 다양한 활용
사용 사례 : 여러가지 가능
- 백업 및 복구 : 리전 장애 시 데이터 복원
- 아카이브 : 예) Nasdaq → 7년치 데이터를 S3 Glacier에 저장
- 분석 : 예) Sysco → S3 데이터를 활용해 비즈니스 인사이트 확보
- 하이브리드 클라우드 스토리지 : 온프레미스 + 클라우드 확장
- 웹/미디어 호스팅 : 이미지, 동영상 등 정적 자원
- 정적 웹사이트 호스팅 : HTML/JS/CSS 배포
구성 — 버킷과 객체
- 버킷(Bucket) : S3 상위 레벨 디렉토리 : 전역적으로 고유한 이름 필요 (모든 계정·모든 리전에서 유일하게) : 그러나 버킷은 반드시 특정 리전에 생성됨 : 버킷 명명 규칙 : 3~63자 / 소문자·숫자·하이픈만 허용 / 대문자·밑줄 불가 / IP 형태 불가
- 객체(Object) : 버킷에 저장되는 파일 단위 : 키(Key)라는 것이 있는데 전체 경로 역할을 함
- 예: my_file.txt → 키 = my_file.txt
- 예: my_folder1/another_folder/my_file.txt → 접두사 = my_folder1/another_folder/, 객체 이름 = my_file.txt : S3는 실제 디렉토리 개념 없음 → UI에서만 폴더처럼 보임
객체 상세
- 값(Value) : 파일 본문(최대 5TB)
- 멀티파트 업로드(옵션) : 5GB 이상 파일은 여러 부분으로 나눠 업로드 (최대 5TB 지원)
- 메타데이터 : 객체에 부가 정보(시스템/사용자 정의 키-값)
- 태그(Tag) : 최대 10개 / 보안·수명주기 관리에 유용
- 버전 ID : 버전 관리 활성화 시 동일 키 객체의 변경 이력 추적
포인트
- S3 = 무한 확장 스토리지, 다양한 서비스의 기반
- 버킷 이름 = 전역 유일, 특정 리전에 종속
- 객체 = 키(Key, 전체 경로) + 값(Value, 파일 내용)
- 업로드 제한 = 단일 객체 5TB, 5GB 이상은 멀티파트 업로드 필요
- 부가 기능 = 메타데이터, 태그, 버전 관리
Amazon S3 보안
보안 방식
- 사용자 기반 보안 : IAM 사용자·역할에 IAM 정책 연결 → 특정 API 호출 허용/거부
- 리소스 기반 보안 : S3 버킷 정책(JSON)으로 버킷/객체 접근 제어 → 교차 계정 액세스 허용, 공개 액세스 가능 : Amazon S3 버킷의 보안을 관리하는 가장 일반적인 방법은 버킷 정책을 사용하는 것 : 그렇다면 어떤 상황에서 IAM 원칙이 S3 객체에 액세스할 수 있을까? : IAM 권한이 이를 허용하거나 리소스 정책이 이를 허용하는 경우가 되겠지
- ACL(Access Control List) : 객체·버킷 단위 세밀 제어 가능하나, 비활성화 가능 → 현재는 잘 안 씀
- 객체 암호화 : 암호 키 사용하여 데이터 보안 강화
버킷 정책 구조 (JSON)
예시 : 모든 사용자에게 GetObject 허용 → 버킷 공개 읽기 설정
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::123456789012:root" },
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::my-bucket"
}
]
}
- Resource : 정책이 적용될 버킷/객체 (예: examplebucket/*)
- Effect : 허용(Allow) 또는 거부(Deny)
- Action : 허용/거부할 API (예: s3:GetObject)
- Principal : 적용할 사용자/계정 (* = 모든 사용자)
접근 시나리오
- 공개 액세스 : 버킷 정책에 Principal: * 허용 시, 모든 웹 사용자 접근 가능
- IAM 사용자 : 계정 내 IAM 사용자에 정책 부여 → S3 접근 허용 : IAM 사용자들이 S3 버킷 내의 파일에 읽기/쓰기를 허가했으나, 만약 한 명의 사용자가 GetObject를 수행할 수 없다면? : 그건 IAM 정책 내에 명시적인 부인이 되어있는 것 : 즉, IAM 정책이 버킷 정책 허용보다 우선시되는 것
- EC2 인스턴스 : IAM 역할(Role) 연결 → EC2에서 S3 API 호출 가능
- 교차 계정 : 다른 AWS 계정의 사용자를 허용하고 싶음 : 버킷 정책에 특정 계정/사용자 지정
추가 보안 — 블록 공개 액세스(Block Public Access)
- 버킷을 생성할 때 설정 가능
- 잘못된 버킷 정책으로 공개해도, 이 옵션이 켜져 있으면 절대 공개 불가
- 기업 데이터 유출 방지용으로 개발함
시험 포인트
- IAM 정책 vs 버킷 정책 : IAM은 사용자 기반, 버킷 정책은 리소스 기반
- EC2가 S3에 접근할 때 = IAM 역할(Role) 필요
- 교차 계정 액세스 = 버킷 정책 필수
- 블록 공개 액세스 = 강력한 보안 방어선 → 잘못된 설정에도 버킷 공개 차단
Amazon S3 — 정적 웹 사이트 호스팅
개념
S3 버킷에 HTML, 이미지 등 정적 파일을 업로드하고 → 버킷을 정적 웹 사이트 호스팅 모드로 설정하면 → 인터넷에서 직접 접근 가능한 웹사이트 제공
웹사이트 URL
S3 웹사이트 URL은 생성 리전에 따라 달라짐 : http://bucket-name.s3-website-<Region>.amazonaws.com : http://bucket-name.s3-website.<Region>.amazonaws.com : 차이는 하이픈(-)과 점(.) 표기 방식 → 외우진 않아도 됨
동작 방식
- S3 버킷 생성 (버킷 이름은 도메인 이름과 같게 설정하는 경우 많음)
- 정적 웹 파일 업로드 (HTML, CSS, JS, 이미지 등)
- 정적 웹 호스팅 옵션 활성화 → 인덱스 문서(index.html), 오류 문서(error.html) 지정 가능
- 웹사이트 URL을 통해 접근
주의 사항
버킷에 공개 읽기 권한 필요 : S3 버킷 정책으로 s3:GetObject 허용 : 공개 설정 없으면 403 Forbidden 에러 발생 : 따라서 버킷 정책을 통해 공개 액세스 허용 필요
포인트
- S3 버킷은 정적 웹 호스팅 가능 (동적 서버 기능은 불가)
- 웹사이트 URL은 리전에 따라 다름
- 접근 불가 시 = 공개 읽기 정책 확인 (403 Forbidden → 퍼블릭 접근 미설정)
Amazon S3 — 버전 관리(Versioning)
개념
S3 버킷에서 파일(객체)의 변경 이력을 관리하는 기능 : 버킷 단위로 활성화 : 동일 키(Key)의 객체를 업로드할 때마다 새로운 버전 생성
동작 방식
- 파일 업로드 시 : 최초 업로드 = 버전 1 → 이후 동일 키로 덮어쓰기 시 버전 2, 3 … 순차 생성(Show version 토글 활성화시 보임)
- 삭제 시 : 실제 삭제가 아니라 삭제 마커(Delete Marker) 추가 → 과거 버전은 여전히 존재 → 원하면 이전 버전 복구 가능
- 롤백 가능 : 특정 시점(예: 2일 전)의 파일 버전으로 쉽게 되돌릴 수 있음
주의 사항
버전 관리 활성화 전 업로드된 객체는 null 버전 부여됨 : 즉, 이미 많은 파일이 있지만 나중에 버전 관리를 활성화하면 기존 파일들은 그래도 여전히 null임 : 이후 업로드된 파일에 버전 적용 : 버전 관리 중단해도 이미 생성된 버전은 삭제되지 않음 : 활성화/중단 자체는 안전한 작업
장점
- 의도치 않은 덮어쓰기·삭제로부터 데이터 보호
- 과거 파일 상태로 복구 가능
- 데이터 보존·재해 복구 측면에서 유용
포인트
- 버킷 수준에서 활성화하는 설정
- 삭제 = 삭제 마커 추가, 과거 버전 복구 가능
- 활성화 전 파일 = null 버전
- 중단해도 기존 버전은 그대로 유지
Amazon S3 — 복제(Replication)
개념
S3 버킷 간 객체를 비동기식으로 복제하는 기능 : 두 종류 존재
- CRR (Cross-Region Replication) : 교차 리전 복제 → 서로 다른 리전 간 복제 : 즉, 타 리전에서 가용하게 하려면 복제 기능을 활용
- SRR (Same-Region Replication) : 동일 리전 내 복제
조건
소스 버킷과 대상 버킷 모두 버전 관리 활성화 필수 : 복제 실행을 위한 IAM 권한(읽기·쓰기) 필요 : 계정 간 복제도 가능 : 복제는 백그라운드에서 비동기적으로 진행
사용 사례
- CRR : 컴플라이언스(규제·정책 준수), 리전 간 지연(latency) 최소화, 계정 간 복제
- SRR : 여러 버킷의 로그 통합, 개발/운영 환경 간 실시간 데이터 동기화
복제 기본 동작
복제 활성화 후에는 신규 객체만 복제 대상 : 기존 객체는 자동 복제 안 됨 : 즉, 소스 버킷(오리진 버킷)에서 새로 생성한게 복제본에 그대로 반영됨
기존 객체 복제하려면
S3 배치 복제(Batch Replication)를 사용하면? : 기존 객체 전체 복제 가능 : 복제 실패한 객체도 다시 복제 가능
삭제 처리
소스 버킷에서 삭제 마커(파일을 지운 것처럼 표시하는 표시자)는 대상 버킷에서 그대로 복제할지 여부를 옵션으로 선택할 수 있음 : 그러나 버전 ID 삭제는 복제되지 않음 : 즉, 소스에서 영구 삭제하면, 그 사실이 복제본 대상에는 전달되지 않음 : 대상은 백업용으로 그 버전을 계속 보관함 → 보안상 이유(악의적 영구 삭제 방지)
체이닝 복제 불가
버킷1 → 버킷2, 버킷2 → 버킷3 설정돼 있어도 : 버킷1 객체가 자동으로 버킷3으로 가지 않음
포인트
- CRR = 리전 다름, SRR = 동일 리전
- 버전 관리 필수
- IAM 권한 필수 (S3 복제 역할에 읽기·쓰기 허용)
- 복제는 실시간이 아닌 비동기식
- 신규 객체만 자동 복제, 기존 객체는 Batch Replication 필요
- 삭제 마커는 옵션에 따라 복제, 버전 ID 삭제는 복제 불가
- 체이닝 복제는 지원되지 않음
Amazon S3 — 스토리지 클래스 종류
공통 특징
내구성(Durability) : Amazon S3로 인해 객체가 손실되는 횟수를 나타냄 : 모든 클래스 동일 → 99.999999999% (9가 11개)
차이점
가용성(Availability) : 서비스가 얼마나 용이하게 제공되는지를 나타냄 : 비용, 최소 보관 기간, 액세스 속도
스토리지 클래스 종류
1. S3 Standard
- 가용성 : 99.99%
- 특징 : 짧은 지연, 높은 처리량, 2개 이상 동시 기능장애에도 버팀
- 사용 사례 : 자주 접근하는 데이터, 빅데이터 분석, 모바일/게임 앱, 콘텐츠 배포
2. S3 Infrequent Access : Standard-IA
- 가용성 : 99.9%
- 특징 : 자주 쓰진 않지만 필요 시 빠른 액세스, 스토리지 비용 ↓ / 검색 비용 ↑
- 사용 사례 : 백업, 재해 복구
3. S3 One Zone-IA
- 가용성 : 99.5%
- 특징 : 단일 AZ에만 저장, AZ 장애 시 데이터 손실 위험
- 사용 사례 : 2차 백업, 재생성 가능한 데이터
4. S3 Glacier Instant Retrieval
- 액세스 : 밀리초 단위 조회 : 한번 엑세스에 적합하겠지
- 최소 보관 : 90일
- 사용 사례 : 드물게(분기별) 접근하지만 즉시 조회 필요한 백업
5. S3 Glacier Flexible Retrieval (구 S3 Glacier)
- 액세스 티어 : Expedited : 1~5분, Standard : 3~5시간, Bulk : 5~12시간 (무료)이내에 데이터를 받을 수 있음
- 최소 보관 : 90일
- 사용 사례 : 장기 보관, 빠른 검색 필요 없음
6. S3 Glacier Deep Archive
- 액세스 티어 : Standard : 12시간, Bulk : 48시간, 최소 보관 : 180일
- 특징 : 오래걸리는 만큼 최저 비용, 장기 아카이빙용
7. S3 Intelligent-Tiering
- 특징 : 접근 패턴 자동 분석 → 티어 간 객체 자동 이동
- 비용 : 모니터링·티어링 비용 소액, 검색 비용 없음
- 티어 : Frequent Access (기본), Infrequent Access (30일 미접근), Archive Instant Access (90일 미접근), Archive Access (90~700일 이상, 선택), Deep Archive Access (180~700일 이상, 선택)
- 장점 : 스토리지 최적화 자동 관리
시험 포인트
- 내구성은 동일, 가용성·비용·복구 속도가 클래스별 차이
- IA = 비용↓, 검색 비용↑
One Zone-IA = 단일 AZ (저렴하지만 위험) - Glacier = 아카이빙 (Instant vs Flexible vs Deep Archive)
- Intelligent-Tiering = 패턴 따라 자동 이동, 검색 비용 없음
'AWS > AWS SAA-CO3' 카테고리의 다른 글
12. 아마존 S3 보안 (0) | 2025.09.02 |
---|---|
11. 고급 Amazon S3 (0) | 2025.09.01 |
9. 솔루션 아키텍처 설계, Elastic Beanstalk (0) | 2025.09.01 |
8. Route 53 (0) | 2025.09.01 |
7. RDS, Aurora, ElastiCache (0) | 2025.08.31 |