createCluster method

Future<CreateClusterOutput> createCluster({
  1. required String adminUserName,
  2. required String adminUserPassword,
  3. required Auth authType,
  4. required String clusterName,
  5. required int shardCapacity,
  6. required int shardCount,
  7. int? backupRetentionPeriod,
  8. String? clientToken,
  9. String? kmsKeyId,
  10. String? preferredBackupWindow,
  11. String? preferredMaintenanceWindow,
  12. int? shardInstanceCount,
  13. List<String>? subnetIds,
  14. Map<String, String>? tags,
  15. List<String>? vpcSecurityGroupIds,
})

Creates a new Amazon DocumentDB elastic cluster and returns its cluster structure.

May throw AccessDeniedException. May throw ConflictException. May throw InternalServerException. May throw ServiceQuotaExceededException. May throw ThrottlingException. May throw ValidationException.

Parameter adminUserName : The name of the Amazon DocumentDB elastic clusters administrator.

Constraints:

  • Must be from 1 to 63 letters or numbers.
  • The first character must be a letter.
  • Cannot be a reserved word.

Parameter adminUserPassword : The password for the Amazon DocumentDB elastic clusters administrator. The password can contain any printable ASCII characters.

Constraints:

  • Must contain from 8 to 100 characters.
  • Cannot contain a forward slash (/), double quote ("), or the "at" symbol (@).

Parameter authType : The authentication type used to determine where to fetch the password used for accessing the elastic cluster. Valid types are PLAIN_TEXT or SECRET_ARN.

Parameter clusterName : The name of the new elastic cluster. This parameter is stored as a lowercase string.

Constraints:

  • Must contain from 1 to 63 letters, numbers, or hyphens.
  • The first character must be a letter.
  • Cannot end with a hyphen or contain two consecutive hyphens.
Example: my-cluster

Parameter shardCapacity : The number of vCPUs assigned to each elastic cluster shard. Maximum is 64. Allowed values are 2, 4, 8, 16, 32, 64.

Parameter shardCount : The number of shards assigned to the elastic cluster. Maximum is 32.

Parameter backupRetentionPeriod : The number of days for which automatic snapshots are retained.

Parameter clientToken : The client token for the elastic cluster.

Parameter kmsKeyId : The KMS key identifier to use to encrypt the new elastic cluster.

The KMS key identifier is the Amazon Resource Name (ARN) for the KMS encryption key. If you are creating a cluster using the same Amazon account that owns this KMS encryption key, you can use the KMS key alias instead of the ARN as the KMS encryption key.

If an encryption key is not specified, Amazon DocumentDB uses the default encryption key that KMS creates for your account. Your account has a different default encryption key for each Amazon Region.

Parameter preferredBackupWindow : The daily time range during which automated backups are created if automated backups are enabled, as determined by the backupRetentionPeriod.

Parameter preferredMaintenanceWindow : The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).

Format: ddd:hh24:mi-ddd:hh24:mi

Default: a 30-minute window selected at random from an 8-hour block of time for each Amazon Web Services Region, occurring on a random day of the week.

Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun

Constraints: Minimum 30-minute window.

Parameter shardInstanceCount : The number of replica instances applying to all shards in the elastic cluster. A shardInstanceCount value of 1 means there is one writer instance, and any additional instances are replicas that can be used for reads and to improve availability.

Parameter subnetIds : The Amazon EC2 subnet IDs for the new elastic cluster.

Parameter tags : The tags to be assigned to the new elastic cluster.

Parameter vpcSecurityGroupIds : A list of EC2 VPC security groups to associate with the new elastic cluster.

Implementation

Future<CreateClusterOutput> createCluster({
  required String adminUserName,
  required String adminUserPassword,
  required Auth authType,
  required String clusterName,
  required int shardCapacity,
  required int shardCount,
  int? backupRetentionPeriod,
  String? clientToken,
  String? kmsKeyId,
  String? preferredBackupWindow,
  String? preferredMaintenanceWindow,
  int? shardInstanceCount,
  List<String>? subnetIds,
  Map<String, String>? tags,
  List<String>? vpcSecurityGroupIds,
}) async {
  final $payload = <String, dynamic>{
    'adminUserName': adminUserName,
    'adminUserPassword': adminUserPassword,
    'authType': authType.value,
    'clusterName': clusterName,
    'shardCapacity': shardCapacity,
    'shardCount': shardCount,
    if (backupRetentionPeriod != null)
      'backupRetentionPeriod': backupRetentionPeriod,
    'clientToken': clientToken ?? _s.generateIdempotencyToken(),
    if (kmsKeyId != null) 'kmsKeyId': kmsKeyId,
    if (preferredBackupWindow != null)
      'preferredBackupWindow': preferredBackupWindow,
    if (preferredMaintenanceWindow != null)
      'preferredMaintenanceWindow': preferredMaintenanceWindow,
    if (shardInstanceCount != null) 'shardInstanceCount': shardInstanceCount,
    if (subnetIds != null) 'subnetIds': subnetIds,
    if (tags != null) 'tags': tags,
    if (vpcSecurityGroupIds != null)
      'vpcSecurityGroupIds': vpcSecurityGroupIds,
  };
  final response = await _protocol.send(
    payload: $payload,
    method: 'POST',
    requestUri: '/cluster',
    exceptionFnMap: _exceptionFns,
  );
  return CreateClusterOutput.fromJson(response);
}