業務で、(特に開発環境)一時的な検証用にEC2インスタンスを開始してそのまま終了せずにいたため、不要な課金をされている可能性がある。毎月それを確認し可能な限り終了したい。
こんな依頼を受けました。
お客様のAWS環境は組織アカウントとして50弱程保持しておりそれを各部署用にスイッチロールして使用しています。
インスタンスの起動状況を調べるために逐一ログイン・ログアウトしていたら工数を使ってしまいます。そこで以下の方法を使ってほぼ自動で全アカウントの起動状況を作るスクリプトを作りました。
(1)全組織アカウントのロールを記載しているGitHubがあるのでそこからアカウントを抽出しテキストで保存
(2)(1)で作成したファイルをループ処理させて1行ずつaws-vault・awscli・jqを使ってコマンド処理させて起動中インスタンスを抽出し、jsonで保存。
資料としてはここを使いました。(AWS CLIを使ってEC2インスタンスの情報を取得する)
(3)月初と月末にコマンドを使ってインスタンスの差分を確認し不要なものを終了する。
ただ、jqコマンドの仕様としてインスタンスのName tagにnull値がはいっているとその組織アカウントの起動中インスタンスのName tagがすべてnullで返ってしまうということがあります。
※厳密にはこの部分を条件分岐させれば改修できそうなんですが、対象インスタンスも少ないのでその工数をかけるなら目視で判断しました。
これで毎月、全組織アカウントで起動中インスタンスが把握できて、不要インスタンスを終了することにより工数削減につながると考えます。
改善として上長に報告ですね。
石川事務所 おすすめ