LoginSignup
2
2

More than 5 years have passed since last update.

なるべく手間をかけずEC2インスタンスのPublic IPを取得してみた

Posted at

よくEC2インスタンスを一時的に立てて作業をすることがあるのですが

  1. 公開するサービスでもないためElasticIPは不要
  2. とはいえ再起動時に割り振られるPublic IPを手間なく知りたい(AWSコンソールにいちいちログインしたくない)

という想いがありました。それを解消した備忘録。

ElasticIPによる課金

EIPで料金発生するパターンとしないパターン #AWS

ここに詳しく載ってますが、よくあるパターンとして

  • ElasticIPは割り当てた
  • 割り当てたEC2インスタンスは必要な時以外動かさない

という時は課金対象となります。このパターンだと、0.005USD / hourかかってしまいます。月3.6ドル、400円程度。少額とはいえ、EC2インスタンスを停止してコストを抑えようとしているのにElasticIPで課金されているようでは意味がありません。

ということで以下の通りの設定をしました。

起動スクリプトにPublic IPを出力、S3に配置する処理を記述

準備として以下を実施します。

  1. awscliのインストール(すでにされているインスタンスがほとんど)
  2. S3にデータ保存用のバケット作成
  3. 起動する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アドレスが取得できました。

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2