AWSRoute 53CloudFrontACMDNSCustom DomainSSL/TLS

Amazon Route 53에서 취득한 도메인을 CloudFront에서 사용하는 방법

Sloth255
Sloth255
·2 min read·342 words

소개

Amazon Route 53에서 취득한 도메인을 Amazon CloudFront에서 사용하려면 먼저 Route 53 측의 호스티드 존을 확인한 뒤, AWS Certificate Manager (ACM)에서 SSL 인증서를 발급하고 CloudFront에 커스텀 도메인을 설정해야 합니다.
이 글에서는 메인 도메인용과 서브도메인용의 오리진이 서로 다른 구성을 전제로, 각각을 별도의 CloudFront 배포에 할당하는 절차를 설명합니다.

전제 조건

이 글은 다음 전제를 기준으로 진행합니다.

  • 메인 도메인용과 서브도메인용의 오리진이 다르다
  • 메인 도메인용과 서브도메인용 CloudFront 배포를 분리해서 운영한다
  • CloudFront 배포 자체와 배포 원본 오리진의 기본 설정은 이미 완료되어 있다
  • Route 53의 호스티드 존을 동일한 AWS 계정에서 관리하고 있다

동일한 오리진으로 운영하는 경우에는 하나의 CloudFront 배포에 여러 개의 대체 도메인 이름 (CNAME) 을 설정하는 구성도 선택할 수 있습니다. 다만 이 글에서는 다루지 않습니다.

전체 흐름

  1. Amazon Route 53에서 도메인 구매
  2. Amazon Route 53에서 자동 생성된 호스티드 존 확인
  3. AWS Certificate Manager (ACM)에서 SSL 인증서 발급
  4. Amazon CloudFront에 커스텀 도메인 설정
  5. Amazon Route 53에서 메인 도메인 레코드 생성
  6. Amazon Route 53에서 서브도메인 레코드 생성
  7. 동작 확인

ACM, Route 53, CloudFront의 관계

이번 구성에서는 Amazon Route 53이 DNS를 관리하고, AWS Certificate Manager (ACM)가 HTTPS용 인증서를 발급하며, Amazon CloudFront가 메인 도메인용과 서브도메인용 배포 대상이 됩니다.

graph LR
  U[사용자 브라우저]
  R[Route 53 DNS 관리]
  CM[CloudFront 메인 도메인용]
  CS[CloudFront 서브도메인용]
  OM[오리진 S3 또는 Web 서버]
  OS[오리진 S3 또는 Web 서버]
  A[ACM SSL/TLS 인증서]

  U -->|example.com 접속| R
  U -->|cdn.example.com 접속| R
  R -->|A / AAAA 별칭| CM
  R -->|A / AAAA 별칭| CS
  CM -->|HTTPS로 전송| U
  CS -->|HTTPS로 전송| U
  A -->|인증서 연결| CM
  A -->|인증서 연결| CS
  CM -->|콘텐츠 가져오기| OM
  CS -->|콘텐츠 가져오기| OS

핵심은 Amazon Route 53의 DNS 레코드가 메인 도메인용과 서브도메인용 CloudFront 배포를 참조하고, 각각에 ACM 인증서를 설정함으로써 자체 도메인으로 HTTPS 배포가 가능해진다는 점입니다.

1. Amazon Route 53에서 도메인 구매

먼저 AWS Management Console에서 Amazon Route 53을 열고 사용할 도메인을 구매합니다.

절차

  1. Amazon Route 53 대시보드에서 "등록된 도메인" 또는 "도메인 등록"을 엽니다
  2. 취득하려는 도메인 이름(예: example.com)을 검색합니다

Route 53 도메인 검색 화면

  1. 사용 가능하면 장바구니에 추가하고 구매 절차를 진행합니다
  2. 연락처 정보와 등록 기간을 설정한 뒤 구매를 완료합니다
  3. 등록한 이메일 주소로 도착한 확인 메일을 열고 본문 안의 확인 링크를 클릭합니다
    • 제목 예시: Verify your email address.
  4. Amazon Route 53 콘솔에서 "도메인" → "요청"을 열고 새로 신청한 도메인의 상태가 "Successful"인지 확인합니다

구매가 완료되면 도메인 등록과 함께 Amazon Route 53 측에서 네임서버도 관리할 수 있는 상태가 됩니다.

2. Amazon Route 53에서 자동 생성된 호스티드 존 확인

Amazon Route 53에서 도메인을 등록하면 보통 같은 이름의 퍼블릭 호스티드 존이 자동으로 생성됩니다. 먼저 그 상태를 확인합니다.

절차

  1. Amazon Route 53 대시보드에서 "호스티드 존"을 엽니다
  2. 구매한 도메인(예: example.com)과 같은 이름의 호스티드 존이 있는지 확인합니다
  3. 호스티드 존 안에 다음 레코드가 자동 생성되어 있는지 확인합니다
NS
SOA

필요하다면 NS 레코드에 표시된 네임서버도 확인해 둡니다.

ns-xxx.awsdns-xx.com
ns-xxx.awsdns-xx.net
ns-xxx.awsdns-xx.org
ns-xxx.awsdns-xx.co.uk

3. AWS Certificate Manager (ACM)에서 SSL 인증서 발급

HTTPS로 접근할 수 있도록 AWS Certificate Manager (ACM)에서 SSL 인증서를 발급합니다.

절차

  1. 리전을 us-east-1으로 변경합니다

ACM 리전 선택 화면

  1. ACM 콘솔에서 "Request a certificate"를 클릭합니다

ACM에서 인증서를 요청하는 화면

  1. "Request a public certificate"를 선택합니다

ACM 퍼블릭 인증서 선택 화면

  1. 정규화된 도메인 이름 항목에 사용할 도메인 이름을 입력합니다
    • 메인 도메인을 사용하는 경우: example.com
    • 서브도메인을 사용하는 경우: *.example.com
    • 둘 다 하나의 인증서로 커버하고 싶다면: example.com*.example.com을 모두 추가
  2. 검증 방법으로 "DNS validation"을 선택합니다
  3. "Request"를 클릭합니다

ACM 인증서 요청 제출 화면

DNS 검증 완료

  1. 인증서 상세 화면에서 "Create records in Route 53"를 클릭합니다
  2. Route 53 호스티드 존을 같은 AWS 계정에서 관리 중이라면 CNAME 레코드를 자동 생성할 수 있습니다
  3. 자동 생성 경로가 표시되지 않으면 ACM이 표시한 CNAME 레코드를 Route 53에 수동으로 추가합니다
  4. 몇 분 후 검증이 완료됩니다

검증이 완료되면 상태가 "Issued"로 바뀝니다.

4. Amazon CloudFront에 커스텀 도메인 설정

인증서가 발급되면 CloudFront 배포에 커스텀 도메인을 추가합니다.

절차

  1. CloudFront 콘솔에서 메인 도메인용 배포를 선택합니다
  2. "Edit"를 클릭합니다
  3. "Alternate domain name (CNAME)"에 사용할 도메인을 추가합니다
    • 메인 도메인용 배포에는 example.com을 추가합니다
  4. "Custom SSL certificate"에서 앞에서 만든 인증서를 선택합니다
  5. "Save changes"를 클릭합니다
  6. 이어서 서브도메인용 배포에서도 같은 절차를 수행합니다
    • 서브도메인용 배포에는 cdn.example.com을 추가합니다
    • 사용할 인증서에 cdn.example.com 또는 *.example.com이 포함되어 있는지 확인합니다
  7. "Save changes"를 클릭합니다

배포별로 배포가 완료될 때까지 몇 분에서 약 15분 정도 기다립니다.

5. Amazon Route 53에서 메인 도메인 레코드 생성

메인 도메인(example.com)도 CloudFront로 접속시키려면 A/AAAA 별칭 레코드를 생성합니다.

절차

  1. Amazon Route 53의 호스티드 존 상세 화면에서 "Create record"를 클릭합니다
  2. 다음 정보를 입력합니다:
    • 레코드 이름: 비워 둠 (루트 도메인)
    • 레코드 유형: A - IPv4 address
    • Alias: On
    • Route traffic to:
      • Alias to CloudFront distribution
      • 메인 도메인용 CloudFront 배포를 선택
  3. "Create records"를 클릭합니다
  4. 같은 방식으로 AAAA - IPv6 address 레코드도 생성합니다

6. Amazon Route 53에서 서브도메인 레코드 생성

서브도메인(예: cdn.example.com)을 CloudFront로 연결하기 위한 레코드를 생성합니다.

절차

  1. Amazon Route 53의 호스티드 존 상세 화면에서 "Create record"를 클릭합니다

Route 53에서 레코드를 생성하는 화면

  1. 다음 정보를 입력합니다:
    • 레코드 이름: 서브도메인(예: cdn)
    • 레코드 유형: A - IPv4 address
    • Alias: On
    • Route traffic to:
      • Alias to CloudFront distribution
      • 서브도메인용 CloudFront 배포를 선택
  2. "Create records"를 클릭합니다

CloudFront용 레코드를 생성한 화면

  1. 같은 방식으로 아래 레코드도 생성해 둡니다.
    • 레코드 유형: AAAA - IPv6 address
    • 나머지는 2와 동일

7. 동작 확인

모든 설정이 끝나면 브라우저에서 아래 URL에 접속해 동작을 확인합니다.

https://example.com
https://cdn.example.com

각각 기대한 오리진의 콘텐츠가 표시되면 기본 라우팅은 성공입니다.

1. DNS 확인

아래 명령으로 메인 도메인과 서브도메인이 CloudFront를 가리키는지 확인할 수 있습니다.

nslookup example.com
nslookup cdn.example.com

CloudFront의 도메인 이름 자체가 반환되지는 않지만 이름 해석이 되는지와 Route 53 별칭 레코드가 올바르게 설정되었는지는 확인할 수 있습니다.

2. HTTPS 응답 확인

다음으로 HTTPS가 정상적으로 응답하는지 확인합니다.

curl -I https://example.com
curl -I https://cdn.example.com

최소한 아래 항목을 확인합니다.

  • HTTP/1.1 200 OK 또는 301 Moved Permanently처럼 예상한 HTTP 상태가 반환된다
  • server: CloudFront가 포함되어 있다
  • 의도한 리다이렉트 대상으로 이동한다

3. 인증서와 대체 도메인 이름 확인

브라우저에서 각 URL에 접속하고 인증서의 발급 대상과 자물쇠 아이콘을 확인합니다.

  • example.com에서 인증서 오류가 발생하지 않는다
  • cdn.example.com에서 인증서 오류가 발생하지 않는다
  • 예상하지 않은 도메인으로 리다이렉트되지 않는다

4. 오리진 분리 확인

메인 도메인용과 서브도메인용 오리진을 분리해 두었다면 각각이 다른 배포 대상을 참조하고 있는지도 확인합니다.

  • https://example.com에서 메인 도메인용 오리진의 콘텐츠가 표시된다
  • https://cdn.example.com에서 서브도메인용 오리진의 콘텐츠가 표시된다
  • 한쪽의 업데이트가 다른 쪽에 섞이지 않는다

문제 해결

접속이 되지 않는 경우:

  1. CloudFront 배포가 완료되었는지 확인
  2. Route 53의 A/AAAA 별칭 레코드가 올바르게 설정되었는지 확인
  3. CloudFront의 "Alternate domain name (CNAME)"에 대상 도메인이 추가되어 있는지 확인
  4. ACM 인증서에 example.com 또는 cdn.example.com이 포함되어 있는지 확인
  5. ACM 인증서 상태가 "Issued"인지 확인
  6. 오리진 측의 Host 헤더나 HTTPS 리다이렉트 설정이 원인이 아닌지 확인
  7. DNS 전파 확인 (nslookup example.com / nslookup cdn.example.com)

정리

Amazon Route 53에서 취득한 도메인을 Amazon CloudFront에서 사용하는 절차를 설명했습니다. 핵심 포인트는 다음과 같습니다.

  • Amazon Route 53에서 취득한 도메인은 보통 네임서버 변경이 필요 없다
  • 프라이버시 보호를 지원하는 도메인이라면 WHOIS에서 개인정보 공개를 막을 수 있다
  • ACM 인증서를 먼저 발급한 뒤 CloudFront에 커스텀 도메인을 설정한다
  • 메인 도메인과 서브도메인을 서로 다른 오리진으로 운영할 경우 CloudFront 배포도 분리하는 편이 관리하기 쉽다
  • 메인 도메인과 서브도메인은 각각 A/AAAA 별칭 레코드로 CloudFront에 연결한다
  • ACM 인증서는 반드시 us-east-1 리전에서 생성한다

이 구성으로 빠른 콘텐츠 배포와 유연한 DNS 관리를 구현할 수 있습니다.

참고 링크