Bird
Raised Fist0
DynamoDBquery~5 mins

First table creation in DynamoDB

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
Introduction
Creating a table is the first step to store and organize your data in DynamoDB.
When you want to save user information like names and emails.
When you need to keep track of products in an online store.
When you want to store logs or events from an application.
When you want to organize data by categories or IDs for quick access.
Syntax
DynamoDB
aws dynamodb create-table \
    --table-name TableName \
    --attribute-definitions AttributeName=KeyName,AttributeType=Type \
    --key-schema AttributeName=KeyName,KeyType=KeyType \
    --provisioned-throughput ReadCapacityUnits=Number,WriteCapacityUnits=Number
Replace TableName with your table's name.
AttributeType can be S (string), N (number), or B (binary).
Examples
Creates a table named 'Users' with 'UserID' as the primary key.
DynamoDB
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
Creates a table named 'Products' with a numeric primary key 'ProductID'.
DynamoDB
aws dynamodb create-table \
    --table-name Products \
    --attribute-definitions AttributeName=ProductID,AttributeType=N \
    --key-schema AttributeName=ProductID,KeyType=HASH \
    --provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=10
Sample Program
This command creates a DynamoDB table called 'Books' where each book is identified by its ISBN number.
DynamoDB
aws dynamodb create-table \
    --table-name Books \
    --attribute-definitions AttributeName=ISBN,AttributeType=S \
    --key-schema AttributeName=ISBN,KeyType=HASH \
    --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
OutputSuccess
Important Notes
The table status will be 'CREATING' right after creation and changes to 'ACTIVE' when ready.
You must choose a primary key to uniquely identify each item in the table.
Provisioned throughput controls how much read and write capacity your table has.
Summary
Creating a table is the first step to store data in DynamoDB.
You must define a table name, primary key, and capacity settings.
Use the AWS CLI command 'aws dynamodb create-table' with proper options.

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