我正在使用boto3,我需要列出所有的弹性I,找到那些与任何实例无关的,并释放它们。
我所做的是:
import boto3
ec2 = boto3.resource('ec2')然后我可以列出所有的书如下:
for volume in ec2.volumes.all():或者像这样的所有例子:
for instance in ec2.instances.all():但我不知道怎么列出所有有弹性的I。
boto3文档列出了ClassicAddress对象,为了释放IP,我需要这个对象。
http://boto3.readthedocs.io/en/latest/reference/services/ec2.html#classicaddress
但是,我不知道如何获得所有ClassicAddresses的集合
发布于 2016-08-03 19:33:28
我让它处理这个代码:
def elastic_ips_cleanup():
""" Cleanup elastic IPs that are not being used """
client = boto3.client('ec2')
addresses_dict = client.describe_addresses()
for eip_dict in addresses_dict['Addresses']:
if "InstanceId" not in eip_dict:
print (eip_dict['PublicIp'] +
" doesn't have any instances associated, releasing")
client.release_address(AllocationId=eip_dict['AllocationId'])发布于 2017-09-16 06:18:04
我们只需检查EIP是否有与其相关联的eni。这样,它将克服EIP与NAT或EC2相关联的问题。
只需使用mkreder的代码并进行小的更改来检查NetworkInterfaceId,而不是InstanceId
import boto3
client = boto3.client('ec2')
addresses_dict = client.describe_addresses()
for eip_dict in addresses_dict['Addresses']:
if "NetworkInterfaceId" not in eip_dict:
print(eip_dict['PublicIp'])
client.release_address(AllocationId=eip_dict['AllocationId'])无论EIP与NAT或EC2相关联,它都会有一个网络接口,尽管当它连接到NAT时,它没有一个InstanceId。
发布于 2018-04-24 14:08:15
已使用:
if "InstanceId" not in eip_dict:
if "NetworkInterfaceId" not in eip_dict:https://stackoverflow.com/questions/38749484
复制相似问题