[PYTHON] Ein Skript, das eine Momentaufnahme eines EBS-Volumes erstellt

Auch als Posttest von Kobito. EC2 ist ein Skript, das ich zuvor geschrieben habe, da es ein Backup ist, wenn Sie einen Snapshot des EBS-Volumes speichern.

class AWSBackuper(object):
    def __init__(self, access_key, secret_key, region="ap-northeast-1"):
        self.access_key = access_key
        self.secret_key = secret_key
        self.region = region
        self.set_ec2connection()

    def set_ec2connection(self):
        self.ec2connection = boto.ec2.connect_to_region(self.region, aws_access_key_id=self.access_key, aws_secret_access_key=self.secret_key)

    def create_snapshot(self, volume_id, description=None):
        self.ec2connection.create_snapshot(volume_id, description)

    def rotate_snapshot(self, volume_id, num):
        snapshot = {}
        for x in self.ec2connection.get_all_snapshots():
            if(x.volume_id == volume_id):
                tmp = {x.id:x.start_time}
                snapshot.update(tmp)

        snapshot = sorted(snapshot.items(), key=lambda (k, v): (v, k), reverse=True)
        for i in range(int(num), len(snapshot)):
            try:
                self.ec2connection.delete_snapshot(snapshot[i][0])
            except:
                continue

    def add_tags_to_snapshot(self, volume_id):
        tags = self.ec2connection.get_all_volumes(volume_id)[0].tags

        for snapshot in self.ec2connection.get_all_snapshots():
            if(snapshot.volume_id == volume_id):
                for key, value in tags.items():
                    snapshot.add_tag(key, value)

if __name__ == '__main__':

    execfile(sys.argv[1])
    backuper = AWSBackuper(access_key, secret_key)

    for volume_id in volume_ids:
        backuper.create_snapshot(volume_id, 'auto backup')
        print "%s is backed up." % (volume_id)
        backuper.rotate_snapshot(volume_id, generation_limit)
        print "%s is rotated snapshots." % (volume_id)
        backuper.add_tags_to_snapshot(volume_id)
        print "%s is added tags." % (volume_id)

Dieses Skript wird gestartet, indem das Python-Skript angegeben wird, das die Konfigurationsdatei sein soll.

# your volume_ids 
access_key, secret_key = 'YOUR ACCESS KEY', 'YOUR SECRET KEY'
volume_ids = [
    'vol-target-id1',
    'vol-target-id2',
    'vol-target-id3',
]
generation_limit = 7

Alles was Sie tun müssen, ist es so zu starten

python ebs-backuper.py config.py

Recommended Posts

Ein Skript, das eine Momentaufnahme eines EBS-Volumes erstellt
Ein Skript, das nur einen RSS-Feed erhält
Ein Skript, das eine Liste der Benutzer des SoftLayer-Portals ausgibt
Eine Reihe von Skriptdateien, die Wordcloud mit Python3 ausführen
Python-Skript, das den Inhalt zweier Verzeichnisse vergleicht
Ein Memorandum mit Filterbefehlen, die Sie möglicherweise sofort vergessen
Skript, das die angegebene URL morphologisch analysiert
Eine Menge von ganzen Zahlen, die ax + by = 1 erfüllen.
"Python Kit", das Python-Skripte von Swift aufruft
Ein Python-Skript, das die Anzahl der Jobs für eine bestimmte Bedingung von Indeed.com abruft
Ein Skript, das Ränder kombiniert, wenn mehrere Diagramme mit Gnuplot auf Kacheln eingefügt werden
Ein Skript, das mehrere Seiten einer PDF-Datei zu einer Seite ohne Ränder kombiniert
Was ist eine rationale Entscheidung, die die Chancen maximiert, ein "ideales Zuhause" zu finden?
Ein Skript, das Stresstests entsprechend der Anzahl der CPU-Kerne durchführen kann
Bestätigen Sie das Überschreiben der Datei mit der Option, das Dateiobjekt als Argument mit Python argparse zu verwenden
Artikel, der Ihnen hilft, den Kollisionsalgorithmus für starre Kugeln ein wenig zu verstehen
Ein Skript, das den registrierten Server anpingt und eine bestimmte Anzahl von E-Mails mit Google Mail sendet, wenn dies fehlschlägt