LoginSignup
7
7

More than 5 years have passed since last update.

AWS-Cliを利用し、任意のNameタグのインスタンスのPrivateIPを取得するワンライナー

Posted at

前書き

AutoScalingなどでサーバーを動的に増減させているときは、インスタンスにsshでログインしたいたびにIPを調べる必要があり、その都度、Webコンソールに入るってIPを調べるのは煩わしく感じていたので書きました。

ワンライナー

そんなときにaws-cliを利用し、以下のようなワンライナーを作成しました。
検索対象のタグの値 という部分をPrivateIPを調べたいインスタンスのNameタグの内容に置き換えてください。

aws ec2 describe-instances --filter "Name=tag-key,Values=Name" "Name=tag-value,Values=検索対象のNameタグの値" --query 'Reservations[].Instances[?State.Name==`running`].PrivateIpAddress[]'

これでIPを取得できます!

[
  "172.30.13.xx",
  "172.30.14.xx",
  "172.30.16.xx"
]

ちょっと発展したシェル

一応外部からprofileやNameタグの値を指定できるようにシェルも書きました。

get-ec2-ipaddresses.sh
#!/bin/bash
NAME=$1
PROFILE=$2
OTHER=$3
aws ec2 describe-instances --filter "Name=tag-key,Values=Name" "Name=tag-value,Values=$NAME" --query 'Reservations[].Instances[?State.Name==`running`].PrivateIpAddress[]' --profile $2 $3

実行方法
Profileが develop で Nameタグの内容が test から始まるインスタンスを取得したいとき。

./get-ec2-ipaddresses.sh test* develop

まとめ

aws コマンドの --query 部分で指定している

 .Instances[?State.Name==`running`]

は、とても便利で、インスタンスの状態が起動中のもの取得するというような記述です。
私も今日おしえてもらったので、これからどんどん使っていきたいです。

よいCLIライフを。

7
7
0

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
7
7