(왜 했나요?)
얼마전, EC2에 https를 적용하는 시도와 성공을 했습니다.
그로부터 한 달인가 지났을까요?
AWS 요금 청구서가 나와서, 이걸 구경하는 게시글을 또 작성하고 있었는데요..
VPC에서 퍼블릭 IPv4를 프리티어 범위를 넘어서서 사용했고, 이에 대한 비용이 청구되어 있더군요..
제가 사용한 퍼블릭 IPv4 주소가 EC2 퍼블릭 IP 외에 더 있었기 때문인데요..
그것은 바로바로 ALB가 차지하고 있던 퍼블릭 IPv4 였습니다. ㅠㅠ
네.. 저는 지난번 시도에서, ALB를 이용해 https를 적용했었죠. (아래 링크가 그 기록)
https://ywwwon01.tistory.com/31
[AWS] EC2에 https 적용하기 (with. ALB)
부제: [프로젝트 배포 도전기 with AWS 프리티어](왜 했나요?)얼마 전, 설득력있는 포트폴리오를 만들자는 취지로 ㅋ 과거 프로젝트 웹 배포를 진행했습니다.AWS 프리티어의 EC2를 이용해 배포한 것
ywwwon01.tistory.com
ALB를 사용하려면 서브넷 2개를 연결해야 했고 (고가용성 보장)
그럼 IPv4도 2개가 필요했고
그럼 IPv4 사용에 따른 과금도 2배?!
그래서 저는 다른 방법을 찾았고, 그렇게 찾게된 것이 CloudFront 입니다.
1. CloudFront가 뭐죠?
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html
What is Amazon CloudFront? - Amazon CloudFront
What is Amazon CloudFront? Amazon CloudFront is a web service that speeds up distribution of your static and dynamic web content, such as .html, .css, .js, and image files, to your users. CloudFront delivers your content through a worldwide network of data
docs.aws.amazon.com
CloudFront란 일종의 콘텐츠 전송 네트워크(CDN)로,
.html, .css, .js, 이미지 파일 등의 리소스를 사용자에게 배포하는데, 그 속도를 높여주는 웹 서비스입니다.
Edge Location이라고 하는 '전 세계 데이터 센터 네트워크'를 통해 콘텐츠를 제공한다고 합니다.
사용자가 CloudFront를 통해 콘텐츠를 요청하면, 해당 요청은 지연 시간이 가장 짧은 edge location으로 라우팅되어 최상의 성능으로 전송됩니다.
CloudFront는 HTTPS 지원해서,
Origin에서 HTTPS를 지원하지 않더라도 CloudFront를 통하면 HTTPS 통신이 가능해집니다.
이번에 이용하려는 것이 딱 이거죠!!
2. 사전 준비 사항
저는 이미 Route 53에서 도메인 구입·연결했으며, ACM 인증서도 생성해 둔 바 있어서 자세한 내용은 건너뛰었습니다.
(링크 참고)
(1) Route 53 도메인 설정
(2) ACM 설정 유의사항
HTTPS는 보안 연결 프로토콜이므로, 인증서가 필요합니다.
인증서를 생성할 때는 주의할 점이 있는데요..
(CloudFront 생성 중 캡처한 내용..)
리전 us-east-1에 있는 ACM만 사용 가능하더군요.
그래서 저는 인증서를 새로 만들어야 했습니다.
그리고!!
나중에 CloudFront에 대체 도메인을 설정해줘야 하는데,
그 때 사용할 도메인도 인증서에 추가해줘야 합니다.
(이런식으로 말이죠)
(저는 와일드카드 문자를 썼습니다)
ACM에서 쉽고 빠르고 간편하고 공짜로! 만들 수 있어 다행입니다!!
3. CloudFront 생성
(1) AWS 콘솔 > CloudFront > CloudFront 배포 생성
(2) Distribution options 설정 > Origin domain 입력
(3) 뷰어 프로토콜 정책 Redirect HTTP to HTTPS 설정
(4) 웹 애플리케이션 방화벽 설정 (선택)
저는 과금을 원하지 않아서, 설정하지 않았습니다.
(실제로 운영할 프로젝트라면 과금을 감수하고 설정하는 것이 아무래도 좋겠죠?)
(5) 대체 도메인 이름(CNAME) 설정 & Custom SSL certificate 설정
시행착오를 겪어보니, 대체 도메인 이름 설정이 필수적이더군요.
핵심만 말하자면, SSL/TLS 인증서와 도메인명이 일치해야 하기 때문에 그런 것입니다.
단계를 진행하다 보면, CloudFront를 생성했을 때 blabla.cloudfront.net과 같은 도메인이 할당되는 것을 볼 수 있게 되는데요
이 도메인으로도 HTTPS 접속은 가능하지만, 저는 제가 구입한 도메인으로 접근하도록 설정하는 시도를 하고 있는 중이죠?
다시 말해, 대체 도메인을 설정해줘야 하는 이유인즉슨
- HTTPS를 사용하려면 TLS 인증서가 필요함
- TLS 인증서는 특정 도메인 이름에 대해 발급됨
- CloudFront는 기본적으로 blabla.cloudfront.net에 대한 인증서만 가지고 있음
- 만약, 다른 도메인(ex: example.com)으로 접근하면 TLS 에러 발생 (도메인이 일치하지 않으므로)
- 그래서, example.com 도 CloudFront가 서비스하는 도메인이라는 것을 명시적으로 알려주는 것이 필요
- → 이게 대체 도메인(CNAME)
더 쉽게 말하자면,
- CNAME 등록 == "CloudFront야, 이 도메인도 네가 맡아줘."
라는 것입니다!!!!
아무튼 이렇게 설정해주고,
(6) 확인
(저는 대체 도메인을 www.~~~.click으로 설정했습니다.)
위에서 작성한 것처럼, CloudFront는 기본적으로 인증서를 갖고 있어서,
CloudFront 도메인으로 접속하면 이렇게 잘 연결된 것을 볼 수 있습니다.
4. Route 53 도메인 레코드 추가
(1) Route 53 > 호스팅 영역 > 해당 도메인 선택 > 레코드 생성 > 레코드 이름 입력 & 트래픽 라우팅 대상 입력
저는 대체 도메인을 www.~~~.click 으로 설정해서, 레코드 이름도 저렇게 작성했습니다.
(2) 확인
레코드 생성 결과, 유형 A 레코드가 2개 있으면 된 것!!
(그런데, 값/트래픽 라우팅 대상이 EC2 퍼블릭 IP인 유형 A 레코드 과금이 발생할 수 있는 것으로 압니다..)
짜잔..
로드 밸런서도 삭제를 했으니까, 이제 IPv4 사용에 따른 과금은 더 발생하지 않을 것 같습니다.
'공부 > IT 인프라' 카테고리의 다른 글
[AWS] 요금 청구서 구경하기 (0) | 2025.06.06 |
---|---|
[AWS] EC2에 https 적용하기 (with. ALB) (1) | 2025.05.22 |
[AWS] 프리티어 시작하기 (VPC, 네트워크, EC2) (0) | 2025.05.17 |
[AWS] 예산 생성 (0) | 2025.05.13 |
[AWS] EBS 용량 확장, Ubuntu 파일 시스템 확장 (0) | 2025.05.09 |