2015-05-30 30 views
2

我一直在阅读Pyboto documentation,虽然我知道如何添加基于IP的规则到安全组,我一直没能找到一个方法删除一个基于IP的规则。安全组对象上的remove_rule方法不会更新ec2实例上的安全组,因此我不确定这会对我有帮助。Pyboto:删除基于IP的规则从安全组

以前有没有人做过这个?

回答

2

a SecurityGroup boto中的对象有两个重要的方法; authorizerevoke。向组添加和删除规则的最简单方法是使用这些方法。因此,添加基于IP的规则:

import boto.ec2 
conn = boto.ec2.connect_to_region('us-west-2') # or whatever region you want 
sg = conn.get_all_security_groups('my_security_group')[0] 
sg.authorize('tcp', 22, 22, cidr_ip='0.0.0.0/0') 

这将为所有主机授权端口22。撤销该规则(您应该!):

sg.revoke('tcp', 22, 22, cidr_ip='0.0.0.0/0') 

它的参数相同。

+0

谢谢 - 我如何返回一个安全组的基于IP的规则列表? – user1658296

+1

您无法获取仅基于IP的规则列表,但您可以使用SecurityGroup对象的rules属性获取安全组的所有规则列表。此列表中的每个对象都会有一个“授予”属性,该属性是与该规则关联的显式授权列表。如果该对象对于属性“cidr_ip”具有非非值,则它是基于IP的规则。 – garnaat