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.

To determine which version you're using, see Determining the global table version you are using. To update existing global tables from version 2017.11.29 (Legacy) to version 2019.11.21 (Current), see Upgrading global tables.

Although you can use UpdateGlobalTable to add replicas and remove replicas in a single request, for simplicity we recommend that you issue separate requests for adding or removing replicas. 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 GlobalTableNotFoundException. May throw InternalServerError. May throw InvalidEndpointException. 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 {
  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);
}