python boto3 позволяет входные группы безопасности

Я разрабатываю простой сценарий Python для добавления правил к securitygroups, и я задаюсь вопросом, что является различием между этими двумя методами, доступными в boto3: authorize_security_group_ingress (** kwargs) и authorize_ingress (** kwargs)?

Описания являются тем же: "Добавляет одно или несколько входных правил к группе безопасности"

6
задан 16 October 2015 в 17:34
2 ответа

Два различных класса имеют разный уровень абстракции.

  • Клиентские классы являются низкоуровневыми обертками вокруг каждого действия API. т.е. классы AuthorizeSecurityGroupIngress
  • Resource являются объектно-ориентированными, вы создаете объект для представления группы и взаимодействуете с ней таким образом. Он обеспечивает более высокий уровень абстракции, который отделяет вас от отдельных вызовов 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) 

Ключевое отличие здесь в том, что объект ресурса устраняет необходимость в переменной "response" и заботится о запоминании группы безопасности для последующего использования. Это не кажется большой разницей, но делает ваш код более чистым и объектно-ориентированным
. посмотреть бото-документы: https://boto3.readthedocs.org/en/latest/guide/resources.html для более подробной информации о них.

9
ответ дан 3 December 2019 в 00:15

Единственное различие, которое я вижу между двумя функциями, состоит в том, что они принадлежат к разным классам. Функция authorize_security_group_ingress находится в EC2.Client , а authorize_ingress находится в EC2.SecurityGroup . Они делают то же самое.

1
ответ дан 3 December 2019 в 00:15

Теги

Похожие вопросы