'Updates the provisioned throughput for the given table, or
manages the global secondary indexes on the table.
You can increase or decrease the table\'s provisioned
throughput values within the maximums and minimums listed in
the `Limits`_ section in the Amazon DynamoDB Developer Guide .
In addition, you can use UpdateTable to add, modify or delete
global secondary indexes on the table. For more information,
see `Managing Global Secondary Indexes`_ in the Amazon
DynamoDB Developer Guide .
The table must be in the `ACTIVE` state for UpdateTable to
succeed. UpdateTable is an asynchronous operation; while
executing the operation, the table is in the `UPDATING` state.
While the table is in the `UPDATING` state, the table still
has the provisioned throughput from before the call. The
table\'s new provisioned throughput settings go into effect
when the table returns to the `ACTIVE` state; at that point,
the UpdateTable operation is complete.
:type attribute_definitions: list
:param attribute_definitions: An array of attributes that describe the
key schema for the table and indexes. If you are adding a new
global secondary index to the table, AttributeDefinitions must
include the key element(s) of the new index.
:type table_name: string
:param table_name: The name of the table to be updated.
:type provisioned_throughput: dict
:param provisioned_throughput: Represents the provisioned throughput
settings for a specified table or index. The settings can be
modified using the UpdateTable operation.
For current minimum and maximum provisioned throughput values, see
`Limits`_ in the Amazon DynamoDB Developer Guide .
:type global_secondary_index_updates: list
:param global_secondary_index_updates:
An array of one or more global secondary indexes for the table. For
each index in the array, you can specify one action:
+ Create - add a new global secondary index to the table.
+ Update - modify the provisioned throughput settings of an existing
global secondary index.
+ Delete - remove a global secondary index from the table.'

def update_table(self, table_name, provisioned_throughput=None, global_secondary_index_updates=None, attribute_definitions=None):

    params = {'TableName': table_name}
    if (attribute_definitions is not None):
        params['AttributeDefinitions'] = attribute_definitions
    if (provisioned_throughput is not None):
        params['ProvisionedThroughput'] = provisioned_throughput
    if (global_secondary_index_updates is not None):
        params['GlobalSecondaryIndexUpdates'] = global_secondary_index_updates
    return self.make_request(action='UpdateTable', body=json.dumps(params))
