📖 Scenario: You are setting up a DynamoDB table for a new application. You need to create the table with initial data and then configure its capacity mode to handle traffic efficiently.
🎯 Goal: Build a DynamoDB table configuration with initial attributes and set its capacity mode to either on-demand or provisioned.
📋 What You'll Learn
Create a DynamoDB table named Users with a primary key UserId of type string.
Add a configuration variable capacity_mode to select between PAY_PER_REQUEST (on-demand) and PROVISIONED modes.
If capacity_mode is PROVISIONED, configure ReadCapacityUnits and WriteCapacityUnits with exact values.
Complete the table creation configuration including the capacity mode settings.
💡 Why This Matters
🌍 Real World
DynamoDB capacity modes help manage costs and performance for applications with varying traffic patterns.
💼 Career
Understanding how to configure DynamoDB tables with correct capacity modes is essential for cloud engineers and developers working with AWS.
Progress0 / 4 steps
1
Create DynamoDB table data structure
Create a dictionary called table_definition with the following keys and values exactly: TableName set to 'Users', KeySchema as a list with one dictionary having AttributeName as 'UserId' and KeyType as 'HASH', and AttributeDefinitions as a list with one dictionary having AttributeName as 'UserId' and AttributeType as 'S'.
AWS
Hint
Use a dictionary with keys TableName, KeySchema, and AttributeDefinitions exactly as described.
2
Add capacity mode configuration variable
Add a variable called capacity_mode and set it to the string 'PAY_PER_REQUEST' to represent on-demand capacity mode.
AWS
Hint
Set capacity_mode exactly to 'PAY_PER_REQUEST' to select on-demand mode.
3
Add provisioned capacity settings conditionally
Add a conditional block that checks if capacity_mode equals 'PROVISIONED'. Inside this block, add a key ProvisionedThroughput to table_definition with a dictionary value containing ReadCapacityUnits set to 5 and WriteCapacityUnits set to 5.
AWS
Hint
Use an if statement to add ProvisionedThroughput only when capacity_mode is 'PROVISIONED'.
4
Complete table creation configuration with capacity mode
Add a key BillingMode to table_definition and set its value to the current capacity_mode variable.
AWS
Hint
Assign capacity_mode to the BillingMode key in table_definition.
Practice
(1/5)
1. What is the main advantage of using DynamoDB's on-demand capacity mode?
easy
A. It offers a lower cost for steady, predictable workloads.
B. It automatically scales to handle any workload without manual capacity planning.
C. It requires you to set fixed read and write capacity units.
D. It limits the number of requests per second to a fixed amount.
Solution
Step 1: Understand on-demand mode behavior
On-demand mode automatically adjusts capacity to meet traffic demands without manual input.
It automatically scales to handle any workload without manual capacity planning. -> Option B
Quick Check:
On-demand = auto scaling without setup [OK]
Hint: On-demand means auto scale, no manual setup needed [OK]
Common Mistakes:
Confusing on-demand with provisioned fixed capacity
Thinking on-demand limits requests
Assuming on-demand is cheaper for steady workloads
2. Which of the following is the correct way to specify provisioned capacity in a DynamoDB table creation JSON?
easy
A. { "Throughput": { "Reads": 5, "Writes": 10 } }
B. { "CapacityMode": "ON_DEMAND" }
C. { "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 10 } }
D. { "ReadUnits": 5, "WriteUnits": 10 }
Solution
Step 1: Recall provisioned capacity syntax
Provisioned mode requires specifying ReadCapacityUnits and WriteCapacityUnits inside ProvisionedThroughput.
Step 2: Check options for correct JSON structure
{ "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 10 } } matches the correct AWS DynamoDB API format for provisioned throughput.
ProvisionedThroughput with Read/Write units = correct syntax [OK]
Hint: Provisioned capacity uses ProvisionedThroughput with Read/Write units [OK]
Common Mistakes:
Using CapacityMode for provisioned capacity
Missing ProvisionedThroughput wrapper
Incorrect property names like ReadUnits
3. Given a DynamoDB table in provisioned mode with 5 read capacity units and 5 write capacity units, what happens if your application suddenly sends 20 write requests per second?
medium
A. Some write requests are throttled because they exceed the provisioned write capacity.
B. All 20 write requests succeed immediately without throttling.
C. DynamoDB automatically increases write capacity to 20 units instantly.
D. The table switches automatically to on-demand mode to handle the load.
Solution
Step 1: Understand provisioned capacity limits
Provisioned mode limits throughput to the set capacity units (5 writes per second here).
Some write requests are throttled because they exceed the provisioned write capacity. -> Option A
Quick Check:
Provisioned mode throttles excess requests [OK]
Hint: Provisioned mode throttles requests above set capacity [OK]
Common Mistakes:
Assuming automatic capacity increase in provisioned mode
Thinking on-demand mode applies automatically
Believing all requests always succeed
4. You configured a DynamoDB table with provisioned capacity: 10 read units and 10 write units. Your application experiences throttling errors during peak hours. What is the best immediate fix to reduce throttling without downtime?
medium
A. Switch the table to on-demand capacity mode.
B. Reduce the size of items stored in the table.
C. Delete and recreate the table with higher capacity.
D. Increase the provisioned read and write capacity units.
Solution
Step 1: Identify cause of throttling
Throttling occurs because provisioned capacity is too low for peak traffic.
Step 2: Choose immediate fix without downtime
Increasing provisioned capacity units can be done live without deleting the table.
Final Answer:
Increase the provisioned read and write capacity units. -> Option D
Quick Check:
Increase capacity units to reduce throttling [OK]
Hint: Increase provisioned units live to fix throttling fast [OK]
Common Mistakes:
Deleting and recreating table causes downtime
Assuming switching to on-demand is instant and free
Reducing item size does not fix capacity limits
5. A startup expects unpredictable traffic spikes and wants to minimize cost during low usage while avoiding throttling during spikes. Which DynamoDB capacity mode should they choose and why?
hard
A. On-demand mode because it charges per request and scales instantly without manual setup.
B. Provisioned mode with auto scaling enabled to adjust capacity automatically.
C. Provisioned mode with fixed capacity to control costs strictly.
D. On-demand mode but with a fixed maximum request limit to save costs.
Solution
Step 1: Understand startup's needs
They want to avoid throttling during spikes and save cost during low usage.
Step 2: Compare capacity modes for unpredictable traffic
On-demand mode charges per request and auto scales instantly, ideal for unpredictable spikes.
Step 3: Evaluate other options
Provisioned with auto scaling helps but requires setup and may lag; fixed capacity risks throttling or cost waste.
Final Answer:
On-demand mode because it charges per request and scales instantly without manual setup. -> Option A
Quick Check:
Unpredictable traffic = on-demand mode best [OK]
Hint: Unpredictable spikes? Choose on-demand for auto scaling [OK]
Common Mistakes:
Choosing fixed provisioned capacity for unpredictable traffic
Assuming auto scaling is instant and always perfect
Thinking on-demand has fixed request limits
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.