web-dev-qa-db-ja.com

python boto3は入力セキュリティグループを許可します

単純なpythonスクリプトをセキュリティグループに追加するスクリプトを開発しています。boto3内で使用可能な2つのメソッドの違いは何ですか? authorize_security_group_ingress(** kwargs) =および authorize_ingress(** kwargs)

説明は同じです:「セキュリティグループに1つ以上の進入ルールを追加します」

6
Tom

2つの異なるクラスは、異なるレベルの抽象化に関するものです。

  • Clientクラスは、各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) 

ここでの主な違いは、リソースオブジェクトが「応答」変数の必要性を排除し、後で使用するためにセキュリティグループを覚えておく点です。大きな違いはないように見えますが、コードがよりクリーンでオブジェクト指向になります。
詳細については、boto docs https://boto3.readthedocs.org/en/latest/guide/resources.html を参照してください。

9
Nath

2つの関数の違いは、それらが異なるクラスに属していることだけです。関数authorize_security_group_ingressEC2.Clientにあり、authorize_ingressEC2.SecurityGroupにあります。彼らは同じことをします。

1
Bazze