01. 실습 목표
- S3 버킷을 생성한다.
- 정적 웹 사이트 호스팅 기능을 활성화한다.
- HTML 파일을 업로드한다.
- 버킷 정책을 설정해 외부에서 접근할 수 있게 한다.
- 브라우저에서 S3 웹 사이트 URL로 접속해 동작을 확인한다.
02. S3 버킷 생성
AWS 콘솔에서 서비스 → 스토리지 → S3로 이동한 뒤 버킷 만들기를 클릭한다.
- 버킷 이름: 전 세계에서 고유한 이름이어야 한다. 이미 누군가 쓴 이름은 사용할 수 없으므로 날짜나 임의 문자를 붙이는 것이 좋다.
- 리전: 서울(ap-northeast-2)로 설정했다.
- 퍼블릭 액세스 차단: 기본값은 모든 퍼블릭 액세스 차단이 활성화되어 있다. 웹 사이트 호스팅을 위해 이 설정은 나중에 해제해야 하므로 일단 그대로 두고 버킷을 먼저 만든다.
나머지 설정은 기본값으로 유지하고 버킷 만들기를 클릭하면 버킷이 생성된다.
03. 정적 웹 사이트 호스팅 활성화
생성한 버킷을 클릭하고 속성 탭으로 이동한다. 맨 아래로 스크롤하면 정적 웹 사이트 호스팅 항목이 있다. 편집을 클릭해 다음과 같이 설정한다.
- 정적 웹 사이트 호스팅: 활성화
- 인덱스 문서:
index.html입력
저장하면 버킷 웹 사이트 엔드포인트 URL이 생성된다. 형식은 http://버킷이름.s3-website-리전.amazonaws.com이다. 이 URL을 메모해 두면 나중에 접속 확인할 때 쓴다.
S3 정적 웹 사이트 호스팅 기능은 HTTP만 지원한다. HTTPS가 필요한 경우에는 CloudFront를 연동해 SSL/TLS 인증서를 적용해야 한다.
04. index.html 업로드
버킷의 객체 탭으로 이동해 업로드를 클릭한다. 미리 만들어 둔 index.html 파일을 선택하고 업로드한다.
간단한 테스트용 HTML 예시는 다음과 같다.
<!DOCTYPE html>
<html>
<body>
<h1>나의 첫 S3 정적 웹 사이트</h1>
</body>
</html>
파일 하나가 S3에서는 하나의 객체로 저장된다. 객체 크기는 최대 5TB까지 지원한다.
05. 버킷 정책 설정
파일을 올렸다고 바로 웹에서 볼 수 있는 건 아니다. 기본적으로 S3 버킷은 외부 접근이 차단된 상태이기 때문에 두 가지를 순서대로 설정해야 한다.
1단계. 퍼블릭 액세스 차단 해제
버킷의 권한 탭으로 이동해 퍼블릭 액세스 차단(버킷 설정)의 편집을 클릭한다. 모든 퍼블릭 액세스 차단 체크를 해제하고 저장한다. 확인 팝업에서 확인을 입력하고 변경 사항 저장을 누른다.
2단계. 버킷 정책 추가
같은 권한 탭에서 버킷 정책 편집을 클릭하고 아래 내용을 입력한다. 버킷이름 부분은 실제 생성한 버킷 이름으로 바꿔야 한다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::버킷이름/*"
}
]
}
이 정책은 누구든(*) 이 버킷의 객체를 읽을 수 있도록(s3:GetObject) 허용한다는 의미다. 변경 사항 저장을 누르면 적용된다.
06. 웹 사이트 접속 확인
03단계에서 메모해 둔 버킷 웹 사이트 엔드포인트 URL을 브라우저 주소창에 입력한다. 업로드한 index.html 내용이 그대로 표시되면 정상적으로 호스팅되고 있는 것이다.
주의할 점은 반드시 http://로 접속해야 한다는 것이다. https://로 접속하면 S3가 HTTPS를 지원하지 않아 오류가 발생한다.
07. 실습 중 발생한 문제
문제 1. 버킷 정책 저장 후 403 오류가 뜸
버킷 정책을 저장했는데도 접속하면 403 Forbidden 오류가 발생했다. 확인해 보니 퍼블릭 액세스 차단을 해제하지 않은 상태에서 버킷 정책을 먼저 적용했기 때문이었다. 순서가 중요하다. 반드시 퍼블릭 액세스 차단 해제를 먼저 하고, 그 다음에 버킷 정책을 적용해야 한다.
문제 2. 버킷 이름 중복 오류
버킷 이름은 전 세계 모든 AWS 계정을 통틀어 고유해야 한다. 흔한 단어로 만들면 이미 누군가 사용 중인 경우가 많다. 날짜나 임의의 숫자를 붙이면 쉽게 해결된다.
문제 3. index.html이 아닌 파일을 올렸을 때 접속 안 됨
정적 웹 사이트 호스팅 설정에서 인덱스 문서를 index.html로 지정했는데, 실수로 파일 이름을 다르게 올렸더니 URL 접속 시 오류가 났다. 인덱스 문서 설정에 입력한 파일 이름과 실제 업로드한 파일 이름이 정확히 일치해야 한다.
08. 정리
- S3 정적 웹 사이트 호스팅: HTML, CSS, JS 같은 정적 파일을 EC2 없이 S3만으로 웹에 배포할 수 있다.
- 퍼블릭 액세스 차단 해제: 기본값은 차단 상태이므로 반드시 해제해야 한다.
- 버킷 정책: s3:GetObject 권한을 열어야 외부에서 파일에 접근할 수 있다.
- HTTP만 지원: HTTPS가 필요하면 CloudFront를 추가로 구성해야 한다.
- 실습 후 삭제: 버킷 안의 객체를 먼저 모두 삭제한 뒤, 빈 버킷을 삭제해야 한다. 객체가 남아 있으면 버킷 삭제가 되지 않는다.
'AWS' 카테고리의 다른 글
| [AWS] VPC란? 서브넷, IGW, NAT Gateway 개념 정리 (0) | 2026.06.10 |
|---|---|
| [AWS] S3란? 버킷, 객체, 스토리지 클래스 개념 정리 (0) | 2026.06.10 |
| [AWS] EC2 인스턴스 생성 및 SSH 접속 실습 (1) | 2026.06.10 |
| [AWS] EC2란? 가상 서버 서비스 이해하기 (0) | 2026.06.09 |
| [AWS] IAM이란? User, Group, Policy, Role 이해하기 (0) | 2026.06.09 |