【Terraform】Route53で独自ドメインを設定する

目標

Route53で独自ドメインを設定する。

やること

ドメインの登録
レコードの作成

ドメインの登録

.comの料金は1年で$12.00(約1380円)

今回はS3に対して独自ドメインを設定するので、
S3にドメイン名と同じ名前のバケットを作成している必要がある。

レコードの作成

provider "aws" {
  region = "ap-northeast-1"
}

resource "aws_s3_bucket" "bucket" {
  bucket = "{バケット名}"
  acl = "public-read"
  website {
    index_document = "index.html"
  }
}

resource "aws_s3_bucket_policy" "bucket_policy" {
  bucket = aws_s3_bucket.bucket.id
  policy = data.aws_iam_policy_document.policy_document.json
}

data "aws_iam_policy_document" "policy_document" {
  statement {
    sid = "Statement1"
    effect = "Allow"
    principals {
      type = "*"
      identifiers = ["*"]
    }
    actions = [
      "s3:GetObject"
    ]
    resources = [
      "${aws_s3_bucket.bucket.arn}/*"
    ]
  }
}

resource "aws_s3_bucket_object" "bucket_object" {
  bucket = aws_s3_bucket.bucket.id
  key = "index.html"
  source = "index.html"
  content_type = "text/html"
}

data "aws_route53_zone" "zone" {
  name = "{ドメイン名}"
}

resource "aws_route53_record" "record" {
  zone_id = data.aws_route53_zone.zone.zone_id
  name = data.aws_route53_zone.zone.name
  type = "A"
  alias {
    name = aws_s3_bucket.bucket.website_domain
    zone_id = aws_s3_bucket.bucket.hosted_zone_id
    evaluate_target_health = false
  }
}

独自ドメインにアクセスする。
http://{S3のバケット名}/

「Hello, S3!」と表示されれば完了。

課題

現在のURL: http://{S3のバケット名}/

S3だけでは独自ドメインを常時SSL化できない -> CloudFrontを利用する

参考

Terraform Registry
タイトルとURLをコピーしました