AWSでサービス公開をしていて、カスタムドメインを設定するというシーンによく遭遇しますが、カスタムドメインというものがそもそもよく分かっていないので、このタイミングで概要や取得・管理方法などをまとめました。
また、AWSでCloudFrontを使用した場合の構成についても、ググったところ構成によって設定が変わってきそうなので、こちらも併せてまとめています。
カスタムドメインとは
・通常、レンタルサーバー・クラウドサービスなどを契約してWebサイトを公開した場合、レンタルサーバーを所有している企業のドメインのサブドメインが割り当てられます。カスタムドメインは自分で取得したドメインを設定することです。独自性やブランドイメージを付けられ、SEO観点でも有利に働くと言われてます。
例)
サービス提供会社ドメイン | example.com |
サービス提供会社サブドメイン | sub.example.com |
カスタムドメイン(自分で取得したドメイン) | heiyoshilog.com |
カスタムドメインの取得方法
カスタムドメインは、ドメイン名登録事業者(レジストラ)からドメインを購入・取得する必要があります。レジストラは世界的に統一されたDNSサービス機関(ICANN)などから認められた事業者で、IPアドレスとドメイン名を対応付けるDNSサービスを提供しています。日本だとお名前ドットコムやムームードメインなどのレジストラがあります。
企業で設定しているドメインでも同じ考え方です。企業内でDNSサーバーを構築した場合、ドメインの管理や運用は企業側で実施しますが、ドメインの購入・所有はレジストラから行う必要があります。
カスタムドメインの管理方法
カスタムドメインの取得後に、ドメインを管理する方法としては以下が考えられます。
レジストラのDNSサービス | レジストラが提供する管理画面を通じてDNSレコードの登録・更新・削除など管理 |
クラウドのDNSサービス | AWS、Azure、GCPなどで提供されるDNSサービスでドメインの管理 |
オンプレのDNSサービス | 自社でDNSサービスを構築し管理 |
もしクラウド(AWSサービスなど)にカスタムドメインを設定したい場合は、レジストラからドメインを取得してクラウドのDNSサービスでレコードを登録する必要があります。
サブドメインの作成メリット
レジストラからドメインを取得した後に、ドメインを分けたいとなった場合はサブドメインを作成することで新たなドメインの登録費用は発生せずに、取得ドメインに新たに名前空間を作ることができます。
例えば、企業内でドメインを取得した後に、部門ごとにドメインを分けたいとなった場合、コスト効率良く実現できます。
①レジストラから企業ドメインを取得(レジストラ契約)
➁DNSサーバーに登録(例:AWS Route53のコンソール)
➂サブドメインを作成(例:AWS Route53のコンソール)
取得したドメイン:example.com
営業部:sales.example.com
人事部:hr.example.com
DNSサーバーのレコードの種類
よく利用されるDNSレコードの種類は以下になります。
NS | ドメインの管理を行う権威サーバーのホスト名を定義 |
A | ドメイン名(ホスト名)とIPアドレスの対応付けを定義 |
CNAME | 正規のドメイン(ホスト名)に対する別名を定義 |
NSレコードはDNSの権威サーバーを定義しており、例えば、あるレジストラで購入したドメインのNSレコードをAWSRoute53のホストを定義することで、実質的にドメイン管理をRoute53側に委任できます。
SSL証明書とHTTPS通信について
webページを公開する場合、より信頼性の高い通信を実現するためHTTPSでの通信が必要となると思います。
例えば、AzureCDNやAWSCloudFrontのパブリッククラウドのCDNサービスで、デフォルトで適用されるCDNベンダーのドメイン(xxx.onmicrosoft.com、xxx.amazon.com)を使用してwebページを公開した場合は、マネージド証明書が適用されるので、別途、証明書の設定は必要ありません。
しかし、CDNにカスタムドメインを適用する場合は、別途、証明書の発行が必要となります。
CDN マネージド証明書は、ルートまたは頂点のドメインには使用できません。 Azure CDN カスタム ドメインがルートまたは頂点のドメインの場合、独自の証明書の持ち込み機能を使用する必要があります。
カスタムドメイン管理ユースケース
AWSでS3+CloudFrontで静的Webページをカスタムドメインで公開する場合のカスタムドメインの構成を整理しました。また、各設定について解説した記事を記載しています。
①AWS以外のレジストラでドメイン取得・管理
・AWS以外のレジストラ(お名前ドットコムなど)でドメインを取得し、レジストラの管理画面でドメインを管理。AレコードにCloudFrontのディストリビューションを指定します。サブドメインはCNAMEに登録します。
・CloundFront側に代替ドメインとACMで取得したSSL証明書を登録しHTTPS通信を可能にします。
解説記事:独自ドメインでCloudFront にアクセスできるようにする
②AWS以外のレジストラでドメイン取得、Route53で管理(権威サーバーの委任)
・AWS以外のレジストラ(お名前ドットコムなど)でドメインを取得し、レジストラの管理画面でNSレコードにRoute53のNS情報を設定します。(権威サーバーの委任)
・Route53のAレコードにCloundFrontを指定します。サブドメインはCNAMEに登録します。
・CloundFront側に代替ドメインとACMで取得したSSL証明書を登録しHTTPS通信を可能にします。
以下の記事でカスタムドメイン(サブドメイン)設定する方法を解説しています。
※ドメインは既に取得している、あるいは別のレジストラから取得したいが、管理はAWS上で一元管理したい場合に使用される構成と考えてます。
③Route53でドメイン取得・管理
・Route53のマネジメントコンソールでドメインを取得し管理。AレコードにCloudFrontのディストリビューションを指定します。サブドメインはCNAMEに登録します。
・CloundFront側に代替ドメインとACMで取得したSSL証明書を登録しHTTPS通信を可能にします。
解説記事:独自ドメインで CloudFront にアクセスできるようにする方法
①はお名前ドットコムの管理画面のみの操作でシンプルですが、②③のRoute53の方がレイテンシールーティングや位置情報ルーティングなど要件に応じて柔軟に対応できるかと思います。
まとめ
今回は、AWS公開サービスへの設定の際に、遭遇したカスタムドメインについて、整理をしてみました。遭遇頻度は高いですが、よく理解できていなかったレジストラやDNSサービスなども含めて理解を含められた気がします。
次回の記事では、実際にお名前ドットコム、Route53を使用したカスタムドメインの設定方法について、解説していきたいと思います。