agent: |
ZN1jsWHIgLRDLexfM06TDetach and Delete AWS EBS Volumes
Detach and Delete AWS EBS Volumes
There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.
This task involves the removal of Elastic Block Store (EBS) volumes from their associated instances followed by the deletion of these volumes. In this particular task detachment and deletion of EBS volumes is related to stopped EC2 instances. It is executed to free up storage resources, enhance resource allocation efficiency, and optimize costs within the AWS infrastructure.
inputs
outputs
import boto3
import time
creds = _get_creds(cred_label)['creds']
access_key = creds['username']
secret_key = creds['password']
def detach_and_delete_ebs_volumes(ec2_client, instance_volume_map):
"""
Detaches and deletes EBS volumes attached to instances.
Args:
ec2_client (boto3.client): An EC2 client instance.
instance_volume_map (dict): Dictionary with instance IDs as keys and associated volume IDs as values.
"""
try:
for instance_id, volume_ids in instance_volume_map.items():
for volume_id in volume_ids:
ec2_client.detach_volume(InstanceId=instance_id, VolumeId=volume_id, Force=True)
print(f"Detached EBS volume {volume_id} from instance {instance_id}")
time.sleep(5) # Wait for a few seconds to ensure detachment is complete otherwise there is a VolumeInUse error
try:
ec2_client.delete_volume(VolumeId=volume_id)
print(f"Deleted EBS volume {volume_id}")
except Exception as e:
print(f"Error in deleting EBS volume {volume_id}: {e}")
except Exception as e:
print(f"Error in detaching and deleting EBS volumes: {e}")
#regions = ["us-east-1"] # Add your desired regions here
for region in regions:
# Create an EC2 client instance for the region
ec2_client = boto3.client("ec2", aws_access_key_id=access_key,aws_secret_access_key=secret_key,region_name=region)
if not instance_volume_map:
print(f"No volumes attached to stopped instances found in region {region}")
else:
# Detach and delete the identified EBS volumes
detach_and_delete_ebs_volumes(ec2_client, instance_volume_map)
copied