updateGlobalTable method

Future<UpdateGlobalTableOutput> updateGlobalTable({
  1. required String globalTableName,
  2. required List<ReplicaUpdate> replicaUpdates,
})

Adds or removes replicas in the specified global table. The global table must already exist to be able to use this operation. Any replica to be added must be empty, have the same name as the global table, have the same key schema, have DynamoDB Streams enabled, and have the same provisioned and maximum write capacity units. If global secondary indexes are specified, then the following conditions must also be met:

  • The global secondary indexes must have the same name.
  • The global secondary indexes must have the same hash key and sort key (if present).
  • The global secondary indexes must have the same provisioned and maximum write capacity units.

May throw InternalServerError. May throw GlobalTableNotFoundException. May throw ReplicaAlreadyExistsException. May throw ReplicaNotFoundException. May throw TableNotFoundException.

Parameter globalTableName : The global table name.

Parameter replicaUpdates : A list of Regions that should be added or removed from the global table.

Implementation

Future<UpdateGlobalTableOutput> updateGlobalTable({
  required String globalTableName,
  required List<ReplicaUpdate> replicaUpdates,
}) async {
  ArgumentError.checkNotNull(globalTableName, 'globalTableName');
  _s.validateStringLength(
    'globalTableName',
    globalTableName,
    3,
    255,
    isRequired: true,
  );
  ArgumentError.checkNotNull(replicaUpdates, 'replicaUpdates');
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.0',
    'X-Amz-Target': 'DynamoDB_20120810.UpdateGlobalTable'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'GlobalTableName': globalTableName,
      'ReplicaUpdates': replicaUpdates,
    },
  );

  return UpdateGlobalTableOutput.fromJson(jsonResponse.body);
}