Private Hosted Zone(PHZ)とは
PHZはDNSのレコードを格納するコンテナです。PrivateとPublicがありますが、Privateだと名前解決をVPC内のみで行うことができます。作成時にドメインを指定しますが、VPC内でそのドメインとサブドメインのDNSクエリに対応することができます。
アカウントAのPrivate Hosted Zoneに登録されたレコードをアカウントBから参照したい
まず、PHZはドメインとVPCを1:1で関連付けます。VPC内で完結するため、アカウントAのVPCからアカウントBのVPCの名前解決をすることはデフォルトではできません。方法として、PHZに別アカウントのVPCを関連付けるという操作を行います。これは、CLIから対応する必要があります。
今回の検証環境について
2つのアカウントを用意して、VPCAとVPCBを作成します。ちょっとわかりにくくなりましたが、黒点線での囲いはアカウント単位です(つまり、2つのアカウントが存在して、その中に環境を構築していることを表しています)
各VPCに紐づくPHZAとPHZBを作成し、各VPCに配置されたEC2インスタンスから別アカウントのEC2に対して、互いに名前解決ができるかを確認していきます。
検証を構築する
PHZを作成してレコード登録
アカウントAとBの両方でEC2とPHZを構築し、PHZにEC2のレコードを登録します。
アカウントAのレコードと現時点での名前解決の状況
同じVPC内の名前解決はできますが、別アカウントのVPCの名前解決はできません。
アカウントBのレコードと現時点での名前解決の状況
PHZと別アカウントのVPCの関連付け
まずは、アカウントAのPHZにアカウントBのVPCを関連付けます。
最初はこんな感じです。このVPCはアカウントAのVPCです。
- アカウントAで、実行IAMユーザの作成します。ユーザに
Route53FullAccess
を付与します。 - 1.で作成したユーザで下記コマンドを実行する。つまり、アカウントA側で実行します。
aws route53 create-vpc-association-authorization --hosted-zone-id <AのPHZID> --vpc VPCRegion=ap-northeast-1,VPCId=<BのVPCID>
-
アカウントBで、実行IAMユーザの作成し、ユーザに
Route53FullAccess
、VPCFullAccess
を付与します。 -
3.で作成したアカウントで下記コマンドを実行します。つまり、ここではアカウントB側で実行します。
aws route53 associate-vpc-with-hosted-zone --hosted-zone-id <AのPHZID> --vpc VPCRegion=ap-northeast-1,VPCId=<BのVPCID>
そうすると、こうなります。アカウントAのPHZにアカウントBのVPCを関連付けることができました。
次は、BのPHZにAのVPCを関連付けます。手順は同じです。
アカウントBで実行
aws route53 create-vpc-association-authorization --hosted-zone-id <BのPHZID> --vpc VPCRegion=ap-northeast-1,VPCId=<AのVPCID>
アカウントAで実行
aws route53 associate-vpc-with-hosted-zone --hosted-zone-id <BのPHZID> --vpc VPCRegion=ap-northeast-1,VPCId=<AのVPCID>
検証の結果をみてみる
検証結果を見てみます。先程はできなかった別アカウントの名前解決ができています。