Amplify ConsoleのカスタムドメインをValue-DomainからRoute53へ移管する

前回「[AWSにフルサーバーレスなWebサイト運用環境を作る(Gatsby + Amplify + CodeCommit)](https://qiita.com/yoskoh/items/785a643d153f526be365)」で、Amplify Consoleを使ってフルサーバーレスで爆速Webサイトを作りました。

----

その時はAmplifyのカスタムドメインの管理を外部レジストラ(実はValue-Domain)にCNAME設定したのですが、今回はそのAmplifyで利用中のドメイン管理をValue-DomainからAWS Route53へ移管します。

----

といってもほとんど公式ガイドの手順の通りなのですが、多少Amplify特有の部分もあるので記載します。１〜２週間かかる可能性があると公式には記載がありましたが、やってみると半日程度でスムーズに移管できました。

----

# Value-Domain側の移管手順を確認する

まずはValue-Domainのドメイン移管手順をざっと確認します。

参考 https://www.value-domain.com/userguide/manual/transferother/

----

# Route53へホストゾーンを設定する

ここからはAWS のRoute53に移管方法が書いてあるのでそれを一読してから進めます。

参考サイト : [Route 53 を使用中のドメインの DNS サービスにする](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/migrate-dns-domain-in-use.html)

----

## 現在の DNS サービスプロバイダから現在の DNS 設定を取得する (オプション、ただし推奨)

念のため(ミスった時用)に、Value-Domain上のドメイン設定をメモしておきます。以下は例です。

```dns
cname (対象ドメイン名). master.(サブドメイン).amplifyapp.com.
cname www.(対象ドメイン名). master.(サブドメイン).amplifyapp.com.
cname stg.(対象ドメイン名). stg.(サブドメイン).amplifyapp.com.
cname _(検証文字列).(対象ドメイン名). _(acm検証用サブドメイン).acm-validations.aws.
```

----


## Route53にホストゾーンを作成する

AWS 管理コンソールへサインインしてRoute53を開き、ホストゾーンを作成します。

```
domain name: (対象ドメイン名)
option: （設定不要）
type: public host zone
```

----


## レコードを作成する

Amplifyのカスタムドメイン用レコードの作成はAmplify Consoleで行います。Route53からではAmplify Console用のAlias Aレコード設定が出来ないので注意が必要です。しかもすでに外部レジストラ用にAmplify にカスタムドメイン設定が済んでいると、それをRoute53へ反映させる方法がわからずちょっと悩みました。

----

正解は、「ステップ２でホストゾーンを作った後、Amplify Consoleでドメイン設定を更新する(例：いったん無効化→更新→再度有効化→更新）と、Route53のホストゾーンにレコードが追加されました。

Amplifyコンソール > アプリ名 > アプリの設定 > ドメイン管理

サブドメインの管理を選び、(対象ドメイン名)をいったんdisableしてからenableする。

----


### Amplify のDNS設定確認

実際にRoute53のホストゾーンにAmplifyのレコードが登録されたことを確認します。

```	
レコード名
タイプ
ルーティングポリシー
差別化要因
値/トラフィックのルーティング先

(対象ドメイン名)	A	シンプル	-	
(サブドメイン).cloudfront.net.

(対象ドメイン名)	NS	シンプル	-	
ns-NNN.awsdns-00.net.
ns-NNN.awsdns-13.com.
ns-NNN.awsdns-39.co.uk.
ns-NNN.awsdns-31.org.

(対象ドメイン名)	SOA	シンプル	-	
ns-NNN.awsdns-00.net. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400

stg.(対象ドメイン名)	CNAME	シンプル	-	
(サブドメイン).cloudfront.net

www.(対象ドメイン名)	CNAME	シンプル	-	
(サブドメイン).cloudfront.net
```

----


# NameServerをValue-DomainからRoute53へ切り替える

移管前にNameServerをRoute53に切り替えます。

----


## TL の設定を下げる

Value Domain側のDNSレコード編集でTTLを十分短く設定します。(今回はすでに300secに設定してあるので、変更しませんでした)

----


## 古い TTL の有効期限切れを待つ

今回はすでに300secに設定してあるので、待ちませんでしたが、TTLを長く設定していた場合、時間がかかります。

----


## 現在の DNS サービスプロバイダで NS レコードを更新して Route 53 ネームサーバーを使用する

Route53のHosted ZoneでNSレコードの値を確認する。以下は例。

```
ns-nnn.awsdns-00.net.
ns-nnn.awsdns-13.com.
ns-nnn.awsdns-39.co.uk.
ns-nnn.awsdns-31.org.
```

Value-domainのネームサーバー設定をRoute53のNSレコードの値に変更します。

Value-domain > コントロールパネル >(ドメイン名) > DNS > ネームサーバーの設定

ネームサーバーの値をRoute53のものに変更して更新します。

----


## ドメインのトラフィックの監視

変更後、ちゃんとドメインへアクセス出来ていることを確認する。

----


## NS レコードの TTL を高い値に戻す

必要に応じて、NSレコードのTTL設定を元に戻します。

----


# ドメインをAmazon Route53へ移管する

ここからが本当の移管手続きです。移管にはValue-Domainが発行する認証鍵が必要です。そのためにValue-Domainのwhois代理公開機能を無効化する必要があります

----


## Value-domain のwhois の代理公開を無効にします。

whois で管理者情報からプライバシーを漏洩させないためにドメインのwhois情報をValue-Domainに代理情報で公開してもらっている場合があります。その場合、認証キーを取得するために無効化が必要です。

Value-domain > コントロールパネル >(ドメイン名) > ドメイン >ドメインの設定・操作＞ドメインの登録情報変更［eNom］

「 名義（WHOIS）の代理公開」を無効化します。

----


### Valuedomain の認証鍵をメモする

参考: http://blog.10rane.com/2014/09/16/transferred-a-domain-to-route53/

Value-domain > コントロールパネル >(ドメイン名) > ドメイン >ドメインの設定・操作＞ドメインの登録情報変更［eNom］

画面の下にある認証鍵情報をメモします。

```
認証鍵（Authorization Info）	(認証用文字列)
```

----


## Amazon Route53 で「ドメインの移管」を実施する

Amazon Route53の「ドメイン」画面で、「ドメインの移管」を選択します。

----


移管したいドメインを検索し、カートにいれます。
「認証コードとネームサーバー」に先ほど取得した認証鍵を入力します。
「ネームサーバーのオプション」は「ドメインと同じ名前のRoute53ホストゾーンからネームサーバーをインポートする」を選びます。
「ホストゾーン」へ予め設定した(対象ドメイン名)のホストゾーンを選択します。
「1. ドメインのお問い合わせ詳細」に管理者情報を再度入力します。このタイミングでAmazonによる代理情報を設定することができます。

----


登録後、AWSから管理者メールアドレスの確認メールが届くのでリンクをクリックして確認します。

さらにしばらくすると移行元のValue-Domainから移行確認メールが届くのでメール内の認証ページへアクセスして承認します。今回は２ー３時間後に届きました。

----


その後、Route53で「ドメイン」を確認すると移管が終了した状態になっていました。

whois (移管したドメイン名)を確認し、amazonの情報になったことを確認して完了です。

間に会社間の手続きが入るのでもっと時間がかかるかと思っていましたが、思った以上にスムーズ・短時間で移管できました。