공부하는 것/클라우드

[AWS] 정적 웹 사이트 호스팅하기(S3, CloudFront, Route53, ACM)

배인 2024. 5. 28. 11:10

일단 문제.

⚠️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배포 도메인 이름!

맨 왼쪽의 버튼을 눌러서 Copy

 

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 연결은 과감하게(???) 삭제해 버려야지. 🥹