如何在Python boto中判断我的AWS账户是否“拥有”某个IP地址

1 投票
2 回答
2139 浏览
提问于 2025-04-28 20:39

我有一份公共IP地址的列表,我想看看这些IP地址是否和我们的账户有关联。我知道可以把每个IP地址粘贴到AWS EC2控制台的搜索框里。不过,我想通过一个Python程序来自动化这个过程。

有人告诉我,控制台里能做的事情,命令行或程序也能做到,但我该用哪个功能来判断一个IP地址是否是和我们账户关联的公共IP呢?

我明白可能需要进行两次搜索,一次是查找实例(这可以找到非弹性IP的公共IP),另一次是查找弹性IP(这可以找到我们仍然拥有但未关联的弹性IP)。

但是,具体该怎么做呢?

暂无标签

2 个回答

0

这是我想到的方法:

用来查找所有的IP,看看它们是否是和我们AWS账号关联的弹性IP(EIP)

  1. 先获取我们所有的弹性IP的列表
  2. 再获取所有实例的列表
  3. 列出所有实例的公网IP
  4. 把这些列表合并在一起,或者用同一个列表
  5. 最后检查想要的IP是否在这个列表里。

欢迎大家留言讨论。

2

使用boto库时,第一步你需要做的是调用 connect_to_region,这样才能连接到你想要的AWS区域。(如果你在多个区域都有实例,那你就得一个一个区域地连接过去。)

连接到区域后,你需要调用 get_only_instances,这个方法会返回一个实例对象的列表。你可以查看这些对象,找到ip_address字段,这里显示的是实例的公网IP(如果想要私网IP,就看private_ip_address字段)。

接下来,你需要调用 get_all_addresses,这样可以获取一个弹性IP(Elastic IP)的列表。同样,你需要遍历这些EIP对象,查看public_ip字段。如果你想知道某个EIP是关联到哪个实例的(如果有的话),可以通过instance_id字段来找到。

撰写回答