I'm just going through this headache at the moment to reduce dynamodb costs. Have created a GSI with the partition key being similar to your createdAt time. Did you find a way to query the table without knowing what items you are actually going to get?