Amazon Route53 に bindの既存ドメインを登録してみる

bindでホストしているドメインの移行テストをしてみた。

準備

BIND to Amazon Route 53 Conversion Tool
http://aws.amazon.com/developertools/Amazon-Route-53/4495891528591897

CPANモジュールを入れておく
スクリプトをダウンロード
$ curl -O  http://awsmedia.s3.amazonaws.com/catalog/attachments/bindtoroute53.pl
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
101  7694  101  7694    0     0   8629      0 --:--:-- --:--:-- --:--:-- 45797
$ chmod +x bindtoroute53.pl 

Route53用の設定で邪魔になる、SOAレコードやNSレコードを無視するようにオプションを加えて、コンバートします。

$ ./bindtoroute53.pl --ignore-origin-ns --ignore-soa --origin example.com < example.com.zone > create-request.xml
Ignoring '.     86400   IN      SOA     ns.example.com. root.example.com. (
                                        2010120600      ; Serial
                                        3600    ; Refresh
                                        900     ; Retry
                                        604800  ; Expire
                                        86400 ) ; Minimum TTL', --ignore-soa enabled.
Ignoring '.     3600    IN      NS      ns.example.com.', --ignore-origin-ns enabled.
Ignoring '.     3600    IN      NS      ns2.example.com.', --ignore-origin-ns enabled.

そして @c9katayama さんからも指摘ありましたが、XMLのnamespaceが間違ってますので、修正します。

$ diff create-request.xml.bak create-request.xml
2c2
< <ChangeResourceRecordSetsRequest xmlns="http://route53.amazonaws.com/doc/2010-10-01/">
---
> <ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/2010-10-01/">

そして、dnscurl.plを使ってリクエストを発行します。これは前回の記事を参考にして下さい。

$ ./dnscurl.pl --keyname my-keyname -- -H "Content-Type: text/xml; charset=UTF-8" -X POST --upload-file zxz-ext.xml https://route53.amazonaws.com/2010-10-01/hostedzone/Z3EA8CMSPM8UVD/rrset | tee out

さて、実際に問い合わせを行ってみます。

$ host example.com ns-596.awsdns-10.net
Using domain server:
Name: ns-596.awsdns-10.net
Address: 205.251.194.84#53
Aliases:

example.com has address 10.1.2.3
example.com mail is handled by 10 mail.example.com.
example.com mail is handled by 20 mail2.example.com.
$ host app.example.com ns-596.awsdns-10.net
Using domain server:
Name: ns-596.awsdns-10.net
Address: 205.251.194.84#53
Aliases:

app.example.com is an alias for ghs.google.com.

解決できました。しかし、ワイルドカードがうまく動きませんでした。

$ host hoge.example.com ns-596.awsdns-10.net
Using domain server:
Name: ns-596.awsdns-10.net
Address: 205.251.194.84#53
Aliases:

hoge.example.com is an alias for www.

これは生成されたXMLに問題がありそうです。

  :
   <Change>
    <Action>CREATE</Action>
     <ResourceRecordSet>
      <Name>*.example.com.</Name>
      <Type>CNAME</Type>
      <TTL>3600</TTL>
      <ResourceRecords>
       <ResourceRecord>
        <Value>www.</Value>
       </ResourceRecord>
     </ResourceRecords>
    </ResourceRecordSet>
   </Change>
  :

Valueがwww. となってますね。これはいけません。www.example.comとしする必要があります。

CNAMEでFQDNを指定していない場合には気を付けて下さい。