Collection of cool things I learnt today.
Copy Ec2 Amis
Today I learned how to copy aws EC2 amis between regions usin aws CLI. aws ec2 copy-image --name "{}" --source-image-id "{}" --source-region "{}" --region "{}" --name is for the name of the ami in the new region, and --region is for the destination region. I used it to migrate a bunch of amis from a region to another from subprocess import Popen, PIPE import json import mysql.connector def kebab(name): return name.lower().replace('_', '-').replace(' ', '-') mydb = mysql.connector.connect( host="localhost", user="user", passwd="password", database="database" ) c = mydb.cursor() c2 = mydb.cursor() c.execute("SELECT * FROM aws_images") results = c.fetchall() for i, result in enumerate(results): name = kebab(result[2]) if result[2] else "unnamed-{}".format(i) ami = result[8] try: cmd = 'aws ec2 copy-image --name "{}" --source-image-id "{}" --source-region "us-east-2" --region "eu-west-1"'.format(name, ami) stream = json.loads(Popen(cmd, shell=True, stdout=PIPE).stdout.read()) new_img = stream['ImageId'] cmd = 'UPDATE aws_images SET ami_id="{}" WHERE id={}'.format(new_img, result[0]) c2.execute(cmd) print("changed {} with {}\n{}".format(ami, new_img,'-'*15)) except Exception as e: print(e) continue mydb.commit()