料金

ホストゾーンとレコード
0.50USD ホストゾーンごと / 月、最初の 25 ホストゾーン
0.10USD ホストゾーンごと / 月、追加ホストゾーン
上記の月額のホストゾーン料金は、1 か月に満たない分に対して日割り計算されません。ホストゾーンは作成した時点で課金され、翌月からは各月の初日に請求されます。テストができるように、作成後 12 時間以内に削除されたホストゾーンについては無料となっていますが、そのホストゾーンでのクエリには以下の料金が適用されます。

1 万件を超えるレコードを含むホストゾーンには追加料金がかかります。

1 つのホストゾーンに 500 個を超えるホストゾーン、または 1 万件を超えるレコードが必要な場合には、 お問い合わせください。

DNSホスティングはドメインレジストラで無料提供されていることが多いが、Route53は有料だ。テストで12時間以内なら無料。
しかし、信頼性は十分で機能も充実。

ホストゾーンを作成する

route53.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
AWSTemplateFormatVersion: "2010-09-09"
Description: Route53 Public Zone

# ------------------------------------------------------------ #
# Input Parameters
# ------------------------------------------------------------ #
Metadata:
"AWS::CloudFormation::Interface":
ParameterGroups:
- Label:
default: "Route53 public zone"
Parameters:
- DomainName

ParameterLabels:
DomainName:
default: "example.com"

Parameters:
DomainName:
Type: String

Resources:
# ------------------------------------------------------------ #
# Route 53
# ------------------------------------------------------------ #
MyHostedZone:
Type: "AWS::Route53::HostedZone"
Properties:
HostedZoneConfig:
Comment: !Sub "My hosted zone for ${DomainName}"
Name: !Ref DomainName

# ------------------------------------------------------------ #
# Output Parameters
# ------------------------------------------------------------ #
Outputs:
MyHostedZoneName:
Description: "Hosted Zone Name."
Value: !Ref DomainName
MyHostedZoneID:
Description: "Hosted Zone ID."
Value: !Ref MyHostedZone
MyHostedZoneNameServers:
Description: "Name Servers."
Value: !Join [',', !GetAtt MyHostedZone.NameServers]

parameters.json

ホストするドメイン名

1
2
3
4
5
6
[
{
"ParameterKey": "DomainName",
"ParameterValue": "xxxxx.xxxxxx.xxxxxx"
}
]

デフォルトのバケットを作成する

Cloudformationでバケットを作成する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ aws cloudformation create-stack --stack-name tutorial-route53 --template-body "file://./route53.yml" --parameters "file://./parameters.json"
{
"StackId": "arn:aws:cloudformation:ap-northeast-1:XXXXXXXXX:stack/tutorial-route53/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
$ aws route53 list-hosted-zones
{
"HostedZones": [
{
"Id": "/hostedzone/XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"Name": "xxxxx.xxxxxx.xxxxxx.",
"CallerReference": "XXXXXXXXXXXXXXXXXXXXXXXXXXX",
"Config": {
"Comment": "My hosted zone for xxxxx.xxxxxx.xxxxxx",
"PrivateZone": false
},
"ResourceRecordSetCount": 2
}
]
}

ドメインのネームサーバー設定

AWSマネジメントコンソールでネームサーバーを確認する

自動登録されたNSレコードを確認する。

Route53ホストゾーン width=640

Route53ホストゾーン width=640

Route53ホストゾーン width=640

Cloudformationの結果からネームサーバ一を確認する

CloudformationのOutputで出力した値をaws-cliで取得する。

1
2
$ aws cloudformation describe-stacks | jq '.Stacks[].Outputs[] | select( .OutputKey == "MyHostedZoneNameServers" ) | .OutputValue'
"ns-XXX.awsdns-XX.net,ns-XXX.awsdns-XX.co.uk,ns-XXX.awsdns-XX.org,ns-XXX.awsdns-XX.com"

ドメインレジストラでNSレコードを設定する

使用しているドメインのレジストラ側で使用するネームサーバーを設定する。

動作確認

登録反映まで少し待ってから、外部からdigなどを使って確認。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.2 <<>> NS -debug @XXXXX xxxxx.xxxxxx.xxxxxx
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5460
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;xxxxx.xxxxxx.xxxxxx. IN NS

;; ANSWER SECTION:
xxxxx.xxxxxx.xxxxxx. 172800 IN NS ns-XXX.awsdns-XX.co.uk.
xxxxx.xxxxxx.xxxxxx. 172800 IN NS ns-XXX.awsdns-XX.com.
xxxxx.xxxxxx.xxxxxx. 172800 IN NS ns-XXX.awsdns-XX.org.
xxxxx.xxxxxx.xxxxxx. 172800 IN NS ns-XXX.awsdns-XX.net.

ドメインの削除

デフォルトのレコード以外が残っていると削除できない

追加したレコードがある状態で、CloudFormationによりゾーンを削除するとエラーになる。削除する前に追加したレコードを削除する必要がある。

Route53ホストゾーンの削除 width=640

Route53ホストゾーンの削除 width=640