Да, DynamoDB должен удалять просроченные элементы, даже если они были созданы до того, как был выбран столбец TTL. По крайней мере, ничего в документации не говорит об обратном. документация объясняет, как работает TTL:
DynamoDB сравнивает текущее время в формате эпохи со значением, сохраненным в пользовательском атрибуте Number элемента. Если значение атрибута в формате времени эпохи, меньше текущего времени и не старше 5 лет, элемент удаляется. Обработка происходит автоматически, в фоновом режиме.
Вы сказали, что ждали 24 часа, чтобы произошло удаление. Возможно, этого было недостаточно, потому что в том же документе также сказано:
Обычно DynamoDB удаляет просроченные элементы в течение 48 часов после истечения срока действия. Точная продолжительность, в течение которой элемент действительно удаляется после истечения срока действия, задает c для характера рабочей нагрузки и размера таблицы.
Теперь, когда 48 часов прошло , не могли бы вы проверить еще раз?
Обновление (на основе обсуждения выше): Если функция TTL, кажется, не работает, вы должны убедиться, что вы правильно устанавливаете атрибут TTL. Сначала убедитесь, что вы устанавливаете атрибут с правильным именем (это была первая проблема спрашивающего). Затем вы должны убедиться, что в этом атрибуте установлены значения integer (это не может быть строка!). Наконец, убедитесь, что это целое число - это количество секунд с начала эпохи (полночь по Гринвичу, 1 января 1970 г.) - спрашивающий случайно использовал миллисекунды вместо секунд, чтобы он не работал.