LoginSignup
1
0

More than 5 years have passed since last update.

AWS CLI で現在停止中で30日以上前に起動されたインスタンスを取得するワンライナー

Last updated at Posted at 2015-09-16

インスタンスが増えてくるとずっと止まりっぱなしで放置されているものもあるので、消すものを探す時の手助け的に。

ワンライナーといわれれば、ワンライナーって感じですね。
(実行環境はMac)

今回はあえて jq を使わずに、 --query のみで書きました。
AWS CLI公式ドキュメント

コマンド

$ ago=30;date -v-${ago}d > /dev/null 2>&1 && DATE=`date -v-${ago}d +%Y-%m-%d` || DATE=`date --date="-${ago} days" +%Y-%m-%d`; aws ec2 describe-instances --filter Name=instance-state-name,Values=stopped --query "Reservations[].Instances[?LaunchTime<='$DATE'][].{InstanceId: InstanceId,PrivateIpAddress: PrivateIpAddress,LaunchTime: LaunchTime}"

出力

[
    {
        "InstanceId": "i-4xxxxxb5",
        "LaunchTime": "2015-08-02T16:31:32.000Z",
        "PrivateIpAddress": "172.31.0.200"
    },
    {
        "InstanceId": "i-dxxxxx2e",
        "LaunchTime": "2015-06-20T09:32:45.000Z",
        "PrivateIpAddress": "172.31.0.79"
    }
]

一応

$ echo $DATE
>> 2015-08-18

60日以上前に起動されたインスタンス取得したい場合とか

最初の ago=30 の部分を ago=60 とかに変更すれば 60日前に起動された インスタンスを取得できます。

その時の実行結果

[
    {
        "InstanceId": "i-dxxxxx2e",
        "LaunchTime": "2015-06-20T09:32:45.000Z",
        "PrivateIpAddress": "172.30.0.79"
    }
]

一応、日付の確認

$ echo $DATE
2015-07-19

さいごに

パラメーター色々変えたりすればできます。あと、パースは jq 使ったほうが便利ですね。

本当は、StateTransitionReason とかみてもっと色々できるのかもしれません。

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