Найдите количество объектов внутри элемента таблицы DynomoDB с помощью функции Lamda (Python/Node)
Я новичок в мире AWS, и мне нужно найти количество данных из таблицы DynamoDB. У меня такая структура таблицы.
- Он имеет 2 элемента (столбцы в MySQL), например, A и B
- A - хранит идентификаторы пользователей (ключ первичного раздела).
- B - хранит профили пользователей, количество профилей, связанных с UserID.
- Предположим, что A содержит идентификатор пользователя 3435 и 3 профиля ({"21btet3","3sd4","adf11"}). Мое требование - получить счетчик 3 на выходе в виде JSON в формате:
Как настроить параметры проверки этого запроса? Кто-нибудь может помочь?
2 ответа
вам не следует выполнять полное сканирование таблицы на регулярной основе.
Если вам необходимо часто получать этот счетчик, вам следует подписать лямбда-функцию на потоки Dynamodb и обновлять счетчик по мере добавления новых записей в Dynamodb. Это обеспечит
ты платишь меньше
Вам не нужно будет сканировать таблицу, чтобы вычислить это число.
DynamoDb - это NoSQL, поэтому есть некоторые ограничения при запросе данных. В вашем случае вам нужно отсканировать всю таблицу, как показано ниже
def ScanDynamoData(lastEvalutedKey):
table = boto3.resource("dynamodb", "eu-west-1").Table('TableName') #Add your region and table name
if lastEvalutedKey:
return table.scan(
ExclusiveStartKey=lastEvalutedKey
)
else:
return table.scan()
И вызывайте этот метод в цикле до тех пор, пока lastEvalutedKey не станет равным нулю (для сканирования всех записей), например
response = ScanDynamoData(None);
totalUserIds = response["Count"]
#In response you will get the json of entire table you can count userid and profiles here
while "LastEvaluatedKey" in response:
response = ScanDynamoData(response["LastEvaluatedKey"])
totalUserIds += response["Count"]
#Add counts here also