mkr*_*der 2 python amazon-ec2 boto amazon-web-services boto3
我正在使用 boto3,我需要列出所有弹性 IP,找到与任何实例无关的 IP 并释放它们。
我正在做的是:
import boto3
ec2 = boto3.resource('ec2')
Run Code Online (Sandbox Code Playgroud)
然后我可以这样列出所有卷:
for volume in ec2.volumes.all():
Run Code Online (Sandbox Code Playgroud)
或者像这样的所有实例:
for instance in ec2.instances.all():
Run Code Online (Sandbox Code Playgroud)
但我不知道如何列出所有弹性 IP。
boto3 文档列出了对象 ClassicAddress,这是我释放 IP 所需要的。
http://boto3.readthedocs.io/en/latest/reference/services/ec2.html#classicaddress
但是,我不知道如何获取所有 ClassicAddresses 的集合
小智 7
我们可以检查 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'])
Run Code Online (Sandbox Code Playgroud)
无论 EIP 是关联到 NAT 还是 EC2,它都会附加一个网络接口,尽管当附加到 NAT 时它没有 InstanceId。
| 归档时间: |
|
| 查看次数: |
3513 次 |
| 最近记录: |