in Back-End/lambdas/receive_sqs_message.py [0:0]
def get_all_network_interfaces(account_number, region, cross_account_role):
# Init
var_list = []
# Use boto3 on source account
client_ec2 = create_boto_client(
account_number, region, 'ec2', cross_account_role)
retrieved_subnets = {}
def get_subnet(subnet_id):
try:
if subnet_id and subnet_id not in retrieved_subnets:
retrieved_subnets[subnet_id] = client_ec2.describe_subnets(SubnetIds=[subnet_id])['Subnets'][0]
return retrieved_subnets[subnet_id]
except:
print(f"Unable to call describe_subnets for {subnet_id}")
return {}
# Page all vpc's
paginator = client_ec2.get_paginator('describe_network_interfaces')
for page in paginator.paginate():
for i in page['NetworkInterfaces']:
subnet = get_subnet(i.get('SubnetId'))
for ip in i.get('PrivateIpAddresses', []):
var_list.append({
'EntryType': 'network-interfaces',
'Id': f"{i.get('NetworkInterfaceId')}-{ip['PrivateIpAddress']}",
'NetworkInterfaceId': str(i.get('NetworkInterfaceId')),
'AccountNumber': str(account_number),
'Region': str(region),
'PrivateIpAddress': ip.get('PrivateIpAddress', ' '),
'PublicIp': ip.get('Association', {}).get('PublicIp', ' '),
'Primary': str(ip.get('Primary', ' ')),
'Status': str(i.get('Status', ' ')),
'Link': str(f"https://{region}.console.aws.amazon.com/ec2/v2/home?region={region}#NIC:sort=networkInterfaceId"),
'AttStatus': str(i.get('Attachment', {}).get('Status', ' ')),
'InterfaceType': str(i.get('InterfaceType', ' ')),
'SubnetId': str(i.get('SubnetId', ' ')),
'VpcId': str(i.get('VpcId', ' ')),
'CidrBlock': str(subnet.get('CidrBlock', ' ')),
'Tags': str(i.get('TagSet', 'No Tags Exist')),
'Description': str(i.get('Description', ' '))
})
return var_list