AWS에서 신규 도메인 포워딩 + CloudFront 연동(3)

Route53으로 새 도메인을 CloudFront로 연결하기

Route53를 Alias 레코드로 CloudFront로 연결하기


CloudFront를 Route53를 사용하여 도메인 연결을 하기 위해서는 먼저 두 가지를 알아야 한다.

  • CloudFront는 고정된 IP를 사용하지 않는다 :CloudFront를 포함한 AWS의 많은 서비스들(ELB,CloudFront,RDS 등)은 고정된 IP를 사용하지 않는데 인스턴스 사이즈가 수시로 바뀌면서 IP가 매번 바뀌거나 특정 DR(Disaster Recovery) 상황에선 IP주소가 다른 주소로 바뀌기 때문이다. 예외적으로 CloudFront의 경우 SNI 지원등의 문제로 고정 IP를 부여할 수는 있으나 한달에 $600을 받는다.
  • Apex Domain은 CNAME을 사용할 수 없다. : CNAME 레코드란 한 도메인을 다른 도메인으로 포워딩 해주는 레코드 타입인데, Apex Domain(순수 도메인, 즉 www.example.com, test.example.com처럼 맨 앞에 무엇인가가 붙은게 아닌 순수한 example.com)은 CNAME을 사용할 수 없다. (표준에 관련한 문제다. 자세한 사항은 나중에 기회가 되면 포스팅하도록 하겠다.)

APEX 도메인에 CNAME을 적용하려 하면 Route53에서도 에러를 뿜어준다.

해결 방법은 몇 가지가 있다.

  • WWW.회사명.ai사용: www.회사명.ai 같이 www를 뒤에 붙여 cloudfront를 붙인다.
  • AWS의 Alias 레코드를 사용

첫번째 방법은 그닥 우아한 방법이 아니다. 도메인에 군더더기가 붙은 듯한 느낌도 들고 원래 요청사항에도 어긋난다. 조금더 우아한 방법은 바로 Alias 레코드를 사용하는 것이다.

Alias 레코드는 Apex 도메인을 AWS의 리소스로 연결해준다. 즉 Alias 레코드를 사용하면 EC2, ELB, CloudFront 등 IP주소 없이 도메인으로만 운영되는 서비스들을 연결할 수 있다. 그럼 모든 문제가 해결되었으니 회사 Route53대신 이 블로그를 호스팅중인 Route53(techblog.kr)를 예시로 사용하여 CloudFront로 연결할 레코드를 생성해보자.

우선 Route53으로 이동하여 호스팅 영역을 선택하고 레코드 생성을 누른다.

우선 Route에서 새 레코드를 생성한다.

여러 종류의 라우팅 정책이 존재하는데, 이에 관해선 다음에 포스팅 하도록 하겠다. 현재는 가장 간단한 단순 라우팅을 선택한다.

단순 라우팅을 선택

그리고 여깃 가장 간단한 단순 라우팅을 정의한다.

단순 라우팅을 정의. 단순하다고 해서 기능이 모자란 것은 절대 아니다.

개편된 Route53 UI에서는 단순히 AWS리소스를 드롭다운에서 선택하기만 해도 자동으로 Alias 레코드로 생성해주어 더욱 편리하게 설정할 수 있다.

레코드가 나타나지 않는다면 CloudFront에서 CName 설정(Distribution->General->Edit->CNAMEs에 추가) 해주어야 한다. 즉 techblog.kr HostZone에서 CloudFront를 등록하려면 Cname에 techblog.kr이 등록되어 있어야 한다.

이 블로그 역시 Route53으로 CloudFront를 연결하고 있다. 드롭다운에서 CloudFront를 선택하면 자동으로 연결 가능한 Distribution이 뜬다.

대상 상태 평가는 일종의 healthcheck 기능인데 ELB와 비슷하게 도메인으로 연결하는 리소스의 상태를 모니터링 해준다. 지금은 아니요를 선택한다.

DNS 상태에 따라 다르지만 약 1~5분정도 기다리고 나면 바로 레코드를 사용하여 웹페이지를 띄워볼 수 있다.

다음 시간에는 S3를 사용하여 기존의 도메인(“회사명.com”,”회사명.net”등등)을 새로운 도메인으로 리다이렉션 처리를 해보도록 하겠다.

WRITTEN BY
Dev Lead | Certified Professional AWS Solutions Architect/Devops Engineer

댓글