尝试使用Python删除未使用的AWS安全组。得到错误' ec2.ServiceResoource'对象没有属性' delete_securitygroup'

时间:2018-04-23 21:37:42

标签: python amazon-web-services amazon-ec2 boto3

以下是我的代码。我不太清楚最后一点该怎么做,我不认为这是正确的。我如何从变量" unused_sgs"中获取安全组ID列表?并将其添加到" delete_security_group"来自boto3的电话?

由于

import boto3

ec2 = boto3.resource('ec2') 

sgs = list(ec2.security_groups.all())
insts = list(ec2.instances.all())

all_sgs = set([sg.group_id for sg in sgs])
all_inst_sgs = set([sg['GroupName'] for inst in insts for sg in inst.security_groups])
unused_sgs = all_sgs - all_inst_sgs

print("Total SGs:", len(all_sgs))
print("SGS attached to instances:", len(all_inst_sgs))
print("Orphaned SGs:", len(unused_sgs))
print('Unattached SG names:', unused_sgs)

for group_id in unused_sgs:
        ec2.delete_security_group(group_id)
print("Deleted Unused Groups")

2 个答案:

答案 0 :(得分:0)

delete_security_group是一种客户端方法。

ec2 = boto3.resource('ec2') 
client = boto3.client('ec2')

....
....
for group_id in unused_sgs:
  client.delete_security_group(GroupId=group_id)

答案 1 :(得分:0)

helloV提供的答案是正确的。我不得不更新delete_security_group命令以使用客户端方法。我还必须使用kwargs让它正常工作。 谢谢你的帮助。