Domain 등록하기

Route53에 새로운 도메인 등록하기

도메인 구매

도메인 구매는 AWS Route 53에서 손쉽게 구매하실 수 있습니다. 외부에서 구매한 도메인을 사용하셔도 무방합니다.

본 실습에서는 devops-art-factory.com 라는 도메인을 구입했다는 가정하에 정의하겠습니다.

Host zone 등록

코드 경로는 terraform/route53/art-id/devops-art-factory.com 입니다. 만약 도메인을 AWS 상에서 구매하셨다면 기본 host zone을 AWS에서 자동으로 생성해줍니다. 이 경우에는 해당 리소스를 import 하시는 것이 좋습니다.

vim terraform/route53/art-id/devops-art-factory.com/route53.tf
# AWS Route53 Zone
resource "aws_route53_zone" "devopsartfactory_com" {
  name     = "devops-art-factory.com"
  comment  = "HostedZone created by Route53 Registrar - Manged Terraform"
}

서로 다른 Account에서 subdomain 등록하기

서비스를 운영하다보면, 환경별로 서로 다른 계정에서 도메인을 함께 쓰고 싶은 경우가 있습니다. 예를 들어 A 계정에서 example.com을 사용하고 있는데, B라는 계정에서 prod.example.com 도메인을 사용하는 것입니다. 이 경우에는 서브 도메인의 네임서버 리스트를 상위 도메인에 등록하면 됩니다.

정리하면, 과정은 아래와 같습니다.

  1. B 계정에 prod.example.com 이라는 aws route53 zone을 생성합니다.

  2. A 계정에서 example.com route53 zone에 NS 레코드로 prod.example.com 의 네임서버들을 등록합니다.

1번 과정 코드는 아래와 같습니다.

vim terraform/route53/art-prod/prod.devops-art-factory.com/route53.tf
resource "aws_route53_zone" "prod_devops-art-factory_com" {
  name = "prod.devops-art-factory.com."
}

생성이 완료되면 아래 그림처럼 hosted zone이 생성되고, 레코드로 Name server들이 생성됩니다.

2번 작업은 아래와 같습니다.

1번에서 생성된 name server list를 코드 records에 넣어주시면 됩니다.

vim terraform/route53/art-id/devops-art-factory.com/route53.tf
resource "aws_route53_record" "ns_prod_devops-art-factory_com" {
  zone_id = aws_route53_zone.devopsartfactory_com.zone_id
  name    = "prod"
  type    = "NS"
  ttl     = "300"
  records = [
    # Refer to Route53 Zone for `prod.devops-art-factory.com in `art-id`
    "ns-316.awsdns-39.com.",
    "ns-1936.awsdns-50.co.uk.", 
    "ns-982.awsdns-58.net.",
    "ns-1191.awsdns-20.org."
  ]
}

이렇게 등록이 마무리 되면, *.prod.example.com 형태로 ACM도 생성할 수 있고, sub domain을 추가로 만들어서 사용하실 수 있습니다.

작동 원리는 DNS 질의 원리와 동일합니다.

1) prod.example.com 을 질의하게 되면 .com 도메인에게 example.com 의 Name Server IP를 물어봅니다.

2) A 계정에 있는 example.com 네임서버가 이를 받아서 위에서 등록한 prod.example.com 네임서버 리스트 중에 하나를 반납해줍니다.

3) B 계정에 있는 prod.example.com 네임서버는 질의 받은 레코드에 대한 값을 반환합니다.

Last updated