今回は異なるアカウントにドメインを移管する方法について紹介したいと思います。
前提として以下のような状態であるとします。
操作はCLI
を利用します。
example.com
)最後の項目についてはオプションです。 アカウントB側でドメインを受け取るという操作が必要ですが、ロールを使わずとも同じことができるので、ロールを使わない場合はIAMユーザをそのまま使うものと置き換えてください。
アカウントB側でロールを作成します。 以下の4つの権限を持てるようにポリシーをアタッチします。
さらに信頼ポリシーを以下のように記載します。 こうすることでアカウントA側からアカウントB側にあるこのロールを扱うことができます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::【アカウントAのID】:root"
},
"Action": "sts:AssumeRole"
}
]
}
CLI
に操作者(アカウントA側のIAM
ユーザ)のprofile
を追加します。
aws configure --profile acount-a
IAM
ユーザのアクセスキー、シークレット等々を入力します。
以降の操作主体をこのacount-a
にしたい場合は、以下のようにデフォルトに設定します。
set AWS_DEFAULT_PROFILE=account-a
export AWS_DEFAULT_PROFILE=account-a
さらに、このaccount-a
から使用できるロールをprofile
として宣言します。
~/.aws/config
を編集して以下のようにロールを宣言します。
[default]
region=us-east-1
output=json
[profile account-a]
region = us-east-1
output = json
+ [profile role-b]
+ region = us-east-1
+ role_arn = 【アカウントBで作ったロールのARN】
+ source_profile = account-a
これで以降のCLI
実行時に--profile role-b
とオプションをつけることでスイッチロールした状態でコマンド実行することができます。
それではアカウントA側からドメイン移管を行います。 もしドメインの移管ロック状態にある場合はまずは解除します。
aws route53domains disable-domain-transfer-lock \
--domain-name example.com
その上で移管処理を行います。
aws route53domains transfer-domain-to-another-aws-account \
--domain-name example.com \
--account-id 【アカウントBのID】
レスポンスとして以下が返ります。
{
"OperationId": "xxxxxxxxxxxxxxx",
"Password": "xxxxxxxxxxxxxx"
}
この中のPassword
は後で使います。
今度はアカウントB側でドメインを受け取ります。
aws route53domains accept-domain-transfer-from-another-aws-account \
--profile role-b \
--domain-name example.com \
--password 【先ほどのPassword】
特に問題がなければアカウントB側の登録済みドメインに移管されます。
ここまでの作業がドメインの移管です。
大概はホストゾーンの移行もセットで行うかと思いますので、ここで手順を紹介します。
厳密には「移行」というより、ドメインの移管先で新たにホストゾーンを作り、そこに移管元から参照してレコードを作成する、といった流れです。
その際に、以降元のホストゾーンにNS
レコードとSOA
レコードしかない場合はこの手順は不要です。
今回はNSおよびSOAレコード以外がなかったため、具体的な移行処理はありません。
上記以外のレコードがある場合については、別の AWS アカウントへのホストゾーンの移行の手順を参考にしてください。
まずは移行先にホストゾーンを作成します。
aws route53 create-hosted-zone \
--name example.com \
--caller-reference 2022-06-08-13:00 \
--profile role-b
これで移行先にホストゾーンが作成されました。
デフォルトでNS
とSOA
の2種類のレコードはできていると思います。
削除したいホストゾーンのIDを確認します。
aws route53 list-hosted-zones
対象のホストゾーンのIDを確認した上で、下記を実行します。
aws route53 delete-hosted-zone \
--id 【移行元のホストゾーンID】
これで移行元のホストゾーンが削除されました。
今回はAWSアカウント間でのドメインの移管についての手順と、それに伴うホストゾーン周りの処理をまとめました。
いろいろ試行錯誤しながらAWS
を触ってAWS Organizations
の機能を後から知ったようなケースでは、今回のように別アカウントにドメインを移管するようなケースが出てくるかと思います。
最初からベストプラクティスの構成にするのはなかなか難しいですが、こうやってリカバリできる方法が用意されているので便利ですね。
今回の内容が役立ちましたら幸いです。