I’m using Boto3 of AWS to describe the security group and trying to access the FromPort key for all the security groups available in a particular region. But when I’m trying to do so it will list some of the ports and then throws the KeyError.
Code:
import boto3
client = boto3.client('ec2')
response = client.describe_security_groups()
for sg in response['SecurityGroups']:
for ip in sg['IpPermissions']:
print(ip['FromPort'])
Output:
80
5432
22
22
3622
8443
3
80
3622
8080
5432
22
8443
443
Traceback (most recent call last):
File ".a.py", line 8, in <module>
print(ip['FromPort'])
KeyError: 'FromPort'
Advertisement
Answer
Your code is assuming that the entry you are trying to print is always in the response you get back. You can make the code more robust like this:
Replace
ip['FromPort']
with
ip.get('FromPort','((missing))')