-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgetInstancesAndSGs.py
34 lines (31 loc) · 1.32 KB
/
getInstancesAndSGs.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/python
import boto3
import json
client = boto3.client('ec2')
instancedata = {"Instances": []}
try:
response = client.describe_instances()
for reservation in response['Reservations']:
for instance in reservation['Instances']:
instancetags = {"InstanceTags": {}}
securitygroups = {"SecurityGroup": {}}
instanceid = instance['InstanceId']
instancetags["InstanceTags"] = instance['Tags']
combined = {instanceid: {}}
combined[instanceid] = instancetags
for securityGroup in instance['SecurityGroups']:
response = client.describe_security_groups(
GroupIds=[
securityGroup["GroupId"]
],
)
sgname = response['SecurityGroups'][0]['GroupName']
currentsg = {sgname: {}}
currentsg[sgname]["SGDesc"] = response['SecurityGroups'][0]['Description']
currentsg[sgname ]["IPPermissions"] = response['SecurityGroups'][0]['IpPermissions']
securitygroups["SecurityGroup"].update(currentsg)
combined[instanceid].update(securitygroups)
instancedata["Instances"].append(combined)
print(json.dumps(instancedata, indent=2))
except Exception as E:
print(E)