もりはやメモφ(・ω・ )

インフラなエンジニアからSREへ

awsコマンドでEC2のGlobal IPとPrivate IPを取得する1行コマンド

開発者から「IPアドレスの一覧が欲しい」と言われて必要になったので作りました。メモとして残しておきます。

aws ec2 describe-instances | jq -c '.Reservations[].Instances[] | [ (.Tags[]? | select(.Key == "Name")).Value, .PrivateIpAddress, .PublicIpAddress]' | sed -E 's/\[|\]//g' | sed -E 's/,/\|/g' | tr -d '"' | sed -E 's/^/\|/g'| sed -E 's/$/\|/g' | sort

すると以下のような結果が取れます。(IPはサンプル)

|morihaya-test-01|192.168.1.13|203.0.113.1|
|morihaya-test-02|192.168.2.11|203.0.113.2|

ヘッダーをつけて、esaなどのMarkdown対応なドキュメントに載せます。

| Hostname | Private IP | Public IP |
| --- | --- | --- | 
|morihaya-test-01 |192.168.1.13|203.0.113.1 |
|morihaya-test-02|192.168.2.11|203.0.113.2 |

すると以下のように一覧になって良さ、という話でした。

Hostname Private IP Public IP
morihaya-test-01 192.168.1.13 203.0.113.1
morihaya-test-02 192.168.2.11 203.0.113.2

もちろんサーバは日々変動することがあり、現実とのデグレが発生する未来が見えるので必要なメンバにAWSコンソールを渡してしまうのも手なのですが、ささっと閲覧可能なドキュメントとして作る分には良し。