-
[4월 2주차-4/10][AWS 실습] S3 정적 웹 호스팅 & CloudFront CDN 연동하기Why Not SW CAMP 5기/수업 기록 2025. 4. 10. 12:05
📦 스토리지 유형
구분 설명 예시 객체 스토리지 파일 + 메타데이터 + 고유 식별자로 구성된 데이터 단위 저장 📌 S3, Azure Blob 파일 스토리지 디렉토리 구조 기반, 계층적 파일 시스템 NAS, 파일 서버 블록 스토리지 데이터를 블록 단위로 나눠 저장, OS에서 직접 관리 EBS, HDD/SSD
🔁 파일 vs 객체 스토리지
항목 파일 스토리지 객체 스토리지 구조 계층적 디렉토리 평면 구조 (버킷/키) 데이터 구성 파일 자체 데이터 + 메타데이터 확장성 제한적 매우 뛰어남 용도 공유 디스크, NAS 백업, 정적 파일 저장, 클라우드 앱 안정성 사본 저장하지 않음 다수의 사본을 분산시켜 저장해 안정성 높음
S3 핵심 개념 정리
S3 AWS의 대표적인 객체 스토리지 서비스 버킷(Bucket) 데이터를 저장하는 기본 단위 (폴더처럼 사용) 객체(Object) S3에 저장되는 파일 단위 (파일 + 메타데이터 + 고유 키) 메타데이터 객체에 대한 정보 (타입, 권한 등) 정책(Policy) 접근 제어를 위한 JSON 형식의 권한 설정 (버킷 정책, IAM 정책 등)
☁️ Amazon CloudFront란?
CloudFront는 AWS에서 제공하는 CDN(콘텐츠 전송 네트워크) 서비스
🌍 CDN이란?
풀네임 Content Delivery Network 목적 전 세계 사용자에게 빠르고 안정적으로 콘텐츠 제공 방법 사용자의 위치에 따라 가장 가까운 서버(엣지 로케이션)에서 콘텐츠 전달 사용 예 이미지, 동영상, 정적 파일(css/js/html), 웹사이트 등 빠르게 제공
🚀 CloudFront의 특징
기능 설명 전 세계 엣지 로케이션 사용자와 가까운 위치에서 응답해 지연 최소화 S3, EC2, ALB, Lambda 등과 연동 가능 다양한 AWS 서비스와 통합 HTTPS 지원 보안 강화 캐시 기능 자주 요청되는 콘텐츠는 캐싱해서 빠르게 서빙 사용자 정의 캐시 정책 TTL(Time To Live), 경로별 캐시 전략 설정 가능 도메인 연결 가능 Route 53 + SSL 적용도 가능
📦 대표적인 사용 예
- S3 정적 웹사이트를 CloudFront로 배포 → 더 빠르게 로드
- 글로벌 사용자에게 이미지/영상 콘텐츠 제공
- 다운로드 가능한 파일 캐싱
- 웹사이트 정적 자산(css, js, font 등) 최적화
AWS의 객체 스토리지 서비스인 S3(Simple Storage Service)를 활용해 웹 파일을 업로드하고, 정적 웹 사이트 호스팅 및 CloudFront CDN 연동까지 직접 실습해봤습니다.
✅ 1. S3 버킷 생성
- S3 콘솔 접속 > 버킷 만들기
- 버킷 이름: mybucket-20250410-rubi
- 설정은 기본값 유지 → 버킷 만들기
✅ 2. 파일 업로드 및 다운로드
- hello.txt 파일을 직접 생성
- 만든 버킷 클릭 → 업로드 > 파일 추가 > hello.txt 선택 > 업로드
- 업로드 후 파일 클릭 → 다운로드 → 성공적으로 내려받기 완료
✅ 3. S3에서 폴더 만들기
S3의 폴더는 실제 디렉토리 개념이 아닌 ‘이름의 prefix’ 구조입니다.
- 버킷 클릭 → 폴더 만들기 > 이름: myfolder
- hello.txt → 작업 > 복사 > 폴더 선택 → 복사
✅ 4. Cyberduck으로 외부에서 S3 접속
- IAM 사용자 생성
- 이름: s3-admin
- 정책: AmazonS3FullAccess 연결
- 액세스 키 생성 → .csv 다운로드
- Cyberduck 설치 및 연결
- Cyberduck 실행 > 새 연결 > Amazon S3 선택
- 액세스 키/비밀 키 입력 → 연결 완료
✅ 5. S3 정적 웹 사이트 호스팅 설정
- 버킷 > 속성 > 정적 웹 사이트 호스팅 > 활성화
- 인덱스 문서: index.html
- 저장 후 웹 사이트 엔드포인트 URL 생성
- index.html 파일 생성 & 업로드
- 퍼블릭 액세스 허용 설정
- 권한 탭 → 퍼블릭 액세스 차단 해제
- 버킷 정책 설정
- 버킷 ARN 복사: arn:aws:s3:::mybucket-20250410-rubi
- 정책 생성기 활용:
- Type: S3 Bucket Policy
- Principal: *
- Action: GetObject
- ARN: arn:aws:s3:::mybucket-20250410-rubi/*
- 생성된 정책 복사 → S3 버킷 정책에 붙여넣기 → 저장
- 웹 사이트 엔드포인트 접속 → index.html 정상 출력
✅ 6. CloudFront 배포 생성
- CloudFront 콘솔 → 배포 생성
- 원본: S3 버킷 선택
- 원본 액세스 제어: 제어 설정 생성 > 이름: myoriginaccess
- 루트 객체: hello.txt
- 보안 보호(WAF): 비활성화
- 배포 생성
- 알림 메시지에서 제공된 S3 버킷 정책 복사
- S3 > 권한 > 버킷 정책 편집 > 붙여넣기 → 저장
- CloudFront > 배포 완료 후 도메인 주소 접속
→ hello.txt가 정상 출력됨! 🎉
✅ 7. 리소스 정리
✔ CloudFront 삭제
- 배포 선택 → 비활성화
- 상태가 비활성화됨으로 바뀌면 삭제
✔ S3 삭제
- 버킷 > 객체 전부 비우기 → 확인
- 버킷 삭제 > 이름 입력 > 삭제 완료
💬 마무리
이번 실습을 통해:
- S3를 통해 정적 웹 파일 저장/호스팅
- 퍼블릭 접근 제어 및 버킷 정책 설정
- CloudFront로 CDN 적용 및 성능 개선
'Why Not SW CAMP 5기 > 수업 기록' 카테고리의 다른 글
[4월 3주차-4/14]AWS 실무 핵심 개념 총정리 💡 | DynamoDB, Lambda, SDK, CLI 완전 이해 (1) 2025.04.14 [4월 2주차-4/11]AWS 기본 서비스(DNS(Route 53), IAM, CloudWatch) 실습 정리 (0) 2025.04.14 [4월 2주차-4/9][AWS 실습] WordPress + RDS + Auto Scaling + ELB로 고가용성 아키텍처 구축하기 (1) 2025.04.09 [4월 2주차-4/8(1)]AWS 서비스 3대장 기초부터 알아보기 (0) 2025.04.08 [4월 2주차-4/7]🚀 Flask Pybo 프로젝트 운영 환경 배포 완전 정복 (with Gunicorn & Nginx) (0) 2025.04.07