07 CHAPTER 07 · 핵심 서비스

Route 53 · CloudFront

도메인 연결부터 전 세계 CDN 배포까지

핵심 서비스 호스팅 영역 월 $0.5 CloudFront 인증서는 버지니아

Route 53 · 호스팅 영역 · 레코드 · Routing Policy · CloudFront · OAC · ACM · Invalidation

CHAPTER INFO
🌐도메인 + CDN 완성
💰호스팅 영역 월 $0.5 고정
⚠️CloudFront ACM은 반드시 us-east-1
🔗이전: CH06 Amazon RDS
🔗다음: CH08 CloudWatch

Route 53 — AWS의 DNS 서비스

Route 53은 도메인 이름을 IP 주소로 변환하는 AWS의 DNS 서비스입니다. 도메인 등록 대행도 하지만, 이미 다른 곳에서 산 도메인의 네임서버를 Route 53으로 바꾸는 방식도 많이 씁니다.

호스팅 영역 — 도메인의 DNS 설정 공간

Route 53에서 도메인을 관리하려면 먼저 호스팅 영역을 만들어야 합니다. 호스팅 영역을 만들면 NS(네임서버) 레코드 4개가 자동으로 만들어집니다. 이 네임서버를 도메인 등록기관에 등록하면 Route 53이 그 도메인의 DNS를 관리하게 됩니다.

💰
호스팅 영역 요금 — 삭제 안 하면 계속 나갑니다
호스팅 영역 하나당 월 $0.50. 프리 티어에 포함되지 않습니다. 리소스를 다 지워도 호스팅 영역이 남아 있으면 매달 청구됩니다. 도메인 이전이나 학습 완료 후 반드시 삭제하세요.

레코드 종류

타입역할AWS에서 쓰는 곳
A도메인 → IPv4EC2 탄력적 IP 연결
ALIAS도메인 → AWS 리소스 (AWS 전용)ALB, CloudFront 연결
CNAME도메인 → 다른 도메인서브도메인을 외부 서비스로
NS이 도메인의 네임서버호스팅 영역 생성 시 자동
MX메일 서버 지정이메일 수신 경로

ALB나 CloudFront를 연결할 때는 CNAME이 아니라 ALIAS를 씁니다. CNAME은 루트 도메인(example.com)에 쓸 수 없지만, ALIAS는 가능합니다. 또 AWS 리소스 간 요청은 과금이 없어서 ALIAS가 더 경제적입니다.

Routing Policy

정책작동 방식용도
Simple하나의 IP 반환단일 서버
Weighted비율에 따라 여러 IP 반환 (70/30)카나리 배포, A/B 테스트
Latency사용자와 가장 가까운 리전으로글로벌 서비스
FailoverPrimary 장애 시 Secondary로재해 복구
Geolocation사용자 위치 기반지역별 다른 콘텐츠

CloudFront — 전 세계 CDN

CloudFront는 전 세계 450개 이상의 엣지 로케이션에 콘텐츠를 캐싱해서 사용자와 가까운 곳에서 제공하는 CDN 서비스입니다.

🌏 CloudFront 동작 원리
❌ CloudFront 없을 때
🇰🇷 서울 사용자 → 미국 서버 (멀어서 느림)
✅ CloudFront 있을 때
🇰🇷 서울 사용자 → 서울 엣지 (빠름) → 캐시 없으면 오리진에서 가져옴

CloudFront를 쓰는 이유

  • 속도: 전 세계 사용자에게 빠른 응답
  • HTTPS: S3 정적 사이트도 HTTPS + 커스텀 도메인 가능
  • 보안: S3를 비공개로 두고 CloudFront만 접근 허용 (OAC)
  • 비용: 월 1TB 전송 무료. S3 직접 접근보다 데이터 전송 비용 감소

ACM 인증서 — 반드시 버지니아에서 발급

🚨
CloudFront용 인증서는 us-east-1(버지니아)에서만 발급해야 합니다
서울(ap-northeast-2)에서 발급한 인증서는 CloudFront 설정 화면의 인증서 목록에 아예 나타나지 않습니다. 처음 하는 분의 99%가 여기서 막힙니다. ALB용 인증서는 ALB와 같은 리전, CloudFront용은 무조건 버지니아.
용도발급 리전
ALB HTTPS 인증서ALB와 같은 리전 (예: 서울)
CloudFront HTTPS 인증서반드시 us-east-1 (버지니아)

OAC — S3를 비공개로 유지하면서 CloudFront만 허용

OAC(Origin Access Control)는 S3 버킷을 완전히 비공개로 두고, CloudFront만 접근할 수 있게 하는 방식입니다. 사용자는 CloudFront URL로만 접근하고, S3 버킷 URL로 직접 접근하면 차단됩니다.

  1. S3 버킷 — 퍼블릭 액세스 차단 유지
  2. CloudFront 배포 생성 → 원본: S3 버킷 → OAC 새로 생성
  3. CloudFront가 S3 버킷 정책을 자동으로 제안 → 정책 복사 후 S3 버킷 정책에 붙여넣기
  4. 기본 루트 객체: index.html
  5. SPA라면: 오류 응답 설정 → 403/404 → /index.html (200 반환)

캐시 무효화 (Invalidation)

코드를 배포했는데 브라우저에 이전 버전이 계속 보인다면 CloudFront 캐시 때문입니다. Invalidation으로 캐시를 강제로 지울 수 있습니다.

🔄 캐시 무효화 방법
# AWS CLI로 전체 캐시 무효화
aws cloudfront create-invalidation \
  --distribution-id E1234567890 \
  --paths "/*"

# 특정 파일만 무효화
aws cloudfront create-invalidation \
  --distribution-id E1234567890 \
  --paths "/index.html" "/assets/app.js"
💡
Invalidation 대신 파일명에 버전 붙이기
app.js 대신 app.abc123.js처럼 빌드 해시를 파일명에 포함하면 캐시 문제가 없습니다. Vite, CRA 등 빌드 도구가 이 방식을 기본으로 지원합니다. Invalidation은 월 1000번까지 무료이지만, 파일명 해시 방식이 더 권장됩니다.
📌 CH07 핵심 개념 요약
호스팅 영역월 $0.50 고정. 도메인 DNS 관리 공간. 실습 후 삭제
ALIAS vs CNAMEALB·CloudFront 연결은 ALIAS. 루트 도메인에 쓸 수 있고 AWS 내 요청 무료
ACM 인증서ALB용 = 같은 리전. CloudFront용 = 반드시 us-east-1(버지니아)
OACS3를 비공개로 유지 + CloudFront만 접근 허용. 퍼블릭 버킷보다 안전
SPA 라우팅오류 응답에서 403/404를 index.html(200)으로 설정해야 새로고침이 깨지지 않음
캐시 무효화Invalidation 또는 파일명 해시 방식. 배포 후 이전 파일이 보이면 여기 확인