ラベル AWS SDK for Ruby の投稿を表示しています。 すべての投稿を表示
ラベル AWS SDK for Ruby の投稿を表示しています。 すべての投稿を表示

2015年9月16日水曜日

AWS SDK for Rubyでインスタンスに関連づいていないセキュリティグループを削除する

こんにちは、井下です。

前回の鷲尾のブログに引き続いて、AWS SDK for Rubyを利用して、AWSの操作を行ってみます。
AWSへの操作という点では、AWS CLIと同じなのですが、SDKの場合は好きな言語で操作を行える点が魅力ですね。
なお、今回利用するAWS SDK for Rubyはv2です。導入方法・利用方法は最後に補足として説明しています。

さて、今回のテーマはタイトル通り、インスタンスに関連づいていないセキュリティグループの削除ですが、セキュリティグループはいくつ作っても課金対象ではありません。
そのセキュリティグループをわざわざSDKで削除させようとしているのは、セキュリティグループが意図せず増える土壌があるからです。

まず、EC2インスタンスを新規作成するとき、デフォルトの設定ではセキュリティグループもそのインスタンス用に新規作成・関連づけしてくれるようになっています。
ただし、EC2インスタンスを削除するときには、関連づいたセキュリティグループを削除してくれません。恐らくはセキュリティグループの仕様として、セキュリティグループ1つで複数のEC2インスタンスと関連づけが可能なためですね。

つまり、"とりあえず使える環境が欲しい"とEC2インスタンスをデフォルト設定で作成・削除を繰り返すと、使われないセキュリティグループがどんどん増えていきます。
また、セキュリティグループの一覧画面からは、EC2インスタンスに関連づいているかが見えないため(EC2インスタンス側からは、どのセキュリティグループが関連づいているかが見えます)、不要なセキュリティグループの削除には手間がかかってしまいます。

下の画像は私個人のAWSコンソールですが、EC2インスタンス4つに対し、セキュリティグループは19個もあります。15個は使われてない&今後使われることもないセキュリティグループです…。

前置きが長くなりましたが、実際にAWS SDK for Rubyを使ってインスタンスに関連づいていないセキュリティグループを削除してみます。
コードは以下のようになりました。