Могу ли я получить значение фактической емкости записи таблицы DynamoDB или DynamoDB2

#amazon-dynamodb #boto #throughput

#amazon-dynamodb #boto #пропускная способность

Вопрос:

Предположим, я обращаюсь к существующему DynamoDB

 import boto
conn = boto.connect_dynamodb(...)
table = conn.get_table(tableName)
 

или DynamoDB2

 import boto
from boto.dynamodb2.layer1 import DynamoDBConnection
from boto.dynamodb2.table import Table
conn = DynamoDBConnection(...)
table = Table(tableName, connection=conn)
 

таблица. Я хочу знать, сколько данных было записано в него непосредственно перед тем, как я получил к нему доступ. Поэтому мне нужно не предоставленное значение пропускной способности записи, а фактическая пропускная способность. Как я могу получить эту информацию?

Комментарии:

1. Не знаком с boto, но вам, вероятно, потребуется посмотреть показатели cloudwatch, связанные с таблицей.

2. Могу ли я получить значения показателей cloudwatch программно?

3. ДА. Конечно. вот ссылка на документацию API — docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/… Вот также документация по boto — boto.readthedocs.org/en/latest/cloudwatch_tut.html

Ответ №1:

Что-то вроде этого должно работать:

 import boto.ec2.cloudwatch
import datetime

end = datetime.datetime.utcnow()
start = end - datetime.timedelta(minutes=5)
c = boto.ec2.cloudwatch.connect_to_region('us-east-1')
data = c.get_metric_statistics(period=60, start_time=start, end_time=end,   
         metric_name='ConsumedWriteCapacityUnits', namespace='AWS/DynamoDB',
         statistics=['Sum'],dimensions={'TableName': 'mytable'})
 

Это должен быть список точек данных. Вы должны усреднить все суммы в списке, а затем разделить это число на 300, период.

Комментарии:

1. Попробовал это для нескольких моих таблиц и всегда получал пустой массив обратно data .

2. Извините, неверное метрическое имя. Я только что исправил это.

3. Пробовал и это. Тот же результат

4. Я просто попробовал еще раз, и это сработало для меня. Вы передаете правильное имя таблицы? Вы подключаетесь к правильному региону?

5. На самом деле, попробуйте изменить временной диапазон, увеличив значение minutes в вызове timedelta или уменьшив period его до меньшего значения (например, 60).