Skip to content

02. S3 (Simple Storage Service)


학습 목표

  1. S3가 무엇이며 왜 이름이 S3인지 설명할 수 있다.
  2. S3의 핵심 개념인 버킷(Bucket)과 객체(Object)를 이해한다.
  3. S3에 파일을 업로드하고 다운로드하는 방법을 익힌다.
  4. S3를 이용한 정적 웹사이트 호스팅(Static Website Hosting) 설정 절차를 수행할 수 있다.
  5. 버킷 정책(Bucket Policy) JSON을 작성하고 적용할 수 있다.
  6. 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 편의성드래그 앤 드롭, 직관적인 UIAWS 콘솔 기반, 상대적으로 불편
저장 비용무료 용량 제한 후 비싸짐사용한 만큼만 과금, 훨씬 저렴
확장성개인용 수준사실상 무제한 확장
프로그래밍 연동제한적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.csv

5. 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/ --recursive

2단계: 버킷 비우기 (Empty Bucket)

  • AWS 콘솔에서 버킷을 선택한다.
  • "비우기(Empty)" 버튼을 클릭한다.
  • 확인란에 permanently delete를 입력하여 영구 삭제를 확인한다.
  • "비우기" 클릭
bash
# CLI로 버킷 안의 모든 객체 삭제
aws s3 rm s3://my-website-bucket/ --recursive

3단계: 버킷 삭제

  • 비워진 버킷을 선택한다.
  • "삭제(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 내에서 충분히 가능하다.

비용 절감 팁

  1. 사용하지 않는 버킷과 데이터는 즉시 삭제한다. 데이터가 남아 있는 한 매월 저장 비용이 부과된다.
  2. 실습이 끝나면 반드시 정리한다. 버킷 비우기 -> 버킷 삭제 순서를 잊지 말자.
  3. AWS Billing 대시보드에서 현재까지의 사용 요금을 주기적으로 확인한다.
  4. **예산 알림(Budget Alert)**을 설정하면, 설정한 금액을 초과할 때 이메일로 알림을 받을 수 있다.

실습 후 반드시 확인: S3 콘솔에서 모든 실습용 버킷이 삭제되었는지 확인하자. 버킷 목록이 비어 있어야 추가 비용이 발생하지 않는다.


핵심 암기 포인트

항목내용
S3 이름 유래Simple Storage Service → S가 3개 → S3
S3란AWS에서 사용할 수 있는 클라우드 저장소 (하드디스크)
버킷 (Bucket)파일을 담는 최상위 컨테이너. 전역적으로 고유한 이름 필요.
객체 (Object)버킷 안에 저장되는 개별 파일. Key + Value + Metadata로 구성.
기본 보안모든 퍼블릭 액세스가 차단된 상태로 생성됨
정적 웹사이트동적 요소 없이 고정된 HTML로 구성된 사이트
인덱스 문서루트 경로(/) 접속 시 반환할 기본 파일 (보통 index.html)
버킷 정책JSON 형식으로 접근 권한을 정의. ARN으로 리소스 지정.
ARNAWS 리소스의 전역 고유 식별자 (arn:aws:s3:::버킷이름/*)
엔드포인트 URLhttp://버킷이름.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) 수 있도록 허용한다.