Last active
December 9, 2019 18:47
-
-
Save jonathanhle/3609e33ce01291412dbc5d0955b01bed to your computer and use it in GitHub Desktop.
cheaply dump ec2 info to csv
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import boto3 | |
import csv | |
# define header row and start a row_list with the header present | |
header_row = ["account_id", "aws_region", "environment", "instance_id", "instance_name", "security_groups"] | |
row_list = [header_row] | |
regions = ["us-east-1", "us-west-2"] | |
# --------------------------------------------------------------------------------------------------------------------- | |
# DEFINE FUNCTIONS | |
# --------------------------------------------------------------------------------------------------------------------- | |
def get_ec2_sg_info(region, environment): | |
"""Get EC2 with Security Group info. | |
>>> get_ec2_sg_info(region) | |
""" | |
# Get account_id and region | |
sts_client = boto3.client("sts") | |
account_id = sts_client.get_caller_identity()["Account"] | |
aws_region = region | |
# Get EC2 info | |
ec2client = boto3.client('ec2', region_name=region) | |
response = ec2client.describe_instances() | |
for reservation in response["Reservations"]: | |
for instance in reservation["Instances"]: | |
# start an empty list to hold info | |
ec2_instance_info = [] | |
# append account_id, environment and region | |
ec2_instance_info.append(account_id) | |
ec2_instance_info.append(environment) | |
ec2_instance_info.append(aws_region) | |
# append instance_id | |
ec2_instance_info.append(instance["InstanceId"]) | |
# append instance_name | |
instancename = '' | |
for tags in instance["Tags"]: | |
# print(tags) | |
if tags["Key"] == 'Name': | |
instancename = tags["Value"] | |
ec2_instance_info.append(instancename) | |
# append security_groups | |
AttachedSecurityGroups = [] | |
for groups in instance["SecurityGroups"]: | |
AttachedSecurityGroups.append(groups["GroupName"]) | |
ec2_instance_info.append(AttachedSecurityGroups) | |
# add instance list to row list | |
row_list.append(ec2_instance_info) | |
# reset list for next instance | |
ec2_instance_info = [] | |
# --------------------------------------------------------------------------------------------------------------------- | |
# MAIN | |
# --------------------------------------------------------------------------------------------------------------------- | |
alias = boto3.client('iam').list_account_aliases()['AccountAliases'][0] | |
if "nonprod" in alias: | |
aws_environment = "nonprod" | |
elif "prod" in alias: | |
aws_environment = "prod" | |
else: | |
aws_environment = "n/a" | |
get_ec2_sg_info("us-east-1", aws_environment) | |
get_ec2_sg_info("us-west-2", aws_environment) | |
# Write CSV | |
with open('aws_ec2_and_sgs.csv', 'a', newline='') as file: | |
writer = csv.writer(file) | |
writer.writerows(row_list) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment