Route 53에서 CNAME 등록이 안 될 때 - ALIAS 레코드 이해하기

English (N/A)

Route 53에서 CNAME 등록 시 UnknownError가 발생하는 경우

Route 53에서 도메인을 구입하고 바로 CNAME 레코드를 등록하려고 하면 다음과 같은 에러가 뜰 때가 있다.

오류 발생
나중에 다시 시도하십시오.
(UnknownError)

이 에러가 발생하는 주된 이유는 호스팅 영역(Hosted Zone) 생성 지연 때문이다.

Route 53에서 도메인을 구입하면 자동으로 호스팅 영역이 생성되는데, 이 과정이 완료되기까지 몇 분에서 최대 몇 시간이 걸릴 수 있다. 도메인 등록과 호스팅 영역 활성화가 비동기로 처리되기 때문에 발생하는 현상이다.

해결 방법

  1. 15~30분 정도 기다린 후 다시 시도한다 - 대부분 이걸로 해결된다
  2. Route 53 콘솔에서 Registered domains 메뉴로 가서 도메인 상태가 Domain registration successful인지 확인한다
  3. Hosted zones에서 해당 도메인의 호스팅 영역이 있는지, NS/SOA 레코드가 생성되어 있는지 확인한다

AWS CLI로 호스팅 영역 상태를 확인하려면 다음 명령어를 사용하면 된다.

aws route53 get-hosted-zone --id <ZONE_ID> --profile <PROFILE_NAME>

루트 도메인에 CNAME을 사용할 수 없는 이유

호스팅 영역이 정상적으로 생성되었는데도 CNAME 등록이 안 되는 경우가 있다. 바로 **루트 도메인(apex domain)**에 CNAME을 설정하려고 할 때다.

DNS 표준에 따르면 루트 도메인에는 반드시 NS(네임서버)와 SOA 레코드가 존재해야 한다. 그런데 CNAME 레코드는 같은 이름의 다른 레코드와 공존할 수 없다는 DNS 규칙이 있다. 따라서 루트 도메인에는 CNAME을 사용할 수 없다.

# 불가능 - 루트 도메인에 CNAME
example.com  CNAME  some-service.pages.dev

# 가능 - 서브도메인에 CNAME
www.example.com  CNAME  some-service.pages.dev

ALIAS 레코드란

이 문제를 해결하기 위해 Route 53은 ALIAS 레코드라는 확장 기능을 제공한다. ALIAS 레코드는 내부적으로 A 레코드처럼 동작하지만, 대상 도메인의 IP를 자동으로 조회해서 반환해준다.

example.com  ALIAS(A) → 대상 서비스의 IP를 자동으로 반환

ALIAS 레코드의 장점은 NS, SOA 레코드와 공존할 수 있어서 루트 도메인에도 사용할 수 있다는 점이다.

ALIAS 레코드의 제한사항

문제는 Route 53의 ALIAS 레코드가 AWS 리소스만 대상으로 지정할 수 있다는 점이다. CloudFront, ELB, S3, API Gateway 같은 AWS 서비스는 ALIAS로 연결할 수 있지만, Cloudflare Pages나 Vercel 같은 외부 서비스는 ALIAS 대상으로 지정할 수 없다.

외부 서비스를 루트 도메인에 연결하는 방법

Cloudflare Pages 같은 외부 서비스를 루트 도메인에 연결하려면 다음 방법들을 고려해볼 수 있다.

1. DNS를 Cloudflare로 이전

Cloudflare는 CNAME Flattening이라는 기능을 제공한다. 이 기능은 루트 도메인에 설정된 CNAME을 자동으로 A 레코드처럼 변환해서 응답해준다. Cloudflare DNS를 사용하면 루트 도메인에도 CNAME과 유사한 설정이 가능하다.

2. www 서브도메인 사용 + 루트 도메인 리다이렉트

Route 53을 그대로 사용하면서 외부 서비스를 연결하려면 이 방법이 가장 현실적이다.

  1. www.example.com에 CNAME 레코드를 설정해서 외부 서비스를 연결한다
  2. example.com(루트 도메인)은 S3 + CloudFront를 이용해 www.example.com으로 리다이렉트 설정한다

이 방식은 설정이 좀 복잡하지만, Route 53과 외부 서비스를 함께 사용할 수 있는 방법이다.

정리

상황해결 방법
CNAME 등록 시 UnknownError호스팅 영역 생성 완료까지 대기 (15~30분)
루트 도메인에 AWS 서비스 연결ALIAS 레코드 사용
루트 도메인에 외부 서비스 연결DNS를 Cloudflare로 이전하거나, www로 리다이렉트 설정

DNS 설정은 단순해 보이지만 이런 제약사항들 때문에 의외로 삽질하는 경우가 많다. 특히 외부 서비스를 사용할 때는 해당 서비스의 문서에서 권장하는 DNS 설정 방법을 먼저 확인하는 게 좋다.