AWSでサブドメインを別アカウントに委任する
はじめに
皆さんはドメイン管理をどのように行なっていますか?
私は個人用のドメインをCloudflareで取得し、様々なツールで利用するような構成にしています。
また、AWSアカウントはOrganizationsを設定し、複数環境を用途別に使っています。
こういった構成の上で、AWSのrootアカウントでAWS全体用のサブドメインでホストゾーンを作成し、子アカウントでそのサブドメインのさらにサブドメインを利用して証明書を発行したい場面に遭遇したので、自分のメモ用に整理しておきます。
前提
前提として、Cloudflare側でドメインを取得している状態とします。
今回は例として以下のドメイン構成を考えます。
- Cloudflare
- example.co.jp
- AWSのrootアカウント
- aws.example.co.jp
- AWSの子アカウント
- sample1.aws.example.co.jp
- sample2.aws.example.co.jp
AWSのrootアカウント側での対応①
まずはAWSのrootアカウント側での対応を整理します。
利用したいサブドメイン(aws.example.com)でパブリックホストゾーンを作成します。
NSレコードが発行されるので、これをCloudflare側に登録します。
Cloudflare側での対応
私はCloudflareにドメインを登録しているので、Cloudflareで作業をしていますが、他のツールを使っている場合も基本的には同じです。
なお、登録方法は以前記事にしているのでそちらをご参照ください。
ここまででAWSのrootアカウント側のサブドメイン(aws.example.com)での対応は完了です。この状態でAWSのrootアカウントのACMでパブリック証明書を発行するとDNS検証が成功すると思います。
AWSの子アカウント側での対応
次はAWSの子アカウント側での対応です。
rootアカウントでの対応と同様に、任意のサブドメイン(sample1.aws.example.co.jp)を指定してパブリックホストゾーンを作成します。
NSレコードが作成されるので、これをAWSのrootアカウントのRoute53にレコード追加します。
AWSのrootアカウント側での対応②
サブドメイン(aws.example.com)のパブリックホストゾーンにレコードを追加します。
名前を指定したいサブドメイン(sample1)、レコード種別をNSにし、出力されている4つのNSレコードをそのままペーストするだけです。
この状態で子アカウントでサブドメインでの証明書発行が成功できれば設定は完了です。
最後に
簡単な記事になりましたが、意外と設定する場面が少なく忘れがちなので備忘として残しておきます。
ちなみに、子アカウント内でさらにサブドメインを利用してアプリを公開したいような場合は、証明書を 「*.example1.aws.example.com」で取得するようにすると、www.example1.aws.example.comのようなドメインで利用できるようになります。
なお、CloudFrontで証明書を利用したい場合は、us-east-1で証明書がないとエラーになるので、実際に利用される場合はご注意ください。
Discussion