def get_instance_info(regionName, instanceTagName, instanceInfo): try: instance_response = get_client(regionName).describe_instances( Filters=[ { 'Name': 'tag:Name', 'Values': instanceTagName }, { 'Name': 'instance-state-name', 'Values': ['running'] }, ], ) if (len(instance_response['Reservations']) > 0): if (instanceInfo == 'InstanceIp'): return instance_response['Reservations'][0]['Instances'][0]['PublicIpAddress'] elif (instanceInfo == 'InstanceId'): return instance_response['Reservations'][0]['Instances'][0]['InstanceId'] else: print("Failed to get %s" % instanceInfo) except ClientError as e: print('Error', e) return
def get_image_id(regionName, imageName): image_id = get_client(regionName).describe_images( Filters=[{ 'Name': 'name', 'Values': imageName }]) return image_id['Images'][0]['ImageId']
def delete_security_group(regionName, securityGroupName): print("\nDeleting Security Group...") try: response = get_client(regionName).delete_security_group( GroupName=securityGroupName) print('Succesfully deleted %s' % (securityGroupName)) except ClientError as e: print(e)
def delete_key_pair(keyName, regionName): print("\nDeleting key...") try: keyPair = get_client(regionName).delete_key_pair(KeyName=keyName) os.remove("{0}.pem".format(keyName)) print("Succesfully deleted %s" % (keyName)) except Exception as error: print(error)
def create_image(regionName, ormTagName, imageName): print('\nCreating image...') try: instance_id = get_instance_info(regionName, [ormTagName], 'InstanceId') image_response = get_client(regionName).create_image( InstanceId=instance_id, Name=imageName) image = get_resource(regionName).Image(image_response['ImageId']) waiter = get_client(regionName).get_waiter('image_available') waiter.wait(ImageIds=[image_response["ImageId"]]) if (image.state == 'available'): print("Successfully created %s" % imageName) except ClientError as e: print('Error', e) return
def delete_image(regionName, imageName): print("\nDeleting images...") try: image_response = get_client(regionName).deregister_image( ImageId=get_image_id(regionName, imageName)) print("Succesfully deleted %s" % imageName) except ClientError as e: print('Error', e) return
def create_key_pair(keyName, regionName): print("\nCreating key...") try: keyPair = get_client(regionName).create_key_pair(KeyName=keyName) with open("{0}.pem".format(keyName), "w") as file: file.write(keyPair['KeyMaterial']) print("Succesfully created %s" % (keyName)) except Exception as error: print(error)
def create_security_group(regionName, securityGroupName, SGTagName, ipPermissions): client = get_client(regionName) vpc_id = client.describe_vpcs().get('Vpcs', [{}])[0].get('VpcId', '') print("\nCreating Security Group...") try: security_group_response = client.create_security_group( GroupName=securityGroupName, Description='Creating Security Group to test Database access', TagSpecifications=[ { 'ResourceType': 'security-group', 'Tags': [ { 'Key': 'Name', 'Value': SGTagName }, { 'Key': 'Owner', 'Value': 'Beatriz Mie' }, ], }, ], VpcId=vpc_id) security_group_id = security_group_response['GroupId'] print('Security Group %s succesfully created in %s.' % (security_group_id, vpc_id)) data = client.authorize_security_group_ingress( GroupId=security_group_id, IpPermissions=ipPermissions[0]) if (data['ResponseMetadata']['HTTPStatusCode'] == 200): print('Successfully set ip permissions!') else: print('Failed to add ip permissions') except ClientError as e: print(e) return
def create_instance(keyName, regionName, imageId, securityGroupName, instanceTagName, userData): client = get_client(regionName) print("\nCreating instance...") try: instance_response = get_resource(regionName).create_instances( InstanceType='t2.micro', ImageId=imageId, KeyName=keyName, MinCount=1, MaxCount=1, SecurityGroups=securityGroupName, TagSpecifications=[ { 'ResourceType': 'instance', 'Tags': [ { 'Key': 'Name', 'Value': instanceTagName }, { 'Key': 'Owner', 'Value': 'Beatriz Mie' }, ], }, ], UserData=userData, ) client.get_waiter('instance_status_ok').wait(InstanceIds=[instance_response[0].id]) if (client.describe_instance_status(InstanceIds=[instance_response[0].id])['InstanceStatuses'][0]['InstanceStatus']['Status'] == 'ok'): print("Succesfully created instance %s in %s" % (instance_response[0].id, regionName)) else: print("Failed creating instance :(") except ClientError as e: print(e) return
def terminate_instance(regionName, instanceTagName): client = get_client(regionName) print("\nTerminating instance...") try: instance_response = client.describe_instances( Filters=[ { 'Name': 'tag:Name', 'Values': [instanceTagName] }, { 'Name': 'instance-state-name', 'Values': ['running'] }, ], ) if (len(instance_response['Reservations']) > 0): instanceId = instance_response['Reservations'][0]['Instances'][0]['InstanceId'] instance = get_resource(regionName).Instance(instanceId) response = client.terminate_instances( InstanceIds=[ instanceId, ], ) instance.wait_until_terminated() print('Succesfully terminated instance %s' % (instanceId)) else: print("There are no instances to terminate!") except ClientError as e: print('Error', e) return
def get_security_group_id(regionName, securityGroupName): security_group_id = get_client(regionName).describe_security_groups( GroupNames=securityGroupName) return security_group_id['SecurityGroups'][0]['GroupId']