【AWS_49】Amazon Route 53 でドメイン名を取得し、WEBサーバの名前解決を検証する

Amazon Route 53 でドメイン名を取得し、ブラウザから「 http://ドメイン名 」へアクセスしたら表示されることを目標に検証したいと思います。
そのためには、WEBサーバが必要になりますのでEC2インスタンスで Apache のWEBサーバやそれらに必要な環境も合わせて構築していきます。
以下サイトを参考にさせていただきました。
【初心者】Amazon Route53 でドメインを取得する
https://qiita.com/mksamba/items/e50a423b8ab12271eb73
本検証では、セッションマネージャーを利用してパブリックサブネットのEC2インスタンスへSSH接続します。
記事の中では設定方法に触れておりませんため、必要な場合は以下の記事を参考にしてください。
※TeratermなどでSSH接続しても設定はできますのでセッションマネージャーの設定は必須ではありません
今回の構成は、以下のとおりです。セッションマネージャーに関しては触れておりません、ご了承ください。

目次
Route53へドメインの登録
AWSマネジメントコンソールで「route53」を検索します。
「Route53の使用開始」が表示された場合は、「開始する」をクリックします。
「Route53ダッシュボード」画面が表示されている場合は、「ドメインの登録」をクリックして進めます。
今回私は、はじめて利用するので「Route53の使用開始」が表示されましたのでその手順で進めます。
「開始する」をクリックします。

「開始点を選択」で「ドメインを登録」を選択し、「開始する」をクリックします。

取得したいドメイン名を入力し、空きがあるか確認します。
どのような状態になったら空きがあるのか確認するため、このサイトのドメイン名である「tkjzblog」を入力しています。
すると「tkjzblog.com」は利用不可となり、なんとなくこの画面のつくりが理解できました。

使い方がわかったのでドメイン名の候補を入れて検索します。
「.com」が年間 15.00 USD となっているのでこれで進めたいと思います。
「選択」をクリックすると「選択済み」に変わるので画面右側の「チェックアウトに進む」をクリックします。

ドメインの料金オプション画面で自動更新されたくないので「自動更新」のチェックを外します。
「次へ」をクリックします。

連絡先(氏名、住所、電話番号、メールアドレス)を入力します。その他はデフォルトのままとします。
入力した内容がwhoisで検索可能になるのを抑止するため、「xxxxx.comの連絡先のプライバシー保護をオンにする」をチェックします。
「次へ」をクリックします。


確認して送信画面で入力内容を確認します。
利用規約を一読し、チェックを入れて「送信」をクリックします。



登録済みドメイン画面へ遷移します。ドメイン登録のリクエストが進行中というメッセージが表示されます。
「ステータスを確認」をクリックすると状況が確認できます。

リクエスト画面でステータスが「進行中」であることが確認できます。

登録したメールアドレスに確認メール(タイトル:Verify your email address for xxxxx.com)が来るので、本文中の確認用リンクをクリックします。

メールに届いた確認用リンク押下後、AWS画面へ戻り、左ペインのドメイン > リクエスト を選択すると新規申請したドメインが「成功」になっていることが確認できます。

左ペインのドメイン > 登録済みドメイン にも登録されました。

さらに左ペインのホストゾーン をクリックします。パブリックホストゾーンが登録されました。

VPCの作成
今回の検証では、ブラウザから「 http://ドメイン名 」へアクセスしたら表示されることを目標にしています。
そのためには、WEBサーバが必要になりますのでApache のWEBサーバを構築するため、VPCなど必要な環境を作成していきます。
VPCを作成します。作成方法がわからない方は、以下記事を参考にしてください。

パブリックサブネットの作成
パブリックサブネットを作成します。作成方法がわからない方は、以下記事を参考にしてください。
※VPC IDは、事前に作成したVPCのIDを選択します
※アベイラビリティーゾーンは、「指定なし」を選択します
※IPv4 サブネット CIDR ブロックは、10.0.1.0/24 で作成しています

インターネットゲートウェイ、ルートテーブルの作成
VPCの中に作成したパブリックサブネット(10.0.1.0/24)がインターネットと通信できるようインターネットゲートウェイ、ルートテーブルを作成します。
作成方法がわからない方は、以下記事を参考にしてください。

パブリックサブネットへEC2インスタンスを作成
パブリックサブネットへEC2インスタンスを作成します。作成方法がわからない方は、以下記事を参考にしてください。
※サーバ名は、web-sv にしました
※キーペアは、「キーペアなしで続行」を選択します
※パブリック IP の自動割り当ては、有効化にします
※セキュリティグループ名は、web-sv-sg にしました
※セキュリティグループは、以下のとおり設定します。
・インバウンドルール
タイプ:SSH ⇒ HTTP へ変更
ソース:マイIP ※自身の個人端末からのみアクセスを受け付けます
・アウトバウンドルール:デフォルトのまま(すべてのトラフィックを許可)

ログインできることを確認しておきます。(当検証では、セッションマネージャーを利用して接続しています)

EC2インスタンスにApacheをインストール
Apacheのインストール
EC2インスタンスをインスタンスにApacheをインストールします。作成方法がわからない方は、以下記事を参考にしてください。
以下コマンドでネットワークの待ち受け状態を確認します。
sudo lsof -i -n -P

ブラウザから「 http://パブリック IPv4 アドレス 」へアクセスし、Apacheが正常に稼働していることを示す確認画面が表示されることを確認します。

確認がわかりやすように index.html を作成してみました。

Apache のサーバ名を設定
Apache の設定ファイルである httpd.conf ファイルのServerName ディレクティブを編集し、Apache サーバが自分自身のホスト名を示す時に使われる名前を指定します。
httpd.conf ファイルを以下のとおり書き換えた後、httpdサービスを再起動(systemctl restart httpd)します。
Apache サーバ自分自身のホスト名は、「www.ドメイン名」としました。
■httpd.conf 編集前

■httpd.conf 編集後

Route53へレコードを登録
EC2インスタンスのパブリック IPv4 アドレスの確認
ドメイン名に紐づけるため、EC2インスタンスのパブリック IPv4 アドレスの確認します。
一点意識しておかなければいけないことは「パブリック IPv4 アドレス」は、EC2インスタンスを再起動すると変更されます。
Route53へ登録した後、EC2インスタンスを再起動すると名前解決できなくなるのでそこは意識しておいてください。
「Elastic IP」であればEC2インスタンスを再起動しても変更されませんが、料金がかかることもあるのでひとまず「パブリック IPv4 アドレス」を利用します。
AWSマネジメントコンソールで「ec2」を検索します。
左ペインのインスタンスをクリック、インスタンス名の左側にチェックを入れて「詳細」タブを選択、「パブリック IPv4 アドレス」を確認します。

Route53へレコードを登録
AWSマネジメントコンソールで「route53」を検索します。
左ペインのホストゾーンをクリック、画面中央のホストゾーン名をクリックします。

ホストゾーンの詳細画面にて、「レコード」タブ > 「レコードを作成」をクリックします。

レコードを作成画面で「レコード名」にApache サーバ自分自身のホスト名「www.ドメイン名」の「www」を入力します。
「値」は、EC2インスタンスのパブリック IPv4 アドレスを入力します。
「レコードを作成」をクリックします。


ホストゾーンにAレコードが追加されました。

動作確認
インターネット経由で名前解決できるか確認します。
自端末(Windows)のコマンドプロンプトで nslookup を実行し、名前解決できました。
nslookup www.ドメイン名

次にブラウザからApache サーバ自分自身のホスト名「www.ドメイン名」でアクセスしてページが表示されることを確認できました。
http://www.ドメイン名

検証後のリソースの削除
簡単にですが、作成したリソースの削除について記載します。
Route53のドメイン名は、しばらく利用するのでここでは削除しません。
・Route53
レコードの削除
・EC2インスタンス
削除
・VPC
削除
まとめ
Amazon Route 53 でドメイン名を取得、ブラウザから「 http://ドメイン名 」へアクセスして表示できることを確認できました。
次は、Application Load Balancer (ALB) 、AWS Certificate Manager (ACM) を追加して、ブラウザから「 https://ドメイン名 」へアクセスするセキュアな環境を検証したいと思います。
下、他の記事をまとめた一覧です。AWSもまとめています。