我正在开发一个简单的python脚本来向安全组添加规则,我想知道在boto3: authorize_security_group_ingress(** kwargs)和authorize_ingress(** kwargs)中可用的两个方法之间有什么区别?
描述相同:“将一个或多个入口规则添加到安全组”
这两个不同的类是关于不同的抽象层次的。
为了显示不同之处,可以创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.Client , authorize_ingress驻留在EC2.SecurityGroup 。 他们做同样的事情。