aws-samples / aws-samples/aws-sts-network-query-tool
The whole ELB collect failed when an ELB does not have a DNSName
- 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
Assessment
This issue has not been assessed yet.