I'm trying to create a simple python backup script for my EC2 instances. This script's purpose is to create daily/weekly snapshots of the current machine (see this question on ServerFault). I'm using the boto python package for EC2 API, and would like to create an EBS AMI from a given instance (like ElasticFox's "Create Image" action)
# This script will look up all your running EC2 images, find the current one, and back it up by creating an AMI
# Configuration
accessKeyId = "..."
accessKeySecret = "..."
target = "..."
def resolveIp(target):
import socket
ip = repr(socket.gethostbyname_ex(target)[2][0])
return ip
def find_target(target, connection) :
ip = resolveIp(target)
print "Finding instance for " + target + " (IP " + ip + ")"
reservations = connection.get_all_instances();
for reservation in reservations:
instances = reservation.instances
if len(instances) != 1:
print "Skipping reservation " + reservation
continue
instance = instances[0]
instanceIp = resolveIp(instance.dns_name)
if instanceIp == ip:
return instance
raise Exception("Can't find instance with IP " + ip)
from boto.ec2.connection import EC2Connection
print "Connecting to EC2"
conn = EC2Connection(accessKeyId, accessKeySecret)
print "Connected to EC2"
instance = find_target(target, conn)
print "Backing up instance '{}'".format(instance)
# Now, I'd like to create a new image out of this instance
# Can you help?
(Also reported as an issue on the boto project page, since I didn't find a mailing list)
Log in to the AWS Management Console. If required, use the region selector in the top right corner to switch to the region where your instance was launched. Select your instance and then select the “Create Image” option in the “Actions” menu. Specify the name for the new image and then click the “Create Image” button.
You want the "create_image" method of the EC2Connection object. See the docs here. You can also ask questions on the boto-users Google Group.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With