createOrganizationalUnit method
Creates an organizational unit (OU) within a root or parent OU. An OU is a container for accounts that enables you to organize your accounts to apply policies according to your business requirements. The number of levels deep that you can nest OUs is dependent upon the policy types enabled for that root. For service control policies, the limit is five.
For more information about OUs, see Managing organizational units (OUs) in the Organizations User Guide.
If the request includes tags, then the requester must have the
organizations:TagResource permission.
You can only call this operation from the management account.
May throw AccessDeniedException.
May throw AWSOrganizationsNotInUseException.
May throw ConcurrentModificationException.
May throw ConstraintViolationException.
May throw DuplicateOrganizationalUnitException.
May throw InvalidInputException.
May throw ParentNotFoundException.
May throw ServiceException.
May throw TooManyRequestsException.
Parameter name :
The friendly name to assign to the new OU.
Parameter parentId :
ID for the parent root or OU that you want to create the new OU in.
The regex pattern for a parent ID string requires one of the following:
- Root - A string that begins with "r-" followed by from 4 to 32 lowercase letters or digits.
- Organizational unit (OU) - A string that begins with "ou-" followed by from 4 to 32 lowercase letters or digits (the ID of the root that the OU is in). This string is followed by a second "-" dash and from 8 to 32 additional lowercase letters or digits.
Parameter tags :
A list of tags that you want to attach to the newly created OU. For each
tag in the list, you must specify both a tag key and a value. You can set
the value to an empty string, but you can't set it to null.
For more information about tagging, see Tagging
Organizations resources in the Organizations User Guide.
Implementation
Future<CreateOrganizationalUnitResponse> createOrganizationalUnit({
required String name,
required String parentId,
List<Tag>? tags,
}) async {
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'AWSOrganizationsV20161128.CreateOrganizationalUnit'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'Name': name,
'ParentId': parentId,
if (tags != null) 'Tags': tags,
},
);
return CreateOrganizationalUnitResponse.fromJson(jsonResponse.body);
}