Listing 2. Using boto #!/usr/bin/env python # -*- coding: utf-8 -*- import time from boto import connect_ec2, connect_sns # Create private image con = connect_ec2() con.create_image("i-c1315eaf", "lj_test") # Launch/run instance(s) reserv = con.run_instances("ami-7eb54d17", min_count=2, max_count=5, key_name='laptop', instance_type="t1.micro", placement="us-east-1d", disable_api_termination=True) # Disable termination protection con.modify_instance_attribute("i-132e457d", "disableApiTermination", False) # Find running instances res_list = con.get_all_instances( filters={"image-id": "ami-7eb54d17", "instance-state-name": "running"}) # Find instance information for reservation in res_list: inst_list = reservation.instances for instance in inst_list: instance.id, instance.state # See Figure 1 for output. # Create a tag con.create_tags(["i-391c2657"], {"Name": "lj_instance"}) con.create_tags(["vol-a9590ac2"], {"Name": "lj_volume"}) # Get volume vol = con.get_all_volumes( filters={"tag:Name": "lj_volume"})[0] # Create snapshot snap = vol.create_snapshot(vol.tags["Name"]\ + "Snap") # Monitor snapshot creation and notify on completion def check_snapshot(snap): while snap.status != "completed": print "Sleeping" time.sleep(30) snap.update() g_time = time.gmtime() msg_str = "Snapshot " + snap.id + "\n" msg_str += "of volume " + snap.volume_id + "\n" msg_str += "started at time " msg_str += snap.start_time + "\n" msg_str += "completed at " msg_str += time.asctime(g_time) ARN = "arn:aws:sns:us-east-1:213825411462:Lj" sns_con = connect_sns() sns_con.publish(ARN, msg_str, "Snapshot done") print msg_str