in resources/AccountCreationLambda.py [0:0]
def get_ou_name_id(event, root_id,organization_unit_name):
ou_client = get_client('organizations')
list_of_OU_ids = []
list_of_OU_names = []
ou_name_to_id = {}
list_of_OUs_response = ou_client.list_organizational_units_for_parent(ParentId=root_id)
for i in list_of_OUs_response['OrganizationalUnits']:
list_of_OU_ids.append(i['Id'])
list_of_OU_names.append(i['Name'])
if(organization_unit_name not in list_of_OU_names):
print("The provided Organization Unit Name doesnt exist. Creating an OU named: {}".format(organization_unit_name))
try:
ou_creation_response = ou_client.create_organizational_unit(ParentId=root_id,Name=organization_unit_name)
for k,v in ou_creation_response.items():
for k1,v1 in v.items():
if(k1 == 'Name'):
organization_unit_name = v1
if(k1 == 'Id'):
organization_unit_id = v1
except botocore.exceptions.ClientError as e:
print("Error in creating the OU: {}".format(e))
respond_cloudformation(event, "FAILED", { "Message": "Could not list out AWS Organization OUs. Account creation Aborted."})
else:
for i in range(len(list_of_OU_names)):
ou_name_to_id[list_of_OU_names[i]] = list_of_OU_ids[i]
organization_unit_id = ou_name_to_id[organization_unit_name]
return(organization_unit_name,organization_unit_id)