Simple DynamoDB Table Backup & Restore

When migrating AWS environments there is a typical need to migrate data. In terms of data migration & backup there are many very nice options for DynamoDB today, including

  • Amazon S3 and AWS Glue
  • Data Pipeline
  • Amazon EMR

They are serverless and mostly don’t require any coding. They support Dynamo Streams and should be generally used during warm/hot no-downtime migrations.

But what should we do if the downtime requirements are much more liberal and the data amount is rather small? Do we really need to build a complex system that involves multiple AWS services for a simple migration that can be done with 1 minute cutover?

I figured that the answer should be “Yes”. I was looking at options and found bchew/dynamodump, which is a small python utility written with boto3. The usage is rather simple.


pip install dynamodump

Simple Example

dynamodump -p infra-legacy -m backup -r us-west-1 -s testTable

dynamodump -p infra-prod -m restore -r us-west-1 -s testTable

Notes & Recommendations

  • Use -p parameter to specify profile, so there is no mixup on source and destination
  • Keep --skipThroughputUpdate parameter in mind, if sometimes there is an issue with automatic throughput settings.
  • Keep network bandwith capabilities in mind, and if your data amounts are substantial, use an ec2 instance to reduce your TTR.
Second Head Post
This is a post from Second Head. So please, don’t expect too much.