LoginSignup
0
2

More than 3 years have passed since last update.

AWSの内部通信で好きなドメインを使えるようにする

Posted at

はじめに

AWSの内部通信をしているときに、いくら内部通信とは言えデフォルトELB払い出しドメイン名を使うのは分かりにくいよね、ということでやり方を探してみたところ、内部通信であればRoute53のエイリアスレコードというものを使えば実現できるらしい。

料金を確認すると、ELBへのエイリアスへのクエリはなんと無料らしい。さすがにホストゾーンは料金がかかるようだが、それでもホストゾーン単位に$0.50/月程度。利便性を考えればおつりがくる金額だ。

さっそくやってみよう。

いきなりIaC

なにげに、めちゃくちゃ設定簡単だった。
ALBまでリソースが作られているのであれば、以下で出来上がりだ。

今回のサンプルでは、VPCとNLBをinternal_hostzone_testというデータソース名で引っ張ってきている。
特に中身で難しいところはない。type = "A"がエイリアスレコードを意味する。

route53.tf
resource "aws_route53_zone" "internal_hostzone_test" {
  name = "neruneruo.com"

  vpc {
    vpc_id = "${data.aws_vpc.internal_hostzone_test.id}"
  }
}

resource "aws_route53_record" "internal_hostzone_test" {
  zone_id = "${aws_route53_zone.internal_hostzone_test.zone_id}"
  name    = "www.neruneruo.com"
  type    = "A"

  alias {
    name                   = "${data.aws_alb.internal_hostzone_test.dns_name}"
    zone_id                = "${data.aws_alb.internal_hostzone_test.zone_id}"
    evaluate_target_health = true
  }
}

ちょっとだけ罠

ホストゾーンの詳細を確認してみると、以下のような注意書きがされる。

プライベートホストゾーンを使用するには、次の Amazon VPC 設定を true に設定する必要があります。
enableDnsHostnames
enableDnsSupport

この項目はデフォルトではONではないので注意が必要だ。
おそらく、VPCの設定画面ではenableDnsSupportが「DNS 解決」、enableDnsHostnamesDNS ホスト名と書かれている設定だと思う。思う、と書いたのは、正しく項目を確認するのであれば以下のCLIを実行すれば値を得られるのだが、「DNS 解決」を無効にした時点でCLIすら通らなくなってしまうので、本当に正しいかが分からないのである……。

$ aws ec2 describe-vpc-attribute --vpc-id vpc-xxxxxxxxxxxxxxxx --attribute enableDnsSupport
aws ec2 describe-vpc-attribute --vpc-id vpc-xxxxxxxxxxxxxxxx --attribute enableDnsHostnames

curlで確認

さて、ちゃんと確認してみよう。

$ curl -D - -s  -o /dev/null http://www.neruneruo.com/
HTTP/1.1 403 Forbidden
Date: Sun, 19 Jul 2020 13:11:57 GMT
Server: Apache/2.4.43 ()
Upgrade: h2,h2c
Connection: Upgrade
Last-Modified: Fri, 08 May 2020 17:01:39 GMT
Accept-Ranges: bytes
Content-Length: 3630
Content-Type: text/html; charset=UTF-8

うむ!なんかForbiddenにはなってしまったが、確かにApacheが応答してくれたから良しとしておこう!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2