agent: |
oqRPhDo262rV0rQ4Q0BLList and release all Elastic IPs in all regions
List and release all Elastic IPs in all regions
There was a problem that the LLM was not able to address. Please rephrase your prompt and try again.
This task is a combination of listing all Elastic IPs and releasing them if they are not associated with any instance all the while looping through all the regions.
Note:- Even though the script is a one time stop for finding unattached Elastic IPs in all regions it takes relatively higher time to complete the process than the script focused on specified regions as it loops through all the regions.
inputs
outputs
import boto3
creds = _get_creds(cred_label)['creds']
access_key = creds['username']
secret_key = creds['password']
# Create an EC2 client instance
ec2 = boto3.client("ec2",aws_access_key_id=access_key,aws_secret_access_key=secret_key, region_name='us-east-1')
# Dictionary to store unused Elastic IPs with their allocation IDs and regions
unused_ips = {}
#Loop through all regions
for region in ec2.describe_regions()["Regions"]:
region_name = region["RegionName"]
try:
# Create an EC2 client for the specific region
ec2conn = boto3.client("ec2",aws_access_key_id=access_key,aws_secret_access_key=secret_key, region_name=region_name)
# Retrieve all addresses (Elastic IPs)
addresses = ec2conn.describe_addresses(
Filters=[{"Name": "domain", "Values": ["vpc"]}]
)["Addresses"]
# Iterate through each address
for address in addresses:
# Check if the address is not associated with any instance
if (
"AssociationId" not in address
and address["AllocationId"] not in unused_ips
):
# Store the unused Elastic IP's allocation ID and region
unused_ips[address["AllocationId"]] = region_name
# Release the unused Elastic IP
ec2conn.release_address(AllocationId=address["AllocationId"])
print(
f"Deleted unused Elastic IP {address['PublicIp']} in region {region_name}"
)
except Exception as e:
# Handle cases where there's no access to a specific region
print(f"No access to region {region_name}: {e}")
# Print the summary of deleted unused Elastic IPs
print(f"Found and deleted {len(unused_ips)} unused Elastic IPs across all regions:")
print(unused_ips)
copied