in code/ct_flowlog_lifecycle.py [0:0]
def lambda_handler(event, context):
LOGGER.info('Lambda Handler - Start')
LOGGER.info('REQUEST RECEIVED: {}'.format(json.dumps(event, default=str)))
# Check if lifecycle even matches
if 'detail' in event and event['detail']['eventName'] == 'CreateManagedAccount':
if event['detail']['serviceEventDetails']['createManagedAccountStatus']['state'] == 'SUCCEEDED':
account_id = event['detail']['serviceEventDetails']['createManagedAccountStatus']['account']['accountId']
# find if existing stackset instance for this account already exist
stackset_name = (str(os.environ["stack_set_arn"]).split(":")[5]).split("/")[1]
stackset_instances = list_stack_instance_by_account(session, stackset_name, account_id)
stackset_instances_regions = list_stack_instance_region(session, stackset_name)
# stackset instance does not exist, create a new one
if len(stackset_instances) == 0:
create_stack_instance(session, stackset_name, [account_id], stackset_instances_regions)
# stackset instance already exist, check for missing region
elif len(stackset_instances) > 0:
stackset_region = []
for instance in stackset_instances:
stackset_region.append(instance['Region'])
next_region = list(set(stackset_instances_regions) - set(stackset_region))
if len(next_region) > 0:
create_stack_instance(session, stackset_name, [account_id], next_region)
else:
LOGGER.info("Stackset instance already exist : {}".format(stackset_instances))
else:
LOGGER.error("Invalid event state, expected: SUCCEEDED : {}".format(event))
else:
LOGGER.error("Invalid event received : {}".format(event))
LOGGER.info('Lambda Handler - End')