Posted at

aws-cliでスポットインスタンスの情報を取得するワンライナー2つ

More than 3 years have passed since last update.

スポットインスタンスであんな事やこんな事を試してみたいのに

「ポチポチしてたら、日が暮れる!!!」

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






事前準備に必要なもの


  • 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使うのが一番シンプルでした・・・・

以上