# -*- coding: utf-8 -*- require 'rubygems' require 'aws-sdk' ## アクセスIDとシークレットアクセスキーを指定します ACCESS_KEY = 'SET UP YOUR ACCESS KEY' SECRET_KEY = 'SET UP YOUR SECRET KEY' ## 引数チェック unless ARGV.size == 4 puts 'How to Use: create_ebs_snapshots.rb ' exit 0 end ## 引数からスナップショット保存設定を行います aws_region = ARGV[0] history = ARGV[1].to_i vol_id = ARGV[2] snapshot_memo = ARGV[3] ## スナップショットのdescriptionを作成します snapshot_description = "#{snapshot_memo} #{Time.now.strftime('%Y/%m/%d %H:%M')}" ## EC2インスターフェースを作成するために認証を行います AWS.config(:access_key_id => ACCESS_KEY, :secret_access_key => SECRET_KEY, :ec2_endpoint => aws_region) ec2 = AWS::EC2.new ## 対象ボリュームからスナップショットを作成します ec2.snapshots.create(:volume => ec2.volumes[vol_id], :description => snapshot_description) ## 現在保存されている対象ボリュームから作成されたスナップショットをリスト化する snapshots = ec2.snapshots.filter('volume-id', vol_id) ## 指定世代分を残して古いスナップショットを削除します snapshots_to_remain = snapshots.sort_by { |snap| snap.start_time }.reverse[0, history] snapshots_to_delete = snapshots.to_a - snapshots_to_remain.to_a snapshots_to_delete.each { |snap| snap.delete }