modifyCurrentDBClusterCapacity method

Future<DBClusterCapacityInfo> modifyCurrentDBClusterCapacity({
  1. required String dBClusterIdentifier,
  2. int? capacity,
  3. int? secondsBeforeTimeout,
  4. String? timeoutAction,
})

Set the capacity of an Aurora Serverless DB cluster to a specific value.

Aurora Serverless scales seamlessly based on the workload on the DB cluster. In some cases, the capacity might not scale fast enough to meet a sudden change in workload, such as a large number of new transactions. Call ModifyCurrentDBClusterCapacity to set the capacity explicitly.

After this call sets the DB cluster capacity, Aurora Serverless can automatically scale the DB cluster based on the cooldown period for scaling up and the cooldown period for scaling down.

For more information about Aurora Serverless, see Using Amazon Aurora Serverless in the Amazon Aurora User Guide.

May throw DBClusterNotFoundFault. May throw InvalidDBClusterStateFault. May throw InvalidDBClusterCapacityFault.

Parameter dBClusterIdentifier : The DB cluster identifier for the cluster being modified. This parameter isn't case-sensitive.

Constraints:

  • Must match the identifier of an existing DB cluster.

Parameter capacity : The DB cluster capacity.

When you change the capacity of a paused Aurora Serverless DB cluster, it automatically resumes.

Constraints:

  • For Aurora MySQL, valid capacity values are 1, 2, 4, 8, 16, 32, 64, 128, and 256.
  • For Aurora PostgreSQL, valid capacity values are 2, 4, 8, 16, 32, 64, 192, and 384.

Parameter secondsBeforeTimeout : The amount of time, in seconds, that Aurora Serverless tries to find a scaling point to perform seamless scaling before enforcing the timeout action. The default is 300.

  • Value must be from 10 through 600.

Parameter timeoutAction : The action to take when the timeout is reached, either ForceApplyCapacityChange or RollbackCapacityChange.

ForceApplyCapacityChange, the default, sets the capacity to the specified value as soon as possible.

RollbackCapacityChange ignores the capacity change if a scaling point isn't found in the timeout period.

Implementation

Future<DBClusterCapacityInfo> modifyCurrentDBClusterCapacity({
  required String dBClusterIdentifier,
  int? capacity,
  int? secondsBeforeTimeout,
  String? timeoutAction,
}) async {
  ArgumentError.checkNotNull(dBClusterIdentifier, 'dBClusterIdentifier');
  final $request = <String, dynamic>{};
  $request['DBClusterIdentifier'] = dBClusterIdentifier;
  capacity?.also((arg) => $request['Capacity'] = arg);
  secondsBeforeTimeout?.also((arg) => $request['SecondsBeforeTimeout'] = arg);
  timeoutAction?.also((arg) => $request['TimeoutAction'] = arg);
  final $result = await _protocol.send(
    $request,
    action: 'ModifyCurrentDBClusterCapacity',
    version: '2014-10-31',
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    shape: shapes['ModifyCurrentDBClusterCapacityMessage'],
    shapes: shapes,
    resultWrapper: 'ModifyCurrentDBClusterCapacityResult',
  );
  return DBClusterCapacityInfo.fromXml($result);
}