2011-03-10 60 views
7

我正在嘗試爲我的EC2實例創建一個簡單的python備份腳本。該腳本的目的是創建當前機器的每日/每週快照(請參閱this question on ServerFault)。我使用的是boto Python包的EC2 API,並想創建一個EBS AMI從一個給定的情況下(如ElasticFox的「創建圖像」行動)如何使用boto從正在運行的實例創建EC2映像?

# 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? 

(也有報道爲an issue on the boto project page,因爲我沒有」 t找到郵件列表)

回答

8

您需要EC2Connection對象的「create_image」方法。請參閱文檔here。您也可以通過boto-users Google羣組提問。

相關問題