'NoneType' 对象没有属性 'get_all_security_groups'

'NoneType' object has no attribute 'get_all_security_groups'

我有点卡在这里了。

    .
regions = ['us-west-2','eu-central-1','ap-southeast-1']  ##Prod VPC
data = []
header = ["Port","Open For","Security group","Instance Details"]

for region in regions:
    connection=ec2.connect_to_region(region)
    print connection
    sg=connection.get_all_security_groups()
    print sg
    try:
        for securityGroup in sg:
           for rule in securityGroup.rules:
               if '0.0.0.0/0' in str(rule.grants):
                  for instanceid in securityGroup.instances():
                      instanceId=str(instanceid)
                     # print instanceId
                      tag = getTag(connection, instanceId.split(':')[1])
                      if tag is not None:
                        # print tab              
                         tab =[str(rule.to_port),"0.0.0.0/0",str(securityGroup.name),str(getTag(connection, instanceId.split(':')[1]))]
                         data.append(tab)
    except Exception,e:
        pass

结果如下

    EC2Connection:ec2.us-west-2.amazonaws.com
    [SecurityGroup: too many sec groups here.........]
None
Traceback (most recent call last):
  File "aws_sec_scan.py", line 29, in <module>
    sg=connection.get_all_security_groups()
AttributeError: 'NoneType' object has no attribute 'get_all_security_groups'

为什么我会收到 "None"?

这是因为连接是 None 并且您正在尝试从 None 值

调用函数
sg=connection.get_all_security_groups()

因此请检查连接是否正确。

分解堆栈跟踪:

第一次迭代中,你有connection,因此没有错误:

EC2Connection:ec2.us-west-2.amazonaws.com # this is your connection
[SecurityGroup: too many sec groups here.........] # this being the security groups

第二次迭代中

None # this prints the connection you obtained for that 'region'

所以现在如果你使用 sg=connection.get_all_security_groups() 你会得到以下错误,因为 connectionNone:

Traceback (most recent call last):
  File "aws_sec_scan.py", line 29, in <module>
    sg=connection.get_all_security_groups()
AttributeError: 'NoneType' object has no attribute 'get_all_security_groups'