自分のドメインの権威サーバをRoute53に引き受けてもらう設定をします。
[重要] Route53には無料使用枠がないので課金が発生
-
Route53には無料使用枠がないので、下記の料金がかかります。
-
ホストゾーン
- ホストゾーンごと (最初の25ホストゾーンまで): 0.50 USD
- 作成から 12 時間以内に削除されたホストゾーンについては無料。
- 1ヵ月に満たない分に対して日割り計算されず、月初に課金される。
-
クエリ(標準的クエリを選択した場合)
- 100万クエリごと (最初の10億クエリ/月まで): 0.500 USD
前提条件
独自ドメイン
独自ドメインを保有しており、レジストラに対してWhois情報変更の依頼権限を持っている。
Route53への権限
Route53に対してフル権限があること。
AWS CLIのバージョン
以下のバージョンで動作確認済
- AWS CLI 1.10.38
aws --version
aws-cli/1.10.38 Python/2.7.11 Darwin/15.5.0 botocore/1.4.28
- 準備
=======
0.1. リージョンの決定
構築するリージョンを決めます。 (カレントユーザが利用するカレントリージョンも切り変わります。)
export AWS_DEFAULT_REGION='ap-northeast-1'
0.2. 変数の確認
プロファイルが想定のものになっていることを確認します。
aws configure list
Name Value Type Location
---- ----- ---- --------
profile administrator-prjz-mbp13 env AWS_DEFAULT_PROFILE
access_key ****************XXXX shared-credentials-file
secret_key ****************XXXX shared-credentials-file
region ap-northeast-1 env AWS_DEFAULT_REGION
AssumeRoleを利用している場合はprofileが ''と表示されます。 それ以外のときにprofileが '' と表示される場合は、以下を実行してください。
export AWS_DEFAULT_PROFILE=<IAMユーザ名>
0.3. whoisコマンドの確認
which whois
Amazon Linuxの場合、標準でwhoisコマンドがはいっていないので、ここでは日本語対応(らしい)jwhoisをインストールします。
sudo yum install jwhois -y
注釈: OSXやFreeBSDでは、whoisコマンドは標準で利用可能です。
- 事前作業
===========
登録ドメインの決定
Route53に登録するドメインを決めます。
バケットの作成 (独自ドメイン)
( http://qiita.com/tcsh/items/1f707443e667b6b3c8cf )で独自ドメイン用のバケットを作成後であれば、下記のように変数にドメイン名を格納します。
R53_ZONE_NAME="${DOMAIN_NAME}" \
&& echo ${R53_ZONE_NAME}
- hosted zone作成
==================
Route53上で、登録するドメインのhosted zoneを作成します。
-
Callerは、変更リクエストのユニーク性が保証されればどんな文字列でも良いようです。
-
Commentは、任意の文字列でOKです。(オプション)
R53_CALLER="${R53_ZONE_NAME}-$(date +%Y%m%d-%H%M%S)"
R53_COMMENT="example zone"
cat << ETX
R53_ZONE_NAME: ${R53_ZONE_NAME}
R53_CALLER: ${R53_CALLER}
R53_COMMENT: "${R53_COMMENT}"
ETX
aws route53 create-hosted-zone \
--name ${R53_ZONE_NAME} \
--caller-reference ${R53_CALLER} \
--hosted-zone-config Comment="${R53_COMMENT}"
{
"HostedZone": {
"ResourceRecordSetCount": 2,
"CallerReference": "example.jp-20160620-193012",
"Config": {
"Comment": "example zone",
"PrivateZone": false
},
"Id": "/hostedzone/xxxxxxxxxxxxx",
"Name": "example.jp."
},
"DelegationSet": {
"NameServers": [
"ns-xxx.awsdns-xx.co.uk",
"ns-xxx.awsdns-xx.net",
"ns-xxx.awsdns-xx.com",
"ns-xxx.awsdns-xx.org"
]
},
"Location": "https://route53.amazonaws.com/2013-04-01/hostedzone/xxxxxxxxxxxxx",
"ChangeInfo": {
"Status": "PENDING",
"SubmittedAt": "6月 19, 2016T01:23:45.678Z",
"Id": "/change/xxxxxxxxxxxxx"
}
}
- ns確認
=========
作成したhosted zoneに割り当てられたNSレコードを確認します。
まず、作成したhosted zoneのIDを取得します。
R53_ZONE_ID=$( \
aws route53 list-hosted-zones \
--query "HostedZones[?Name == \`${R53_ZONE_NAME}.\`].Id" \
--output text \
| sed 's/\/hostedzone\///' \
) && echo ${R53_ZONE_ID}
Zxxxxxxxxxxxx
そのHosted zone IDのNS(NameServers)のリストを取得します。 ここでは、レジストラの管理画面で作業しやすいようにテーブル形式で出力してみました。
aws route53 get-hosted-zone \
--id /hostedzone/${R53_ZONE_ID} \
--query DelegationSet.NameServers \
--output table
-----------------------------
| GetHostedZone |
+---------------------------+
| ns-xxx.awsdns-xx.co.uk |
| ns-xxx.awsdns-xx.net |
| ns-xxx.awsdns-xx.com |
| ns-xxx.awsdns-xx.org |
+---------------------------+
BINDに登録する場合は、以下のように出力します。
cat << ETX
R53_ZONE_NAME: ${R53_ZONE_NAME}
R53_ZONE_ID: ${R53_ZONE_ID}
ETX
for i in $( \
aws route53 get-hosted-zone \
--id /hostedzone/${R53_ZONE_ID} \
--query DelegationSet.NameServers \
--output text \
); do echo "${R53_ZONE_NAME}. IN NS ${i}."; done
- whois変更
============
3.1. Route53へのドメインの登録
whois変更 (ドメインをRoute53に登録する場合)
Route53に割り当てられたNSレコードのホスト名を、自分のドメインのWhois情報にName Serverとして登録します。
ドメインの管理を委託しているレジストラの管理画面などを利用します。 (各レジストラのサポートページなどを参考にがんばってください。)
###ネームサーバ変更 (サブドメインをRoute53に登録する場合)
Route53に割り当てられたNSレコードのホスト名を、ドメインを管理するネームサーバに登録します。 (BINDやNSDのマニュアルを参考にがんばってください。)
3.2. whois確認 (ドメイン全体をRoute53に登録する場合のみ)
自分のドメインのWhois情報にName Server情報が反映されたか確認します。
whois ${R53_ZONE_NAME} | grep 'Name Server'
Name Server:NS-xxxx.AWSDNS-xx.ORG
Name Server:NS-xx.AWSDNS-xx.COM
Name Server:NS-xxx.AWSDNS-xx.NET
Name Server:NS-xxxx.AWSDNS-xx.CO.UK
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
Name Server:
[Name Server] NS-xxxx.AWSDNS-xx.ORG
[Name Server] NS-xx.AWSDNS-xx.COM
[Name Server] NS-xxx.AWSDNS-xx.NET
[Name Server] NS-xxxx.AWSDNS-xx.CO.UK
- 事後作業
===========
自分のドメインのNSレコードが、Route53の登録情報と同じであることを確認します。
dig ns ${R53_ZONE_NAME} | grep ${R53_ZONE_NAME}
;example.jp. IN NS
example.jp. 152631 IN NS ns-xxxx.awsdns-xx.org.
example.jp. 152631 IN NS ns-xxxx.awsdns-xx.co.uk.
example.jp. 152631 IN NS ns-xx.awsdns-xx.com.
example.jp. 152631 IN NS ns-xxx.awsdns-xx.net.
完了
これ以降は、Route53上で自分のドメインを管理することができます。