我正在尝试列出在AWS账户中分配给ELB的所有安全组。这就是我现在所在的位置:
ec2 = boto3.client('ec2')
region_list = [region['RegionName'] for region in ec2.describe_regions()['Regions']]
for region in region_list:
elb_client = boto3.client('elbv2', region_name=region)
elbs = elb_client.describe_load_balancers()
for elb in elbs['LoadBalancers']:
print(elb['SecurityGroups']
但是我得到了:
print(elb ['SecurityGroups']) KeyError:“ SecurityGroups”
考虑到我知道密钥存在,这很奇怪: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/elbv2.html#ElasticLoadBalancingv2.Client.describe_load_balancers
如果我将密钥更改为 LoadBalancerArn ,它可以正常工作。要考虑的一件事是,LoadBalancerArn返回单个字符串,而SecurityGroups是一个嵌套列表,但是如果这是问题的话,我想我会遇到另一种错误。
有人可以帮我吗?
解决方案: 由于某些ELB未分配给SG,因此初始代码无效。下面的关键检查可解决此问题。
for elb in elbs['LoadBalancers']:
try:
value = elb['SecurityGroups']
print(elb['SecurityGroups'])
except KeyError:
# Key is not present
pass