목차
AWS 회원가입 — 1년 무료 계정 만들기
처음 사용하는 분은 먼저 AWS 계정을 만듭니다. 신용카드 등록은 필수지만 1년 무료 티어 안에서는 과금되지 않습니다. 인증 단계까지 평균 10분이면 끝납니다.
1-1. 절차 한눈에
AWS 콘솔에 로그인할 수 있는 루트 계정을 발급받는다.
1년 무료 티어 내에서는 S3 5GB · CloudFront 1TB 전송이 무료
결제 정보는 등록만 하고 실제 청구되는지 빌링 대시보드에서 주시
MFA(2단계 인증)는 가입 직후 켜두는 게 안전
01공식 사이트 진입aws.amazon.com → '무료 계정 생성' 버튼
▼
02계정 정보 입력이메일 · 계정 이름 · 비밀번호 → 이메일 인증
▼
03연락처 · 결제 정보이름 · 주소 · 전화번호 + 신용카드
▼
04휴대폰 인증SMS 또는 음성통화로 인증번호 확인
▼
05지원 플랜 선택기본 지원(무료) 선택 후 가입 완료
1-2. 무료 계정 생성 버튼

1-3. 이메일 인증

주의 — 신용카드는 등록만 해도 소액이 일시 결제됐다가 자동 환불됩니다. 결제 알림이 와도 당황하지 않아도 됩니다.
S3 버킷 만들기 — 파일이 살 집
S3는 파일을 담는 객체 스토리지입니다. 버킷 이름은 전 세계에서 유일해야 하고, CloudFront와 함께 쓸 거라면 퍼블릭 액세스를 차단해도 됩니다.
2-1. 콘솔에서 S3 찾기

2-2. 버킷 만들기 버튼

2-3. 버킷 설정 — 핵심 4가지
CloudFront 와 안전하게 연결될 비공개 버킷을 만든다.
버킷 이름은 영문 소문자 · 숫자 · 하이픈만 사용, 전 세계 고유
리전은 한국에서 가까운 Asia Pacific (Seoul) ap-northeast-2
객체 소유권은 기본값(ACL 비활성화) 유지
퍼블릭 액세스는 모두 차단 — CloudFront 가 별도 권한으로 우회 접근
2-4. 설정 화면


실수 사례 —
dantelabs 라는 이름은 누군가가 이미 선점해 사용 중이었습니다. dante-labs-test 처럼 자기만의 prefix 를 붙이면 충돌이 줄어듭니다.파일 업로드 — 드래그 앤 드롭 한 번
버킷이 만들어지면 그 안에 이미지나 동영상을 올립니다. 업로드는 드래그 앤 드롭이 가장 편하고, 폴더째로 올리면 S3 안에 동일한 폴더 구조가 그대로 만들어집니다.
3-1. 업로드 버튼

3-2. 파일 추가

3-3. 업로드 완료 확인


관찰 — 단일 파일은 5GB, 멀티파트 업로드를 쓰면
최대 5TB 까지 한 객체로 올릴 수 있습니다. 큰 동영상도 한 덩어리로 보관 가능.CloudFront 배포 만들기 — 글로벌 캐시 앞단
S3 의 파일을 그대로 외부에 노출하지 않고 CloudFront 라는 캐시 레이어로 감쌉니다. 전 세계 엣지 노드에서 캐시되어 응답이 빨라지고, S3 자체는 비공개로 둘 수 있어 보안도 같이 챙겨집니다.
4-1. CloudFront 콘솔 진입

4-2. 배포 생성 시작

4-3. 배포 이름 · 설명 입력
![구분 가능한 이름과 설명 입력 후 [Next]](https://storage.googleapis.com/dante-labs-pub/guides/aws-s3-cloudfront/images/13-cloudfront-name-desc.png)
4-4. 원본(Origin) 설정 — 핵심 옵션
- Origin type — Amazon S3 선택
- Origin domain — [Browse S3] 버튼으로 앞서 만든 버킷 선택 (자동으로 도메인 채워짐)
- Origin path — 특정 폴더만 배포할 거면
/images형식으로 입력. 전체면 비워둠 - Allow private S3 Bucket access to CloudFront — 체크 (OAC 자동 생성)
- Use recommended origin settings — 선택
4-5. 원본 설정 화면

4-6. 보안 보호 (WAF) — 비활성화
![이미지 · 동영상 배포 목적이면 [Do not enable security protections] 선택 → [Next]](https://storage.googleapis.com/dante-labs-pub/guides/aws-s3-cloudfront/images/15-cloudfront-security.png)
왜 비활성화? — WAF 는 시간당 별도 과금이 붙습니다. 단순 정적 자산 배포에는 과합니다. 결제 시스템·로그인 같은 민감한 트래픽이라면 켜는 게 맞습니다.
4-7. 검토 후 배포 생성
![최종 확인 화면 → [Create distribution] 클릭](https://storage.googleapis.com/dante-labs-pub/guides/aws-s3-cloudfront/images/16-cloudfront-review.png)

4-8. 배포 활성화 대기


대기 시간 — 보통 3분 안쪽이면 끝나지만, 처음 만드는 계정은 10~20분이 걸리기도 합니다. 커피 한 잔.
CloudFront URL 로 접근 — 실제 동작 확인
배포가 활성화되면 https://[도메인]/[파일경로] 형식으로 어디서나 파일을 가져올 수 있습니다. 브라우저 주소창에 직접 쳐서 즉시 검증합니다.
5-1. URL 구조
https://[CloudFront-도메인]/[파일경로] 예시: https://d1234abcd.cloudfront.net/images/sample.jpg https://d1234abcd.cloudfront.net/videos/demo.mp4
5-2. 브라우저 테스트 화면

5-3. 동작 잘 됐는지 체크리스트
- 이미지가 브라우저에서 즉시 보인다
- 동영상은 스트리밍으로 재생된다 (다운로드 후 재생이 아님)
- 개발자 도구(F12) → Network 탭 → 응답 헤더에
X-Cache: Hit from cloudfront또는Miss from cloudfront가 보인다 - 두 번째 요청 시 응답 시간이 절반 이하로 줄어든다 (캐시 히트)
자주 만나는 오류 — 원인과 해결
처음 셋업할 때 가장 흔하게 부딪히는 세 가지: 403 / 404 / 비활성. 원인이 뚜렷해서 한 번 알아두면 다음부터는 5초 안에 해결됩니다.
6-1. 403 Forbidden
증상 — URL 을 입력했더니 빨간 에러 페이지 + 'AccessDenied'
원인
원인
- S3 버킷 정책에 CloudFront 의 OAC ARN 이 누락됨
- 'Allow private S3 Bucket access to CloudFront' 체크를 안 함
6-2. 404 Not Found
증상 — 페이지는 떴는데 'NoSuchKey'
원인 — 단순한 경로 오타. CloudFront 는 S3 의 객체 키를 그대로 매핑하므로, S3 에
해결 — S3 콘솔에서 객체 클릭 → '객체 URL' 에 적힌 경로를 그대로 CloudFront 도메인 뒤에 붙이기
원인 — 단순한 경로 오타. CloudFront 는 S3 의 객체 키를 그대로 매핑하므로, S3 에
img/sample.jpg 로 올렸으면 URL 도 .../img/sample.jpg 여야 함해결 — S3 콘솔에서 객체 클릭 → '객체 URL' 에 적힌 경로를 그대로 CloudFront 도메인 뒤에 붙이기
6-3. 배포가 계속 'In Progress'
증상 — 30분이 지나도 상태가 'Enabled' 가 안 됨
원인
원인
- WAF 연결 시도가 계속 실패하는 경우
- SSL 인증서 (커스텀 도메인 사용 시) 가 us-east-1 리전에 없는 경우
마무리 — 운영 체크리스트와 비용 최적화
배포에 성공했다면 그 다음은 지속 가능하게 굴리는 일. 비용 모니터링, 캐시 최적화, 보안 점검 세 가지만 기억하면 됩니다.
7-1. 완료 체크리스트
- AWS 계정 생성 + MFA 활성화
- S3 버킷 생성 + 퍼블릭 액세스 차단
- 파일 업로드 + 객체 URL 확인
- CloudFront 배포 생성 + OAC 연결
- 브라우저에서 CloudFront URL로 파일 접근 검증
- Billing Dashboard 에서 무료 티어 사용량 확인
7-2. 핵심 운영 포인트
한 번 만든 배포를 안전하고 저렴하게 굴린다.
🛡️
보안
S3 는 비공개로, CloudFront 만 외부 노출. OAC 가 둘 사이의 유일한 통로
⚡
성능
전 세계 엣지 캐시. 두 번째 요청부터는 S3 까지 가지 않고 가장 가까운 노드에서 응답
💰
비용
S3 5GB · CloudFront 1TB 전송이 1년 무료. Billing Dashboard 에서 임계값 알람 설정
정적 자산 배포는 이 3가지로 사실상 끝. 나머지는 도메인 연결 · WAF · 인증 같은 선택지.
7-3. 다음 단계 — 더 발전시키려면
- 커스텀 도메인 — Route 53 + ACM 으로
cdn.my-site.com같은 자체 도메인 연결 - Cache Invalidation — 파일 교체 시 CloudFront 캐시를 무효화 (월 1,000건 무료)
- Signed URL — 특정 시간만 유효한 임시 URL 발급 (유료 영상 등)
- CloudFront Functions — 엣지에서 헤더 변경 · A/B 테스트 같은 가벼운 로직 실행