in source/cdk/mysiem/aes_siem_stack.py [0:0]
def validate_cdk_json(context):
print('\ncdk.json validation for vpc configuration is starting...\n')
vpc_type = context.node.try_get_context("vpc_type")
if vpc_type == 'new':
print('vpc_type:\t\t\tnew')
return True
elif vpc_type == 'import':
print('vpc_type:\t\t\timport')
else:
raise Exception('vpc_type is invalid. You can use "new" or "import". '
'Exit. Fix and Try again')
vpcid = context.node.try_get_context("imported_vpc_id")
vpc_client = ec2_resource.Vpc(vpcid)
print('checking vpc...')
vpc_client.state
print(f'checking vpc id...:\t\t{vpcid}')
is_dns_support = vpc_client.describe_attribute(
Attribute='enableDnsSupport')['EnableDnsSupport']['Value']
print(f'checking dns support...:\t{is_dns_support}')
is_dns_hotname = vpc_client.describe_attribute(
Attribute='enableDnsHostnames')['EnableDnsHostnames']['Value']
print(f'checking dns hostname...:\t{is_dns_hotname}')
if not is_dns_support or not is_dns_hotname:
raise Exception('enable DNS Hostname and DNS Support. Exit...')
print('checking vpc is...\t\t[PASS]\n')
subnet_ids_from_the_vpc = []
subnet_objs_from_the_vpc = vpc_client.subnets.all()
for subnet_obj in subnet_objs_from_the_vpc:
subnet_ids_from_the_vpc.append(subnet_obj.id)
def get_pub_or_priv_subnet(routes_attrs):
for route in routes_attrs:
gateway = route.get('GatewayId')
if gateway and gateway.startswith('igw-'):
return 'public'
return 'private'
validation_result = True
subnet_types = {}
routetables = vpc_client.route_tables.all()
for routetable in routetables:
rt_client = ec2_resource.RouteTable(routetable.id)
subnet_type = get_pub_or_priv_subnet(rt_client.routes_attribute)
for attribute in rt_client.associations_attribute:
subnetid = attribute.get('SubnetId', "")
main = attribute.get('Main', "")
if subnetid:
subnet_types[subnetid] = subnet_type
elif main:
subnet_types['main'] = subnet_type
print('checking subnet...')
subnet_ids = get_subnet_ids(context)
for subnet_id in subnet_ids:
if subnet_id in subnet_ids_from_the_vpc:
if subnet_id in subnet_types:
subnet_type = subnet_types[subnet_id]
else:
subnet_type = subnet_types['main']
if subnet_type == 'private':
print(f'{subnet_id} is\tprivate')
elif subnet_type == 'public':
print(f'{subnet_id} is\tpublic')
validation_result = False
else:
print(f'{subnet_id} is\tnot exist')
validation_result = False
if not validation_result:
raise Exception('subnet is invalid. Modify it.')
print('checking subnet is...\t\t[PASS]\n')
print('IGNORE Following Warning. '
'"No routeTableId was provided to the subnet..."')