aws-samples / aws-samples/aws-sts-network-query-tool

The whole ELB collect failed when an ELB does not have a DNSName

Open
#5 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
26
Forks
14
PR merge metrics
No merged PRs in 30d

Description

On around 600 ELBs, on more than 150 aws accounts, we have 6 ELB **without DNSName**.
This make the script crash when collecting ELB.

```
$ aws_network_query -elb
```
--> Fail after several minutes
It generate no output file at all, as the program exit on an unexpecting error, whereas it as already collected a lot of ELB configurations.

Here is the error trace :
```
Traceback (most recent call last):
File "/home/adm-coverheyde/.local/bin/aws_network_query", line 11, in
load_entry_point('aws-sts-network-query-tool==1.0.0', 'console_scripts', 'aws_network_query')()
File "/usr/local/python3/lib/python3.7/site-packages/aws_sts_network_query_tool-1.0.0-py3.7.egg/aws_network_query/app.py", line 504, in main
File "/usr/local/python3/lib/python3.7/concurrent/futures/_base.py", line 428, in result
return self.__get_result()
File "/usr/local/python3/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/usr/local/python3/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/python3/lib/python3.7/site-packages/aws_sts_network_query_tool-1.0.0-py3.7.egg/aws_network_query/app.py", line 422, in worker
File "/usr/local/python3/lib/python3.7/site-packages/aws_sts_network_query_tool-1.0.0-py3.7.egg/aws_network_query/app.py", line 390, in worker
File "/usr/local/python3/lib/python3.7/site-packages/aws_sts_network_query_tool-1.0.0-py3.7.egg/aws_network_query/app.py", line 217, in process_load_balancer
KeyError: 'DNSName'
```

To confirm the issue was coming from the **missing DNSName** attribute on ELB, I removed the collection of the DNSName (in file *aws_network_query/app.py*, line 217). The script then finish well and collect all ELB.
```
216 for item in list:
217 #dict = {'AccountId': account, 'LoadBalancerArn': item['LoadBalancerArn'], 'DNSName': item['DNSName'], 'VpcId': item['VpcId'],'Region': region}
218 dict = {'AccountId': account, 'LoadBalancerArn': item['LoadBalancerArn'], 'VpcId': item['VpcId'],'Region': region}
219 print(f'Account {account}: New Load Balancer found {dict}')
```

--> Need to add a control if DNSName is not present on ELB ?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.