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を削除すると
Amazon EC2 EBS
$0.1 per GB-Month of snapshot data stored
- [b] SNAPを削除すると
- [c] Volumeを削除すると
ツールを作ってみた
-
目的
- ムダ使いを減らしたい
-
概要
- 上記でもわかる通り、AMIを作るとSNAP、インスタンス起動でVolumeが新たに作成される
- 昨日作った分だけでも分かれば、翌日記憶がホットな内に無駄なものは消せる!
- ゆくゆくは自動的化したいが。。。削除の自動はちょっと怖いので後ほど。
-
動作環境
- CentOS6.3
- Python 2.6.6
- boto-2.6.0
- aws-cli/0.12.0
daily_check_ebs_created.py
#!/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
しかし地味に「使える」ものをアップで。
ただ、「使える」とか「使えない」とかは主観でもあるので、
シンプルでまずは自分たちで「使える」ものを書いてみるところから。