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
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」をクリックします。
「Allocate New Address」をクリックしてIPアドレスを取得します。
インスタンスをVPC環境下に作った場合は「VPC」を、EC2-Classicの場合は「EC2」選択し、「Yes, Allocate」をクリックします。
次に発行されたEIPとインスタンスを紐付けます。
取得したEIPをクリック後、「Associate Address」をクリックします。
ダイアログが表示されたら作成済みのインスタンスをリストから選び「Associate」をクリックします。
※Elastic IPsで取得したIPアドレスはサーバーインスタンスに紐付けないと課金されます(月5$)。
使わないAddressを選択後「Release Address」をクリックして解放しましょう。
Route 53の設定方法
AWS Management Consoleにログイン後、「Route 53」をクリックします。
新規でドメインを紐付ける場合は「Create Hosted Zone」をクリックします。
「Create Hosted Zone」という入力欄が出てくるので
- Domain Name:(例: example.com)
- Comment: 任意
を入力し、「Create Hosted Zone」ボタンをクリックします。
この時点でDelegation Set(DNSサーバー)などが付与されます。
このうち Delegation Set のアドレスは後でレジストラの管理画面などで使用しますので控えておいてください。
続いてレコードを設定します。
編集したいDomain Nameを選択後「Go to Record Sets」をクリックします。
次に新規でレコードを追加する場合は「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 の設定内容をコマンドラインから確認してみます(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
という結果が出れば完了です。