こんにちわ!maijunです。
EC2のIPアドレスを一覧で取得したいってありません?
今回スプレッドシートに貼り付ける必要が出てきたので手順メモです
経緯
稀に授業の一環でサーバを複数準備し配布する必要がありますが、SSHで接続する為にサーバのIPアドレスをリスト化するのが面倒い。
AWS CLIでPublicIpAddressを抜き出したら楽やんと気づいて作業する事にしました。
環境
AWS CLIが入っていれば良いのですが、ちょうど自宅マシンにインストールしていない。
自宅WindowsにはAWS CLI入れたくない。
どうしよっかな~と思ったのですが、簡単に環境を捨てられるWSL側に入れることにしました。
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
手順
公式ドキュメント見ながら作業です。
WSLに入れる必要があるのでLinux版の説明資料を見ます。
Linux での AWS CLI バージョン 2 のインストール、更新、アンインストール
AWS CLIのインストール
ドキュメントどおりにコマンドを叩いていきます。
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
取得したzipファイルをunzipで解凍しようとしたら「無い!」と叱られたのでインストールします。
$ sudo apt install unzip
これで解凍できるようになったので、溶かしてインストールです。
$ unzip awscliv2.zip
$ sudo ./aws/install
$ which aws
/usr/local/bin/aws
$ aws --version
aws-cli/2.0.54 Python/3.7.3 Linux/4.19.104-microsoft-standard exe/x86_64.ubuntu.20
ちゃんと入ってますね。良き!
AWSへの接続情報を設定する
AWS CLIで諸々作業する際には、アクセスキーを用いて繋げる必要があります。
aws configureで必要情報を入力していきます。
Access KeyやSecret Access KeyはIAMで取得しときます。
$ aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json
今回は東京リージョンにあるEC2の情報をJSON形式で取得する事にしました。
ちなみに接続情報は.aws内に保管されます。
$ cat .aws/config
$ cat .aws/credentials
適宜確認ください。
jqをインストールする。
json形式でインスタンス情報を取得しますが、色々整形したいのでjqをインストールします。
command-line JSON processor -jq-
$ sudo apt install jq
インスタンス情報取得するには?
AWS CLIも色々できてコマンドも多く、私はすべて覚えられません。
コマンドラインリファレンスで調べます。
AWS CLI Command Refarence
今回はec2 describe-instancesで取得できそうなので試します。
$ aws ec2 describe-instances
{
"Reservations": []
}
お!jsqon形式で帰ってきた。
インスタンス立ち上げたら取得できそうです。
配列指定して取得
インスタンス立ち上げて必要情報を取得していきます。
$ aws ec2 describe-instances | jq '.Reservations.Instances.PublicIpAddress'
jq: error (at <stdin>:127): Cannot index array with string "Instances"
あ。。配列に入ってるんだった。やり直しです。
$ aws ec2 describe-instances | jq '.Reservations[].Instances[].PublicIpAddress'
"54.178.62.204"
わーいわーい。
これで仕事準備も楽にできる
結局素のWindowsではなくWSLにAWS CLI入れて必要な情報を抜き出せた。月曜日これで楽できるわ!
— jun kubotamai@まいじゅん☆AWSをもっと頑張るマン (@maijun2) October 3, 2020
メモとして後でQiitaにも手順とか載せておこうっと♪ pic.twitter.com/9FEcsuZnYW
#まとめ
あとはIPアドレス一覧をスプレッドシートに貼り付けたら完了です。
マネジメントコンソールでぽちぽちしながら調べなくて良いので楽ですな。
なおawsコマンドですがhelp叩きながら調べるのも良いのですが、リファレンス見たほうが使用例も載っているので私は好きです。
Linux での AWS CLI バージョン 2 のインストール、更新、アンインストール
command-line JSON processor -jq-
AWS CLI Command Refarence