Есть ли способ узнать, сколько раз выделенная пропускная способность была уменьшена в течение одного дня (UTC) в таблице DynamoDB?
При увеличении выделенной пропускной способности я всегда боюсь, что не смогу уменьшить ее впоследствии в тот же день, поскольку нельзя уменьшить выделенную пропускную способность в таблице DynamoDB более чем в 4 раза в течение одного дня (UTC).
Кажется, что точности графика мониторинга недостаточно, чтобы увидеть все предыдущие изменения выделенной пропускной способности, которые произошли в тот же день. Например. в этой таблице выделенная пропускная способность уменьшена в 4 раза, но на графике это не видно:
И, очевидно, Amazon не предупреждает о том, что мы увеличиваем выделенную пропускную способность, не имея возможности уменьшить ее обратно.
Количество уменьшений возвращается в виде DescribeTable результат как часть ProvisionedThroughputDescription. Похоже, что консоль DynamoDB этого не отображает, а показывает только «Время последнего уменьшения».
Если это может кому-то помочь, я написал функцию Python, чтобы увидеть, во сколько раз выделенная пропускная способность уменьшалась в течение одного дня для каждой таблицы DynamoDB:
import boto
import operator
MY_ACCESS_KEY_ID = 'copy your access key ID here'
MY_SECRET_ACCESS_KEY = 'copy your secret access key here'
def get_number_of_decreases_today():
'''
Scan all DynamoDB tables, and returns a dictionary with table name as key, NumberOfDecreasesToday as value.
'''
dynamodb_conn = boto.connect_dynamodb(aws_access_key_id=MY_ACCESS_KEY_ID, aws_secret_access_key=MY_SECRET_ACCESS_KEY)
table_names = dynamodb_conn.list_tables()
table_number_of_decreases_today = {}
for table_name in table_names:
dynamodb_table_description = dynamodb_conn.describe_table(table_name)
table_number_of_decreases_today[table_name] = dynamodb_table_description['Table']['ProvisionedThroughput']['NumberOfDecreasesToday']
#print('NumberOfDecreasesToday is {0} for table {1}'.format(table_number_of_decreases_today[table_name], table_name))
return table_number_of_decreases_today
def main():
table_number_of_decreases_today = get_number_of_decreases_today()
# Print table names and NumberOfDecreasesToday with alphabetically ordered table names
for key, value in sorted(table_number_of_decreases_today.items(), key=operator.itemgetter(0)):
print('{0}\t{1}'.format(key,value))
# Print table names by ascending NumberOfDecreasesToday
for key, value in sorted(table_number_of_decreases_today.iteritems(), key=lambda (k,v): (v,k)):
print('{0}\t{1}'.format(key, value))
if __name__ == "__main__":
main()
#cProfile.run('main()') # if you want to do some profiling