📖 Scenario: You are building a simple serverless application that stores user feedback in a database. You want to automatically process each new feedback entry as soon as it is saved.
🎯 Goal: Build a DynamoDB table and connect it with an AWS Lambda function that triggers when new data is added. This setup will help you understand why DynamoDB and Lambda work well together for real-time data processing.
📋 What You'll Learn
Create a DynamoDB table named UserFeedback with a primary key FeedbackID of type string.
Create a Lambda function named ProcessFeedback that will be triggered by new inserts into the DynamoDB table.
Configure the DynamoDB stream on the UserFeedback table to capture new item inserts.
Set up the Lambda trigger to invoke ProcessFeedback whenever a new feedback item is added.
💡 Why This Matters
🌍 Real World
This project shows how serverless applications can react instantly to database changes without managing servers.
💼 Career
Understanding how DynamoDB and Lambda work together is essential for building scalable, event-driven cloud applications.
Progress0 / 4 steps
1
Create DynamoDB Table
Create a DynamoDB table named UserFeedback with a primary key called FeedbackID of type string.
DynamoDB
Hint
Use the AWS CLI create-table command with the correct attribute definitions and key schema.
2
Enable DynamoDB Stream
Enable a DynamoDB stream on the UserFeedback table to capture new item inserts only.
DynamoDB
Hint
Use update-table to enable streams with NEW_IMAGE to capture new inserts.
3
Create Lambda Function
Create a Lambda function named ProcessFeedback that will process new feedback items.
DynamoDB
Hint
Use aws lambda create-function with the correct function name, runtime, handler, and role.
4
Connect DynamoDB Stream to Lambda
Configure the DynamoDB stream on UserFeedback to trigger the Lambda function ProcessFeedback on new inserts.
DynamoDB
Hint
Use aws lambda create-event-source-mapping with the DynamoDB stream ARN and Lambda function name.
Practice
(1/5)
1. Why is DynamoDB often paired with AWS Lambda in serverless applications?
easy
A. Because Lambda can automatically run code when DynamoDB data changes
B. Because DynamoDB requires Lambda to store data
C. Because Lambda stores data faster than DynamoDB
D. Because DynamoDB and Lambda are both relational databases
Solution
Step 1: Understand DynamoDB's role
DynamoDB stores data quickly and scales automatically without needing servers.
Step 2: Understand Lambda's role
Lambda runs code automatically in response to events, such as changes in DynamoDB data.
Final Answer:
Because Lambda can automatically run code when DynamoDB data changes -> Option A
Quick Check:
Event-driven code execution = C [OK]
Hint: Remember: Lambda reacts to DynamoDB events automatically [OK]
Common Mistakes:
Thinking DynamoDB needs Lambda to store data
Confusing Lambda as a database
Believing both are relational databases
2. Which of the following is the correct way to configure a Lambda function to trigger on DynamoDB table changes?
easy
A. Directly call Lambda from DynamoDB without any configuration
B. Set up a DynamoDB Stream and attach it as an event source to the Lambda function
C. Use Lambda to poll the DynamoDB table every second
D. Configure DynamoDB to run Lambda code inside its console
Solution
Step 1: Identify how DynamoDB triggers Lambda
DynamoDB Streams capture table changes and can be linked to Lambda as event sources.
Step 2: Evaluate options
Only setting up a DynamoDB Stream and attaching it to Lambda is correct; others are invalid or impossible.
Final Answer:
Set up a DynamoDB Stream and attach it as an event source to the Lambda function -> Option B
Quick Check:
DynamoDB Stream triggers Lambda = A [OK]
Hint: Use DynamoDB Streams to trigger Lambda functions [OK]
Common Mistakes:
Assuming Lambda can be called directly by DynamoDB without streams
Thinking Lambda polls DynamoDB instead of event-driven
Believing DynamoDB runs Lambda code internally
3. Given this Lambda function triggered by a DynamoDB Stream event, what will be the output if a new item with {"id": "123", "status": "new"} is inserted?
exports.handler = async (event) => {
for (const record of event.Records) {
if (record.eventName === 'INSERT') {
console.log('New item:', record.dynamodb.NewImage);
}
}
};
medium
A. Throws an error because NewImage is undefined
B. Does nothing because INSERT events are ignored
C. Logs only the id value as a string
D. Logs the new item data with keys and DynamoDB types
A. The DynamoDB Stream is not enabled or not attached as an event source
B. The Lambda function code is missing a return statement
C. The function should use synchronous invocation instead of async
D. The console.log statement prevents the function from running
Solution
Step 1: Check event source configuration
Lambda triggers on DynamoDB Streams only if the stream is enabled and linked as an event source.
Step 2: Evaluate code and invocation
Code with async and console.log is valid; missing return or sync invocation does not stop triggering.
Final Answer:
The DynamoDB Stream is not enabled or not attached as an event source -> Option A
Quick Check:
Missing stream or event source = D [OK]
Hint: Check if DynamoDB Stream is enabled and linked to Lambda [OK]
Common Mistakes:
Thinking async keyword blocks Lambda triggers
Believing console.log stops execution
Assuming return statement is required for triggers
5. You want to build a serverless app that updates a search index whenever DynamoDB data changes. Which approach best uses DynamoDB and Lambda together?
hard
A. Write search index updates directly inside DynamoDB using Lambda code embedded in the table
B. Have Lambda poll DynamoDB every minute to check for changes and update the index
C. Enable DynamoDB Streams, trigger Lambda on changes, and update the search index inside Lambda
D. Use DynamoDB triggers to run the search index update without Lambda
Solution
Step 1: Identify event-driven update method
Using DynamoDB Streams to trigger Lambda on data changes is efficient and real-time.
Step 2: Evaluate alternatives
Polling wastes resources, embedding code in DynamoDB is not possible, and DynamoDB triggers require Lambda.
Final Answer:
Enable DynamoDB Streams, trigger Lambda on changes, and update the search index inside Lambda -> Option C
Quick Check:
Event-driven updates with Streams + Lambda = A [OK]
Hint: Use Streams + Lambda for real-time updates, avoid polling [OK]
Common Mistakes:
Choosing polling instead of event triggers
Thinking DynamoDB can run code internally
Ignoring the need for Lambda in triggers
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.