なるべく手間をかけずEC2インスタンスのPublic IPを取得してみた
よくEC2インスタンスを一時的に立てて作業をすることがあるのですが
- 公開するサービスでもないためElasticIPは不要
- とはいえ再起動時に割り振られるPublic IPを手間なく知りたい(AWSコンソールにいちいちログインしたくない)
という想いがありました。それを解消した備忘録。
ElasticIPによる課金
ここに詳しく載ってますが、よくあるパターンとして
- ElasticIPは割り当てた
- 割り当てたEC2インスタンスは必要な時以外動かさない
という時は課金対象となります。このパターンだと、0.005USD / hourかかってしまいます。月3.6ドル、400円程度。少額とはいえ、EC2インスタンスを停止してコストを抑えようとしているのにElasticIPで課金されているようでは意味がありません。
ということで以下の通りの設定をしました。
起動スクリプトにPublic IPを出力、S3に配置する処理を記述
準備として以下を実施します。
- awscliのインストール(すでにされているインスタンスがほとんど)
- S3にデータ保存用のバケット作成
- 起動するEC2インスタンスにS3バケットへのアクセス権限をつける
起動スクリプト(ユーザーデータではない。再起動時に毎回実行して欲しいから)にメタデータを取得し、そのデータをS3に配置するようにします。
$ sudo vi /etc/rc.local
ファイルを開いたら、以下の処理を追記します。(ファイルの最後に記述されているexit 0
の前に追記します)
curl http://169.254.169.254/latest/meta-data/public-ipv4/ > /tmp/ip.txt
aws s3 cp /tmp/ip.txt s3://xxx-xxxx-conf
これで再起動時に新しく割り振られたPublic IPがS3に保存されるので、それを自分のマシンから参照するだけです。
$ aws s3 cp s3://xxx-xxxx-conf/ip.txt - 2>/dev/null | head
54.236.XXX.YYY
これで無事Public IPアドレスが取得できました。
Author And Source
この問題について(なるべく手間をかけずEC2インスタンスのPublic IPを取得してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/kojiisd/items/0a5e10fa129fcbba1c15著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .