我正在编写一个Python脚本,以使用Boto3从ELBv2端点获取LoadBalancerName
值。
因为返回了?dict?有多个级别,我不知道这些项目的索引,因此无法指定。我当前的代码如下:-
import boto3
import pprint
import json
pp = pprint.PrettyPrinter(indent=4)
elbv2 = boto3.client('elbv2', region_name='eu-west-2')
response = elbv2.describe_load_balancers()
pp.pprint(response['LoadBalancers'][0]['LoadBalancerName'])
for k in response:
print("Key: ", k)
print( "Value: ", dict[k])
我知道该值当前正在打印密钥,因为我不确定如何嵌套获取密钥。理想情况下,我希望能够打印子键LoadBalancerName
此外,我正在此上使用Python 2.7,因为这是将在运行此命令的服务器上安装的内容。
答案 0 :(得分:1)
有一个describe_load_balancers()
响应正文的示例,请参见THIS。
响应语法
{
'LoadBalancerDescriptions': [
{
'LoadBalancerName': 'string',
'DNSName': 'string',
'CanonicalHostedZoneName': 'string',
'CanonicalHostedZoneNameID': 'string',
'ListenerDescriptions': [
{
'Listener': {
'Protocol': 'string',
'LoadBalancerPort': 123,
'InstanceProtocol': 'string',
'InstancePort': 123,
'SSLCertificateId': 'string'
},
'PolicyNames': [
'string',
]
},
],
'Policies': {
'AppCookieStickinessPolicies': [
{
'PolicyName': 'string',
'CookieName': 'string'
},
],
'LBCookieStickinessPolicies': [
{
'PolicyName': 'string',
'CookieExpirationPeriod': 123
},
],
'OtherPolicies': [
'string',
]
},
'BackendServerDescriptions': [
{
'InstancePort': 123,
'PolicyNames': [
'string',
]
},
],
'AvailabilityZones': [
'string',
],
'Subnets': [
'string',
],
'VPCId': 'string',
'Instances': [
{
'InstanceId': 'string'
},
],
'HealthCheck': {
'Target': 'string',
'Interval': 123,
'Timeout': 123,
'UnhealthyThreshold': 123,
'HealthyThreshold': 123
},
'SourceSecurityGroup': {
'OwnerAlias': 'string',
'GroupName': 'string'
},
'SecurityGroups': [
'string',
],
'CreatedTime': datetime(2015, 1, 1),
'Scheme': 'string'
},
],
'NextMarker': 'string'
}
如果要获取所有负载均衡器的名称,则
response = client.describe_load_balancers()
for item in response['LoadBalancerDescriptions']:
print(item['LoadBalancerName'])
会给你名字。