Elastic IP アドレスの設定とRoute 53から独自ドメインの割当

EC2のインスタンスを起動したばかりだと ec2-example.ap-foo-hoge.compute.amazonaws.com というPublic DNS のアドレスが表示されます。
このアドレスにブラウザからアクセスすれば、見慣れたWordPressのセットアップ画面が表示されます。

このEC2インスタンスにPublic DNSのアドレスではなく、独自ドメインでアクセスできるようにするには固定グローバルIPアドレスの付与とDNSサーバーの設定が必要になります。
「網元AMI Masterへの道」第2回目はこれらの設定方法をご紹介します。

Elastic IPとRoute 53

Elastic IP

http://aws.amazon.com/jp/ec2/

Elastic IP (EIP) はEC2のインスタンスに固定グローバルIPアドレスを付与するサービスです。
インスタンスに独自ドメインを割り当てるためにはこのEIPとインスタンスの紐付けが必要です。

Amazon Route 53

http://aws.amazon.com/jp/route53/

Amazon Route53はDNSサーバーのサービスです。
AWSはレジストラではないのでドメインの取得や管理は出来ませんので、あらかじめレジストラや代理店でドメインを取得しておきましょう。

参照:レジストリとレジストラ(http://www.onamae.com/clever/about/regist.html

Route53をメインのDNSサーバーにするメリット

  • 他のAWSサービスとの親和性(特にS3バケットに独自ドメインを割り当てたい場合)
  • ワイルドカードの指定が出来るのでWordPressのサブドメイン型マルチサイトとの親和性が高い
  • 高い信頼性
  • TTLが自分で設定できる

EIPの設定方法

http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/GettingStartedGuide/EIP.html

AWS Management Consoleにログイン後、EC2をクリックしEC2 ダッシュボードの遷移します。
このときインスタンスを作成したリージョンであることを確認してください。
EC2 ダッシュボードのメニューから「Elastic IPs」をクリックします。

AWS Management Console EC2 Management Console

「Allocate New Address」をクリックしてIPアドレスを取得します。

EIP1

インスタンスをVPC環境下に作った場合は「VPC」を、EC2-Classicの場合は「EC2」選択し、「Yes, Allocate」をクリックします。

EIP2

次に発行されたEIPとインスタンスを紐付けます。
取得したEIPをクリック後、「Associate Address」をクリックします。

EIP3

ダイアログが表示されたら作成済みのインスタンスをリストから選び「Associate」をクリックします。

EIP4

※Elastic IPsで取得したIPアドレスはサーバーインスタンスに紐付けないと課金されます(月5$)。
使わないAddressを選択後「Release Address」をクリックして解放しましょう。


Route 53の設定方法

AWS Management Consoleにログイン後、「Route 53」をクリックします。

AWS Management Console 2

新規でドメインを紐付ける場合は「Create Hosted Zone」をクリックします。
「Create Hosted Zone」という入力欄が出てくるので

  • Domain Name:(例: example.com)
  • Comment: 任意

を入力し、「Create Hosted Zone」ボタンをクリックします。

Route 53 Management Console

この時点でDelegation Set(DNSサーバー)などが付与されます。
このうち Delegation Set のアドレスは後でレジストラの管理画面などで使用しますので控えておいてください。

Route-53-Management-Console2

続いてレコードを設定します。
編集したいDomain Nameを選択後「Go to Record Sets」をクリックします。

Route-53-Management-Console3

次に新規でレコードを追加する場合は「Create Record Set」を選択します。
既存レコードの修正をしたい場合は当該レコードを選択後し、鉛筆アイコンをクリックします。

まずはサブドメインなしのドメインの設定を行います。

  • Name: example.com
  • Type: A – IPv4 address
  • Alias: No
  • TTL: 300(デフォルト、別のサーバーから移転する場合はここを短くすると良い)
  • Value: サーバーのIPアドレス(EC2に割り当てたEIP)
  • Routing Policy: Simple(デフォルト)

サブドメインを使用する場合にはワイルドカードで設定しておきます。

  • Name: *.example.com
  • Type: A – IPv4 address
  • Alias: Yes
  • Alias Target: example.com(カーソルを当てるとプルダウンで選べます)
  • Routing Policy: Simple(デフォルト)

また、S3のバケットにサブドメインを割り当てる場合は、レコードを追加して設定します。
(ここでは「static.example.com」という名前で作成したバケットを例に取ります)

  • Name: static.example.com
  • Type: CNAME – Canonical name
  • Alias: No
  • TTL: 300(デフォルト)
  • Value: S3バケットのエンドポイント(static.example.com.s3-website-ap-foo-bar.amazonaws.com)
  • Routing Policy: Simple(デフォルト)

最後に「Save Record Set」をクリックして保存します。

Route-53-Management-Console4

ここでRoute 53 の設定内容をコマンドラインから確認してみます(Macならターミナル、Windowsならコマンドプロンプト)。

nslookup example.com DNSサーバ名

ドメイン名には設定したドメイン名を、DNSサーバー名はRoute 53でセットアップされたNSレコードの4つのサーバーのうちどれかを選んでください

Server:        ns-xxx.awsdns-xx.org
Address:    205.251.196.172#53

Name:   example.com (レコードを設定したドメイン)
Address: xx.xxx.xxx.xxx (EC2のインスタンスに割り当てたEIP)

上記のようにNameとAddressが返れば正常に設定が完了しています。
以上でRoute 53での設定は終わりです。

引き続きレジストラでプライマリDNS、セカンダリDNSなどをRoute 53で作成されたNSレコードに変更します。
ネームサーバーが切り替わったかどうかの確認は

dig example.com

を実行し

; <<>> DiG 9.8.3-P1 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17190
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;example.com. IN A

;; ANSWER SECTION:
example.com. 300 IN A xx.xxx.xxx.xxx(EC2に割り当てたEIP)

;; Query time: 68 msec
;; SERVER: xx.x.x.x
;; WHEN: Fri Nov 22 18:06:05 2013
;; MSG SIZE rcvd: 46

という結果が出れば完了です。