AWS cli53を利用してDynamicDNSのようなことを実現する
cli53を利用して起動時にRoute53のDNSを書き換える
AWSのPublicIPはelasticIPを利用しないと起動時にIPが変わってしまうため、
Route53などにホスト名を登録してしまうと以前のIPを参照してしまいます。
起動時に直接cli53を利用して、
Route53のホスト名に割り当てられているIPをコマンドラインで操作してDynamicDNSのようなことが実現できます。
https://github.com/barnybug/cli53
Cli53 インストール
easy_installでインストールが可能です。
$ sudo easy_install pip
$ sudo pip install cli53
使い方
www.hogehoge.co.jp がRoute53に登録したい場合
$ curl -s http://169.254.169.254/latest/meta-data/public-ipv4 | xargs -i cli53 rrcreate hogehoge.co.jp www A {} --ttl 60 --replace
解説
不思議な長ったらしいコマンドがならんでいましたが、1つめのコマンドの結果を | で区切った次のコマンドに受け渡しているだけです。
自分のPublicIPを取得する
$ curl -s http://169.254.169.254/latest/meta-data/public-ipv4
169.254.169.254はAWSの各種サービスの内容などを取得できるAPIです。
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
取得したIPをxargsで受け取ってcli53に渡して書込
$ xargs -i cli53 rrcreate hogehoge.co.jp www A {} --ttl 60 --replace
initに登録して起動時に自動的にコマンドを実行する
init.dにroute53を新規作成
/etc/init.d/rout53
#! /bin/sh
### BEGIN INIT INFO
# Provides: route53
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: route53 remount
### END INIT INFO
curl -s http://169.254.169.254/latest/meta-data/public-ipv4 | xargs -i cli53 rrcreate hogehoge.co.jp www A {} --ttl 60 --replace
exit 0
反映
$ sudo chmod +x /etc/init.d/route53
$ sudo update-rc.d route53 defaults
AccessKeyの登録
cli53は実行したユーザのホームディレクトリの ~/.boto.cfg or /etc/boto.cfgを読みに行くようですので、
とりあえずセキュリティはおいておいて/etc/boto.cfgにアクセスキーを記述しておきます。
/etc/boto.cfg
[Credentials]
aws_access_key_id = <your access key>
aws_secret_access_key = <your secret key>
自動起動開始時にコマンドが実行されるので自動的に自分のPublicIPが登録されるという仕組みができました。
DNSが更新されるタイミングで見れるようになるので見れない場合はdigなどを利用して、
本当にIPアドレスがホスト名にぶら下がっているか確認してください。
-
前の記事
UnrealEngineを始めたぞ (開発はじめ) 2014.11.05
-
次の記事
大量ファイルを rm * なにやらエラー 2014.11.27