AWSでの独自ドメインの設定
AWS (Amazon Web Service) でWebサービスを運営する際に,独自ドメインを設定したいことがある。
そこで,Amazon Elastic Compute Cloud (EC2) とAWS Elastic Beanstalk (EB) での独自ドメインの設定方法を記す。
概要
独自ドメインの設定は「ドメイン名を登録する方法 – アマゾン ウェブ サービス」のチュートリアルを参考に行う。
ただし,Amazon Route 53は必要ないので使わない (ステップ2以降省略)。チュートリアルのステップ2の注に以下の記載があるように,独自ドメインの場合ドメイン業者のDNSで設定すれば問題ない。
独自ドメイン設定にあたっては,以下の2点を前提とする。
独自ドメインの取得は,例えば「Freenomでの無料ドメインの取得」を参考にする。
アプリケーションの構築は,公式マニュアルの「チュートリアル: Amazon Linux 2 に LAMP ウェブサーバーをインストールする – Amazon Elastic Compute Cloud」や「Elastic Beanstalk への Laravel アプリケーションのデプロイ – AWS Elastic Beanstalk」などを参考に行っておく。
独自ドメインの設定は以下の手順で行う。
EC2とEBとで独自ドメインの設定方法が若干異なる。
EC2の場合,まずインスタンスに固定IPアドレスを設定し,ドメイン業者のDNSのAレコードで独自ドメインとIPアドレスを対応付ける。
EBの場合,ドメインが自動的に割り当てられているので,ドメイン業者のDNSのCNAMEレコードで独自ドメインとEBのドメインを対応付ける。
なお,独自ドメインの設定については「独自ドメインのDNSサーバーの設定」を参考にして大まかな流れや概念を把握しておくとよい。
パブリックDNS/パブリックIPアドレス
EC2で固定IPアドレスを設定する理由を説明する。
EC2でのIPアドレスについては「Amazon EC2 インスタンスの IP アドレス指定 – Amazon Elastic Compute Cloud」に説明がある。
EC2ではデフォルトのパブリックDNS (ドメイン) とパブリックIPアドレスが自動的に割り当てられる。
ただし,インスタンスの停止・休止・終了でドメインとIPアドレスが変わる。インスタンスの再起動は問題ない。その他,インスタンス内でのサーバーの停止・再起動では変わらない。
EC2のインスタンスを停止させなければ,IPアドレスやIPアドレスがベースになっているドメインもずっと同じだ。しかし,サーバーのスペックを挙げる場合など,どうしてもインンスタンスを停止させる必要がある場合に困ることがある。
そこで,EIPでEC2のインスタンスに固定IPアドレスを割り当てる。これにより,インスタンスを停止させたり,別のインスタンスで代わりにWebサービスを継続できるようにする。
なお,EIPの関連付けの開始/終了でもパブリックIPアドレスが解放される。基本的にパブリックIPアドレスはユーザーで制御できないので注意する。
なお,EBをロードバランサーなしで構築すると,自動的にEIPが割り当てられる。ロードバランサーありで構築すると,EIPは割り当てられない。代わりに,ドメインが自動的に割り当てられる (参考: Elastic Beanstalk 環境のドメイン名 – AWS Elastic Beanstalk)。このドメインはEC2のパブリックDNSと異なり,勝手に変わったりはしないようだ。
固定IPアドレスの設定
まず,EC2用にEIPにより固定IPアドレス (静的IPアドレス) をEC2のインスタンスに設定する。
EC2の [Elastic IPs] を開く。後で,EC2のインスタンスを使うので,同じリージョンにしておく。
右上の [Allocate Elastic IP address] を選ぶ。
[Allocate Elastic IP address] 画面が表示される。特に選ぶところはないので,そのまま [Allocate] を選ぶ。
IPアドレス (例: 52.68.16.254) が登録されるので,このアドレスは控えておく。そして,登録した行を選んで [Actions]>[Associate Elastic IP address] を選ぶ。
[Associate Elastic IP address] 画面が表示される。[Resource type] が [◎ Instance] になっていることを確認し,[Instance] からEC2のインスタンスを選び,[Associate] を選ぶ。
この時点で,取得したIPアドレスをWebブラウザーのアドレスバーに入力してページを表示できることを確認しておく。
なお,EIPの割り当て (allocate) から関連付け (associate) までは必ず1時間以内に行う。これは,EIPの料金の体系が,実行中のEC2インスタンスに割り当てられていないEIPは1時間で0.005 USDの課金が発生するからだ (参考: Elastic IP の料金を理解する,オンデマンドインスタンスの料金 – Amazon EC2 (仮想サーバー) | AWS)。
DNSの設定
EIPで固定IPアドレスを用意できたので,今度はドメイン業者のDNSを設定する。
今回は以前取得したFreenomでの無料ドメインで試す。独自ドメインのDNSの設定については「独自ドメインのDNSサーバーの設定」も思い出す。
Freenomにログイン>[Services]>[My Domains] を選ぶ。
割り当てるドメイン (例: senooken.cf) の右の [Manage Domain] を選ぶ。
一番右の [Manage Freenom DNS] を選ぶ。
DNSレコードの入力画面が表示される。こちらで独自ドメインとAWSのIPアドレスの対応を設定する。
具体的には,以下のように先ほど控えたIPアドレスを入力して [Save Changes] を選ぶ。
- Name: aws
- Target: 52.68.16.254
Freenomの場合,[Name] 欄はドメインから左の部分を入力すればいいようだ。つまり,awsと入力すると [aws.senooken.cf] を意味する。逆に,[Name] 欄に [aws.senooken.cf] と入力しても [AWS] としか表示されなかった。[senooken.cf] のドメイン設定したい場合は,[Name] 欄は空のまま [Target] だけ入力する。
この状態で独自ドメインの設定は完了となる。5分ほど待機してから,Webブラウザーでhttp://aws.senooken.cfにアクセスするとIPアドレスでのアクセスと同じ画面が表示された。
なお,EC2のEIPによる固定IPアドレスではなく,EBのように自動URLの場合はAレコードではなく,CNAMEレコードを使う (参考: Elastic Beanstalk 環境のドメイン名 – AWS Elastic Beanstalk)。
「Elastic Beanstalk Environments」を開くと環境の一覧が表示されており,URLも確認できる。確認したURL (例: tutoriallaravel-env.eba-mfmegxbn.ap-northeast-1.elasticbeanstalk.com) を控えておく。
FreenomのDNSレコードの編集画面で以下のように入力して [Save Changes] を選ぶ。
- Name: laravel
- Type: CNAME
- Target: tutoriallaravel-env.eba-mfmegxbn.ap-northeast-1.elasticbeanstalk.com
この状態で5分ほど待機して,http://laravel.senooken.cfにアクセスすると元々のURLの内容が表示される。
結論
AWSでの独自ドメインの設定方法を記した。
ネット上の情報ではAmazon Route 53を使った設定例が多い。Amazon Route 53を使ってもできるのだが,その場合ホストゾーンを設定する必要がある。
Amazon Route 53は無料期間が存在せず,従量課金 (参考: 料金 – Amazon Route 53 | AWS) となっている。そのため,Route 53を使う場合,余計な費用が発生してしまう。テスト用に作成後12時間以内に削除した場合は無料となっているが,実用的ではない。
そこで,今回はAmazon Route 53を使わずに独自ドメインを設定した。AWSのマニュアルを注意深く読めば,Amazon Route 53を使わなくても問題ない。お医者さんと同じで余計なサービスをユーザーに使わせて,課金させようとしてくるので注意が必要だ。
AWSでの独自ドメインの設定ができたので,実際のWebアプリの公開にだいぶ近づいた。後は,HTTPSの設定が最後の関門となるのでこちらも後日まとめたい。
“AWSでの独自ドメインの設定” に対して1件のコメントがあります。