Python boto3列出AWS帐户的所有安全组

Python boto3列出AWS帐户的所有安全组,python,amazon-web-services,boto3,Python,Amazon Web Services,Boto3,有没有办法列出所有使用boto3的AWS安全组 使用此代码,我只能得到5个组(区域中25个组中的5个) 我有4个VPC,因此我尝试为每个VPC获取组,并将此添加为筛选器: Filters=[ { 'Name': 'vpc-id', 'Values': [ 'vpc-d60ee9b1', ] }, ], 但结果我得到了: {u'SecurityGroup

有没有办法列出所有使用boto3的AWS安全组

使用此代码,我只能得到5个组(区域中25个组中的5个)

我有4个VPC,因此我尝试为每个VPC获取组,并将此添加为筛选器:

Filters=[
        {
            'Name': 'vpc-id',
            'Values': [
                'vpc-d60ee9b1',
            ]
        },
    ],
但结果我得到了:

{u'SecurityGroups': [], 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': '44f39633-4f21-4c4f-b3f4-82fbce538c5f', 'HTTPHeaders': {'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding', 'server': 'AmazonEC2', 'content-type': 'text/xml;charset=UTF-8', 'date': 'Thu, 03 May 2018 08:25:03 GMT'}}}
尝试按区域进行筛选并获得:
筛选器“区域”无效

但是,在AWS CLI中,它可以工作:

aws ec2 describe-security-groups --region $REGION

这是否意味着我需要坚持使用AWS CLI,或者boto3具有列出AWS帐户的所有安全组的语法?

您可能正在描述不同区域中的资源。这是事情没有出现的常见原因

可以按如下方式设置区域:

ec2 = boto3.client('ec2', region_name='us-west-2')

理想情况下,descripe_security_groups()boto3调用返回该区域中的所有安全组。但是,如果设置MaxResults,它将返回该数量的结果。此值可以介于5和1000之间。你能确认这是没有被设置的吗。您可以定义一个记录器来打印来自boto3调用的调试日志,以确定是否设置了该日志。另一种检查方法是,如果响应包含
NextToken
key.MaxResults,则如何打印调试日志?要打印调试日志,请添加以下行:
boto3.set\u stream\u logger('botocore',logging.debug)
。检查日志中的以下行:2018-05-03 10:33:50683 botocore.endpoint[DEBUG]使用参数{'body':{'Action':u'descripesecuritygroup','Version':u'2016-11-15','MaxResults':5},'url','headers':{'Content-Type':'application/x-www-form-urlencoded;charset=utf-8','User-Agent':'Boto3/1.7.0 Python/2.7.10 Darwin/17.5.0 Botocore/1.10.2'},'context':{'auth_-Type'使用Boto3的descripe_security_groups()时,我可以看到所有安全组方法,并且它们与awscli的结果相匹配。请确保您拥有最新的boto3/botocore库,并且在这两种情况下您实际上都在查询相同的帐户/区域。@jarmod,boto3的问题是不知道如何指定区域?
ec2 = boto3.client('ec2', region_name='us-west-2')