#!/usr/bin/env python2 # Detaches an EBS volume from an instance to which it's attached. # # Usage: detach-volume.py <instance-id> <volume-id> import sys import boto3 import awslib ec2 = boto3.resource('ec2') client = boto3.client('ec2') instanceId = sys.argv[1] instances = ec2.instances.filter(InstanceIds=[instanceId]) instance = list(instances)[0] # Detach the index EBS volume from the instance. volumeId = sys.argv[2] instance.detach_volume(VolumeId=volumeId) awslib.await_volume(client, volumeId, 'in-use', 'available')
# Detaches an EBS volume from an instance to which it's attached. # # Usage: detach-volume.py <instance-id> <volume-id> import sys import boto3 import awslib ec2 = boto3.resource('ec2') client = boto3.client('ec2') instanceId = sys.argv[1] instances = ec2.instances.filter(InstanceIds=[instanceId]) instance = list(instances)[0] # Detach the index EBS volume from the instance. volumeId = sys.argv[2] instance.detach_volume(VolumeId=volumeId) awslib.await_volume(client, volumeId, 'in-use', 'available')
sudo -i -u ubuntu mozsearch/infrastructure/aws/web-serve.sh config "{config_input}" "{volume_id}" '''.format(branch=branch, channel=channel, mozsearch_repo=mozsearch_repo, config_repo=config_repo, config_input=config_input, volume_id=volumeId) volumes = ec2.describe_volumes(VolumeIds=[volumeId]) availability_zone = volumes['Volumes'][0]['AvailabilityZone'] if volumes['Volumes'][0]['Attachments']: attachment = volumes['Volumes'][0]['Attachments'] if attachment['State'] == 'attached': instance.detach_volume(VolumeId=volumeId) awslib.await_volume(ec2, volumeId, 'in-use', 'available') # - Start the web server instance, tag it as a web server print('Starting web server instance...') images = ec2.describe_images(Filters=[{ 'Name': 'name', 'Values': ['web-server-18.04'] }]) image_id = images['Images'][0]['ImageId'] r = ec2.run_instances( ImageId=image_id, MinCount=1, MaxCount=1,
#!/usr/bin/env python2 # Deletes the specified EBS volume. If it is in use by an # instance, we wait until it is detached and in the 'available' # state before deleting it. # # Usage: delete-volume.py <volume-id> import sys import boto3 import awslib ec2 = boto3.client('ec2') volumeId = sys.argv[1] volume = ec2.describe_volumes(VolumeIds=[volumeId])['Volumes'][0] if volume['State'] != 'available': print("Volume is in state %s, waiting for it to go into state available..." % volume['State']) awslib.await_volume(ec2, volumeId, volume['State'], 'available') ec2.delete_volume(VolumeId=volumeId) print("Volume %s deleted" % volumeId)