使用 Boto3 修改给定 EC2 安全组的规则

Modifying rules for a given EC2 security group with Boto3

我最近一直致力于以编程方式向我的 EC2 服务器上的安全组添加和删除入口规则。但是,我现在似乎有点碰壁了。

我希望能够通过 python 脚本修改现有规则,但我无法在 Boto3 文档中找到任何指导。

有什么方法可以做到这一点吗?

谢谢

Boto3:SecurityGroup

SG中没有API修改规则。您必须先撤销规则,然后使用授权添加具有修改后参数的规则。 link 也有代码片段。

  • authorize_egress()
  • authorize_ingress()
  • revoke_egress()
  • revoke_ingress()

好像没有办法修改安全组规则。你必须删除旧的:

security_group.revoke_ingress(IpProtocol="tcp", CidrIp="0.0.0.0/0", FromPort=3306, ToPort=3306)

并添加新的:

security_group.authorize_ingress(IpProtocol="tcp",CidrIp="0.0.0.0/0",FromPort=3306,ToPort=3306)

希望对您有所帮助。

AWS 添加了新的 API(modify_security_group_rules),其中可以修改安全组规则。以下代码供参考:

client = boto3.client('ec2')
sg_rules_list = [{'SecurityGroupRuleId': 'sgr-07de36a0521f39c8b',
                  'SecurityGroupRule': {
                      'IpProtocol': 'tcp',
                      'FromPort': 22,
                      'ToPort': 22,
                      'CidrIpv4': '3.3.3.3/32',
                      'Description': 'added ssh port'
                  }
                  }
                 ]
response = client.modify_security_group_rules(GroupId='sg-00f3b9232325b20fb',
                                              SecurityGroupRules=sg_rules_list)

AWS 博客上的更多详细信息:Easily Manage Security Group Rules with the New Security Group Rule ID