[AWS] 정적 웹 사이트 호스팅하기(S3, CloudFront, Route53, ACM)
일단 문제.
⚠️ERR_CONNECTION_TIMED_OUT ⚠️

1. S3에 사이트 배포도 했고.
2. ACM에서 인증서도 발급했고.
3. Route53에서 도메인도 받았고.
4. CloudFront에서 연결도 했는데!
왜 내 도메인으로 연결이 안 되냔 말이야. 😠
왜냐고!
그리고 해결했다.
아무리 여기저기 검색해 봐도 DNS 문제라고는 나오는데 해결 방법이 안 나와서 혼자 답답해하던 중에 부장님이랑 눈이 딱 마주쳐 버림. 👀
🧑🏻💻: 왜? 할 말 있어?
🐶: 아니요..(네..)
...
🐶: 이따 안 바쁘실 때 저 질문 하나만 드려도 될까요?
🧑🏻💻: 나중에 말고 지금 해.
🐶: !!! 넵.
그리고 짜잔!
성공!
일단은 내가 한 설정이 문제였다.
Route53에 호스팅 영역을 생성하면 자동으로 4개의 레코드가 생성이 된다.
그런데 CloudFront에서 배포를 생성하면?
배포 도메인 이름이 xxxxx.cloudfront.net 형식으로 생성이 된다.
난 내가 Route53에서 생성한 도메인 주소로 연결하고 싶은데!
2가지 방법을 찾았다. ✌🏻
- 유형 CNAME으로 연결
- 유형 A로 연결
테스트하다 보니까 맨 처음의 오류에 대한 내용이 이해가 되기 시작하는데...
kangsuji.com에 해당하는 레코드들은 다 내 S3 버킷에 연결되지 않아서 그런 거였다.
라우팅 대상에 지정된 값들이 다 이상한(?).. 초면인.. 분들이었음..
A에 해당하는 레코드의 라우팅 대상은 EC2였는데, 내가 EC2를 따로 생성하지 않아서 접속을 해도 연결이 되지 않았던 것 같다. 맞나요?
* CNAME과 A의 차이를 설명해 주는 글은 검색해 보면 많지만, 나는 이 블로그 글이 마음에 들었다!
참고: https://blog.naver.com/bloo_og/222645596312
설정하기 전에 필요한 정보(?)는 CloudFront의 배포 도메인 이름!
1. CNAME으로 연결하기
- 레코드 이름: 원하는 값을 입력해 주면 된다.
- 레코드 유형: CNAME
- 값: 아까 복사한 CloudFront의 배포 도메인 이름(xxxxx.cloudfront.net)을 입력한다.
배포 도메인 이름을 입력할 때 주의할 점🚨
복사를 했을 때 https://xxxxx.cloudfront.net 형태로 복사가 되는데, 입력할 때는 https://는 제외하고 xxxxx.cloudfront.net으로 입력해야 함!
2. A로 연결하기
CNAME은 Route53의 호스팅 영역에서 레코드만 생성해 주면 됐는데, A로 연결할 때는 과정이 조금 더 까다롭(?)다.
우선 CloudFront의 배포에서 대체 도메인 이름을 등록해 주어야 한다.
CloudFront > 배포 > 일반 > 설정 - 편집을 눌러서
대체 도메인 이름(CNAME)을 추가해 준다.
이때, 여기서 입력한 이름으로 Route53에서 레코드를 만들어야 하기 때문에 잘(?) 만들어야 함!
대체 도메인 이름을 추가했다면 Route53으로 돌아가서 레코드 생성을 해 준다.
- 레코드 이름: CloudFront에서 추가한 대체 도메인 이름과 동일하게 작성(해야 아래 CloudFront 배포에 대한 별칭을 선택했을 때 배포 도메인 이름이 나타난다)
- 레코드 유형: A
- 별칭: 활성화
- 트래픽 라우팅 대상: CloudFront 배포에 대한 별칭 선택 후 아래의 Select Box에 나타나는 도메인 이름을 선택
레코드 생성을 해 주면 끝!
이 설정을 다 해 주고 나면 내가 지정한 도메인으로 접속이 가능해진다.
CNAME, A 둘 다!
그런데 하다 보니까 알게 된 건데,
CNAME은 과금 대상이라 Alias를 쓰는 것이 좋다고 한다.
그리고 위에 게시한 블로그 글에서도 나와 있지만 Alias를 쓰는 것이 Route53에 송신하는 횟수를 줄일 수 있어서 조금 더 합리적(?)인가 보다.
방법만 익히고 CNAME 연결은 과감하게(???) 삭제해 버려야지. 🥹