Bird
Raised Fist0
DynamoDBquery~10 mins

Table creation with AWS SDK in DynamoDB - Step-by-Step Execution

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
Concept Flow - Table creation with AWS SDK
Define Table Parameters
Call AWS SDK CreateTable
AWS Validates Request
Table Creation Starts
Table Status: CREATING
Table Status: ACTIVE
Table Ready to Use
The flow shows defining parameters, calling the SDK to create the table, AWS validating and creating it, then the table becoming active and ready.
Execution Sample
DynamoDB
const params = {
  TableName: "MyTable",
  KeySchema: [{ AttributeName: "id", KeyType: "HASH" }],
  AttributeDefinitions: [{ AttributeName: "id", AttributeType: "S" }],
  ProvisionedThroughput: { ReadCapacityUnits: 5, WriteCapacityUnits: 5 }
};
await dynamodb.createTable(params).promise();
This code defines a DynamoDB table with a primary key 'id' and creates it using the AWS SDK.
Execution Table
StepActionParametersAWS ResponseTable Status
1Define Table Parameters{"TableName":"MyTable","KeySchema":[{"AttributeName":"id","KeyType":"HASH"}],"AttributeDefinitions":[{"AttributeName":"id","AttributeType":"S"}],"ProvisionedThroughput":{"ReadCapacityUnits":5,"WriteCapacityUnits":5}}N/AN/A
2Call createTable APIUse above paramsRequest acceptedCREATING
3AWS validates schema and throughputN/AValidation successfulCREATING
4Table creation in progressN/ATable being createdCREATING
5Table creation completeN/ATable status ACTIVEACTIVE
6Table ready for useN/ATable can be used for operationsACTIVE
💡 Table status becomes ACTIVE, indicating creation is complete and table is ready.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 5Final
paramsundefined{"TableName":"MyTable","KeySchema":[{"AttributeName":"id","KeyType":"HASH"}],"AttributeDefinitions":[{"AttributeName":"id","AttributeType":"S"}],"ProvisionedThroughput":{"ReadCapacityUnits":5,"WriteCapacityUnits":5}}SameSameSame
Table StatusN/AN/ACREATINGACTIVEACTIVE
Key Moments - 3 Insights
Why does the table status show CREATING before it becomes ACTIVE?
When you call createTable, AWS starts creating the table asynchronously. The status is CREATING while AWS sets up resources. Only after setup finishes does the status change to ACTIVE (see execution_table rows 2-5).
What happens if the parameters are invalid?
AWS will reject the request during validation (execution_table row 3). The createTable call will fail and the table won't be created.
Can you use the table immediately after calling createTable?
No, you must wait until the table status is ACTIVE (execution_table row 5). Using it before then will cause errors.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the table status immediately after calling createTable API?
AACTIVE
BCREATING
CDELETING
DUPDATING
💡 Hint
Check execution_table row 2 under 'Table Status' column.
At which step does AWS confirm the table is ready for use?
AStep 6
BStep 4
CStep 5
DStep 3
💡 Hint
Look at execution_table rows 5 and 6 for when status is ACTIVE and ready.
If you change ReadCapacityUnits to 10, what changes in the execution_table?
ATable status will skip CREATING and go directly to ACTIVE
BAWS response will be 'Request rejected'
CParameters in Step 1 will show ReadCapacityUnits as 10
DNo change at all
💡 Hint
Check the 'Parameters' column in execution_table row 1.
Concept Snapshot
AWS SDK createTable flow:
1. Define table parameters (name, keys, throughput).
2. Call createTable API with params.
3. AWS validates and starts creating table asynchronously.
4. Table status is CREATING during setup.
5. When ready, status changes to ACTIVE.
6. Only then table can be used.
Full Transcript
This visual execution shows how to create a DynamoDB table using the AWS SDK. First, you define the table parameters including name, key schema, attribute definitions, and throughput. Then you call the createTable API with these parameters. AWS validates the request and starts creating the table asynchronously. During creation, the table status is CREATING. Once AWS finishes setup, the status changes to ACTIVE, meaning the table is ready for use. You cannot use the table before it is ACTIVE. If parameters are invalid, AWS rejects the request during validation. This step-by-step flow helps beginners understand the asynchronous nature of table creation and the importance of waiting for ACTIVE status.

Practice

(1/5)
1. What is the main purpose of specifying a primary key when creating a DynamoDB table using the AWS SDK?
easy
A. To set the table's read and write capacity
B. To specify the table's encryption settings
C. To define the table's region
D. To uniquely identify each item in the table

Solution

  1. Step 1: Understand the role of a primary key in DynamoDB

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

    Read/write capacity, region, and encryption are important but unrelated to item uniqueness.
  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 capacity settings
  • Thinking primary key sets region or encryption
  • Ignoring the uniqueness requirement
2. Which of the following is the correct way to specify the primary key attribute when creating a DynamoDB table using AWS SDK for JavaScript?
easy
A. "KeySchema": [{ "AttributeName": "UserId", "KeyType": "HASH" }]
B. "KeySchema": [{ "AttributeName": "UserId", "KeyType": "PRIMARY" }]
C. "KeySchema": [{ "AttributeName": "UserId", "KeyType": "PRIMARY_KEY" }]
D. "KeySchema": [{ "AttributeName": "UserId", "KeyType": "KEY" }]

Solution

  1. Step 1: Recall AWS SDK syntax for KeySchema

    The correct key type for the partition key is "HASH" in the KeySchema array.
  2. Step 2: Identify incorrect key types

    "PRIMARY", "PRIMARY_KEY", and "KEY" are not valid KeyType values in AWS SDK.
  3. Final Answer:

    "KeySchema": [{ "AttributeName": "UserId", "KeyType": "HASH" }] -> Option A
  4. Quick Check:

    KeyType for partition key = HASH [OK]
Hint: Use "HASH" for partition key in KeySchema [OK]
Common Mistakes:
  • Using invalid KeyType values like PRIMARY or KEY
  • Confusing KeyType with attribute types
  • Missing the array structure for KeySchema
3. Given the following AWS SDK code snippet for creating a DynamoDB table, what will be the output if the table creation is successful?
const params = {
  TableName: "Products",
  KeySchema: [
    { AttributeName: "ProductId", KeyType: "HASH" }
  ],
  AttributeDefinitions: [
    { AttributeName: "ProductId", AttributeType: "S" }
  ],
  ProvisionedThroughput: {
    ReadCapacityUnits: 5,
    WriteCapacityUnits: 5
  }
};

const result = await dynamodb.createTable(params).promise();
console.log(result.TableDescription.TableName);
medium
A. Products
B. Table creation failed
C. undefined
D. Error: Missing KeySchema

Solution

  1. Step 1: Understand the createTable response structure

    On success, createTable returns an object with TableDescription including TableName.
  2. Step 2: Check the console.log statement

    It prints result.TableDescription.TableName, which is "Products" as specified.
  3. Final Answer:

    Products -> Option A
  4. Quick Check:

    Successful createTable logs table name [OK]
Hint: Successful createTable returns TableDescription with TableName [OK]
Common Mistakes:
  • Expecting error messages on success
  • Confusing undefined with valid output
  • Missing await causing promise object logging
4. You try to create a DynamoDB table with the following parameters but get an error. What is the most likely cause?
const params = {
  TableName: "Orders",
  KeySchema: [
    { AttributeName: "OrderId", KeyType: "HASH" },
    { AttributeName: "OrderDate", KeyType: "RANGE" }
  ],
  AttributeDefinitions: [
    { AttributeName: "OrderId", AttributeType: "S" }
  ],
  ProvisionedThroughput: {
    ReadCapacityUnits: 10,
    WriteCapacityUnits: 10
  }
};

await dynamodb.createTable(params).promise();
medium
A. TableName is invalid
B. Missing AttributeDefinition for "OrderDate"
C. ProvisionedThroughput values are too high
D. KeyType "RANGE" is not allowed

Solution

  1. Step 1: Check KeySchema and AttributeDefinitions consistency

    Both "OrderId" and "OrderDate" are in KeySchema, but only "OrderId" is defined in AttributeDefinitions.
  2. Step 2: Identify missing attribute definition

    "OrderDate" must be defined in AttributeDefinitions to avoid error.
  3. Final Answer:

    Missing AttributeDefinition for "OrderDate" -> Option B
  4. Quick Check:

    All key attributes need AttributeDefinitions [OK]
Hint: Define all key attributes in AttributeDefinitions [OK]
Common Mistakes:
  • Forgetting to define all key attributes
  • Assuming RANGE is invalid KeyType
  • Blaming ProvisionedThroughput or TableName
5. You want to create a DynamoDB table named "Employees" with a composite primary key consisting of "EmployeeId" (string) as the partition key and "Department" (string) as the sort key. You also want to set the read capacity to 3 and write capacity to 2. Which of the following AWS SDK parameter objects correctly creates this table?
hard
A. { TableName: "Employees", KeySchema: [{ AttributeName: "EmployeeId", KeyType: "HASH" }], AttributeDefinitions: [{ AttributeName: "EmployeeId", AttributeType: "S" }, { AttributeName: "Department", AttributeType: "S" }], ProvisionedThroughput: { ReadCapacityUnits: 3, WriteCapacityUnits: 2 } }
B. { TableName: "Employees", KeySchema: [{ AttributeName: "EmployeeId", KeyType: "RANGE" }, { AttributeName: "Department", KeyType: "HASH" }], AttributeDefinitions: [{ AttributeName: "EmployeeId", AttributeType: "S" }, { AttributeName: "Department", AttributeType: "S" }], ProvisionedThroughput: { ReadCapacityUnits: 3, WriteCapacityUnits: 2 } }
C. { TableName: "Employees", KeySchema: [{ AttributeName: "EmployeeId", KeyType: "HASH" }, { AttributeName: "Department", KeyType: "RANGE" }], AttributeDefinitions: [{ AttributeName: "EmployeeId", AttributeType: "S" }, { AttributeName: "Department", AttributeType: "S" }], ProvisionedThroughput: { ReadCapacityUnits: 3, WriteCapacityUnits: 2 } }
D. { TableName: "Employees", KeySchema: [{ AttributeName: "EmployeeId", KeyType: "HASH" }, { AttributeName: "Department", KeyType: "RANGE" }], AttributeDefinitions: [{ AttributeName: "EmployeeId", AttributeType: "N" }, { AttributeName: "Department", AttributeType: "S" }], ProvisionedThroughput: { ReadCapacityUnits: 3, WriteCapacityUnits: 2 } }

Solution

  1. Step 1: Verify KeySchema order and types

    Partition key must have KeyType "HASH" and sort key "RANGE" in correct order: EmployeeId (HASH), Department (RANGE).
  2. Step 2: Check AttributeDefinitions types

    Both EmployeeId and Department are strings, so AttributeType "S" is correct for both.
  3. Step 3: Confirm ProvisionedThroughput values

    ReadCapacityUnits: 3 and WriteCapacityUnits: 2 match the requirement.
  4. Final Answer:

    { TableName: "Employees", KeySchema: [{ AttributeName: "EmployeeId", KeyType: "HASH" }, { AttributeName: "Department", KeyType: "RANGE" }], AttributeDefinitions: [{ AttributeName: "EmployeeId", AttributeType: "S" }, { AttributeName: "Department", AttributeType: "S" }], ProvisionedThroughput: { ReadCapacityUnits: 3, WriteCapacityUnits: 2 } } -> Option C
  5. Quick Check:

    Correct key order and attribute types = { TableName: "Employees", KeySchema: [{ AttributeName: "EmployeeId", KeyType: "HASH" }, { AttributeName: "Department", KeyType: "RANGE" }], AttributeDefinitions: [{ AttributeName: "EmployeeId", AttributeType: "S" }, { AttributeName: "Department", AttributeType: "S" }], ProvisionedThroughput: { ReadCapacityUnits: 3, WriteCapacityUnits: 2 } } [OK]
Hint: Partition key = HASH, sort key = RANGE, types must match [OK]
Common Mistakes:
  • Swapping HASH and RANGE key types
  • Mismatching attribute types (string vs number)
  • Omitting sort key in KeySchema