Bird
Raised Fist0
AWScloud~10 mins

Creating a DynamoDB table in AWS - Visual Walkthrough

Choose your learning style10 modes available
Process Flow - Creating a DynamoDB table
Start
↓
Define Table Name
↓
Set Attribute Definitions
↓
Set Key Schema
↓
Set Provisioned Throughput
↓
Call CreateTable API
↓
Wait for Table Active
↓
Table Ready to Use
↓
End
This flow shows the steps to create a DynamoDB table: define name, attributes, keys, throughput, call API, wait until active, then use.
Execution Sample
AWS
aws dynamodb create-table \
  --table-name MusicCollection \
  --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \
  --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
  --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
This command creates a DynamoDB table named MusicCollection with Artist as the partition key and SongTitle as the sort key.
Process Table
StepActionParametersAPI Call ResultState Change
1Define Table NameMusicCollectionN/ATableName set to MusicCollection
2Set Attribute DefinitionsArtist (S), SongTitle (S)N/AAttributes defined
3Set Key SchemaArtist as HASH, SongTitle as RANGEN/AKey schema set
4Set Provisioned ThroughputRead=5, Write=5N/AThroughput set
5Call CreateTable APIParameters from aboveTable status: CREATINGTable creation started
6Wait for Table ActivePolling table statusTable status: ACTIVETable ready to use
7EndN/AN/ACreation complete
💡 Table status becomes ACTIVE, creation process ends.
Status Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5After Step 6Final
TableNameundefinedMusicCollectionMusicCollectionMusicCollectionMusicCollectionMusicCollectionMusicCollectionMusicCollection
AttributeDefinitionsundefinedundefined[Artist:S, SongTitle:S][Artist:S, SongTitle:S][Artist:S, SongTitle:S][Artist:S, SongTitle:S][Artist:S, SongTitle:S][Artist:S, SongTitle:S]
KeySchemaundefinedundefinedundefined[Artist:HASH, SongTitle:RANGE][Artist:HASH, SongTitle:RANGE][Artist:HASH, SongTitle:RANGE][Artist:HASH, SongTitle:RANGE][Artist:HASH, SongTitle:RANGE]
ProvisionedThroughputundefinedundefinedundefinedundefined[Read=5, Write=5][Read=5, Write=5][Read=5, Write=5][Read=5, Write=5]
TableStatusundefinedundefinedundefinedundefinedundefinedCREATINGACTIVEACTIVE
Key Moments - 3 Insights
Why do we need to wait after calling CreateTable before using the table?
Because the table status is initially CREATING (see step 5 in execution_table). We must wait until the status changes to ACTIVE (step 6) before the table can be used.
What is the difference between AttributeDefinitions and KeySchema?
AttributeDefinitions define the data types of attributes (step 2), while KeySchema specifies which attributes are the primary keys (partition and sort keys) used to organize the table (step 3).
What happens if we set ProvisionedThroughput too low?
If throughput is too low (step 4), the table may throttle requests or perform slowly. It's important to set appropriate Read and Write capacity units.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 5, what is the TableStatus immediately after calling CreateTable API?
AACTIVE
BCREATING
CDELETING
DUPDATING
💡 Hint
Check the 'API Call Result' column at step 5 in execution_table.
At which step does the table become ready to use?
AStep 4
BStep 5
CStep 6
DStep 7
💡 Hint
Look for when TableStatus changes to ACTIVE in execution_table.
If you change the ProvisionedThroughput to Read=10, Write=10, which variable_tracker row changes?
AProvisionedThroughput
BKeySchema
CTableName
DAttributeDefinitions
💡 Hint
Check the ProvisionedThroughput row in variable_tracker.
Concept Snapshot
Create a DynamoDB table by specifying:
- TableName (unique name)
- AttributeDefinitions (name and type)
- KeySchema (partition and optional sort key)
- ProvisionedThroughput (read/write capacity)
Then call CreateTable API and wait until status is ACTIVE before use.
Full Transcript
Creating a DynamoDB table involves defining the table name, attributes, key schema, and throughput settings. After calling the CreateTable API, the table status is initially CREATING. We must wait until the status changes to ACTIVE before the table can be used. AttributeDefinitions specify data types, while KeySchema defines primary keys. ProvisionedThroughput sets read and write capacity units. This process ensures the table is properly configured and ready for operations.

Practice

(1/5)
1. What is the main purpose of the primary key when creating a DynamoDB table?
easy
A. To define the table's read capacity
B. To store the table's name
C. To specify the AWS region
D. To uniquely identify each item in the table

Solution

  1. Step 1: Understand the role of the primary key

    The primary key uniquely identifies each item in a DynamoDB table, ensuring no duplicates.
  2. Step 2: Differentiate from other table properties

    Table name, capacity, and region do not serve as unique identifiers for items.
  3. Final Answer:

    To uniquely identify each item in the table -> Option D
  4. Quick Check:

    Primary key = unique item ID [OK]
Hint: Primary key means unique ID for each item [OK]
Common Mistakes:
  • Confusing primary key with table name
  • Thinking capacity defines uniqueness
  • Mixing region with key attributes
2. Which AWS CLI command correctly creates a DynamoDB table named Users with a primary key UserId of type string?
easy
A. aws dynamodb create-table --table-name Users --attribute-definitions AttributeName=UserId,AttributeType=S --key-schema AttributeName=UserId,KeyType=HASH --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
B. aws dynamodb create-table --name Users --key UserId --type String
C. aws dynamodb make-table --table Users --key UserId --type S
D. aws dynamodb create-table --table Users --attribute UserId String --key UserId HASH

Solution

  1. Step 1: Identify correct AWS CLI syntax for creating a table

    The correct command uses create-table with --table-name, --attribute-definitions, --key-schema, and --provisioned-throughput.
  2. Step 2: Verify attribute and key schema details

    AttributeName=UserId with AttributeType=S (string) and KeyType=HASH for primary key is correct.
  3. Final Answer:

    aws dynamodb create-table --table-name Users --attribute-definitions AttributeName=UserId,AttributeType=S --key-schema AttributeName=UserId,KeyType=HASH --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 -> Option A
  4. Quick Check:

    Correct CLI syntax = aws dynamodb create-table --table-name Users --attribute-definitions AttributeName=UserId,AttributeType=S --key-schema AttributeName=UserId,KeyType=HASH --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 [OK]
Hint: Use --attribute-definitions and --key-schema for keys [OK]
Common Mistakes:
  • Using wrong command like make-table
  • Missing provisioned throughput
  • Incorrect flags like --name instead of --table-name
3. Given this AWS CLI command:
aws dynamodb create-table --table-name Products --attribute-definitions AttributeName=ProductId,AttributeType=S AttributeName=Category,AttributeType=S --key-schema AttributeName=ProductId,KeyType=HASH AttributeName=Category,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=5

What is the primary key type of the Products table?
medium
A. No primary key defined
B. Simple primary key with only a HASH key
C. Composite primary key with HASH and RANGE keys
D. Primary key with only a RANGE key

Solution

  1. Step 1: Analyze the key schema in the command

    The command defines two keys: ProductId as HASH and Category as RANGE.
  2. Step 2: Understand primary key types in DynamoDB

    A primary key with both HASH and RANGE keys is called a composite primary key.
  3. Final Answer:

    Composite primary key with HASH and RANGE keys -> Option C
  4. Quick Check:

    HASH + RANGE = composite key [OK]
Hint: HASH + RANGE keys mean composite primary key [OK]
Common Mistakes:
  • Thinking two attributes mean no key
  • Confusing RANGE key as standalone primary key
  • Ignoring key-schema details
4. You run this command to create a DynamoDB table:
aws dynamodb create-table --table-name Orders --attribute-definitions AttributeName=Id,AttributeType=N --key-schema AttributeName=OrderId,KeyType=HASH --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5

But you get an error. What is the most likely cause?
medium
A. The attribute definition and key schema attribute names do not match
B. Provisioned throughput values are missing
C. The key schema is missing a RANGE key
D. AttributeType should be 'S' for string, not 'N' for number

Solution

  1. Step 1: Check attribute definitions and key schema names

    The attribute definitions specify AttributeName=Id, but the key schema specifies AttributeName=OrderId. The names do not match, causing the error.
  2. Step 2: Verify other potential issues

    Provisioned throughput values are present (not B), a simple primary key with only HASH is allowed (not C), AttributeType=N is valid for numeric IDs (not D).
  3. Final Answer:

    The attribute definition and key schema attribute names do not match -> Option A
  4. Quick Check:

    Attribute names must match exactly [OK]
Hint: Match attribute names exactly in definitions and key schema [OK]
Common Mistakes:
  • Assuming 'N' type is invalid
  • Expecting RANGE key for all tables
  • Missing provisioned throughput
5. You want to create a DynamoDB table named Sessions with a composite primary key: UserId (string) as HASH and SessionId (string) as RANGE. You also want to set autoscaling for read and write capacity. Which of the following is the best approach?
hard
A. Create the table without specifying key schema and add keys later
B. Use aws dynamodb create-table with attribute definitions and key schema, then configure autoscaling via Application Auto Scaling service
C. Use aws dynamodb create-table with only HASH key and enable autoscaling in the same command
D. Create the table with fixed provisioned throughput and manually update capacity when needed

Solution

  1. Step 1: Define table with composite primary key

    Use create-table with attribute definitions for UserId and SessionId, and key schema with HASH and RANGE keys.
  2. Step 2: Configure autoscaling separately

    DynamoDB autoscaling is set up via Application Auto Scaling service after table creation; it cannot be enabled directly in create-table command.
  3. Final Answer:

    Use aws dynamodb create-table with attribute definitions and key schema, then configure autoscaling via Application Auto Scaling service -> Option B
  4. Quick Check:

    Composite key + separate autoscaling setup = Use aws dynamodb create-table with attribute definitions and key schema, then configure autoscaling via Application Auto Scaling service [OK]
Hint: Create table first, then set autoscaling separately [OK]
Common Mistakes:
  • Trying to enable autoscaling in create-table command
  • Skipping RANGE key for composite key
  • Creating table without key schema
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard