python boto3允许入口安全组

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

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

这两个不同的类是关于不同的抽象层次的。

  • 客户端类是每个API操作周围的低级包装器。 即。 AuthorizeSecurityGroupIngress
  • 资源类是面向对象的,你实例化一个对象来表示组,并以这种方式进行交互。 它提供了更高层次的抽象,将您从单个API调用中分离出来并提供一些持久性

为了显示不同之处,可以创build一个安全组,并打开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) 

这里的关键区别在于,资源对象消除了对“响应”variables的需要,并且需要记住安全组以供以后使用。 它看起来没有什么太大的差别,但它使您的代码更清洁,更面向对象
看到博托文件: https ://boto3.readthedocs.org/en/latest/guide/resources.html更详细的信息。

这两个函数之间唯一的区别就是他们属于不同的类。 authorize_security_group_ingress函数驻留在EC2.Clientauthorize_ingress驻留在EC2.SecurityGroup 。 他们做同样的事情。