【コスト削減Tips】マネジメントコンソールから一度に大量のリソースを指定して削除する方法

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

spend_summary_satake最近、ダイエットのための禁酒をストップし、飲んだくれている佐竹です。するとどうでしょう。
約1か月で体重が1.5kgも増えました!お酒を飲む機会が増えると太ることを改めて実感した次第です。

そんなこんなで、AWSリソースも気を抜くとドンドコ増えてしまいます。
今回は、マネジメントコンソールからでも一気に大量にリソースを削除することが可能になる、ちょっとしたTipsをお伝えします。

導入

AWSのEC2では、利用中のInstanceを、AMIやSnapshotとして日々バックアップを取得していくことが多いですが、弊社の「Cloud Automator」の「AMI(バックアップ)世代管理機能」を十分に利用していたとしても、「誰がいつ取得したのかわからないAMIやSnapshot」は、ヒューマンオペレーションの都合でどうしても残ってしまいます。
さて、こういう時は「定期的な全リソースの棚卸」を実施し、面倒ではありますが、1つずつ、「どのAMI/Snapshotを消せるのか」判断して消していきます。

AMIの削除

さて、協議の結果、何百個とあるAMI、Snapshotのうち約200個を消すことに決まったとしましょう。
ルールは簡単です。

  1. 1年以上前に作成されたAMIとSnapshotは全て消す
  2. ただし一部永久的に保管したい特定のAMIとSnapshotは除く

となりました。
これらの対象を選定して消すことは、マネジメントコンソールから簡単にできます。

ami_delete2

上の図の通り、現在マネジメントコンソールには「Creation Date」という検索条件を持っており、何月何日時点よりも前に作られたAMIというのが一覧にして表示可能です。
表示さえできてしまったら、後は左端のチェックボックスにまとめてチェックを入れ、「Actions⇒Deregister」するのみです。ただし、消す前に「一部削除対象外」のものをチェックから省くことを忘れずに。

少しだけ気を付けて頂きたいのが、一度に削除できる数は現状「表示限度数の50」を超えられない点です。そのため、削除対象が50を超える場合、「50個削除⇒ページを送って50個削除」の作業を繰り返す必要があります。

削除したAMIに紐づくSnapshotの削除

実のところ、AMIを削除しても、それに紐づくSnapshotは消えません。ですため、AMIを消した後は「そのAMIに紐づくSnapshotを追いかけて消す必要」があります。
こういう時「CLIが使いたい」と思われるかもしれませんが、CLIを使うためにはクレデンシャル情報を発行する必要があります。このCLIを発行するという行為が、お客様によっては少々セキュリティの懸念もありハードルが高いことがあります。ですため、今回はマネジメントコンソールから消します!

ami_delete

これは、削除対象のAMIを選択した直後の画面です。
このとき、最下部に選択されたAMIのIDが一覧で表示されているのがわかるでしょうか?
まずはこちらを手元にメモして置くことを忘れないようにしましょう。

今回は
Image: ami-edb6188c, ami-52b91733, ami-b8b719d9, ami-29b51b48, ami-0ab7196b, ami-4bb8162a
です。しっかりメモしておきます。

次に、この結果を、AMIのIDで検索が可能であるSnapshot側の検索窓に入れてみましょう。AMIのIDで検索をすれば、そのAMIが既に消えていたとしても、紐づいているSnapshotが一覧で標示可能です。

ami_delete3

が、何ということでしょう。見つかりません!
そうなのです、一度にペーストすると「, 」区切りまで含めて1つの検索ワードとされてしまうので、検索できないのです。
このため、以下のように1つずつIDをペーストし、Enterキーを押していくという面倒な作業が必要になってしまいます。

ami_delete4

今回は6つのAMIなので、6回これをやるのはそこまで苦労しないかもしれません。しかしこれが何百とあるとすると、それだけで大変な時間を使います。上の画像では2回入れたものを表示していますが、この2回を打ち込むだけでも嫌になりました
どうすればいいでしょうか?

URLの規則性を理解し、URLに直接idを入力

マネジメントコンソールのURLに着目してみてください。

ami_delete5

上の図のURLは以下の通りとなります。

https://ap-northeast-1.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-1#Snapshots:visibility=owned-by-me;search=ami-edb6188c,ami-52b91733;sort=desc:volumeSize

ここで、赤太字になっている部分にご注目下さい。
お気づきでしょうか、ここにAMIのIDが入れ込まれているのです。

つまり、マネジメントコンソールではURLを直接編集することで、検索条件を追加することが可能になっているのです。

これを利用し、search=[******] の [******]の箇所に先ほどメモしたリストのうち、以下の赤字になっている部分を入力し、Enterを押下してください。
Image: ami-edb6188c, ami-52b91733, ami-b8b719d9, ami-29b51b48, ami-0ab7196b, ami-4bb8162a

すると、「半角スペース」は自動的に省略され、コンマだけが残り、目的の結果が表示されます。
ami_delete6出ました!これで対象のSnapshotがまとめて消せます。
実案件では60個近いAMIを指定したため

ami_delete7このような素晴らしい検索窓になりましたが、一気にまとめて消せたのでかなりの時間が短縮できました。

まとめ

今回は、クレデンシャル情報がなくCLIが使えない場合でも、大量のAMIやSnapshotといったリソースを、一度に削除する方法をお伝えしました。
この手法は、URLを直接修正するというものですので、他のリソースでも応用可能です。
例えば、手元にInstanceのidの一覧があり、それをマネジメントコンソールに一度に表示したい場合は、「Instances:search= 」に直接入力することで標示が可能です。

CLIも便利ですが、マネジメントコンソールもなかなか捨てたものではありませんよ、ということで。同じような作業で困っている方の一助となれば幸いです。

AWS運用自動化サービス「Cloud Automator」