EC2インスタンスにPublic DNSのアドレスではなく、独自ドメインでアクセスできるようにするには固定グローバルIPアドレスの付与とDNSサーバーの設定が必要になります。
EC2のインスタンスを起動したばかりだと ec2-example.ap-foo-hoge.compute.amazonaws.com というPublic DNS のアドレスが EC2 のダッシュボードに表示されます。このアドレスにブラウザからアクセスすれば、見慣れた WordPress の画面が表示されます。
このEC2インスタンスにPublic DNSのアドレスではなく、独自ドメインでアクセスできるようにするには固定グローバルIPアドレスの付与とDNSサーバーの設定が必要になります。
1. Elastic IP アドレスの設定
1-1. ダッシュボードへアクセスします
1-2. 左側メニューの [Elastic IPs] をクリックします
1-3. [Allocate Elastic IP address] をクリックします
1-4. [Amazon's pool of IPv4 addresses] を選択して [Allocate] をクリックして新しく IP アドレスを取得します
1-5. IP アドレスが発行されました。
1-6. 発行された IP アドレスを選択します
1-7. [Actions] → [Associate Elastic IP address] を選択します
1-8. Resource type では [Instance] を選択します
1-9. IP アドレスを割り当てる Instance ID を選択します
1-10. Instance ID が選択後、 [Associate] ボタンをクリックします
1-11. 左側メニューの [INSTANCES] → 先ほど Elastic IP address を関連付けた Instance ID を選択して、正しく Elastic IP Address が割り当てられたかを確認します。
以上でインスタンスへの Elastic IP アドレスの関連塚が完了しました。
特定条件の除いてIPアドレスに料金が発生しますのでご注意ください。詳細は AWS のサポートドキュメントをご参照ください。
2. DNS サーバでドメイン名と Elastic IP アドレスを設定する
2-1. Route 53 ダッシュボードへアクセスします
2-2. 左側メニューの [Hosted zones] をクリックします
2-3. ドメイン名と EIP とを関連づける
ドメイン名を新規に EIP と関連づける場合は [Create Hosted Zone] をクリックします。
画面右側に [Create Hosted Zone] が表示されます。以下の項目を入力・選択し [Create] をクリックします
- Domain Name: 設定するドメイン名 (example.com)
- Comment: 任意
- Type: Public Hosted Zone
[Create] ボタンをクリックすると DNS サーバーなどが付与されます。
レジストラの管理画面などで使用しますので控えておいてください。
2-4. [Create Record Set] をクリックして新規に DNS レコードを追加します。
既存レコードの修正をする場合は当該レコードを選択後し、鉛筆アイコンをクリックします。
2-5. サブドメインなしのレコード設定 (example.com)
- Name: example.com
- Type: A – IPv4 address
- Alias: No
- TTL: 300 (デフォルト 別のサーバーから移転する場合はここを短くするとよい)
- Value: サーバーのIPアドレス(EC2に割り当てたEIP)
- Routing Policy: Simple(デフォルト)
以上の設定を行い、[Create] をクリックして設定を保存します
2-6. www ありのサブドメインを設定する場合 (www.example.com)
- Name: www.example.com
- Type: CNAME – IPv4 address
- Alias: No
- TTL: 300 (デフォルト)
- Value: サーバーのIPアドレス(EC2に割り当てたEIP)
- Routing Policy: Simple (デフォルト)
以上の設定を行い、[Create] をクリックして設定を保存します
3. 設定内容を確認する
3-1. 設定したDNS レコードの確認
ここで Route 53 の設定内容をコマンドラインから確認をします。Macならターミナル、Windows ならコマンドプロンプトがよいでしょう。
dig example.com @AWSのDNSサーバ名
ドメイン名には設定したドメイン名を、DNSサーバー名はRoute 53でセットアップされたNSレコードの4つのサーバーのうちどれかを選んでください
入力とレスポンスの例
% dig A example.com @ns-20.awsdns-02.com
; <<>> DiG 9.10.6 <<>> A example.com @ns-20.awsdns-02.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37954
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 604800 IN A 3.115.218.78
;; AUTHORITY SECTION:
example.com. 300 IN NS ns-20.awsdns-02.com.
example.com. 300 IN NS ns-20.awsdns-02.com.
example.com. 300 IN NS ns-20.awsdns-02.com.
example.com. 300 IN NS ns-20.awsdns-02.com.
;; Query time: 114 msec
;; SERVER: 2600:9000:5300:1400::1#53(2600:9000:5300:1400::1)
;; WHEN: Mon Dec 09 21:18:23 JST 2019
;; MSG SIZE rcvd: 198
以上のように、Answer section にドメイン名と発行された Elastic IP が設定通りに返れば設定が完了です。
レジストラで設定されているプライマリ DNS 、セカンダリ DNS を上のステップで作成した Route 53 DNS サーバに変更します。
3-2. DNS サーバーの切り替え状況を確認する
dig A ドメイン名 @8.8.8.8
を実行します。
入力とレスポンスの例
% dig A example.com @8.8.8.8
; <<>> DiG 9.10.6 <<>> A example.com @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37954
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 604800 IN A 3.115.218.78
;; AUTHORITY SECTION:
example.com. 300 IN NS ns-20.awsdns-02.com.
example.com. 300 IN NS ns-20.awsdns-02.com.
example.com. 300 IN NS ns-20.awsdns-02.com.
example.com. 300 IN NS ns-20.awsdns-02.com.
;; Query time: 114 msec
;; SERVER: 2600:9000:5300:1400::1#53(2600:9000:5300:1400::1)
;; WHEN: Mon Dec 09 21:18:23 JST 2019
;; MSG SIZE rcvd: 198
以上のように、Answer section にドメイン名と発行された Elastic IP が設定通りに返れば設定が完了です。