Question: How to identify items in an Amazon DynamoDB table that haven't been accessed for a time and move them to Amazon S3.
Answer: There is no built in way for DynamoDB to know which items have or have not been accessed lately. More than likely, your best option is to do the following:
- Have TTL enabled on the table and a TTL attribute on every item in the table. If not, you will have to do that first.
- If you do not already update TTL attributes on items when they are accessed, you must change your application code to update the TTL attribute on an item when you access that item. Otherwise none of this will work.
With that in place, enable DynamoDB Streams. Then create a Lambda function that watches DDB Streams specifically for TTL Deletes which reads from the table's stream, then write the expired items to S3. Here is an older blog post which should still be mostly relevant for this purpose.