Help us understand the problem. What is going on with this article?

[AWS]EBS作成状況チェックツール

More than 5 years have passed since last update.

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を削除すると
    1. AMI作成
      EBS_a-1.jpg
    2. SNAP, Volume確認
      SNAPは出来る。
      (そしてProgressがバー表示なことに今ささらながら気づく。。) EBS_a-2.jpg
      ※当然のことながらVolumeは出来ません。
    3. AMI削除
      キレイに消える
    4. SNAP, Volume確認
      SNAPは残ったまま
      ※このままだと、以下に課金されると思われるのでとりあえず削除。

Amazon EC2 EBS
$0.1 per GB-Month of snapshot data stored


  • [b] SNAPを削除すると
    1. AMI作成
      EBS_b-1.jpg
    2. SNAP, Volume確認
       [a]同様 SNAPは出来て、Volumeは出来ない。。 EBS_b-2.jpg
    3. SNAP削除
      はい、消せません!!残念!
      それはそうですよね、イメージの保存構成の1要素なのでSNAPだけは消せません。 EBS_b-3.jpg

  • [c] Volumeを削除すると
    1. [b]で作ったAMIからインスタンス起動
      「Delete on Termination」はOFFってください。(この辺で勘のいい人はネタばれしそう。。。) EBS_c-1.jpg
    2. SNAP, Volume確認
      SNAPは新たには出来ませんが(当然)、Volumeが新たにSNAPから展開されてインスタンス。 EBS_c-2.jpg
    3. インスタンスをターミネートして、Volume削除
      EBS_c-3.jpg
    4. SNAPもAMIも消えません!(当然!!)

ツールを作ってみた

  • 目的

    • ムダ使いを減らしたい
  • 概要

    • 上記でもわかる通り、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
しかし地味に「使える」ものをアップで。

ただ、「使える」とか「使えない」とかは主観でもあるので、
シンプルでまずは自分たちで「使える」ものを書いてみるところから。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away