AWS CloudFront란?
AWS CloudFront는 Amazon에서 제공하는 CDN 서비스를 말한다.
CDN이란?
Content Delivery Network의 약자로 웹 콘텐츠를 세계 곳곳에 있는 여러 서버에 분산하여 저장하는 분산 서버 네트워크 시스템을 말한다.
즉, 오리진 서버로부터 A 사용자가 접속하여 컨텐츠를 요구하면 오리진 서버는 그 컨텐츠를 A 사용자와 물리적으로 가장 가까운 서버에 저장하여 A 사용자와 같은 위치에서 접속하는 유저들이 쉽게 접근할 수 있도록 해주는 시스템을 말합니다.
Toss의 CDN 설명
CDN의 장점
- 페이지 로드 시간 단축
- 대역폭 비용 절감
- 콘텐츠 가용성 제고
- 웹 사이트 보안 강화
여기서 우리가 AWS의 Cloud Front를 사용하는 목적은 CDN이 아니라 S3를 이용해서 Front Server를 배포할 때, URI를 유저들이 사용하기 쉽게 수정하기 위해서이다.
AWS CloudFront 설정 방법
CloudFront 초기 설정 창
AWS에서 CloudFront 설정 창으로 들어온 후, 배포 생성 버튼을 눌러서 초기 설정 창으로 들어갑니다.
이름 및 배포 타입 설정
이름을 입력한 후, 배포 설정을 Single website or app으로 설정한다.(S3를 통해서 Front Server를 배포할 것이기 때문이다.)
Origin Type 및 origin 설정
배포할 데이터를 설정한다.
여기서는 S3에 저장되어있는 Front Server를 배포할 것이므로 S3를 선택하고, Origin을 선택하자.
AWS S3 Bucket 설정
우리가 배포할 S3 Bucket을 선택하자.
나머지 설정
나머지 설정들은 크게 건들이는 것 없이 그대로 유지하고 다음 설정 창으로 넘어가자.
보안 보호 비활성화
AWS WAF(Web Application Firewall)은 웹 서비스에서 클라이언트로부터 공격 받을 수 있는 수단들(SQL Injection같은 공격들)을 AWS에서 차단해주는 서비스이다.
비 활성화를 선택한 후 다음 설정 창으로 넘어가자.
배포하기 전 설정 확인
지금까지 설정한 내용들을 간단하게 보여주는 창이다.
내가 선택한 설정들이 맞는지 확인하고 배포를 시작하자.
도메인 수정 설정
이제 배포가 시작되었으니, S3로 접근하는 도메인을 바꿔보자.
설정하고자 하는 S3 도메인 설정
S3에 접근하고자 할 때 사용할 Domain을 입력하자.
ACM에서 설정한 인증서 선택
이 전 글에서 설정했던 ACM을 클릭해서 SSL 설정하자.
도메인 확인 및 추가
지금까지 설정했던 Cloud Front 내용을 확인 후 배포를 진행하자.
배포된 도메인 확인
조금 시간이 지나면 Cloud Front를 통해서 도메인이 배포된다.
배포된 도메인을 대시보드를 통해서 볼 수 있다.
S3 권한 변경
S3 설정 수정
이 글에서는 Front Server를 S3에 넣어서 배포한다.
그러기 위해서는 Cloud Front를 통해서 오는 요청도 S3에서 허가를 해야하기에 S3 설정을 수정해야 한다.
위 그림처럼 Cloud Front 대시보드에서 원본을 선택한 후 S3를 선택하여 설정창으로 들어가자.
S3 Bucket 권한 수정
설정창에서 밑으로 내리다보면 S3 버킷 권한으로 이동 및 정책 복사 버튼이 존재한다.
정책 복사버튼을 눌러서 Json형식으로 표현된 정책을 복사한 후, S3 설정창으로 들어가자.
S3 Bucket 권한 수정
그럼 위 창으로 접속된다. (S3 버킷 정책 편집 창)
위 창에서 아까 복사한 Cloud Front 허가 정책을 추가하고 설정을 저장하자.
수정 완료
Backend Server 도메인 원본 추가
수정이 완료되면 이제 Front Server에서 접속하는 Backend Server의 도메인을 추가하자.
그러기 위해선 Cloud Front 대시보드에 접속한 후 원본 메뉴를 클릭하여 원본을 추가해야 한다.
Backend 서버 도메인 추가
Backend Server의 도메인을 Origin Domain에 입력하자.
프로토콜 설정
Domain을 통해서 접속할 때, Http 프로토콜을 이용할 것인지, Https 프로토콜을 이용할 것인지 선택하자.
원본을 구별할 이름 설정
이 원본을 선택할 때 사용할 이름을 설정하자.
EC2 연결
이제 Front에서 Server로 접속하기 위한 도메인 설정을 진행하자.
EC2 접근 설정
AWS CloudFront 대시보드에서 동작 메뉴에 들어가서 동작 생성을 진행하자.
원본 설정 및 위에서 설정한 원본 선택
원본 그룹 선택을 눌러서 위에서 설정한 Backend 도메인 원본을 선택하자.
경로 패턴 설정
Frontend Server에서 어떤 경로로 접속되면 EC2로 요청을 넘길 것인지 정한 패턴을 입력하자.
EC2 요청 전달 동작 생성
AWS Cloud Front 동작 설정을 완료하자.
오류 페이지 설정
이제, Frontend Server로 어떤 요청이 들어왔을 때, 잘못된 요청이나 잘못된 서버 요청이 오면 띄워줄 오류 페이지를 설정하자.
(이것까지 설정해야 Frontend Server가 잘 동작한다.)
403, 404 오류 페이지 설정
유저 입장에서 잘못 요청한 403, 404 에러를 설정하자.
Frontend Server가 만든 에러 페이지로 요청 전달
만약 403, 404에러가 나온다면 AWS에서 처리하는 것이 아니라 Frontend Server가 처리하도록 요청 경로를 설정하자.
(이때, 사용하는 Frontend Server가 Vue.js이므로 /index.html로 설정했다.)
응답 코드
에러 페이지를 연결한 후, 브라우저에 보낼 코드를 설정하자. (200으로 설정해서 브라우저가 정상적으로 에러 페이지를 띄울 수 있도록 설정하자.)
오류 페이지 설정 끝난 대시보드
참고 자료
https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/Introduction.html
Amazon CloudFront란 무엇입니까? - Amazon CloudFront
Amazon CloudFront란 무엇입니까? Amazon CloudFront는 .html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹 서비스입니다. CloudFront는 엣지 로케이션
docs.aws.amazon.com
https://docs.tosspayments.com/resources/glossary/cdn
CDN(Content Delivery Network) | 토스페이먼츠 개발자센터
CDN(Content Delivery Network)이란 웹 콘텐츠를 세계 곳곳에 있는 여러 서버에 분산하여 저장하는 분산 서버 네트워크 시스템입니다.
docs.tosspayments.com
https://aws.amazon.com/ko/waf/
웹 애플리케이션 방화벽 - 웹 API 보호 - AWS WAF - AWS
흔하고 널리 퍼진 봇을 보다 쉽게 모니터링하거나, 차단하거나 속도 제한할 수 있습니다.
aws.amazon.com
혹시라도 틀린 내용이 있다면 댓글로 알려주시면 감사하겠습니다!!