🤖

【Terraform】Route53の作成

2025/01/13に公開

はじめに

TerraformでRoute53の設定をしていきます。

ゾーンの作成

  • domainを変数化しておきます。
main.tf
variable "domain" {
  type = string
}
terraform.tfvars
domain      = "example.com"

aws_route53_zone

  1. name : string : Route53ゾーン名
  2. force_destroy : bool : 削除時にレコードを削除してよいかどうか
route53.tf
#------------------
#Route53
#------------------
resource "aws_route53_zone" "route53_zone" {
  name          = var.domain
  force_destroy = false

  tags = {
    Name    = "${var.project}-${var.environment}-domain"
    Project = var.project
    Env     = var.environment
  }
}

aws_route53_record

Aレコード(IPアドレス)

  1. zone_id : string : ホストゾーンID
  2. name : string : レコード名
  3. type : enum : "A"
  4. ttl : number : TTL(キャッシュ有効期間:秒)
  5. records : string[] : ルーティング先(EIPなど)
  6. allow_overwrite : bool : 既に存在する場合、上書きしてよいかどうか

Aレコード(AWSリソース)

  1. zone_id : string : ホストゾーンID
  2. name : string : レコード名
  3. type : enum : "A"
  4. allow_overwrite : bool : 既に存在する場合、上書きしてよいかどうか
  5. alias : block : トラフィックルーティング先(AWSリソース)
    • name : string : DNSドメイン名
    • zone_id : string : ホストゾーン名
    • evaluate_target_health : bool : ヘルスチェックするかどうか
route53.tf
#------------------
#Route53 レコード作成
#------------------
resource "aws_route53_record" "route53_record" {
   zone_id = aws_route53_zone.route53_zone.id
   name = "dev-elb.${var.domain}"
   type = "A"
   alias {
     name = aws_lb.alb.dns_name
     zone_id = aws_lb.alb.zone_id
     evaluate_target_health = true
   }
}

ネームサーバーの設定

Route53のマネジメントコンソールに記述されている4つのnsレコードをドメインを購入した会社の管理画面で設定していく。

Discussion