updateGlobalTable method
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);
}