如何使用Python boto判断AWS弹性网络接口(ENI)是否具有公共IP地址



我正在审计安全组,现在我的任务是找到没有公共IP地址的eni,并且入站安全组规则引用公共IP地址。

我有迭代eni的代码,并查看附加到每个安全组,我希望回收它。下面是代码:

used_sgs = {}
enis = ec2_conn.get_all_network_interfaces()
for eni in enis:
    eni_sgs = eni.groups
    for sg in eni_sgs:
        sgn = sg.name
        if sgn not in used_sgs:
           used_sgs[sgn] = 0
        used_sgs[sgn]+=1

是否有一个属性,我可以嗅探,看看是否一个ENI有一个公共IP?或者我必须采取其他路线(迭代实例,或抓取ENI附件,或其他东西)?

eni.publicIp

不是所有的enis都有publicIp。检查publicIp属性是否存在然后获取值

for eni in enis:
  if hasattr(eni, 'publicIp') and eni.publicIp:
    print eni.id, eni.publicIp

最新更新