#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).