python boto3 允许进入安全组

python boto3 允许进入安全组

我正在开发一个简单的 python 脚本来向安全组添加规​​则,我想知道 boto3 中可用的两种方法有什么区别:授权安全组入口(**kwargs)授权入口(**kwargs)

描述是相同的:“向安全组添加一个或多个入口规则”

答案1

这两个不同的类别涉及不同的抽象层次。

  • 客户类是每个 API 操作的低级包装器。例如 AuthorizeSecurityGroupIngress
  • 资源类是面向对象的,你可以实例化一个对象来表示组并以此方式与其交互。它提供了更高级别的抽象,将你与单个 API 调用分离开来,并提供了一些持久性

为了显示差异,让我们创建一个安全组并向互联网开放端口 80。

与客户

    ec2 = boto3.client('ec2')
    response = ec2.create_security_group(GroupName='testgroup2',Description='testme')
    ec2.authorize_security_group_ingress(GroupId=response['GroupId'],IpProtocol="tcp",CidrIp="0.0.0.0/0",FromPort=80,ToPort=80)

资源:

    ec2 = boto3.resource('ec2')
    mysg = ec2.create_security_group(GroupName="testgroup",Description='testme')
    mysg.authorize_ingress(IpProtocol="tcp",CidrIp="0.0.0.0/0",FromPort=80,ToPort=80) 

这里的关键区别在于,资源对象消除了对“响应”变量的需求,并负责记住安全组以供以后使用。这似乎不是一个很大的区别,但它使你的代码更简洁、更面向对象,
请参阅 boto 文档:https://boto3.readthedocs.org/en/latest/guide/resources.html了解更多详细信息。

答案2

我能看到的两个函数之间的唯一区别是它们属于不同的类。函数authorize_security_group_ingress位于 中,EC2.Clientauthorize_ingress位于 中EC2.SecurityGroup。它们执行相同的操作。

相关内容