😀
aws-cliでスポットインスタンスの情報を取得するワンライナー2つ
スポットインスタンスであんな事やこんな事を試してみたいのに
「ポチポチしてたら、日が暮れる!!!」
のでAWSが公式に出しているaws-cliを利用して色々やってみる事にしてみました。
(調べだしてからこの投稿を書くのに既に日が暮れているなんて、誰にも言えない・・・・)
参考にしたサイト
環境
- CentOS 6.7
- aws-cli
- aws-cli/1.10.1 Python/2.7.10 Linux/2.6.32-573.el6.x86_64 botocore/1.3.23
- aws-cli
事前準備に必要なもの
- jq
- インストール方法は適当にぐぐってみてください
稼働しているスポットインスタンスのインスタンスIDをまとめて取得する
jqで select(.InstanceLifecycle == "spot")
としているところがミソ
path/to/hoge
aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" | jq '.Reservations[].Instances[] | { instanceId: .InstanceId , InstanceLifecycle: .InstanceLifecycle} | select(.InstanceLifecycle == "spot")'
jqを使わずに上記と同じ事をする方法
こっちのほうがシンプル
path/to/hoge
aws ec2 describe-instances --filter "Name=instance-type,Values=t1.micro" "Name=instance-state-name,Values=running" "Name=instance-lifecycle,Values=spot"
稼働しているスポットインスタンスの内インスタンスタイプがt1.microのインスタンスIDをまとめて取得する
aws-cliの --filter
で "Name=instance-type,Values=t1.micro"
をしているのがミソ
path/to/hoge
aws ec2 describe-instances --filter "Name=instance-type,Values=t1.micro" "Name=instance-state-name,Values=running" | jq '.Reservations[].Instances[] | { instanceId: .InstanceId , InstanceLifecycle: .InstanceLifecycle} | select(.InstanceLifecycle == "spot")'
最後に
最初はjqで「アチャー、こりゃー」ってしてたけども最終的には--filter使うのが一番シンプルでした・・・・
以上
Discussion