Bird
Raised Fist0
DynamoDBquery~30 mins

First table creation in DynamoDB - Mini Project: Build & Apply

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Create Your First DynamoDB Table
📖 Scenario: You are setting up a simple database table to store information about books in a library. Each book has a unique ID and a title.
🎯 Goal: Create a DynamoDB table named Books with a primary key called BookID of type string.
📋 What You'll Learn
Create a table named Books
Use BookID as the partition key
Set the partition key type to S (string)
Set the read and write capacity units to 5
💡 Why This Matters
🌍 Real World
Creating DynamoDB tables is a common task when setting up cloud databases for applications like online stores, mobile apps, or IoT devices.
💼 Career
Knowing how to create and configure DynamoDB tables is essential for cloud developers, database administrators, and backend engineers working with AWS.
Progress0 / 4 steps
1
Define the table name and key schema
Create a variable called table_name and set it to 'Books'. Then create a variable called key_schema that defines the partition key with AttributeName as 'BookID' and KeyType as 'HASH'.
DynamoDB
Hint

Remember, the partition key is called BookID and its key type is HASH.

2
Define the attribute definitions and provisioned throughput
Create a variable called attribute_definitions that defines BookID as type 'S'. Then create a variable called provisioned_throughput with ReadCapacityUnits and WriteCapacityUnits both set to 5.
DynamoDB
Hint

Attribute type 'S' means string. Set both read and write capacity units to 5.

3
Create the table creation parameters dictionary
Create a variable called table_params that combines table_name, key_schema, attribute_definitions, and provisioned_throughput into one dictionary with keys TableName, KeySchema, AttributeDefinitions, and ProvisionedThroughput respectively.
DynamoDB
Hint

Combine all parts into one dictionary called table_params.

4
Add the final command to create the DynamoDB table
Create a variable called dynamodb_client that represents the DynamoDB client. Then create a variable called create_table_response that calls dynamodb_client.create_table() with table_params as the argument.
DynamoDB
Hint

Use boto3.client('dynamodb') to create the client and call create_table() with the parameters.

Practice

(1/5)
1. What is the minimum required element when creating a DynamoDB table?
easy
A. Table name and global secondary index
B. Table name and secondary index
C. Table name and primary key
D. Provisioned throughput only

Solution

  1. Step 1: Understand DynamoDB table basics

    Every DynamoDB table must have a unique name and a primary key to identify items.
  2. Step 2: Identify required elements for creation

    Secondary indexes and throughput settings are optional or have defaults, but primary key and table name are mandatory.
  3. Final Answer:

    Table name and primary key -> Option C
  4. Quick Check:

    Minimum required = Table name + primary key [OK]
Hint: Always specify table name and primary key first [OK]
Common Mistakes:
  • Forgetting to define the primary key
  • Confusing secondary index as mandatory
  • Omitting the table name
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 S
C. aws dynamodb create-table --table Users --primary-key UserId String
D. aws dynamodb make-table --table-name Users --key UserId --attribute-type S

Solution

  1. Step 1: Check AWS CLI syntax for create-table

    The correct command uses 'aws dynamodb create-table' with options: --table-name, --attribute-definitions, --key-schema, and --provisioned-throughput.
  2. Step 2: Verify option correctness

    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 correctly specifies attribute name and type, key schema with HASH key, and provisioned throughput. Others use invalid or incomplete syntax.
  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 full AWS CLI syntax with attribute-definitions and key-schema [OK]
Common Mistakes:
  • Using wrong command name like make-table
  • Missing attribute-definitions or key-schema
  • Incorrect option names like --name instead of --table-name
3. Given this AWS CLI command, what will be the primary key type of the table?
aws dynamodb create-table --table-name Products --attribute-definitions AttributeName=ProductId,AttributeType=N --key-schema AttributeName=ProductId,KeyType=HASH --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
medium
A. String
B. Binary
C. Boolean
D. Number

Solution

  1. Step 1: Identify attribute type in attribute-definitions

    The attribute ProductId is defined with AttributeType=N, which means Number.
  2. Step 2: Confirm key schema uses ProductId as HASH key

    The key schema uses ProductId as the partition key, so its type is Number.
  3. Final Answer:

    Number -> Option D
  4. Quick Check:

    AttributeType=N means Number [OK]
Hint: AttributeType=N means Number, S means String [OK]
Common Mistakes:
  • Confusing N with String type
  • Ignoring attribute-definitions
  • Assuming default type is String
4. You run this command but get an error:
aws dynamodb create-table --table-name Orders --attribute-definitions AttributeName=OrderId --key-schema AttributeName=OrderId,KeyType=HASH --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1

What is the likely cause?
medium
A. Missing KeyType in key-schema
B. Missing AttributeType in attribute-definitions
C. Provisioned throughput values are too low
D. Table name is invalid

Solution

  1. Step 1: Check attribute-definitions syntax

    The attribute-definitions must include AttributeType (S, N, or B). Here, AttributeType is missing.
  2. Step 2: Verify other parts

    KeyType is present, throughput values are valid, and table name is valid. So the error is due to missing AttributeType.
  3. Final Answer:

    Missing AttributeType in attribute-definitions -> Option B
  4. Quick Check:

    AttributeType required in attribute-definitions [OK]
Hint: Always specify AttributeType with AttributeName [OK]
Common Mistakes:
  • Omitting AttributeType in attribute-definitions
  • Confusing KeyType with AttributeType
  • Assuming throughput values cause error
5. You want to create a DynamoDB table named Employees with a composite primary key: EmployeeId (string) as partition key and Department (string) as sort key. Which command correctly creates this table?
hard
A. aws dynamodb create-table --table-name Employees --attribute-definitions AttributeName=EmployeeId,AttributeType=S AttributeName=Department,AttributeType=S --key-schema AttributeName=EmployeeId,KeyType=HASH AttributeName=Department,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
B. aws dynamodb create-table --table-name Employees --attribute-definitions EmployeeId=S Department=S --key-schema EmployeeId=HASH Department=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
C. aws dynamodb create-table --table Employees --attributes EmployeeId:string Department:string --keys EmployeeId:partition Department:sort --throughput 5 5
D. aws dynamodb create-table --table-name Employees --attribute-definitions AttributeName=EmployeeId,AttributeType=S --key-schema AttributeName=EmployeeId,KeyType=HASH --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5

Solution

  1. Step 1: Define attribute-definitions for both keys

    Both EmployeeId and Department must be defined with AttributeType=S.
  2. Step 2: Define key-schema with HASH and RANGE keys

    EmployeeId is partition key (HASH), Department is sort key (RANGE).
  3. Step 3: Check command syntax

    aws dynamodb create-table --table-name Employees --attribute-definitions AttributeName=EmployeeId,AttributeType=S AttributeName=Department,AttributeType=S --key-schema AttributeName=EmployeeId,KeyType=HASH AttributeName=Department,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 correctly uses --attribute-definitions and --key-schema with proper syntax and throughput.
  4. Final Answer:

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

    Composite key needs both keys in attribute-definitions and key-schema [OK]
Hint: List all keys in attribute-definitions and key-schema [OK]
Common Mistakes:
  • Defining only partition key without sort key
  • Incorrect key-schema syntax
  • Missing attribute definition for sort key