AWS-Cliを利用し、任意のNameタグのインスタンスのPrivateIPを取得するワンライナー
前書き
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ライフを。
Author And Source
この問題について(AWS-Cliを利用し、任意のNameタグのインスタンスのPrivateIPを取得するワンライナー), 我々は、より多くの情報をここで見つけました https://qiita.com/simeji/items/7ee76389ab2183787601著者帰属:元の著者の情報は、元の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 .