테마
02. S3 (Simple Storage Service)
학습 목표
- S3가 무엇이며 왜 이름이 S3인지 설명할 수 있다.
- S3의 핵심 개념인 버킷(Bucket)과 객체(Object)를 이해한다.
- S3에 파일을 업로드하고 다운로드하는 방법을 익힌다.
- S3를 이용한 정적 웹사이트 호스팅(Static Website Hosting) 설정 절차를 수행할 수 있다.
- 버킷 정책(Bucket Policy) JSON을 작성하고 적용할 수 있다.
- S3 버킷을 안전하게 삭제하는 절차를 이해한다.
전체 구조
아래 다이어그램은 이 장에서 다루는 S3 핵심 개념들의 관계를 보여준다.
1. S3란?
이름의 유래
S3는 Simple Storage Service의 약자다. Simple Storage Service에서 S가 3개이므로 S3라고 부른다. AWS 서비스 이름 중에서 가장 직관적인 작명 중 하나다.
핵심 개념
S3는 한마디로 AWS에서 제공하는 저장용 하드디스크다. 인터넷을 통해 어디서든 파일을 저장하고 꺼내올 수 있는 클라우드 저장소(Cloud Storage)이다.
쉬운 비유: AWS 버전의 구글 드라이브/드롭박스
S3는 구글 드라이브(Google Drive)나 드롭박스(Dropbox)와 비슷하다. 파일을 올리고, 내려받고, 공유하는 기본 개념은 동일하다.
| 구분 | 구글 드라이브 / 드롭박스 | AWS S3 |
|---|---|---|
| 대상 사용자 | 일반 사용자 | 개발자, 기업 |
| UI 편의성 | 드래그 앤 드롭, 직관적인 UI | AWS 콘솔 기반, 상대적으로 불편 |
| 저장 비용 | 무료 용량 제한 후 비싸짐 | 사용한 만큼만 과금, 훨씬 저렴 |
| 확장성 | 개인용 수준 | 사실상 무제한 확장 |
| 프로그래밍 연동 | 제한적 | API, SDK로 자유로운 연동 |
| 접근 제어 | 간단한 공유 설정 | IAM, 버킷 정책 등 세밀한 권한 제어 |
핵심 차이: 구글 드라이브는 사람이 직접 파일을 올리고 내려받는 데 최적화되어 있고, S3는 애플리케이션이 프로그래밍 방식으로 파일을 저장하고 불러오는 데 최적화되어 있다. 그래서 UI는 불편하지만 저장 비용이 훨씬 저렴하고, 코드로 자유롭게 제어할 수 있다.
S3의 특징
- 내구성(Durability): 99.999999999%(11 9's). 파일이 유실될 확률이 거의 없다.
- 가용성(Availability): 99.99%. 언제든 접근 가능하다.
- 확장성(Scalability): 저장 용량에 사실상 제한이 없다. 단일 객체는 일반
PUT업로드 기준 5GB, 콘솔 업로드 기준 160GB, 멀티파트 업로드 기준 최대 50TB까지 다룰 수 있다. - 종량제 과금: 저장한 데이터 용량과 전송량에 비례하여 비용이 부과된다.
2. S3 활용 용도
S3는 단순한 파일 저장소를 넘어 다양한 용도로 활용된다.
2-1. 데이터 백업 (Data Backup)
가장 기본적인 활용 용도다. 서버의 로그 파일, 데이터베이스 덤프(Database Dump), 설정 파일 등을 주기적으로 S3에 백업한다. 로컬 서버가 고장 나더라도 S3에 저장된 백업 데이터로 복구할 수 있다.
활용 예시:
- 매일 새벽 3시에 데이터베이스를 S3에 자동 백업
- 서버 로그 파일을 S3에 아카이빙(Archiving)
- 중요 문서 및 이미지 파일의 이중 백업
2-2. 빅데이터 저장 (Big Data Storage)
대용량 데이터를 저장하고 분석하는 데이터 레이크(Data Lake)의 핵심 저장소로 사용된다. AWS의 빅데이터 분석 서비스들(Athena, EMR, Redshift Spectrum 등)이 S3에 저장된 데이터를 직접 조회하고 분석할 수 있다.
활용 예시:
- 사용자 행동 로그 수집 및 저장
- 머신러닝 학습 데이터셋 관리
- IoT 센서 데이터 수집
2-3. 재해 복구 (Disaster Recovery)
S3는 데이터를 여러 가용 영역(Availability Zone, AZ)에 자동으로 복제한다. 하나의 데이터 센터가 물리적으로 파괴되더라도 다른 곳에 복제본이 남아 있으므로, 재해 복구 전략의 핵심 구성요소가 된다.
활용 예시:
- 서울 리전(Region)과 도쿄 리전에 동시 백업(Cross-Region Replication)
- 장애 발생 시 S3 백업 데이터로 빠르게 서비스 복구
- 규정 준수를 위한 장기 데이터 보존
2-4. 정적 웹사이트 호스팅 (Static Website Hosting)
S3 버킷에 HTML, CSS, JavaScript 파일을 올리고, 별도의 웹 서버 없이 웹사이트를 운영할 수 있다. 이 내용은 뒤에서 자세히 다룬다.
3. S3 핵심 개념
S3를 이해하려면 두 가지 핵심 개념을 알아야 한다: **버킷(Bucket)**과 객체(Object).
3-1. 버킷 (Bucket)
**버킷(Bucket)**은 S3에서 파일을 담는 **최상위 컨테이너(Container)**다. 파일을 저장하려면 반드시 먼저 버킷을 만들어야 한다.
쉽게 말하면, 버킷은 하나의 저장 공간 또는 하나의 하드디스크 드라이브라고 생각하면 된다.
버킷의 핵심 규칙:
| 규칙 | 설명 |
|---|---|
| 전역 고유 이름 | 버킷 이름은 전 세계 모든 AWS 계정에서 유일해야 한다. 다른 사람이 이미 사용 중인 이름은 쓸 수 없다. |
| 리전 지정 | 버킷을 생성할 때 리전(Region)을 선택한다. 데이터가 해당 리전에 물리적으로 저장된다. |
| 이름 규칙 | 3~63자, 소문자와 숫자, 하이픈(-) 사용 가능. 대문자 불가, 마침표(.) 비권장. |
| 개수 제한 | AWS 계정당 기본 100개까지 생성 가능 (요청 시 확장 가능). |
버킷 이름 예시:
my-first-bucket (O) 사용 가능
company-backup-2024 (O) 사용 가능
MyBucket (X) 대문자 불가
my_bucket (X) 밑줄 불가
my..bucket (X) 연속 마침표 불가3-2. 객체 (Object)
**객체(Object)**는 버킷 안에 저장되는 개별 파일이다. 이미지, 동영상, 문서, 코드 파일 등 어떤 종류의 파일이든 S3에 저장되면 객체라고 부른다.
각 객체는 다음 요소로 구성된다.
| 구성 요소 | 설명 | 예시 |
|---|---|---|
| 키(Key) | 객체의 고유 식별자. 파일 경로처럼 동작한다. | images/logo.png |
| 값(Value) | 실제 파일 데이터(바이너리) | 파일의 바이트 데이터 |
| 메타데이터(Metadata) | 객체에 대한 부가 정보 | Content-Type, 수정일 등 |
| 버전 ID(Version ID) | 버전 관리 활성화 시 각 버전의 고유 식별자 | 3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY |
실생활 비유: 버킷은 서랍장이고, 객체는 서랍장 안에 넣는 파일 폴더다. 서랍장(버킷) 이름은 사무실 전체에서 유일해야 하고, 파일 폴더(객체)는 라벨(Key)을 붙여서 구분한다.
3-3. S3 구조도
3-4. Public Access 차단/허용 설정
S3 버킷은 기본적으로 모든 퍼블릭 액세스가 차단된 상태로 생성된다. 이것은 보안을 위한 AWS의 기본 정책이다.
퍼블릭 액세스 차단(Block Public Access) 옵션:
| 옵션 | 설명 |
|---|---|
| 모든 퍼블릭 액세스 차단 | 기본값. 외부에서 절대 접근 불가. |
| 새 ACL을 통한 퍼블릭 액세스 차단 | 새로 추가하는 ACL의 퍼블릭 설정을 차단 |
| 기존 ACL을 통한 퍼블릭 액세스 차단 | 이미 존재하는 ACL의 퍼블릭 설정을 차단 |
| 새 퍼블릭 버킷 정책 차단 | 새로 추가하는 버킷 정책의 퍼블릭 설정을 차단 |
| 기존 퍼블릭 버킷 정책 차단 | 기존 버킷 정책의 퍼블릭 설정을 차단 |
정적 웹사이트 호스팅처럼 외부에 공개해야 하는 경우에만 선별적으로 퍼블릭 액세스를 허용한다.
주의: 퍼블릭 액세스를 여는 것은 인터넷의 누구나 해당 버킷의 파일에 접근할 수 있다는 뜻이다. 민감한 데이터가 있는 버킷은 절대로 퍼블릭으로 열면 안 된다. AWS에서도 이 설정을 변경할 때 경고 메시지를 표시한다.
4. 파일 업로드/다운로드
4-1. 전체 흐름
S3에서 파일을 저장하고 가져오는 과정은 크게 3단계다.
1단계: 버킷 생성
- AWS 콘솔에서 S3 서비스로 이동
- "버킷 만들기" 클릭
- 전역적으로 고유한 버킷 이름 입력
- 리전 선택 (예: 아시아 태평양(서울) ap-northeast-2)
- 나머지 설정은 기본값 유지 후 생성
2단계: 파일 업로드
- 생성한 버킷 클릭하여 내부로 이동
- "업로드" 버튼 클릭
- 파일을 드래그 앤 드롭 또는 "파일 추가"로 선택
- "업로드" 클릭하여 완료
3단계: 파일 다운로드
- 버킷 내에서 다운로드할 객체 선택
- "다운로드" 버튼 클릭
- 또는 객체 URL을 통해 접근 (퍼블릭 설정 시)
4-2. 폴더 구조 생성
S3는 실제로 폴더(디렉토리) 개념이 없다. 하지만 키(Key)에 슬래시(/)를 포함시켜서 폴더처럼 보이게 할 수 있다. AWS 콘솔에서도 "폴더 만들기" 기능을 제공한다.
my-bucket/
├── index.html (키: index.html)
├── css/
│ └── style.css (키: css/style.css)
├── js/
│ └── app.js (키: js/app.js)
└── images/
├── logo.png (키: images/logo.png)
└── banner.jpg (키: images/banner.jpg)위 구조에서 css/, js/, images/는 실제 폴더가 아니라 **키의 접두사(Prefix)**에 불과하다. 하지만 AWS 콘솔에서는 마치 폴더처럼 탐색할 수 있어서, 실무에서는 폴더처럼 사용해도 무방하다.
4-3. AWS CLI로 업로드/다운로드
AWS 콘솔 외에도 AWS CLI(Command Line Interface)를 사용하면 터미널에서 직접 파일을 관리할 수 있다.
bash
# 파일 업로드
aws s3 cp ./index.html s3://my-website-bucket/index.html
# 폴더 전체 업로드 (재귀적)
aws s3 cp ./my-website/ s3://my-website-bucket/ --recursive
# 파일 다운로드
aws s3 cp s3://my-website-bucket/index.html ./index.html
# 버킷 내 파일 목록 확인
aws s3 ls s3://my-website-bucket/
# 파일 삭제
aws s3 rm s3://my-website-bucket/old-file.html
# 버킷 간 복사
aws s3 cp s3://bucket-a/data.csv s3://bucket-b/data.csv5. S3 정적 웹사이트 호스팅 (Static Website Hosting)
5-1. 정적 웹사이트란?
웹사이트는 크게 정적(Static) 웹사이트와 동적(Dynamic) 웹사이트로 나뉜다.
| 구분 | 정적 웹사이트 (Static) | 동적 웹사이트 (Dynamic) |
|---|---|---|
| 콘텐츠 | 서버에 저장된 HTML 파일을 그대로 전달 | 요청에 따라 서버에서 실시간으로 생성 |
| 구성 | HTML, CSS, JavaScript | + 서버 사이드 언어(PHP, Python, Java 등) + DB |
| 서버 필요 | 웹 서버만 있으면 됨 (또는 S3) | 애플리케이션 서버 + 데이터베이스 필요 |
| 예시 | 회사 소개 페이지, 포트폴리오, 블로그 | 쇼핑몰, SNS, 관리자 페이지 |
| 비용 | 저렴 | 상대적으로 비쌈 |
정적 웹사이트는 동적 요소 없이 고정된 HTML 페이지로만 구성된 웹사이트다. 사용자가 요청하면 서버는 미리 만들어 둔 HTML 파일을 그대로 내려보내 준다. 데이터베이스 조회나 서버 측 로직이 없으므로 매우 빠르고 저렴하다.
실생활 비유: 정적 웹사이트는 인쇄된 전단지와 같다. 누가 보든 같은 내용이 적혀 있다. 동적 웹사이트는 맞춤형 상담 창구와 같다. 고객마다 다른 정보를 조회해서 보여준다.
S3는 정적 웹사이트 호스팅을 기본 기능으로 제공한다. 별도의 웹 서버(Nginx, Apache 등) 없이도 HTML, CSS, JS 파일을 S3 버킷에 올려두면 웹사이트가 된다.
5-2. 호스팅 활성화 절차
정적 웹사이트 호스팅을 설정하는 전체 절차는 다음과 같다.
1단계: 버킷 생성
- S3 콘솔에서 버킷을 생성한다.
- 버킷 이름은 웹사이트 도메인과 맞추면 좋다 (예:
www.my-website.com).
2단계: 퍼블릭 액세스 차단 해제 여부 결정
- 버킷 > 권한(Permissions) 탭으로 이동
- S3 웹사이트 엔드포인트를 직접 공개하는 학습용 실습이라면 "퍼블릭 액세스 차단(Block public access)"을 해제해야 한다.
- 운영 또는 외부 공개용 사이트라면 S3 버킷은 비공개로 두고 CloudFront + OAC(Origin Access Control)를 앞단에 두는 구성을 우선한다.
3단계: 정적 웹사이트 호스팅 활성화
- 버킷 > 속성(Properties) 탭으로 이동
- 맨 아래 "정적 웹사이트 호스팅(Static website hosting)" 편집
- "활성화(Enable)" 선택
- 인덱스 문서(Index document):
index.html입력 - 오류 문서(Error document):
error.html입력 (선택 사항) - 변경 사항 저장
4단계: 파일 업로드
index.html,style.css등 웹사이트 파일을 버킷에 업로드
5단계: 버킷 정책(Bucket Policy) 설정
- 버킷 > 권한(Permissions) 탭으로 이동
- "버킷 정책(Bucket policy)" 편집
- S3 웹사이트 엔드포인트 직접 공개 실습에서는 JSON 정책으로 퍼블릭 읽기 권한을 부여
- CloudFront OAC 구성에서는 CloudFront 배포 ARN만 허용하는 제한 정책을 사용
6단계: 엔드포인트 접속
- 속성(Properties) 탭의 정적 웹사이트 호스팅 섹션에서 엔드포인트 URL 확인
- 해당 URL로 웹 브라우저에서 접속하여 확인
5-3. index.html 기본 문서 지정
정적 웹사이트 호스팅에서 **인덱스 문서(Index Document)**는 사용자가 URL의 루트 경로(/)로 접속했을 때 자동으로 보여줄 파일을 지정하는 것이다.
예를 들어, 인덱스 문서를 index.html로 지정하면:
http://my-bucket.s3-website-ap-northeast-2.amazonaws.com/
→ 실제로는 index.html 파일이 반환됨간단한 index.html 예시:
html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>내 첫 번째 S3 웹사이트</title>
<style>
body {
font-family: 'Segoe UI', sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
}
h1 { font-size: 3rem; text-align: center; }
</style>
</head>
<body>
<h1>S3 정적 웹사이트 호스팅 성공!</h1>
</body>
</html>5-4. 버킷 정책 (Bucket Policy) 설정
버킷 정책(Bucket Policy)은 누가 이 버킷의 어떤 작업을 할 수 있는지를 정의하는 JSON 형식의 접근 제어 문서다.
S3 웹사이트 엔드포인트를 직접 공개하려면 인터넷의 모든 사용자가 버킷의 객체를 읽을 수 있도록 허용하는 정책을 설정해야 한다. 다만 현재 기준의 안전한 공개 방식은 S3를 비공개로 유지하고 CloudFront OAC를 통해서만 접근하게 하는 것이다.
ARN (Amazon Resource Name)이란?
버킷 정책에서 리소스를 지정할 때 ARN을 사용한다. ARN은 AWS 리소스를 전역적으로 고유하게 식별하는 주소다.
arn:aws:s3:::my-website-bucket → 버킷 자체
arn:aws:s3:::my-website-bucket/* → 버킷 안의 모든 객체ARN의 구조:
arn:aws:서비스:리전:계정ID:리소스
↓ ↓ ↓ ↓
s3 (없음) (없음) 버킷이름/*S3의 ARN에서 리전과 계정 ID가 비어 있는 것은, S3 버킷 이름이 전역적으로 고유하기 때문에 리전과 계정 정보 없이도 식별 가능하기 때문이다.
정적 웹사이트 엔드포인트 직접 공개용 버킷 정책 JSON
json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-website-bucket/*"
}
]
}각 항목의 의미:
| 항목 | 값 | 설명 |
|---|---|---|
| Version | "2012-10-17" | 정책 언어 버전. 항상 이 값을 사용한다. |
| Sid | "PublicReadGetObject" | 정책 식별자. 사람이 읽기 위한 이름으로, 자유롭게 지정 가능. |
| Effect | "Allow" | 허용(Allow) 또는 거부(Deny). |
| Principal | "*" | 대상. "*"는 모든 사용자(인터넷의 누구나)를 의미. |
| Action | "s3:GetObject" | 허용할 작업. GetObject는 객체 읽기(다운로드). |
| Resource | "arn:aws:s3:::my-website-bucket/*" | 정책이 적용되는 리소스. /*는 버킷 안의 모든 객체. |
주의:
Resource에/*를 빠뜨리면 정책이 버킷 자체에만 적용되고 안의 객체에는 적용되지 않으므로, 반드시/*를 붙여야 한다.
공개 버킷은 학습용으로만 제한한다
"Principal": "*"는 인터넷의 누구나 읽을 수 있다는 뜻이다. 개인 정보, 로그, 백업, 업로드 파일이 들어가는 버킷에는 사용하면 안 된다. 외부 공개가 필요하면 CloudFront OAC로 S3 직접 접근을 막는 구성을 우선한다.
버킷 정책 설정 흐름
5-5. 정적 웹사이트 엔드포인트 URL
정적 웹사이트 호스팅을 활성화하면 AWS가 자동으로 엔드포인트 URL을 생성한다.
URL 형식:
http://버킷이름.s3-website-리전코드.amazonaws.com예시:
http://my-website-bucket.s3-website-ap-northeast-2.amazonaws.com이 URL을 웹 브라우저 주소창에 입력하면 index.html이 표시된다.
참고: S3 정적 웹사이트 호스팅의 엔드포인트는 HTTP만 지원한다. HTTPS를 사용하려면 CloudFront(CDN)를 앞에 배치해야 한다.
5-6. 정적 웹사이트 호스팅 전체 흐름
6. S3 버킷 삭제
6-1. 삭제 전 주의사항
S3 버킷을 삭제할 때는 반드시 다음 순서를 지켜야 한다.
핵심 규칙: 버킷 안에 객체가 남아 있으면 버킷을 삭제할 수 없다.
AWS는 실수로 데이터를 잃는 것을 방지하기 위해, 비어 있지 않은 버킷의 삭제를 허용하지 않는다. 따라서 반드시 버킷 안의 모든 객체를 먼저 삭제해야 한다.
6-2. 삭제 절차
1단계: 중요 데이터 백업
- 삭제 전에 버킷에 중요한 파일이 있는지 확인한다.
- 필요한 파일은 로컬 컴퓨터나 다른 버킷으로 미리 백업한다.
bash
# 버킷 내 모든 파일을 로컬로 백업
aws s3 cp s3://my-website-bucket/ ./backup/ --recursive2단계: 버킷 비우기 (Empty Bucket)
- AWS 콘솔에서 버킷을 선택한다.
- "비우기(Empty)" 버튼을 클릭한다.
- 확인란에
permanently delete를 입력하여 영구 삭제를 확인한다. - "비우기" 클릭
bash
# CLI로 버킷 안의 모든 객체 삭제
aws s3 rm s3://my-website-bucket/ --recursive3단계: 버킷 삭제
- 비워진 버킷을 선택한다.
- "삭제(Delete)" 버튼을 클릭한다.
- 버킷 이름을 직접 타이핑하여 삭제 의사를 재확인한다.
- "버킷 삭제" 클릭
bash
# CLI로 버킷 삭제
aws s3 rb s3://my-website-bucket주의: 삭제된 버킷의 데이터는 복구할 수 없다. 삭제 전에 반드시 백업 여부를 확인하자.
6-3. 버킷 라이프사이클 전체 흐름
비용 주의사항
S3 요금 체계
S3 요금은 크게 세 가지 요소로 구성된다.
| 요금 항목 | 설명 | 대략적 비용 (서울 리전 기준) |
|---|---|---|
| 저장 비용 (Storage) | 저장된 데이터 용량에 비례 | 약 $0.025/GB/월 (S3 Standard) |
| 요청 비용 (Requests) | PUT, GET 등 API 호출 횟수에 비례 | PUT: $0.005/1,000건, GET: $0.0004/1,000건 |
| 데이터 전송 비용 (Transfer) | S3에서 인터넷으로 나가는 데이터량에 비례 | 약 $0.126/GB (처음 10TB) |
AWS Free Tier (무료 체험)
S3 Free Tier는 계정 생성일과 계정 플랜에 따라 다르다. 2025년 7월 15일 이전 계정은 기존 12개월 Free Tier 한도를 기준으로 보고, 이후 계정은 Free plan/Paid plan의 크레딧과 Always Free/Trial 조건을 함께 확인한다.
| 항목 | 무료 제공량 (월) |
|---|---|
| 저장 용량 | 5GB |
| GET 요청 | 20,000건 |
| PUT 요청 | 2,000건 |
간단한 학습용 실습은 Free Tier 내에서 충분히 가능하다.
비용 절감 팁
- 사용하지 않는 버킷과 데이터는 즉시 삭제한다. 데이터가 남아 있는 한 매월 저장 비용이 부과된다.
- 실습이 끝나면 반드시 정리한다. 버킷 비우기 -> 버킷 삭제 순서를 잊지 말자.
- AWS Billing 대시보드에서 현재까지의 사용 요금을 주기적으로 확인한다.
- **예산 알림(Budget Alert)**을 설정하면, 설정한 금액을 초과할 때 이메일로 알림을 받을 수 있다.
실습 후 반드시 확인: S3 콘솔에서 모든 실습용 버킷이 삭제되었는지 확인하자. 버킷 목록이 비어 있어야 추가 비용이 발생하지 않는다.
핵심 암기 포인트
| 항목 | 내용 |
|---|---|
| S3 이름 유래 | Simple Storage Service → S가 3개 → S3 |
| S3란 | AWS에서 사용할 수 있는 클라우드 저장소 (하드디스크) |
| 버킷 (Bucket) | 파일을 담는 최상위 컨테이너. 전역적으로 고유한 이름 필요. |
| 객체 (Object) | 버킷 안에 저장되는 개별 파일. Key + Value + Metadata로 구성. |
| 기본 보안 | 모든 퍼블릭 액세스가 차단된 상태로 생성됨 |
| 정적 웹사이트 | 동적 요소 없이 고정된 HTML로 구성된 사이트 |
| 인덱스 문서 | 루트 경로(/) 접속 시 반환할 기본 파일 (보통 index.html) |
| 버킷 정책 | JSON 형식으로 접근 권한을 정의. ARN으로 리소스 지정. |
| ARN | AWS 리소스의 전역 고유 식별자 (arn:aws:s3:::버킷이름/*) |
| 엔드포인트 URL | http://버킷이름.s3-website-리전코드.amazonaws.com |
| 버킷 삭제 순서 | 백업 확인 -> 버킷 비우기 -> 버킷 삭제 |
| Free Tier | 계정 생성일과 플랜에 따라 무료 저장/요청 한도 또는 크레딧 적용 |
확인 질문
문제 1
S3라는 이름은 무엇의 약자인가?
정답 보기
Simple Storage Service
Simple Storage Service에서 S가 3개이므로 S3라고 부른다. AWS에서 제공하는 클라우드 저장소 서비스다.
문제 2
S3 버킷 이름의 가장 중요한 규칙은 무엇인가?
정답 보기
전역적으로 고유(Globally Unique)해야 한다.
버킷 이름은 전 세계 모든 AWS 계정을 통틀어 유일해야 한다. 다른 사람이 이미 사용 중인 이름은 사용할 수 없다. 소문자, 숫자, 하이픈만 사용 가능하며 3~63자 사이여야 한다.
문제 3
비어 있지 않은 S3 버킷을 바로 삭제할 수 있는가?
정답 보기
아니오, 불가능하다.
S3 버킷을 삭제하려면 반드시 버킷 안의 모든 객체를 먼저 삭제(비우기)해야 한다. AWS는 실수로 데이터를 잃는 것을 방지하기 위해 비어 있지 않은 버킷의 삭제를 허용하지 않는다.
문제 4
S3 정적 웹사이트 호스팅에서 HTTPS를 사용하려면 어떻게 해야 하는가?
정답 보기
CloudFront(CDN)를 앞에 배치해야 한다.
S3 정적 웹사이트 호스팅의 엔드포인트는 HTTP만 지원한다. HTTPS를 사용하려면 AWS CloudFront를 S3 앞에 배치하여 SSL/TLS 인증서를 적용해야 한다.
문제 5
다음 버킷 정책에서 "Principal": "*"의 의미는?
json
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}정답 보기
인터넷의 모든 사용자(누구나)를 의미한다.
Principal은 정책의 대상자를 지정하는 항목이다. "*"는 와일드카드로, 인증되지 않은 사용자를 포함한 모든 사람에게 해당 권한을 부여한다는 뜻이다. 이 정책은 누구나 my-bucket 안의 모든 객체를 읽을(GetObject) 수 있도록 허용한다.