[AWS] S3, CloudFront, Route53 연동하기
오늘은 제 멀티클라우드 프로젝트의 AWS 앞 부분을 구현해보겠습니다.
제 프로젝트의 웹사이트는 주로 HTML, CSS, 및 JavaScript 파일로 구성되어, 동적인 처리가 필요하지 않으므로 정적 웹 호스팅을 하는 것이 서버 관리와 비용에 효율적입니다.
< 정적 웹 호스팅 >
- 정적 파일을 호스팅할 웹 서버 → S3
- 도메인 이름을 호스팅 서버의 IP 주소와 연결 → Route53
- HTTPS를 통해 사이트를 보호하고, 사용자와의 통신을 암호화 → ACM + CloudFront
- 사용자가 사이트에 접속할 수 있는 URL을 제공하기 위해 도메인 이름이 필요 → Route53
<사전 준비물>
- aws 계정
- 가비아 도메인 구매
- S3 버킷
- aws route 53 호스팅
- acm
- cloudfront 생성
↓↓↓ACM 발급, Route53 호스팅, 가비아 설정 참고 ↓↓↓
https://doyeon-charm.tistory.com/16
[aws] - ACM, ROUTE 53, HTTPS
route53과 ACM인증서를 LB앞에 탑재하여 https를 통해 도메인을 사용할 수 있도록 하겠습니다. ACM이란? AWS Certificate Manager의 줄임말로 SSL/TLS 인증서를 관리하고 사용할 수 있도록 돕는 서비스로보
doyeon-charm.tistory.com
준비가 되었으면, 시작해보겠습니다.
< 사전 지식>
✔ CloudFront
AWS CloudFront는 AWS에서 제공하는 CDN 서비스로서, 정적 및 동적 컨텐츠를 사용자에게 더 빨리 배포할 수 있도록 지원하는 서비스입니다.
CloudFront는 edge location라는 전 세계의 네트워크를 통해 컨텐츠를 제공합니다.
AWS 백본 네트워크를 통해 Edge location을 이용하여 컨텐츠를 효과적으로 서비스합니다.
사용자 요청→지연 시간이 가장 낮은 엣지 로케이션으로 요청을 라우팅합니다.
✔ S3
객체 스토리지 서비스
- 대량의 트래픽 처리
- S3와 CloudFront를 함께 사용하면, S3에서 직접 데이터를 제공하는 대신 CloudFront가 자주 요청되는 파일을 캐싱하여, S3의 데이터 전송량과 요청 횟수를 줄여줌 → 비용 절감
- 사용한 만큼만 비용을 지불. 데이터를 저장한 용량, 요청 횟수, 데이터 전송량에 따라 비용이 결정
- 데이터의 양이 증가하면 S3가 자동으로 용량을 확장
✔ Route53
확장 가능한 고가용성의 DNS 웹 서비스입니다.
사용자 요청을 AWS 또는 온프레미스에서 실행되는 인터넷 애플리케이션에 연결하는 역할을 합니다.
- 도메인에 대한 DNS 레코드를 생성하고 관리합니다.
- 레코드 : 특정 도메인을 관리하는 항목
- A 레코드: 고정된 ip 주소에 도메인을 매핑한 것
- cname: 도메인 주소에 또 다른 도메인 주소를 매핑한 것
- 로드밸런싱 기능 ⇒ 여러 대의 서버에 트래픽을 분산 ⇒ 웹 어플리케이션의 성능을 최적화합니다.
- 자동화된 헬스 체크 : 서버가 다운되거나 장애가 발생하면 Route 53는 자동으로 트래픽을 정상적인 서버로 리다이렉트하여 가용성을 높입니다.
- Route 53은 다양한 라우팅 정책을 제공하여 트래픽을 효율적으로 관리하고, 사용자에게 최적의 경로로 연결될 수 있도록 합니다.
✔ ACM
ACM(AWS Certificate Manager)은 CloudFront 배포에 연결됩니다. 이를 통해 CloudFront를 통해 제공되는 콘텐츠가 HTTPS를 통해 안전하게 전달됩니다.
SSL/TLS 인증서의 발급, 배포, 갱신을 자동으로 처리 → 매년 갱신할 필요 x
비용 효율적으로 HTTPS 구현 가능(무료)
비공개 키에 접근할 필요가 없기 때문에, 키 관리의 복잡성을 줄이고 보안을 강화
- 도메인 등록, ACM 발급.
1. S3 버킷 준비.
※버킷 생성 시 ACL 비활성화 체크
- 내가 배포할 도메인 선택(S3 버킷)
- S3 버킷 정책 업데이트
> Static website hosting에서 Edit 선택
- 정적 웹 사이트 호스팅 : 활성화
- 호스팅 유형 : 정적 웹 사이트 호스팅
- 인덱스 문서 : login.html
- 오류 문서 : error.html
버킷 호스팅 링크가 생성됨.
버킷 호스팅 링크로 접속이 잘 되는 것 확인.
2. cloudfront 배포하기
- 기존 S3 버킷에 Cloudfront를 추가
기존 S3버킷을 프론트로 설정하였지만, 아직 외부에서 접근할 수 없는 상태이므로
Route 53과 ACM을 사용하여 CloudFront를 통해 적절한 도메인 주소로 접근할 수 있도록 설정
✔ CloudFront 배포 생성
버킷 호스팅 주소를 원본 도메인에 붙여넣기
S3 버킷을 선택하고 'Use website endpoint'를 선택
- 뷰어 프로토콜 정책 : Redirect HTTP to HTTPS 체크
- Legacy cache settings 체크
- 객체 캐싱 : Customize 체크 > 기본 TTL 0
- 도체 도메인 이름(CNAME) : 항목추가 > S3 버킷 이름 복사 붙여넣기
- 사용자 정의 SSL 인증서 : 사전에 만든 퍼블릭 인증서 선택
✔ 생성완료
✔ Route53 레코드 생성
1) 레코드 생성 정보 입력
위에서 생성한 Cloudfront 선택
2)
생성한 레코드 주소
www.docharm.store 로 접속하여 웹페이지가 정상적으로 나오는 것을 확인
3) 사전 준비된 ACM
4) 인증서에서 Route 53 레코드 생성
↓↓↓ACM 발급, Route53 호스팅, 가비아 설정 참고 ↓↓↓
https://doyeon-charm.tistory.com/16
[aws] - ACM, ROUTE 53, HTTPS
route53과 ACM인증서를 LB앞에 탑재하여 https를 통해 도메인을 사용할 수 있도록 하겠습니다. ACM이란? AWS Certificate Manager의 줄임말로 SSL/TLS 인증서를 관리하고 사용할 수 있도록 돕는 서비스로보
doyeon-charm.tistory.com
✔ 추가 설정
S3 > 버킷 > 권한 > 버킷 정책
{
"Version": "2012-10-17",
"Id": "Policy1546336529826",
"Statement": [
{
"Sid": "Stmt1546336528005",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "S3버킷명/*"
}
]
}