ドメイン自体はお名前.com(でなくてもOK)で管理しつつ、サブドメインをRoute53で管理したいことがあるかと思います。(ACMでSSL証明書が発行できる、高可用性なDNSが使える、など)
Route53でのサブドメイン管理設定→サブドメインを設定したEC2を公開→ACM証明書発行→ALBを作成してHTTPS通信を実現という流れで記載します。
構成
今回はACM+ALBでのHTTPS通信を確認したかったため、EC2については1つのAZにのみ配置します。
※VPC他ネットワークリソースはあらかじめ構築済みとして進めます
Route53でのサブドメイン管理設定
Route53でホストゾーン(ドメイン/サブドメインのDNSレコードを管理するコンテナ)を作成
インターネットから名前解決するため「パブリックホストゾーン」を選択
4つのネームサーバが割り当たるため、これをお名前.com側に設定する
NSレコード(権威ネームサーバを指定するレコード)として4つのネームサーバを指定する
反映まで最大72時間とのことですが、15分ほどで反映されたように見えます
Route53にAレコードを作成し、EC2のパブリックIPアドレスを割り当てて外部からアクセスしてみる
パブリックIPアドレスを割り当てたEC2(Amazon Linux)を作成する
Aレコードとして、EC2のパブリックIPアドレスを指定する
EC2で、以下のコマンドを実行してhttpdをインストール&起動する
$ sudo yum update $ sudo yum install -y httpd $ sudo systemctl start httpd && sudo systemctl enable httpd
セキュリティグループで、上記EC2の80番ポートについて、アクセス元端末のグローバルIPアドレスのみ許可するルールを追加する
ブラウザでサブドメイン名を打ち込み、Webページが表示されることを確認する
ACMでSSL証明書発行
インターネットからのアクセスに対応するため、「パブリック証明書」を選択する
発行対象とするFQDNを指定し、また、ドメイン名の検証には「DNS検証」を指定する
※ドメイン名の検証には、①DNS検証、②メール検証の2つがあるが、DNS検証の方が迅速かつ手軽なのでこちらがオススメ。また、ドメインをRotue53で管理している場合は、シームレスに連携できることもメリットの1つ。
ALBを使い、HTTPSかつドメイン名でアクセスできるように設定する
SSLオフロードを行わせたいため、ALBを選択(NLBはSSLオフロード不可)
インターネット向け、かつ、IPv4を選択
配置するVPCの選択と、2つ以上のAZとサブネットを選択する。(パブリックサブネットを選択する)
SSL証明書として、前項で作成した証明書を選択する
Route53にて、エイリアスレコードを設定する。
※エイリアスレコード:Route53固有のレコードで、特定のAWSリソース(ロードバランサ―など)をドメイン名に関連付けるために使用されるレコード
回答結果がAレコード(EC2のパブリックIPアドレス)から、エイリアスレコード(ALBのグローバルIPアドレス)に変わる
ELBからの通信のみ許可するため、EC2に割り当てているセキュリティグループのソースとして、ELBに割り当てているセキュリティグループIDを指定したルールを割り当てる。
HTTPSで通信できるようになった!