TTL helps automatically remove old data. Streams let you capture changes to save that data somewhere else before it disappears.
You want to keep your database clean by deleting old records automatically.
You need to save deleted data for backup or audit before it is removed.
You want to archive expired data to a cheaper storage for future reference.
You want to track changes in your data over time for analysis.
You want to reduce storage costs by removing data but still keep a copy.
Syntax
DynamoDB
1. Enable TTL on a DynamoDB table by specifying an attribute (e.g., 'expireAt') that holds the expiration timestamp.
2. Enable DynamoDB Streams on the table to capture item removals.
3. Use a Lambda function triggered by the stream to process expired items and archive them (e.g., save to S3).
The TTL attribute must be a number representing epoch time in seconds.
Streams capture events like INSERT, MODIFY, and REMOVE. For TTL, focus on REMOVE events.
Examples
This attribute tells DynamoDB when to delete the item.
DynamoDB
TTL attribute: expireAt
Value example: 1686000000 (epoch seconds)
This event shows an item was deleted due to TTL expiration.
Hint: Use 'update-time-to-live' with Enabled=true [OK]
Common Mistakes:
Using non-existent commands like enable-ttl
Wrong parameter names
Missing 'time-to-live-specification' flag
3. Given a DynamoDB Stream enabled on a table with TTL, what type of event will appear in the stream when an item expires and is deleted?
medium
A. INSERT
B. REMOVE
C. MODIFY
D. UPDATE
Solution
Step 1: Understand TTL deletion effect on streams
When TTL deletes an item, DynamoDB Streams capture this as a REMOVE event because the item is removed.
Step 2: Identify correct event type
INSERT and MODIFY happen on new or updated items, not deletions. REMOVE is the correct event for deletions.
Final Answer:
REMOVE -> Option B
Quick Check:
TTL deletion = REMOVE event [OK]
Hint: TTL deletions trigger REMOVE events in streams [OK]
Common Mistakes:
Choosing INSERT or MODIFY for deletions
Confusing UPDATE with MODIFY
Assuming TTL triggers no stream events
4. You wrote a Lambda function triggered by DynamoDB Streams to archive deleted items. However, the Lambda never receives any events for expired items. What is the most likely cause?
medium
A. The stream is not enabled or not set to capture REMOVE events
B. TTL is not enabled on the table
C. Lambda function has no permissions to read the table
D. The table has no primary key defined
Solution
Step 1: Check stream configuration
If the Lambda never receives events, the stream might be disabled or not configured to capture REMOVE events, which TTL deletions generate.
Step 2: Verify other causes
TTL must be enabled, but if streams are off or missing REMOVE events, Lambda won't get notifications. Permissions or missing primary key would cause other errors.
Final Answer:
The stream is not enabled or not set to capture REMOVE events -> Option A
Quick Check:
Missing REMOVE events in stream = The stream is not enabled or not set to capture REMOVE events [OK]
Hint: Ensure stream captures REMOVE events for TTL deletions [OK]
Common Mistakes:
Ignoring stream settings
Assuming permissions cause no events
Overlooking TTL enablement
5. You want to archive expired DynamoDB items to S3 using a Lambda triggered by Streams. Which approach ensures no data loss and handles possible Lambda failures?
hard
A. Process REMOVE events in Lambda and write directly to S3, retrying on failure
B. Use TTL to delete items, ignore streams, and periodically scan table for expired items
C. Disable TTL and manually delete items after archiving
D. Process INSERT events in Lambda and archive items before expiration
Solution
Step 1: Understand archival with TTL and streams
TTL deletes expired items, streams capture REMOVE events. Lambda triggered by these events can archive data safely.
Step 2: Ensure reliability and no data loss
Processing REMOVE events and writing to S3 with retries ensures data is archived even if Lambda fails temporarily.
Step 3: Evaluate other options
Use TTL to delete items, ignore streams, and periodically scan table for expired items ignores streams and risks missing data. Disable TTL and manually delete items after archiving disables TTL, losing automatic cleanup. Process INSERT events in Lambda and archive items before expiration archives before expiration, which is not TTL-based archival.
Final Answer:
Process REMOVE events in Lambda and write directly to S3, retrying on failure -> Option A
Quick Check:
Reliable archival = Process REMOVE events in Lambda and write directly to S3, retrying on failure [OK]
Hint: Archive REMOVE events with retries for safety [OK]
Common Mistakes:
Ignoring stream REMOVE events
Disabling TTL unnecessarily
Archiving on INSERT instead of REMOVE
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.