Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python KeyError:';负载平衡器地址';_Python_Boto3_Aws Elb - Fatal编程技术网

Python KeyError:';负载平衡器地址';

Python KeyError:';负载平衡器地址';,python,boto3,aws-elb,Python,Boto3,Aws Elb,我一直在使用BOTO 3来描述帐户中所有可用的负载平衡器。我使用了以下代码片段: 'elbv2=boto3.client('elbv2',aws\u access\u key\u id=access\u key\u id,aws\u secret\u access\u key=secret\u key,region\u name=region) response=elbv2.描述负载均衡器() 打印(答复) 此处的响应存储包含所有信息的dict,如下所示: { 'LoadBalance

我一直在使用BOTO 3来描述帐户中所有可用的负载平衡器。我使用了以下代码片段:

'elbv2=boto3.client('elbv2',aws\u access\u key\u id=access\u key\u id,aws\u secret\u access\u key=secret\u key,region\u name=region)
response=elbv2.描述负载均衡器()
打印(答复)
此处的响应存储包含所有信息的
dict
,如下所示:

{
    'LoadBalancers': [{
        'LoadBalancerArn': 'arn:aws:elasticloadbalancing:ap-south-1:407203256002:loadbalancer/net/aws-lb-02/9d4b15bfd6f579d3',
        'DNSName': 'aws-lb-02-9d4b15bfd6f579d3.elb.ap-south-1.amazonaws.com',
        'CanonicalHostedZoneId': 'ZVDDRBQ08TROA',
        'CreatedTime': datetime.datetime(2021, 3, 31, 11, 45, 6, 729000, tzinfo = tzutc()),
        'LoadBalancerName': 'aws-lb-02',
        'Scheme': 'internet-facing',
        'VpcId': 'vpc-0be01860',
        'State': {
            'Code': 'active'
        },
        'Type': 'network',
        'AvailabilityZones': [{
            'ZoneName': 'ap-south-1a',
            'SubnetId': 'subnet-ed5fb986',
            'LoadBalancerAddresses': []
        }, {
            'ZoneName': 'ap-south-1b',
            'SubnetId': 'subnet-89d285c5',
            'LoadBalancerAddresses': []
        }]]}"'
我想访问
LoadBalancerAddress
,我这样尝试:

LoadBalancers=response['LoadBalancers']
对于负载平衡器中的i:
AvailabilityZones=i['AvailabilityZones']
对于可用区中的j:
LoadBalancerAddresses=i['LoadBalancerAddresses']
但是,它抛出了一个错误,表示
LoadBalancerAddresses
有一个关键字错误,我无法理解。
请帮助我如何访问变量。

您将
j['LoadBalancerAddresses']
误键入为
I['LoadBalancerAddresses']
。由于在
响应['LoadBalancers']
的正下方没有名为
LoadBalancerAddresses
的键,因此您的程序会抛出一个
键错误

固定版本:

LoadBalancers=response['LoadBalancers']
对于负载平衡器中的i:
AvailabilityZones=i['AvailabilityZones']
对于可用区中的j:
LoadBalancerAddresses=j['LoadBalancerAddresses']
作为一种安全选项,最好在访问密钥之前检查密钥是否存在,例如:

可用区中j的
:
如果j中有“LoadBalancerAddresses”:
LoadBalancerAddresses=j['LoadBalancerAddresses']
其他:
打印(“密钥不存在”)

您将
j['LoadBalancerAddresses']
误键入为
i['LoadBalancerAddresses']
。由于在
响应['LoadBalancers']
的正下方没有名为
LoadBalancerAddresses
的键,因此您的程序会抛出一个
键错误

固定版本:

LoadBalancers=response['LoadBalancers']
对于负载平衡器中的i:
AvailabilityZones=i['AvailabilityZones']
对于可用区中的j:
LoadBalancerAddresses=j['LoadBalancerAddresses']
作为一种安全选项,最好在访问密钥之前检查密钥是否存在,例如:

可用区中j的
:
如果j中有“LoadBalancerAddresses”:
LoadBalancerAddresses=j['LoadBalancerAddresses']
其他:
打印(“密钥不存在”)

您可以在此处使用嵌套列表理解,如下所示:

addresses = [x['LoadBalancerAddresses'] for res in aaa['LoadBalancers'] for x in res['AvailabilityZones']]
或使用序号嵌套列表:

addresses = []
for bal in aaa['LoadBalancers']:
    for zones in bal['AvailabilityZones']:
        addresses += zones['LoadBalancerAddresses']

您可以在此处使用嵌套列表理解,如下所示:

addresses = [x['LoadBalancerAddresses'] for res in aaa['LoadBalancers'] for x in res['AvailabilityZones']]
或使用序号嵌套列表:

addresses = []
for bal in aaa['LoadBalancers']:
    for zones in bal['AvailabilityZones']:
        addresses += zones['LoadBalancerAddresses']

当程序在dict对象中找不到键时,会发生
keyrerror
。请检查您的所有响应中是否都有
LoadBalancerAddresses
。当程序在dict对象中找不到密钥时,会发生
KeyError
。请检查您的所有回复中是否包含
LoadBalancer地址。