
Navigation
- Tutorial Home
- Introduction to DynamoDB database
- DynamoDB local and setups required
- DynamoDB Data types tutorial
- Create a table in DynamoDB
- Insert items into DynamoDB table
- Query items in a DynamoDB table
- Scan the DynamoDB table items
- Update an item in the DynamoDB table
- DynamoDB table Index – Global and local
In this section of the tutorial, we will learn how to create a table in DynamoDB.
To create a table in any database you first need to create a database server itself. In the case of DynamoDB that is not necessary. Since it is fully managed by AWS the server configuration is not needed. You can directly begin by creating a table in the AWS console.
We can create a DynamoDB using one of the following four ways:
- AWS console – in the browser and use the user interface to create a table
- AWS CLI – AWS provides CLI to perform table creation
- AWS SDK – AWS SDK for AWS supported programming languages
- AWS CloudFormation – IaC
AWS console to create a table in DynamoDB
This is the simplest way to create a table in DynamoDB. For this, follow the following steps:
- Log in to AWS console
- Go to services > DynamoDB
- There you will see an option Create Table. Click the option.
- Enter the table name and a primary key name.

This will create a DynamoDB table with the table name you specified and the primary key specified. Let us look more into the partition key.
Primary Key
Like any other database, you need to specify a unique attribute in a table. The partition key is a unique identifier of any item you store in the table. DynamoDB data can be retrieved using the primary key. A partition key can be one of
- Partition Key
- Partition key + Sort Key
Partition Key
DynamodDB is scalable because by default it stores the items of a table in various partitions. The partition is based on the partition key we specify.

DynamoDB automatically stores and retrieves data based on the primary key. It determines the partition in which it needs to store/retrieve items based on the internal hash function.
Sort Key
When we specify a sort key, the data is inside a partition is sorted based on the key. This helps query faster within a partition. If the data size within a partition gets bigger than 10GB it is split based on the sort key.
How to choose the right partition key?
- Use the key that you want to access the data mostly with. For example in a books table, use book_id as a primary key and not a random ID that you do not query the table with.
- Use a unique key for the partition key
- Make sure your access pattern is equally distributed across different partitions. If most of your transaction is always reading one partition on a table that will cause all the load to be handled by a single partition.
- If your application is write-heavy add a prefix to your partition key. With this, you can ensure that the item write is being equally distributed across different partitions and not only a single partition is handling a big write.
AWS CLI to create a table
AWS is always CLI first. This means that any features developed by AWS are available via the AWS CLI
If you have not installed you can install the AWS CLI in your machine you can follow this guide
Once the CLI is installed we can now create a table.
aws dynamodb create-table \ --table-name Book \ --attribute-definitions \ AttributeName=Author,AttributeType=S \ AttributeName=Category,AttributeType=S \ --key-schema AttributeName=Author,KeyType=HASH AttributeName=Category,KeyType=RANGE \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
To perform any action via CLI for DynamoDB we use the command aws dynamodb
. Here we are creating a table so the command is aws dynamodb create-table
In the above CLI command, we can see 4 main parameters provided to the AWS CLI for create-table command.
–table-name The name of the table we want to create. In this case a book table
–attribute-definitions The attributes that we need to predefine to AWS which will include partition key and sort key as needed. In this case, we need the Author and Category of the book. Both of them are strings so we are representing it as S. A single attribute is defined in the format AttributeName=Author,AttributeType=S
–key-schema In this argument we define which is our partition key and which is our sort key. Here we will be using Author as the partition key and category and the sort key. We define the key schema in the following format
AttributeName=Author,KeyType=HASH
Here the AttributeName is the name of the attribute we defined in the attribute-definitions section. The keyType
can be either a HASH or a RANGE. If it is a HASH we are telling DynamoDB that it is the partition key. The section key-schema after that has a RANGE value in the keyType
, which is the sort KEY.
–provisioned-throughput Here we define how much throughput we want to provision for the DynamoDB read/write
When there are a large number of attribute definitions needed it will be messy to define all of them in a single CLI command. So we have an option to provide a file for the arguments for the create table in DynamoDB.
Using a file to organize the CLI arguments
aws dynamodb create-table --cli-input-json file://booktable.json
We need to define a file called booktable.json where we can provide the necessary argument:
{ "AttributeDefinitions": [ { "AttributeName": "Author", "AttributeType": "S" }, { "AttributeName": "Category", "AttributeType": "S" } ], "TableName": "books", "KeySchema": [ { "AttributeName": "Author", "KeyType": "HASH" }, { "AttributeName": "Category", "KeyType": "RANGE" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 5 } }
With this file and the command to create a table becomes more organized.
Using AWS SDK to create a table
You can use any AWS SDK to create a DynamoDB table. In this tutorial we will be using Golang to create a table:
// createDynamoDB.go package main import ( "fmt" "github.com/aws/aws-sdk-go/service/dynamodb" ) func main() { // AWS session mySession := session.Must(session.NewSession()) // A DynamoDB client svc := dynamodb.New(mySession) // Create a table attr := dynamodb.AttributeDefinition{ AttributeName: "Author", "AttributeType": "S" } attributeDefinitions := []dynamodb.AttributeDefinition{attr} schema := dynamodb.KeySchemaElement{ AttributeName: "Author", "KeyType": "HASH" } keySchema := []dynamodb.KeySchemaElement{&schema} input := dynamodb.CreateTableInput{ AttributeDefinitions: &attributeDefinitions, KeySchema: &keySchema} out, err := svc.CreateTable(&input) if err != nil { fmt.Println(err) } fmt.Println(out) }
We can also create a Table using AWS Cloudformation. We will learn about it in the coming sections.
You can use any one of the above mechanisms to create DynamoDB table. In the next section of the tutorial, we will learn to insert data in the table we just created.