孤立したEBSスナップショットを特定してAWSのコストを最適化する方法

しばらく前に、財務チームからメールが届きました。 AWSインフラストラクチャのリソースのタグ付けを支援し、特定のコストに貢献しているアイテムを調査するという任務がありました。 他のエンジニアについては知りませんが、これらの種類のタスクは、ガソリンスタンドでフロントガラスから鳥の糞を拭くのと同じ楽しみの領域にあります。 だから私は思いつく限りの正直なことをしました。

メールを削除しました…

しかし、 LogicMonitorのAWS請求モニタリング 出てきたので、箱から出して、アイテムが壊れているのを見るのはかなり簡単でした。 私は想像力の範囲で最初にコスト最適化トレインに飛びついたわけではありません。 しかし、私は興味をそそられました。

どうやら、すべてのAWSリソースを追跡することは、新しい家に移動するようなものです。 あなたはすべてを詰め込み、数年ぶりにガレージの隙間を深く掘り下げてすべてを分類します。 このインスタンスは何ですか? 使っていますか? アプリを実行していますか? どれ? それは私が孤児の山に出くわしたときです EBS スナップショット。

孤立したスナップショットの費用は$$$です

EBSボリュームに高額な料金を支払わずにデータを保存するために、ボリュームのバックアップとしてスナップショットを作成できます。 それははるかに安価であり、必要に応じてスナップショットからボリュームを復元するオプションがあります。 ただし、EC2インスタンスが終了すると、アタッチされているEBSボリュームも一緒に削除されても、残ったスナップショットはs3に保存され、毎月課金されます。 これらは簡単に忘れられ、時間の経過とともに積み重なっていきます。これにより、500年から「TESTING」というラベルの付いた2011GBのスナップショットをいくつか取得できます。

孤立したスナップショットの検索

Amazonではスナップショットをネイティブにフィルタリングできないため、孤立したスナップショットを識別するプログラム的な方法が必要です。 私のチームメンバーのXNUMX人は、CLIワンライナーで素晴らしいです。 以下でそれをチェックしてください:

comm -23 <(aws ec2 describe-snapshots --owner-ids AWS-ACCOUNT-ID --query'Snapshots [*]。SnapshotId '-output text | tr' \ t '' \ n '| sort)<( aws ec2 describe-volumes --query'Volumes [*]。SnapshotId '-output text | tr' \ t '' \ n '| sort | uniq) 

ただし、そのデータを推定して操作する場合(スナップショットにタグを付けるなど)、それに追加する必要があります。 これらのスナップショットに毎月タグを付けたい場合はどうなりますか? コマンドを手動でコピーして貼り付けますか? もちろんそうではありません、私たちは動物ではありません。 cloudwatchイベントルールに従ってラムダ関数を利用して、すべてを行うことができます。 これがサンプルスクリプトです 孤立したすべてのスナップショットにタグを付けます。

LogicMonitorの使用

スナップショットにすでにタグを付けている場合は、次を使用できます タグデータソース別のLogicMonitorのコスト 過去XNUMXか月の支出を即座に把握できます。

また、孤立したスナップショットに固有のデータソースを作成して、特定の削除されたボリュームのすべてのスナップショットの合計サイズや孤立したスナップショットの最も古い日付などのデータポイントを測定できるようにしました。

試してみる。 いくつかのダッシュボードを作成し、雑然としたものを片付け、お金を節約し、背中をたっぷりとたたき、上司から「ありがとう」と響き渡ります。 ありがとうございます…

しかし、ギフトカードもそうです。