Example #1
0
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
Example #2
0
def get_image_id(regionName, imageName):

    image_id = get_client(regionName).describe_images(
        Filters=[{
            'Name': 'name',
            'Values': imageName
        }])

    return image_id['Images'][0]['ImageId']
Example #3
0
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)
Example #4
0
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)
Example #5
0
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
Example #6
0
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
Example #7
0
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)
Example #8
0
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
Example #9
0
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
Example #10
0
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
Example #11
0
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']