Terraformで独自ドメインでファイル配信

  • 2
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

やりたいこと

www.共円.netで、あるhtmlが返却されるように設定する。

事前準備

お名前.comでドメインを取得。

Terraformの設定

main.tf
provider "aws" {
  region = "ap-northeast-1"
}

resource "aws_route53_zone" "kyouen-net" {
  name = "xn--b6qvb.net"
}

resource "aws_s3_bucket" "main" {
    bucket = "www.xn--b6qvb.net"
    acl = "public-read"
    policy = <<EOF
{"Statement":[{"Action":"s3:GetObject","Effect":"Allow","Principal":"*","Resource":"arn:aws:s3:::www.xn--b6qvb.net/*","Sid":"PublicReadForGetBucketObjects"}],"Version":"2012-10-17"}
EOF

    website {
        index_document = "index.html"
        error_document = "error.html"
    }
}

resource "aws_route53_record" "www" {
  zone_id = "${aws_route53_zone.kyouen-net.zone_id}"
  name = "www.xn--b6qvb.net"
  type = "A"

  alias {
    name = "${aws_s3_bucket.main.website_domain}"
    zone_id = "${aws_s3_bucket.main.hosted_zone_id}"
    evaluate_target_health = true
  }
}

output "name_servers.0" {
  value = "${aws_route53_zone.kyouen-net.name_servers.0}"
}
output "name_servers.1" {
  value = "${aws_route53_zone.kyouen-net.name_servers.1}"
}
output "name_servers.2" {
  value = "${aws_route53_zone.kyouen-net.name_servers.2}"
}
output "name_servers.3" {
  value = "${aws_route53_zone.kyouen-net.name_servers.3}"
}

aws_route53_zone

zoneの設定を行います。

Punycode表記のドメイン名を、name属性として与えます。

aws_s3_bucket

Static Website Hostingが出来るように設定します。
policy部分は、1度実行した後のterraform.tfstateから持ってきました。
(JSONのキー・値が一致してても、文字列として違ってたら変更ありとされるっぽい)

aws_route53_record

作成したzoneや、S3 bucketの情報を元に、
www.共円.netというドメインで、同名のS3 bucketにアクセスできるようになります。

Terraformの実行

計画の確認をします。

terraform plan

実行します。

terraform apply

数分待っていると、下記のようにname serverが出力されます。

Outputs:

  name_servers.0 = ns-NNNN.awsdns-NN.org
  name_servers.1 = ns-NNNN.awsdns-NN.co.uk
  name_servers.2 = ns-NNNN.awsdns-NN.com
  name_servers.3 = ns-NNNN.awsdns-NN.net

name serverの設定

お名前.comのネームサーバー変更画面にて、Terraformで出力されたネームサーバのドメイン名を設定する。

S3にファイルを配置、確認する。

Management Consoleとかでさくっとテキトーなindex.htmlを配置する。

http://www.共円.net/ でアクセスできればOK。

感想

取得した独自ドメインで、静的ファイルを簡単にホスティング出来ました。

S3なので、下手なVPSとかIaaS使うよりは安く・高い信頼性で配信できます。

また、Terraformで構築しているので、再現性が高く、破棄も一瞬で出来ます。