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

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

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

2 ответа

Решение

2 разных класса о разных уровнях абстракции.

  • Клиентские классы являются низкоуровневыми оболочками вокруг каждого действия 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) 

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

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

Другие вопросы по тегам