Причины, по которым DynamoDB TTL удаляет элементы на 48 часов раньше? - PullRequest
0 голосов
/ 06 мая 2020

Я хотел установить TTL для моей таблицы DynamoDB и установить его как «TTL» ключ. Используется python3 + boto3 для выполнения пакетной записи с полем TTL, установленным на str (int (time.time ()) + 172800). Я также попробовал int (time.time ()) + 172800.

В любом случае метка времени эпохи в столбце TTL составляла 48 часов в будущем. При использовании второй версии при наведении курсора на значение в таблице DynamoDB появилось всплывающее окно с датой и временем отметки времени, и я подтвердил, что это будет через 2 дня в будущем.

Однако, когда я вернулся ~ 5 минут спустя и обновил таблицу, все записи исчезли.

Я повторил процесс и активно обновился, чтобы следить за значениями, и все они постепенно удалялись, а более поздние отметки времени удалялись последними . Я проверил журналы облачных часов, и они показали мои сканы и записи в правильное время по Гринвичу.

Мне просто интересно, из-за чего это могло произойти. Для справки дата создания таблицы - 27 июля 2019 г .; Возможно ли, что часы для БД выключены?

Пример удаленной временной метки: 1588959677, которая когда-нибудь должна преобразоваться в 5/8/2020.

Сообщите мне, если мне нужно предоставить дополнительная информация и спасибо за помощь.

Изменить: при пакетной записи я запускаю следующее:

boto3.resource('dynamodb', region_name).batch_write_item(RequestItems=put_data) 

где:

put_data = { tablename: { "PutRequest": { "Item" { "id": "id", "TTL": ttl_integer_value, "another_id": "id", "flag": "true", "timestamp": original_time_value, "description": "some description" }}}} 

Я попытался изменить его на :

put_data = { tablename: { "PutRequest": { "Item" { "TTL": {"N": ttl_integer_value}... }}}}

, но возникла ошибка с недопустимым значением ключа

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

...