DANTELABS · CLOUD GUIDE

AWS S3 + CloudFront
퍼블릭 URL 만들기 — 단계별 가이드

S3 에 올린 이미지·동영상을 안전하게 외부에 노출하는 가장 표준적인 방법.
20분 안에 따라 할 수 있는 7-step 워크스루.

대상
AWS 처음 쓰는 개인·소규모 팀
소요 시간
약 20분
비용
1년 무료 티어 내 0원
난이도
★☆☆☆☆ — UI 클릭으로 완결

목차

STEP 01

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. 무료 계정 생성 버튼
aws.amazon.com 첫 화면 — 우측 상단 '무료 계정 생성' 버튼 클릭
aws.amazon.com 첫 화면 — 우측 상단 '무료 계정 생성' 버튼 클릭
1-3. 이메일 인증
이메일 주소와 계정 이름 입력 후, 받은 메일에서 6자리 코드 입력
이메일 주소와 계정 이름 입력 후, 받은 메일에서 6자리 코드 입력
주의 — 신용카드는 등록만 해도 소액이 일시 결제됐다가 자동 환불됩니다. 결제 알림이 와도 당황하지 않아도 됩니다.
STEP 02

S3 버킷 만들기 — 파일이 살 집

S3는 파일을 담는 객체 스토리지입니다. 버킷 이름은 전 세계에서 유일해야 하고, CloudFront와 함께 쓸 거라면 퍼블릭 액세스를 차단해도 됩니다.

2-1. 콘솔에서 S3 찾기
AWS Management Console 상단 검색창에 'S3' 입력 → 서비스 클릭
AWS Management Console 상단 검색창에 'S3' 입력 → 서비스 클릭
2-2. 버킷 만들기 버튼
S3 대시보드 우측 상단 '버킷 만들기' 클릭
S3 대시보드 우측 상단 '버킷 만들기' 클릭
2-3. 버킷 설정 — 핵심 4가지
CloudFront 와 안전하게 연결될 비공개 버킷을 만든다.
버킷 이름은 영문 소문자 · 숫자 · 하이픈만 사용, 전 세계 고유
리전은 한국에서 가까운 Asia Pacific (Seoul) ap-northeast-2
객체 소유권은 기본값(ACL 비활성화) 유지
퍼블릭 액세스는 모두 차단 — CloudFront 가 별도 권한으로 우회 접근
2-4. 설정 화면
리전 선택 + 객체 소유권 + 퍼블릭 액세스 차단
리전 선택 + 객체 소유권 + 퍼블릭 액세스 차단
버킷 이름이 중복이면 '이미 존재합니다' 에러 — 더 고유한 이름으로 변경
버킷 이름이 중복이면 '이미 존재합니다' 에러 — 더 고유한 이름으로 변경
실수 사례dantelabs 라는 이름은 누군가가 이미 선점해 사용 중이었습니다. dante-labs-test 처럼 자기만의 prefix 를 붙이면 충돌이 줄어듭니다.
STEP 03

파일 업로드 — 드래그 앤 드롭 한 번

버킷이 만들어지면 그 안에 이미지나 동영상을 올립니다. 업로드는 드래그 앤 드롭이 가장 편하고, 폴더째로 올리면 S3 안에 동일한 폴더 구조가 그대로 만들어집니다.

3-1. 업로드 버튼
방금 만든 버킷 클릭 → 객체 탭에서 '업로드' 버튼
방금 만든 버킷 클릭 → 객체 탭에서 '업로드' 버튼
3-2. 파일 추가
파인더/탐색기에서 파일을 끌어다 놓거나 '파일 추가' 버튼으로 선택
파인더/탐색기에서 파일을 끌어다 놓거나 '파일 추가' 버튼으로 선택
3-3. 업로드 완료 확인
업로드 진행 상태 — 모든 파일이 '성공'으로 표시되는지 확인
업로드 진행 상태 — 모든 파일이 '성공'으로 표시되는지 확인
객체 목록에 파일이 보이면 업로드 완료
객체 목록에 파일이 보이면 업로드 완료
관찰 — 단일 파일은 5GB, 멀티파트 업로드를 쓰면 최대 5TB 까지 한 객체로 올릴 수 있습니다. 큰 동영상도 한 덩어리로 보관 가능.
STEP 04

CloudFront 배포 만들기 — 글로벌 캐시 앞단

S3 의 파일을 그대로 외부에 노출하지 않고 CloudFront 라는 캐시 레이어로 감쌉니다. 전 세계 엣지 노드에서 캐시되어 응답이 빨라지고, S3 자체는 비공개로 둘 수 있어 보안도 같이 챙겨집니다.

4-1. CloudFront 콘솔 진입
콘솔 상단 검색창에 'CloudFront' 입력 → 서비스 선택
콘솔 상단 검색창에 'CloudFront' 입력 → 서비스 선택
4-2. 배포 생성 시작
'Create distribution' 버튼 클릭 → 마법사 시작
'Create distribution' 버튼 클릭 → 마법사 시작
4-3. 배포 이름 · 설명 입력
구분 가능한 이름과 설명 입력 후 [Next]
구분 가능한 이름과 설명 입력 후 [Next]
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. 원본 설정 화면
S3 버킷 + Allow private access + Recommended origin settings 체크
S3 버킷 + Allow private access + Recommended origin settings 체크
4-6. 보안 보호 (WAF) — 비활성화
이미지 · 동영상 배포 목적이면 [Do not enable security protections] 선택 → [Next]
이미지 · 동영상 배포 목적이면 [Do not enable security protections] 선택 → [Next]
왜 비활성화? — WAF 는 시간당 별도 과금이 붙습니다. 단순 정적 자산 배포에는 과합니다. 결제 시스템·로그인 같은 민감한 트래픽이라면 켜는 게 맞습니다.
4-7. 검토 후 배포 생성
최종 확인 화면 → [Create distribution] 클릭
최종 확인 화면 → [Create distribution] 클릭
할당된 도메인(예: d1234abcd.cloudfront.net) 메모
할당된 도메인(예: d1234abcd.cloudfront.net) 메모
4-8. 배포 활성화 대기
배포 목록에 새 항목이 추가됨 — 상태가 '배포 중'
배포 목록에 새 항목이 추가됨 — 상태가 '배포 중'
1~10분 후 'Enabled' 로 바뀌면 사용 가능
1~10분 후 'Enabled' 로 바뀌면 사용 가능
대기 시간 — 보통 3분 안쪽이면 끝나지만, 처음 만드는 계정은 10~20분이 걸리기도 합니다. 커피 한 잔.
STEP 05

CloudFront URL 로 접근 — 실제 동작 확인

배포가 활성화되면 https://[도메인]/[파일경로] 형식으로 어디서나 파일을 가져올 수 있습니다. 브라우저 주소창에 직접 쳐서 즉시 검증합니다.

5-1. URL 구조
https://[CloudFront-도메인]/[파일경로]

예시:
  https://d1234abcd.cloudfront.net/images/sample.jpg
  https://d1234abcd.cloudfront.net/videos/demo.mp4
5-2. 브라우저 테스트 화면
브라우저에서 CloudFront URL로 이미지가 즉시 로드됨
브라우저에서 CloudFront URL로 이미지가 즉시 로드됨
5-3. 동작 잘 됐는지 체크리스트
  • 이미지가 브라우저에서 즉시 보인다
  • 동영상은 스트리밍으로 재생된다 (다운로드 후 재생이 아님)
  • 개발자 도구(F12) → Network 탭 → 응답 헤더에 X-Cache: Hit from cloudfront 또는 Miss from cloudfront 가 보인다
  • 두 번째 요청 시 응답 시간이 절반 이하로 줄어든다 (캐시 히트)
STEP 06

자주 만나는 오류 — 원인과 해결

처음 셋업할 때 가장 흔하게 부딪히는 세 가지: 403 / 404 / 비활성. 원인이 뚜렷해서 한 번 알아두면 다음부터는 5초 안에 해결됩니다.

6-1. 403 Forbidden
증상 — URL 을 입력했더니 빨간 에러 페이지 + 'AccessDenied'

원인
  • S3 버킷 정책에 CloudFront 의 OAC ARN 이 누락됨
  • 'Allow private S3 Bucket access to CloudFront' 체크를 안 함
해결 — CloudFront 배포 → Origins → 해당 origin → [Edit] → 'Copy policy' 버튼으로 정책을 복사해 S3 버킷 권한에 붙여넣기
6-2. 404 Not Found
증상 — 페이지는 떴는데 'NoSuchKey'

원인 — 단순한 경로 오타. CloudFront 는 S3 의 객체 키를 그대로 매핑하므로, S3 에 img/sample.jpg 로 올렸으면 URL 도 .../img/sample.jpg 여야 함

해결 — S3 콘솔에서 객체 클릭 → '객체 URL' 에 적힌 경로를 그대로 CloudFront 도메인 뒤에 붙이기
6-3. 배포가 계속 'In Progress'
증상 — 30분이 지나도 상태가 'Enabled' 가 안 됨

원인
  • WAF 연결 시도가 계속 실패하는 경우
  • SSL 인증서 (커스텀 도메인 사용 시) 가 us-east-1 리전에 없는 경우
해결 — Distribution 설정 → General → [Edit] 에서 보안 보호를 끄고, 커스텀 도메인 안 쓸 거면 'Default CloudFront Certificate' 로 되돌리기
STEP 07

마무리 — 운영 체크리스트와 비용 최적화

배포에 성공했다면 그 다음은 지속 가능하게 굴리는 일. 비용 모니터링, 캐시 최적화, 보안 점검 세 가지만 기억하면 됩니다.

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 테스트 같은 가벼운 로직 실행