Я сделал нечто подобное с AWS Lex и AWD DynamoDB. По сути, у Лекса был тайм-аут на 1-2 дня, но я хотел, чтобы он длился дольше. Поэтому я сохранил значения сеанса в DynamoDB (вы можете использовать любую таблицу NoSQL), используя userId в качестве ключа хеша и метку времени в качестве ключа сортировки. Поэтому каждый раз, когда сессия меняется, я сохраняю запись в БД.
Что касается чтения, я проверил, доступны ли данные сеанса. Если это так, используйте это, в противном случае получите последнюю запись из БД.