How to delete all items in DynamoDB
What is dynamoDB?
DynamoDb is a fully managed NoSQL database service provided by Amazon Web Services. It is a highly available and durable service with strong guarantees from AWS. It automatically scales tables up and down to serve the request traffic.
DynamoDB components
Tables are a collection of items. There is no limit on the number of items that a table can store.
Items are a collection of attributes. Each item can be uniquely identified.
Attributes in DynamoDB are the smallest unit of data in DynamoDB. They are similar to fields in other relational database systems.
Example of a database
For the purpose of this article, we will be considering the following Books table schema:
Title: The title of the book
Author: The author of the book
Category: The category of the book
Description: The description of the book
Partition Key: Author
Sort Key: Title
Step1: Create a DynamoDB table
There is a terminal widget at the end of this Answer, where these commands can be tried out. Add the AWS access key, secret key, region and output to the environment. The output in our case will be type JSON. Once the keys are added, copy and paste the command snippets to perform the actions on DynamoDB.
aws dynamodb create-table \--table-name Books \--attribute-definitions \AttributeName=Title,AttributeType=S \AttributeName=Author,AttributeType=S \--key-schema \AttributeName=Author,KeyType=HASH \AttributeName=Title,KeyType=RANGE \--provisioned-throughput \ReadCapacityUnits=5,WriteCapacityUnits=5
Explanation
The
create-tablecommand takes as input thetable-nameas defined on line 2.The
attribute-definitionsdefines the attributes of the table. It expects the name and the type of the attribute to be declared.The
key-schemadefines the keys on which the data would be indexed. TheHASHkey defines the partition key and theRANGEkey defines thesortkey for DynamoDB.The
provisioned-throughputdefines the throughput for the table. It is an integer that defines the maximum number of reads/writes consumed per second. Beyond this number DynamoDB returnsThrottlingException.The output of the create command shows the
TableStatusasCREATING. You can use thedescribe-tableto verify that the table creation has happened.
aws dynamodb describe-table --table-name Books | grep TableStatus
The output of describe-table command shows the TableStatus as ACTIVE.
Step2: Insert items to a DynamoDB table
aws dynamodb put-item \--table-name Books \--item \'{"Author": {"S": "Martin Kleppmann"}, "Title": {"S": "Designing Data-Intensive Applications"}, "Category": {"S": "Data Engineering"}, "Description": {"S": "Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability"}}'aws dynamodb put-item \--table-name Books \--item \'{"Author": {"S": "Scott Meyers"}, "Title": {"S": "Effective Modern C++"}, "Category": {"S": "C++"}, "Description": {"S": "The challenge is learning to use those features effectively—so that your software is correct, efficient, maintainable, and portable."}}'aws dynamodb put-item \--table-name Books \--item \'{"Author": {"S": "Alex Petrov"}, "Title": {"S": "Database Internals"}, "Category": {"S": "Relational Databases"}, "Description": {"S": "When it comes to choosing, using, and maintaining a database, understanding its internals is essential. But with so many distributed databases and tools available today, it’s often difficult to understand what each one offers and how they differ."}}'aws dynamodb put-item \--table-name Books \--item \'{"Author": {"S": "Travis Jeffery"}, "Title": {"S": "Distributed Services with Go"}, "Category": {"S": "Go"}, "Description": {"S": "Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability"}}'
Step3: Scan a DynamoDB table
Use the scan command for listing all the items in the table. This should not be used for large datasets.
aws dynamodb scan --table-name Books
Step4: Delete an item in a DynamoDB table
For deleting a single item, use the following command—both the keys provided in the schema have to be provided.
aws dynamodb delete-item \--table-name Books \--key '{"Author" : {"S": "Travis Jeffery"},"Title" : {"S": "Distributed Services with Go"}}'
Delete all items in a DynamoDB table
For deleting all the items in the DynamoDB table, the fastest method is to delete the table and recreate it. To do this, the following commands can be used.
aws dynamodb delete-table --table-name Booksaws dynamodb create-table \--table-name Books \--attribute-definitions \AttributeName=Title,AttributeType=S \AttributeName=Author,AttributeType=S \--key-schema \AttributeName=Author,KeyType=HASH \AttributeName=Title,KeyType=RANGE \--provisioned-throughput \ReadCapacityUnits=5,WriteCapacityUnits=5
Try it yourself
To test run these commands in the terminal widget below, please enter your AWS access key in the
aws_access_key_idvalue and your AWS secret key in theaws_secret_access_keyvalue before running the terminal.