EBS作成状況チェックツール
最近、インスタンスの起動/停止の繰り返しやバックアップの
ためのスナップ、AMI作成で気付いたら大量のVolumesが。。
EBSが「in-use」でも無いのにたくさん作られて(available)、
Account Activityで課金状態を確認すると、地味に増えてるコレ。
Amazon EC2 EBS
$0.12 per GB-month of provisioned storage .....
ボリューム操作と課金について
と言うことで試して、肌で感じるのがイチバン!
3つのEBSボリュームがアタッチされているインスタンスから、
AMIを作成するところから。
- [a] AMIを削除すると
- AMI作成
- SNAP, Volume確認
SNAPは出来る。
(そしてProgressがバー表示なことに今ささらながら気づく。。)
※当然のことながらVolumeは出来ません。 - AMI削除
キレイに消える - SNAP, Volume確認
SNAPは残ったまま
※このままだと、以下に課金されると思われるのでとりあえず削除。
Amazon EC2 EBS
$0.1 per GB-Month of snapshot data stored
- [b] SNAPを削除すると
- AMI作成
- SNAP, Volume確認
[a]同様 SNAPは出来て、Volumeは出来ない。。
- SNAP削除
はい、消せません!!残念!
それはそうですよね、イメージの保存構成の1要素なのでSNAPだけは消せません。
- [c] Volumeを削除すると
- [b]で作ったAMIからインスタンス起動
「Delete on Termination」はOFFってください。(この辺で勘のいい人はネタばれしそう。。。)
- SNAP, Volume確認
SNAPは新たには出来ませんが(当然)、Volumeが新たにSNAPから展開されてインスタンス。
- インスタンスをターミネートして、Volume削除
- SNAPもAMIも消えません!(当然!!)
ツールを作ってみた
-
目的
-
ムダ使いを減らしたい
-
概要
-
上記でもわかる通り、AMIを作るとSNAP、インスタンス起動でVolumeが新たに作成される
-
昨日作った分だけでも分かれば、翌日記憶がホットな内に無駄なものは消せる!
-
ゆくゆくは自動的化したいが。。。削除の自動はちょっと怖いので後ほど。
-
動作環境
-
CentOS6.3
-
Python 2.6.6
-
boto-2.6.0
-
aws-cli/0.12.0
# !/usr/bin/python
# -*- coding: utf-8 -*-
import commands
import sys,getopt
import json
import datetime
from datetime import datetime as dt
# Set standard date
aday = datetime.timedelta(days=1)
std_day = datetime.datetime.today() - aday
# Exec command
aws_cmd='aws ec2 describe-volumes'
out=commands.getoutput(aws_cmd)
# Parse JSON
ebs_data = json.loads(out)
print "===================================================================="
print "The following refers to the volume that is created after this time. "
print unicode(std_day)
print "===================================================================="
for vols in ebs_data["Volumes"]:
cretime = dt.strptime(vols["CreateTime"], '%Y-%m-%dT%H:%M:%S.000Z')
## Volume only newly created
if cretime > std_day:
print "AZ=" + vols["AvailabilityZone"] + ", volId=" + vols["VolumeId"] + ", CreateTime=" + unicode(cretime) + ", State=" + vols["State"]
- このままで動かない場合、以下のコマンドを実行して下さい。
export AWS_DEFAULT_REGION=ap-northeast-1
後述
そんな大したコードでは無いですw
しかし地味に「使える」ものをアップで。
ただ、「使える」とか「使えない」とかは主観でもあるので、
シンプルでまずは自分たちで「使える」ものを書いてみるところから。