Amazon EC2 で、サーバ自身のグローバル IP アドレスを調べる方法

Amazon EC2 は何もしないと DHCP でグローバル IP アドレスが割り当てられる。これはサーバを立ち上げるときには大変困る。EC2 でサーバを立ち上げた後、アプリから割り振られた IP アドレスを知るにはどうしたらいいのだろう?ひとつには、ec2-describe-instances で現在起動しているインスタンスの一覧を出して調べていく…という方法があるが、あまりスマートではない。というわけで、次のようにするとよいと思う。 curl https://169.254.169.254/2008-02-01/meta-data/public-ipv4 この例のように Amazon EC2 では、https://169.254.169.254/2008-02-01/meta-data/パラメータ という URL で、サーバ内部から curl を使って調べることができるようだ。 ということは、ダイナミックDNS を利用している場合など、以下のようなスクリプトで対応できそうだ。 #!/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 のドキュメントに詳しく書いてある。