[AWS] EBS 생성 상태 확인 도구

7357 단어 devops파이썬AWS

EBS 작성 상태 체크 툴



최근 인스턴스 시작/중지 반복 및 백업
를 위한 스냅, AMI 창조에서 주의하는 경우에 많은 양의 Volumes가. .

EBS가 'in-use'도 아닌데 많이 만들어져(available),
Account Activity에서 과금 상태를 확인하면 수수하게 늘어나고 있는 이거.

Amazon EC2 EBS
$0.12 per GB-month of provisioned storage .....

볼륨 조작 및 과금 정보



라고 하는 것으로 시험해, 피부로 느끼는 것이 이치반!
세 개의 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


  • 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
    그러나 수수하게 「사용할 수 있는」 것을 업으로.

    다만, 「사용할 수 있다」라든가 「사용할 수 없다」라든지는 주관이기 때문에,
    심플하고 우선은 스스로 「사용할 수 있는」 것을 써 보는 곳으로부터.

    좋은 웹페이지 즐겨찾기