Amazon EC2 は何もしないと DHCP でグローバル IP アドレスが割り当てられる。これはサーバを立ち上げるときには大変困る。EC2 でサーバを立ち上げた後、アプリから割り振られた IP アドレスを知るにはどうしたらいいのだろう?ひとつには、ec2-describe-instances で現在起動しているインスタンスの一覧を出して調べていく…という方法があるが、あまりスマートではない。というわけで、次のようにするとよいと思う。
curl https://169.254.169.254/2008-02-01/meta-data/public-ipv4
#!/bin/sh
USERNAME=your_username
PASSWORD=your_password
HOSTNAME=your_server.dyndns.org など
IP=`curl https://169.254.169.254/2008-02-01/meta-data/public-ipv4`
curl "https://$USERNAME:$PASSWORD@members.dyndns.org/nic/update?hostname=$HOSTNAME&myip=$IP&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG"
このほかにもパラメータの部分に public-hostname などと設定すればホスト名が取れるし、https://169.254.169.254/2008-02-01/meta-data/パラメータ でアクセスできる値は、EC2 のドキュメントに詳しく書いてある。