6 votes

Python boto3 allow ingress security groups

Je suis en train de développer un simple Python script pour ajouter des règles aux groupes de sécurité, et je me demande quelle est la différence entre les deux méthodes disponibles dans boto3 : autoriser_groupe_de_sécurité_ressort(**kwargs) y autoriser_ressort(**kwargs) ?

Les descriptions sont les mêmes : "Ajoute une ou plusieurs règles d'entrée à un groupe de sécurité".

11voto

Nath Points 1272

Les deux classes différentes concernent des niveaux d'abstraction différents.

  • Client sont des enveloppes de bas niveau autour de chaque action de l'API, par exemple AuthorizeSecurityGroupIngress.
  • Ressources Les classes sont orientées objet, vous instanciez un objet pour représenter le groupe et interagir avec lui de cette manière. Elles fournissent un niveau d'abstraction plus élevé qui vous découple des appels API individuels et fournit une certaine persistance.

Pour montrer la différence, créons un groupe de sécurité et ouvrons le port 80 à l'Internet.

avec le client

    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)

avec ressource :

    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) 

La principale différence ici est que l'objet ressource élimine le besoin d'une variable "réponse" et se charge de mémoriser le groupe de sécurité pour une utilisation ultérieure. Cela ne semble pas être une grande différence mais cela rend votre code plus propre et plus orienté objet.
voir les docs boto : https://boto3.readthedocs.org/en/latest/guide/resources.html pour plus de détails à leur sujet.

1voto

tofa Points 21

La seule différence que je vois entre les deux fonctions est qu'elles appartiennent à des classes différentes. La fonction authorize_security_group_ingress réside à EC2.Client y authorize_ingress réside à EC2.SecurityGroup . Ils font la même chose.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X