Repository files navigation

dynamodump

Build StatusCodeQL StatusDocker StatusLinting StatusTest StatusPyPI versionPyPI pyversionsCode Style

Simple backup and restore script for Amazon DynamoDB using AWS SDK for Python (boto3) to work similarly to mysqldump.

Suitable for DynamoDB usages of smaller data volume which do not warrant the usage of AWS Data Pipeline for backup/restores/empty.

dynamodump supports local DynamoDB instances as well (tested with DynamoDB Local).

Table of Contents

Installation

pip install dynamodump

Usage

usage: dynamodump.py [-h] [-a {zip,tar}] [-b BUCKET] [-m {backup,restore,empty}] [-r REGION] [--host HOST] [--port PORT] [--accessKey ACCESSKEY] [--secretKey SECRETKEY] [-p PROFILE] [-s SRCTABLE] [-d DESTTABLE]
[--prefixSeparator PREFIXSEPARATOR] [--noSeparator] [--readCapacity READCAPACITY] [-t TAG] [--writeCapacity WRITECAPACITY] [--schemaOnly] [--dataOnly] [--noConfirm] [--skipThroughputUpdate]
[--dumpPath DUMPPATH] [--billingMode {PROVISIONED,PAY_PER_REQUEST}] [--log LOG] [--limit LIMIT] [-f FILTEROPTION]
Simple DynamoDB backup/restore/empty.
options:
-h, --help show this help message and exit
-a {zip,tar}, --archive {zip,tar}
Type of compressed archive to create. If unset, don't create archive
-b BUCKET, --bucket BUCKET
S3 bucket in which to store or retrieve backups. [must already exist]
-m {backup,restore,empty}, --mode {backup,restore,empty}
Operation to perform
-r REGION, --region REGION
AWS region to use, e.g. 'us-west-1'. Can use any region for local testing
--host HOST Host of local DynamoDB. This parameter initialises dynamodump for local DynamoDB testing [required only for local]
--port PORT Port of local DynamoDB [required only for local]
--accessKey ACCESSKEY
Access key of local DynamoDB [required only for local]
--secretKey SECRETKEY
Secret key of local DynamoDB [required only for local]
-p PROFILE, --profile PROFILE
AWS credentials file profile to use. Allows you to use a profile instead accessKey, secretKey authentication
-s SRCTABLE, --srcTable SRCTABLE
Source DynamoDB table name to backup or restore from, use 'tablename*' for wildcard prefix selection or '*' for all tables. Mutually exclusive with --tag
-d DESTTABLE, --destTable DESTTABLE
Destination DynamoDB table name to backup or restore to, use 'tablename*' for wildcard prefix selection (defaults to use '-' separator) [optional, defaults to source]
--prefixSeparator PREFIXSEPARATOR
Specify a different prefix separator, e.g. '.' [optional]
--noSeparator Overrides the use of a prefix separator for backup wildcard searches [optional]
--readCapacity READCAPACITY
Change the temp read capacity of the DynamoDB table to backup from [optional]
-t TAG, --tag TAG Tag to use for identifying tables to back up. Mutually exclusive with srcTable. Provided as KEY=VALUE
--writeCapacity WRITECAPACITY
Change the temp write capacity of the DynamoDB table to restore to [defaults to 25, optional]
--schemaOnly Backup or restore the schema only. Do not backup/restore data. Can be used with both backup and restore modes. Cannot be used with the --dataOnly [optional]
--dataOnly Restore data only. Do not delete/recreate schema [optional for restore]
--noConfirm Don't ask for confirmation before deleting existing schemas.
--skipThroughputUpdate
Skip updating throughput values across tables [optional]
--dumpPath DUMPPATH Directory to place and search for DynamoDB table backups (defaults to use 'dump') [optional]
--billingMode {PROVISIONED,PAY_PER_REQUEST}
Set billing mode between PROVISIONED|PAY_PER_REQUEST (defaults to use 'PROVISIONED') [optional]
--log LOG Logging level - DEBUG|INFO|WARNING|ERROR|CRITICAL [optional]
--limit LIMIT Limit option for backup, will stop the back up process after number of backed up items reaches the limit [optional]
-f FILTEROPTION, --filterOption FILTEROPTION
Filter option for backup, JSON file of which keys are ['FilterExpression', 'ExpressionAttributeNames', 'ExpressionAttributeValues']

Backup files are stored in a 'dump' subdirectory, and are restored from there as well by default.

Script (unattended) usage

As of v1.2.0, note that --noConfirm is required to perform data restores involving deletions without any confirmation.

Docker CLI usage

docker run --rm -it bchew/dynamodump -h

dynamodump container images are also published to Amazon ECR Public and GitHub Packages:

public.ecr.aws/bchew/dynamodump
ghcr.io/bchew/dynamodump

Links to the registries specified:

AWS example

Single table backup/restore:

dynamodump -m backup -r us-west-1 -s testTable
dynamodump -m restore -r us-west-1 -s testTable

Multiple table backup/restore (assumes prefix of 'production-' of table names, use --prefixSeparator to specify a different separator):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production*

The above, but between different environments (e.g. production-_ tables to development-_ tables):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production* -d development*

Backup all tables and restore only data (will not delete and recreate schema):

dynamodump -m backup -r us-west-1 -s "*"
dynamodump -m restore -r us-west-1 -s "*" --dataOnly

Dump all table schemas and create the schemas (e.g. creating blank tables in a different AWS account):

dynamodump -m backup -r us-west-1 -p source_credentials -s "*" --schemaOnly
dynamodump -m restore -r us-west-1 -p destination_credentials -s "*" --schemaOnly

Backup all tables based on AWS tag key=value

dynamodump -p profile -r us-east-1 -m backup -t KEY=VALUE

Backup all tables based on AWS tag, compress and store in specified S3 bucket.

dynamodump -p profile -r us-east-1 -m backup -a tar -b some_s3_bucket -t TAG_KEY=TAG_VALUE
dynamodump -p profile -r us-east-1 -m backup -a zip -b some_s3_bucket -t TAG_KEY=TAG_VALUE

Restore from S3 bucket to specified destination table

## source_table identifies archive file in S3 bucket from which backup data is restored
dynamodump -a tar -b some_s3_bucket -m restore -r us-east-1 -p profile -d destination_table -s source_table

Local example

The following assumes your local DynamoDB is running on localhost:8000 and is accessible via 'a' as access/secret keys. You must specify the host to get local behavior.

dynamodump -m backup -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a
dynamodump -m restore -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a

Multiple table backup/restore as stated in the AWS examples are also available for local.

Development

python3 -m venv env
source env/bin/activate
# install dev requirements
pip3 install -r requirements-dev.txt
# one-time install of pre-commit hooks
pre-commit install

About

Simple backup and restore for Amazon DynamoDB using AWS SDK for Python (boto3)

Topics

Resources

Stars

876 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

dynamodump

Build StatusCodeQL StatusDocker StatusLinting StatusTest StatusPyPI versionPyPI pyversionsCode Style

Simple backup and restore script for Amazon DynamoDB using AWS SDK for Python (boto3) to work similarly to mysqldump.

Suitable for DynamoDB usages of smaller data volume which do not warrant the usage of AWS Data Pipeline for backup/restores/empty.

dynamodump supports local DynamoDB instances as well (tested with DynamoDB Local).

Table of Contents

Installation

pip install dynamodump

Usage

usage: dynamodump.py [-h] [-a {zip,tar}] [-b BUCKET] [-m {backup,restore,empty}] [-r REGION] [--host HOST] [--port PORT] [--accessKey ACCESSKEY] [--secretKey SECRETKEY] [-p PROFILE] [-s SRCTABLE] [-d DESTTABLE]
[--prefixSeparator PREFIXSEPARATOR] [--noSeparator] [--readCapacity READCAPACITY] [-t TAG] [--writeCapacity WRITECAPACITY] [--schemaOnly] [--dataOnly] [--noConfirm] [--skipThroughputUpdate]
[--dumpPath DUMPPATH] [--billingMode {PROVISIONED,PAY_PER_REQUEST}] [--log LOG] [--limit LIMIT] [-f FILTEROPTION]
Simple DynamoDB backup/restore/empty.
options:
-h, --help show this help message and exit
-a {zip,tar}, --archive {zip,tar}
Type of compressed archive to create. If unset, don't create archive
-b BUCKET, --bucket BUCKET
S3 bucket in which to store or retrieve backups. [must already exist]
-m {backup,restore,empty}, --mode {backup,restore,empty}
Operation to perform
-r REGION, --region REGION
AWS region to use, e.g. 'us-west-1'. Can use any region for local testing
--host HOST Host of local DynamoDB. This parameter initialises dynamodump for local DynamoDB testing [required only for local]
--port PORT Port of local DynamoDB [required only for local]
--accessKey ACCESSKEY
Access key of local DynamoDB [required only for local]
--secretKey SECRETKEY
Secret key of local DynamoDB [required only for local]
-p PROFILE, --profile PROFILE
AWS credentials file profile to use. Allows you to use a profile instead accessKey, secretKey authentication
-s SRCTABLE, --srcTable SRCTABLE
Source DynamoDB table name to backup or restore from, use 'tablename*' for wildcard prefix selection or '*' for all tables. Mutually exclusive with --tag
-d DESTTABLE, --destTable DESTTABLE
Destination DynamoDB table name to backup or restore to, use 'tablename*' for wildcard prefix selection (defaults to use '-' separator) [optional, defaults to source]
--prefixSeparator PREFIXSEPARATOR
Specify a different prefix separator, e.g. '.' [optional]
--noSeparator Overrides the use of a prefix separator for backup wildcard searches [optional]
--readCapacity READCAPACITY
Change the temp read capacity of the DynamoDB table to backup from [optional]
-t TAG, --tag TAG Tag to use for identifying tables to back up. Mutually exclusive with srcTable. Provided as KEY=VALUE
--writeCapacity WRITECAPACITY
Change the temp write capacity of the DynamoDB table to restore to [defaults to 25, optional]
--schemaOnly Backup or restore the schema only. Do not backup/restore data. Can be used with both backup and restore modes. Cannot be used with the --dataOnly [optional]
--dataOnly Restore data only. Do not delete/recreate schema [optional for restore]
--noConfirm Don't ask for confirmation before deleting existing schemas.
--skipThroughputUpdate
Skip updating throughput values across tables [optional]
--dumpPath DUMPPATH Directory to place and search for DynamoDB table backups (defaults to use 'dump') [optional]
--billingMode {PROVISIONED,PAY_PER_REQUEST}
Set billing mode between PROVISIONED|PAY_PER_REQUEST (defaults to use 'PROVISIONED') [optional]
--log LOG Logging level - DEBUG|INFO|WARNING|ERROR|CRITICAL [optional]
--limit LIMIT Limit option for backup, will stop the back up process after number of backed up items reaches the limit [optional]
-f FILTEROPTION, --filterOption FILTEROPTION
Filter option for backup, JSON file of which keys are ['FilterExpression', 'ExpressionAttributeNames', 'ExpressionAttributeValues']

Backup files are stored in a 'dump' subdirectory, and are restored from there as well by default.

Script (unattended) usage

As of v1.2.0, note that --noConfirm is required to perform data restores involving deletions without any confirmation.

Docker CLI usage

docker run --rm -it bchew/dynamodump -h

dynamodump container images are also published to Amazon ECR Public and GitHub Packages:

public.ecr.aws/bchew/dynamodump
ghcr.io/bchew/dynamodump

Links to the registries specified:

AWS example

Single table backup/restore:

dynamodump -m backup -r us-west-1 -s testTable
dynamodump -m restore -r us-west-1 -s testTable

Multiple table backup/restore (assumes prefix of 'production-' of table names, use --prefixSeparator to specify a different separator):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production*

The above, but between different environments (e.g. production-_ tables to development-_ tables):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production* -d development*

Backup all tables and restore only data (will not delete and recreate schema):

dynamodump -m backup -r us-west-1 -s "*"
dynamodump -m restore -r us-west-1 -s "*" --dataOnly

Dump all table schemas and create the schemas (e.g. creating blank tables in a different AWS account):

dynamodump -m backup -r us-west-1 -p source_credentials -s "*" --schemaOnly
dynamodump -m restore -r us-west-1 -p destination_credentials -s "*" --schemaOnly

Backup all tables based on AWS tag key=value

dynamodump -p profile -r us-east-1 -m backup -t KEY=VALUE

Backup all tables based on AWS tag, compress and store in specified S3 bucket.

dynamodump -p profile -r us-east-1 -m backup -a tar -b some_s3_bucket -t TAG_KEY=TAG_VALUE
dynamodump -p profile -r us-east-1 -m backup -a zip -b some_s3_bucket -t TAG_KEY=TAG_VALUE

Restore from S3 bucket to specified destination table

## source_table identifies archive file in S3 bucket from which backup data is restored
dynamodump -a tar -b some_s3_bucket -m restore -r us-east-1 -p profile -d destination_table -s source_table

Local example

The following assumes your local DynamoDB is running on localhost:8000 and is accessible via 'a' as access/secret keys. You must specify the host to get local behavior.

dynamodump -m backup -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a
dynamodump -m restore -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a

Multiple table backup/restore as stated in the AWS examples are also available for local.

Development

python3 -m venv env
source env/bin/activate
# install dev requirements
pip3 install -r requirements-dev.txt
# one-time install of pre-commit hooks
pre-commit install

About

Simple backup and restore for Amazon DynamoDB using AWS SDK for Python (boto3)

Topics

Resources

Stars

876 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dynamodump

Build StatusCodeQL StatusDocker StatusLinting StatusTest StatusPyPI versionPyPI pyversionsCode Style

Simple backup and restore script for Amazon DynamoDB using AWS SDK for Python (boto3) to work similarly to mysqldump.

Suitable for DynamoDB usages of smaller data volume which do not warrant the usage of AWS Data Pipeline for backup/restores/empty.

dynamodump supports local DynamoDB instances as well (tested with DynamoDB Local).

Table of Contents

Installation

pip install dynamodump

Usage

usage: dynamodump.py [-h] [-a {zip,tar}] [-b BUCKET] [-m {backup,restore,empty}] [-r REGION] [--host HOST] [--port PORT] [--accessKey ACCESSKEY] [--secretKey SECRETKEY] [-p PROFILE] [-s SRCTABLE] [-d DESTTABLE]
[--prefixSeparator PREFIXSEPARATOR] [--noSeparator] [--readCapacity READCAPACITY] [-t TAG] [--writeCapacity WRITECAPACITY] [--schemaOnly] [--dataOnly] [--noConfirm] [--skipThroughputUpdate]
[--dumpPath DUMPPATH] [--billingMode {PROVISIONED,PAY_PER_REQUEST}] [--log LOG] [--limit LIMIT] [-f FILTEROPTION]
Simple DynamoDB backup/restore/empty.
options:
-h, --help show this help message and exit
-a {zip,tar}, --archive {zip,tar}
Type of compressed archive to create. If unset, don't create archive
-b BUCKET, --bucket BUCKET
S3 bucket in which to store or retrieve backups. [must already exist]
-m {backup,restore,empty}, --mode {backup,restore,empty}
Operation to perform
-r REGION, --region REGION
AWS region to use, e.g. 'us-west-1'. Can use any region for local testing
--host HOST Host of local DynamoDB. This parameter initialises dynamodump for local DynamoDB testing [required only for local]
--port PORT Port of local DynamoDB [required only for local]
--accessKey ACCESSKEY
Access key of local DynamoDB [required only for local]
--secretKey SECRETKEY
Secret key of local DynamoDB [required only for local]
-p PROFILE, --profile PROFILE
AWS credentials file profile to use. Allows you to use a profile instead accessKey, secretKey authentication
-s SRCTABLE, --srcTable SRCTABLE
Source DynamoDB table name to backup or restore from, use 'tablename*' for wildcard prefix selection or '*' for all tables. Mutually exclusive with --tag
-d DESTTABLE, --destTable DESTTABLE
Destination DynamoDB table name to backup or restore to, use 'tablename*' for wildcard prefix selection (defaults to use '-' separator) [optional, defaults to source]
--prefixSeparator PREFIXSEPARATOR
Specify a different prefix separator, e.g. '.' [optional]
--noSeparator Overrides the use of a prefix separator for backup wildcard searches [optional]
--readCapacity READCAPACITY
Change the temp read capacity of the DynamoDB table to backup from [optional]
-t TAG, --tag TAG Tag to use for identifying tables to back up. Mutually exclusive with srcTable. Provided as KEY=VALUE
--writeCapacity WRITECAPACITY
Change the temp write capacity of the DynamoDB table to restore to [defaults to 25, optional]
--schemaOnly Backup or restore the schema only. Do not backup/restore data. Can be used with both backup and restore modes. Cannot be used with the --dataOnly [optional]
--dataOnly Restore data only. Do not delete/recreate schema [optional for restore]
--noConfirm Don't ask for confirmation before deleting existing schemas.
--skipThroughputUpdate
Skip updating throughput values across tables [optional]
--dumpPath DUMPPATH Directory to place and search for DynamoDB table backups (defaults to use 'dump') [optional]
--billingMode {PROVISIONED,PAY_PER_REQUEST}
Set billing mode between PROVISIONED|PAY_PER_REQUEST (defaults to use 'PROVISIONED') [optional]
--log LOG Logging level - DEBUG|INFO|WARNING|ERROR|CRITICAL [optional]
--limit LIMIT Limit option for backup, will stop the back up process after number of backed up items reaches the limit [optional]
-f FILTEROPTION, --filterOption FILTEROPTION
Filter option for backup, JSON file of which keys are ['FilterExpression', 'ExpressionAttributeNames', 'ExpressionAttributeValues']

Backup files are stored in a 'dump' subdirectory, and are restored from there as well by default.

Script (unattended) usage

As of v1.2.0, note that --noConfirm is required to perform data restores involving deletions without any confirmation.

Docker CLI usage

docker run --rm -it bchew/dynamodump -h

dynamodump container images are also published to Amazon ECR Public and GitHub Packages:

public.ecr.aws/bchew/dynamodump
ghcr.io/bchew/dynamodump

Links to the registries specified:

AWS example

Single table backup/restore:

dynamodump -m backup -r us-west-1 -s testTable
dynamodump -m restore -r us-west-1 -s testTable

Multiple table backup/restore (assumes prefix of 'production-' of table names, use --prefixSeparator to specify a different separator):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production*

The above, but between different environments (e.g. production-_ tables to development-_ tables):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production* -d development*

Backup all tables and restore only data (will not delete and recreate schema):

dynamodump -m backup -r us-west-1 -s "*"
dynamodump -m restore -r us-west-1 -s "*" --dataOnly

Dump all table schemas and create the schemas (e.g. creating blank tables in a different AWS account):

dynamodump -m backup -r us-west-1 -p source_credentials -s "*" --schemaOnly
dynamodump -m restore -r us-west-1 -p destination_credentials -s "*" --schemaOnly

Backup all tables based on AWS tag key=value

dynamodump -p profile -r us-east-1 -m backup -t KEY=VALUE

Backup all tables based on AWS tag, compress and store in specified S3 bucket.

dynamodump -p profile -r us-east-1 -m backup -a tar -b some_s3_bucket -t TAG_KEY=TAG_VALUE
dynamodump -p profile -r us-east-1 -m backup -a zip -b some_s3_bucket -t TAG_KEY=TAG_VALUE

Restore from S3 bucket to specified destination table

## source_table identifies archive file in S3 bucket from which backup data is restored
dynamodump -a tar -b some_s3_bucket -m restore -r us-east-1 -p profile -d destination_table -s source_table

Local example

The following assumes your local DynamoDB is running on localhost:8000 and is accessible via 'a' as access/secret keys. You must specify the host to get local behavior.

dynamodump -m backup -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a
dynamodump -m restore -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a

Multiple table backup/restore as stated in the AWS examples are also available for local.

Development

python3 -m venv env
source env/bin/activate
# install dev requirements
pip3 install -r requirements-dev.txt
# one-time install of pre-commit hooks
pre-commit install

About

Simple backup and restore for Amazon DynamoDB using AWS SDK for Python (boto3)

Topics

Resources

Stars

876 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dynamodump

Build StatusCodeQL StatusDocker StatusLinting StatusTest StatusPyPI versionPyPI pyversionsCode Style

Simple backup and restore script for Amazon DynamoDB using AWS SDK for Python (boto3) to work similarly to mysqldump.

Suitable for DynamoDB usages of smaller data volume which do not warrant the usage of AWS Data Pipeline for backup/restores/empty.

dynamodump supports local DynamoDB instances as well (tested with DynamoDB Local).

Table of Contents

Installation

pip install dynamodump

Usage

usage: dynamodump.py [-h] [-a {zip,tar}] [-b BUCKET] [-m {backup,restore,empty}] [-r REGION] [--host HOST] [--port PORT] [--accessKey ACCESSKEY] [--secretKey SECRETKEY] [-p PROFILE] [-s SRCTABLE] [-d DESTTABLE]
[--prefixSeparator PREFIXSEPARATOR] [--noSeparator] [--readCapacity READCAPACITY] [-t TAG] [--writeCapacity WRITECAPACITY] [--schemaOnly] [--dataOnly] [--noConfirm] [--skipThroughputUpdate]
[--dumpPath DUMPPATH] [--billingMode {PROVISIONED,PAY_PER_REQUEST}] [--log LOG] [--limit LIMIT] [-f FILTEROPTION]
Simple DynamoDB backup/restore/empty.
options:
-h, --help show this help message and exit
-a {zip,tar}, --archive {zip,tar}
Type of compressed archive to create. If unset, don't create archive
-b BUCKET, --bucket BUCKET
S3 bucket in which to store or retrieve backups. [must already exist]
-m {backup,restore,empty}, --mode {backup,restore,empty}
Operation to perform
-r REGION, --region REGION
AWS region to use, e.g. 'us-west-1'. Can use any region for local testing
--host HOST Host of local DynamoDB. This parameter initialises dynamodump for local DynamoDB testing [required only for local]
--port PORT Port of local DynamoDB [required only for local]
--accessKey ACCESSKEY
Access key of local DynamoDB [required only for local]
--secretKey SECRETKEY
Secret key of local DynamoDB [required only for local]
-p PROFILE, --profile PROFILE
AWS credentials file profile to use. Allows you to use a profile instead accessKey, secretKey authentication
-s SRCTABLE, --srcTable SRCTABLE
Source DynamoDB table name to backup or restore from, use 'tablename*' for wildcard prefix selection or '*' for all tables. Mutually exclusive with --tag
-d DESTTABLE, --destTable DESTTABLE
Destination DynamoDB table name to backup or restore to, use 'tablename*' for wildcard prefix selection (defaults to use '-' separator) [optional, defaults to source]
--prefixSeparator PREFIXSEPARATOR
Specify a different prefix separator, e.g. '.' [optional]
--noSeparator Overrides the use of a prefix separator for backup wildcard searches [optional]
--readCapacity READCAPACITY
Change the temp read capacity of the DynamoDB table to backup from [optional]
-t TAG, --tag TAG Tag to use for identifying tables to back up. Mutually exclusive with srcTable. Provided as KEY=VALUE
--writeCapacity WRITECAPACITY
Change the temp write capacity of the DynamoDB table to restore to [defaults to 25, optional]
--schemaOnly Backup or restore the schema only. Do not backup/restore data. Can be used with both backup and restore modes. Cannot be used with the --dataOnly [optional]
--dataOnly Restore data only. Do not delete/recreate schema [optional for restore]
--noConfirm Don't ask for confirmation before deleting existing schemas.
--skipThroughputUpdate
Skip updating throughput values across tables [optional]
--dumpPath DUMPPATH Directory to place and search for DynamoDB table backups (defaults to use 'dump') [optional]
--billingMode {PROVISIONED,PAY_PER_REQUEST}
Set billing mode between PROVISIONED|PAY_PER_REQUEST (defaults to use 'PROVISIONED') [optional]
--log LOG Logging level - DEBUG|INFO|WARNING|ERROR|CRITICAL [optional]
--limit LIMIT Limit option for backup, will stop the back up process after number of backed up items reaches the limit [optional]
-f FILTEROPTION, --filterOption FILTEROPTION
Filter option for backup, JSON file of which keys are ['FilterExpression', 'ExpressionAttributeNames', 'ExpressionAttributeValues']

Backup files are stored in a 'dump' subdirectory, and are restored from there as well by default.

Script (unattended) usage

As of v1.2.0, note that --noConfirm is required to perform data restores involving deletions without any confirmation.

Docker CLI usage

docker run --rm -it bchew/dynamodump -h

dynamodump container images are also published to Amazon ECR Public and GitHub Packages:

public.ecr.aws/bchew/dynamodump
ghcr.io/bchew/dynamodump

Links to the registries specified:

AWS example

Single table backup/restore:

dynamodump -m backup -r us-west-1 -s testTable
dynamodump -m restore -r us-west-1 -s testTable

Multiple table backup/restore (assumes prefix of 'production-' of table names, use --prefixSeparator to specify a different separator):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production*

The above, but between different environments (e.g. production-_ tables to development-_ tables):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production* -d development*

Backup all tables and restore only data (will not delete and recreate schema):

dynamodump -m backup -r us-west-1 -s "*"
dynamodump -m restore -r us-west-1 -s "*" --dataOnly

Dump all table schemas and create the schemas (e.g. creating blank tables in a different AWS account):

dynamodump -m backup -r us-west-1 -p source_credentials -s "*" --schemaOnly
dynamodump -m restore -r us-west-1 -p destination_credentials -s "*" --schemaOnly

Backup all tables based on AWS tag key=value

dynamodump -p profile -r us-east-1 -m backup -t KEY=VALUE

Backup all tables based on AWS tag, compress and store in specified S3 bucket.

dynamodump -p profile -r us-east-1 -m backup -a tar -b some_s3_bucket -t TAG_KEY=TAG_VALUE
dynamodump -p profile -r us-east-1 -m backup -a zip -b some_s3_bucket -t TAG_KEY=TAG_VALUE

Restore from S3 bucket to specified destination table

## source_table identifies archive file in S3 bucket from which backup data is restored
dynamodump -a tar -b some_s3_bucket -m restore -r us-east-1 -p profile -d destination_table -s source_table

Local example

The following assumes your local DynamoDB is running on localhost:8000 and is accessible via 'a' as access/secret keys. You must specify the host to get local behavior.

dynamodump -m backup -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a
dynamodump -m restore -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a

Multiple table backup/restore as stated in the AWS examples are also available for local.

Development

python3 -m venv env
source env/bin/activate
# install dev requirements
pip3 install -r requirements-dev.txt
# one-time install of pre-commit hooks
pre-commit install

About

Simple backup and restore for Amazon DynamoDB using AWS SDK for Python (boto3)

Topics

Resources

Stars

876 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

dynamodump

Build StatusCodeQL StatusDocker StatusLinting StatusTest StatusPyPI versionPyPI pyversionsCode Style

Simple backup and restore script for Amazon DynamoDB using AWS SDK for Python (boto3) to work similarly to mysqldump.

Suitable for DynamoDB usages of smaller data volume which do not warrant the usage of AWS Data Pipeline for backup/restores/empty.

dynamodump supports local DynamoDB instances as well (tested with DynamoDB Local).

Table of Contents

Installation

pip install dynamodump

Usage

usage: dynamodump.py [-h] [-a {zip,tar}] [-b BUCKET] [-m {backup,restore,empty}] [-r REGION] [--host HOST] [--port PORT] [--accessKey ACCESSKEY] [--secretKey SECRETKEY] [-p PROFILE] [-s SRCTABLE] [-d DESTTABLE]
[--prefixSeparator PREFIXSEPARATOR] [--noSeparator] [--readCapacity READCAPACITY] [-t TAG] [--writeCapacity WRITECAPACITY] [--schemaOnly] [--dataOnly] [--noConfirm] [--skipThroughputUpdate]
[--dumpPath DUMPPATH] [--billingMode {PROVISIONED,PAY_PER_REQUEST}] [--log LOG] [--limit LIMIT] [-f FILTEROPTION]
Simple DynamoDB backup/restore/empty.
options:
-h, --help show this help message and exit
-a {zip,tar}, --archive {zip,tar}
Type of compressed archive to create. If unset, don't create archive
-b BUCKET, --bucket BUCKET
S3 bucket in which to store or retrieve backups. [must already exist]
-m {backup,restore,empty}, --mode {backup,restore,empty}
Operation to perform
-r REGION, --region REGION
AWS region to use, e.g. 'us-west-1'. Can use any region for local testing
--host HOST Host of local DynamoDB. This parameter initialises dynamodump for local DynamoDB testing [required only for local]
--port PORT Port of local DynamoDB [required only for local]
--accessKey ACCESSKEY
Access key of local DynamoDB [required only for local]
--secretKey SECRETKEY
Secret key of local DynamoDB [required only for local]
-p PROFILE, --profile PROFILE
AWS credentials file profile to use. Allows you to use a profile instead accessKey, secretKey authentication
-s SRCTABLE, --srcTable SRCTABLE
Source DynamoDB table name to backup or restore from, use 'tablename*' for wildcard prefix selection or '*' for all tables. Mutually exclusive with --tag
-d DESTTABLE, --destTable DESTTABLE
Destination DynamoDB table name to backup or restore to, use 'tablename*' for wildcard prefix selection (defaults to use '-' separator) [optional, defaults to source]
--prefixSeparator PREFIXSEPARATOR
Specify a different prefix separator, e.g. '.' [optional]
--noSeparator Overrides the use of a prefix separator for backup wildcard searches [optional]
--readCapacity READCAPACITY
Change the temp read capacity of the DynamoDB table to backup from [optional]
-t TAG, --tag TAG Tag to use for identifying tables to back up. Mutually exclusive with srcTable. Provided as KEY=VALUE
--writeCapacity WRITECAPACITY
Change the temp write capacity of the DynamoDB table to restore to [defaults to 25, optional]
--schemaOnly Backup or restore the schema only. Do not backup/restore data. Can be used with both backup and restore modes. Cannot be used with the --dataOnly [optional]
--dataOnly Restore data only. Do not delete/recreate schema [optional for restore]
--noConfirm Don't ask for confirmation before deleting existing schemas.
--skipThroughputUpdate
Skip updating throughput values across tables [optional]
--dumpPath DUMPPATH Directory to place and search for DynamoDB table backups (defaults to use 'dump') [optional]
--billingMode {PROVISIONED,PAY_PER_REQUEST}
Set billing mode between PROVISIONED|PAY_PER_REQUEST (defaults to use 'PROVISIONED') [optional]
--log LOG Logging level - DEBUG|INFO|WARNING|ERROR|CRITICAL [optional]
--limit LIMIT Limit option for backup, will stop the back up process after number of backed up items reaches the limit [optional]
-f FILTEROPTION, --filterOption FILTEROPTION
Filter option for backup, JSON file of which keys are ['FilterExpression', 'ExpressionAttributeNames', 'ExpressionAttributeValues']

Backup files are stored in a 'dump' subdirectory, and are restored from there as well by default.

Script (unattended) usage

As of v1.2.0, note that --noConfirm is required to perform data restores involving deletions without any confirmation.

Docker CLI usage

docker run --rm -it bchew/dynamodump -h

dynamodump container images are also published to Amazon ECR Public and GitHub Packages:

public.ecr.aws/bchew/dynamodump
ghcr.io/bchew/dynamodump

Links to the registries specified:

AWS example

Single table backup/restore:

dynamodump -m backup -r us-west-1 -s testTable
dynamodump -m restore -r us-west-1 -s testTable

Multiple table backup/restore (assumes prefix of 'production-' of table names, use --prefixSeparator to specify a different separator):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production*

The above, but between different environments (e.g. production-_ tables to development-_ tables):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production* -d development*

Backup all tables and restore only data (will not delete and recreate schema):

dynamodump -m backup -r us-west-1 -s "*"
dynamodump -m restore -r us-west-1 -s "*" --dataOnly

Dump all table schemas and create the schemas (e.g. creating blank tables in a different AWS account):

dynamodump -m backup -r us-west-1 -p source_credentials -s "*" --schemaOnly
dynamodump -m restore -r us-west-1 -p destination_credentials -s "*" --schemaOnly

Backup all tables based on AWS tag key=value

dynamodump -p profile -r us-east-1 -m backup -t KEY=VALUE

Backup all tables based on AWS tag, compress and store in specified S3 bucket.

dynamodump -p profile -r us-east-1 -m backup -a tar -b some_s3_bucket -t TAG_KEY=TAG_VALUE
dynamodump -p profile -r us-east-1 -m backup -a zip -b some_s3_bucket -t TAG_KEY=TAG_VALUE

Restore from S3 bucket to specified destination table

## source_table identifies archive file in S3 bucket from which backup data is restored
dynamodump -a tar -b some_s3_bucket -m restore -r us-east-1 -p profile -d destination_table -s source_table

Local example

The following assumes your local DynamoDB is running on localhost:8000 and is accessible via 'a' as access/secret keys. You must specify the host to get local behavior.

dynamodump -m backup -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a
dynamodump -m restore -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a

Multiple table backup/restore as stated in the AWS examples are also available for local.

Development

python3 -m venv env
source env/bin/activate
# install dev requirements
pip3 install -r requirements-dev.txt
# one-time install of pre-commit hooks
pre-commit install

About

Simple backup and restore for Amazon DynamoDB using AWS SDK for Python (boto3)

Topics

Resources

Stars

876 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dynamodump

Build StatusCodeQL StatusDocker StatusLinting StatusTest StatusPyPI versionPyPI pyversionsCode Style

Simple backup and restore script for Amazon DynamoDB using AWS SDK for Python (boto3) to work similarly to mysqldump.

Suitable for DynamoDB usages of smaller data volume which do not warrant the usage of AWS Data Pipeline for backup/restores/empty.

dynamodump supports local DynamoDB instances as well (tested with DynamoDB Local).

Table of Contents

Installation

pip install dynamodump

Usage

usage: dynamodump.py [-h] [-a {zip,tar}] [-b BUCKET] [-m {backup,restore,empty}] [-r REGION] [--host HOST] [--port PORT] [--accessKey ACCESSKEY] [--secretKey SECRETKEY] [-p PROFILE] [-s SRCTABLE] [-d DESTTABLE]
[--prefixSeparator PREFIXSEPARATOR] [--noSeparator] [--readCapacity READCAPACITY] [-t TAG] [--writeCapacity WRITECAPACITY] [--schemaOnly] [--dataOnly] [--noConfirm] [--skipThroughputUpdate]
[--dumpPath DUMPPATH] [--billingMode {PROVISIONED,PAY_PER_REQUEST}] [--log LOG] [--limit LIMIT] [-f FILTEROPTION]
Simple DynamoDB backup/restore/empty.
options:
-h, --help show this help message and exit
-a {zip,tar}, --archive {zip,tar}
Type of compressed archive to create. If unset, don't create archive
-b BUCKET, --bucket BUCKET
S3 bucket in which to store or retrieve backups. [must already exist]
-m {backup,restore,empty}, --mode {backup,restore,empty}
Operation to perform
-r REGION, --region REGION
AWS region to use, e.g. 'us-west-1'. Can use any region for local testing
--host HOST Host of local DynamoDB. This parameter initialises dynamodump for local DynamoDB testing [required only for local]
--port PORT Port of local DynamoDB [required only for local]
--accessKey ACCESSKEY
Access key of local DynamoDB [required only for local]
--secretKey SECRETKEY
Secret key of local DynamoDB [required only for local]
-p PROFILE, --profile PROFILE
AWS credentials file profile to use. Allows you to use a profile instead accessKey, secretKey authentication
-s SRCTABLE, --srcTable SRCTABLE
Source DynamoDB table name to backup or restore from, use 'tablename*' for wildcard prefix selection or '*' for all tables. Mutually exclusive with --tag
-d DESTTABLE, --destTable DESTTABLE
Destination DynamoDB table name to backup or restore to, use 'tablename*' for wildcard prefix selection (defaults to use '-' separator) [optional, defaults to source]
--prefixSeparator PREFIXSEPARATOR
Specify a different prefix separator, e.g. '.' [optional]
--noSeparator Overrides the use of a prefix separator for backup wildcard searches [optional]
--readCapacity READCAPACITY
Change the temp read capacity of the DynamoDB table to backup from [optional]
-t TAG, --tag TAG Tag to use for identifying tables to back up. Mutually exclusive with srcTable. Provided as KEY=VALUE
--writeCapacity WRITECAPACITY
Change the temp write capacity of the DynamoDB table to restore to [defaults to 25, optional]
--schemaOnly Backup or restore the schema only. Do not backup/restore data. Can be used with both backup and restore modes. Cannot be used with the --dataOnly [optional]
--dataOnly Restore data only. Do not delete/recreate schema [optional for restore]
--noConfirm Don't ask for confirmation before deleting existing schemas.
--skipThroughputUpdate
Skip updating throughput values across tables [optional]
--dumpPath DUMPPATH Directory to place and search for DynamoDB table backups (defaults to use 'dump') [optional]
--billingMode {PROVISIONED,PAY_PER_REQUEST}
Set billing mode between PROVISIONED|PAY_PER_REQUEST (defaults to use 'PROVISIONED') [optional]
--log LOG Logging level - DEBUG|INFO|WARNING|ERROR|CRITICAL [optional]
--limit LIMIT Limit option for backup, will stop the back up process after number of backed up items reaches the limit [optional]
-f FILTEROPTION, --filterOption FILTEROPTION
Filter option for backup, JSON file of which keys are ['FilterExpression', 'ExpressionAttributeNames', 'ExpressionAttributeValues']

Backup files are stored in a 'dump' subdirectory, and are restored from there as well by default.

Script (unattended) usage

As of v1.2.0, note that --noConfirm is required to perform data restores involving deletions without any confirmation.

Docker CLI usage

docker run --rm -it bchew/dynamodump -h

dynamodump container images are also published to Amazon ECR Public and GitHub Packages:

public.ecr.aws/bchew/dynamodump
ghcr.io/bchew/dynamodump

Links to the registries specified:

AWS example

Single table backup/restore:

dynamodump -m backup -r us-west-1 -s testTable
dynamodump -m restore -r us-west-1 -s testTable

Multiple table backup/restore (assumes prefix of 'production-' of table names, use --prefixSeparator to specify a different separator):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production*

The above, but between different environments (e.g. production-_ tables to development-_ tables):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production* -d development*

Backup all tables and restore only data (will not delete and recreate schema):

dynamodump -m backup -r us-west-1 -s "*"
dynamodump -m restore -r us-west-1 -s "*" --dataOnly

Dump all table schemas and create the schemas (e.g. creating blank tables in a different AWS account):

dynamodump -m backup -r us-west-1 -p source_credentials -s "*" --schemaOnly
dynamodump -m restore -r us-west-1 -p destination_credentials -s "*" --schemaOnly

Backup all tables based on AWS tag key=value

dynamodump -p profile -r us-east-1 -m backup -t KEY=VALUE

Backup all tables based on AWS tag, compress and store in specified S3 bucket.

dynamodump -p profile -r us-east-1 -m backup -a tar -b some_s3_bucket -t TAG_KEY=TAG_VALUE
dynamodump -p profile -r us-east-1 -m backup -a zip -b some_s3_bucket -t TAG_KEY=TAG_VALUE

Restore from S3 bucket to specified destination table

## source_table identifies archive file in S3 bucket from which backup data is restored
dynamodump -a tar -b some_s3_bucket -m restore -r us-east-1 -p profile -d destination_table -s source_table

Local example

The following assumes your local DynamoDB is running on localhost:8000 and is accessible via 'a' as access/secret keys. You must specify the host to get local behavior.

dynamodump -m backup -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a
dynamodump -m restore -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a

Multiple table backup/restore as stated in the AWS examples are also available for local.

Development

python3 -m venv env
source env/bin/activate
# install dev requirements
pip3 install -r requirements-dev.txt
# one-time install of pre-commit hooks
pre-commit install

About

Simple backup and restore for Amazon DynamoDB using AWS SDK for Python (boto3)

Topics

Resources

Stars

876 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dynamodump

Build StatusCodeQL StatusDocker StatusLinting StatusTest StatusPyPI versionPyPI pyversionsCode Style

Simple backup and restore script for Amazon DynamoDB using AWS SDK for Python (boto3) to work similarly to mysqldump.

Suitable for DynamoDB usages of smaller data volume which do not warrant the usage of AWS Data Pipeline for backup/restores/empty.

dynamodump supports local DynamoDB instances as well (tested with DynamoDB Local).

Table of Contents

Installation

pip install dynamodump

Usage

usage: dynamodump.py [-h] [-a {zip,tar}] [-b BUCKET] [-m {backup,restore,empty}] [-r REGION] [--host HOST] [--port PORT] [--accessKey ACCESSKEY] [--secretKey SECRETKEY] [-p PROFILE] [-s SRCTABLE] [-d DESTTABLE]
[--prefixSeparator PREFIXSEPARATOR] [--noSeparator] [--readCapacity READCAPACITY] [-t TAG] [--writeCapacity WRITECAPACITY] [--schemaOnly] [--dataOnly] [--noConfirm] [--skipThroughputUpdate]
[--dumpPath DUMPPATH] [--billingMode {PROVISIONED,PAY_PER_REQUEST}] [--log LOG] [--limit LIMIT] [-f FILTEROPTION]
Simple DynamoDB backup/restore/empty.
options:
-h, --help show this help message and exit
-a {zip,tar}, --archive {zip,tar}
Type of compressed archive to create. If unset, don't create archive
-b BUCKET, --bucket BUCKET
S3 bucket in which to store or retrieve backups. [must already exist]
-m {backup,restore,empty}, --mode {backup,restore,empty}
Operation to perform
-r REGION, --region REGION
AWS region to use, e.g. 'us-west-1'. Can use any region for local testing
--host HOST Host of local DynamoDB. This parameter initialises dynamodump for local DynamoDB testing [required only for local]
--port PORT Port of local DynamoDB [required only for local]
--accessKey ACCESSKEY
Access key of local DynamoDB [required only for local]
--secretKey SECRETKEY
Secret key of local DynamoDB [required only for local]
-p PROFILE, --profile PROFILE
AWS credentials file profile to use. Allows you to use a profile instead accessKey, secretKey authentication
-s SRCTABLE, --srcTable SRCTABLE
Source DynamoDB table name to backup or restore from, use 'tablename*' for wildcard prefix selection or '*' for all tables. Mutually exclusive with --tag
-d DESTTABLE, --destTable DESTTABLE
Destination DynamoDB table name to backup or restore to, use 'tablename*' for wildcard prefix selection (defaults to use '-' separator) [optional, defaults to source]
--prefixSeparator PREFIXSEPARATOR
Specify a different prefix separator, e.g. '.' [optional]
--noSeparator Overrides the use of a prefix separator for backup wildcard searches [optional]
--readCapacity READCAPACITY
Change the temp read capacity of the DynamoDB table to backup from [optional]
-t TAG, --tag TAG Tag to use for identifying tables to back up. Mutually exclusive with srcTable. Provided as KEY=VALUE
--writeCapacity WRITECAPACITY
Change the temp write capacity of the DynamoDB table to restore to [defaults to 25, optional]
--schemaOnly Backup or restore the schema only. Do not backup/restore data. Can be used with both backup and restore modes. Cannot be used with the --dataOnly [optional]
--dataOnly Restore data only. Do not delete/recreate schema [optional for restore]
--noConfirm Don't ask for confirmation before deleting existing schemas.
--skipThroughputUpdate
Skip updating throughput values across tables [optional]
--dumpPath DUMPPATH Directory to place and search for DynamoDB table backups (defaults to use 'dump') [optional]
--billingMode {PROVISIONED,PAY_PER_REQUEST}
Set billing mode between PROVISIONED|PAY_PER_REQUEST (defaults to use 'PROVISIONED') [optional]
--log LOG Logging level - DEBUG|INFO|WARNING|ERROR|CRITICAL [optional]
--limit LIMIT Limit option for backup, will stop the back up process after number of backed up items reaches the limit [optional]
-f FILTEROPTION, --filterOption FILTEROPTION
Filter option for backup, JSON file of which keys are ['FilterExpression', 'ExpressionAttributeNames', 'ExpressionAttributeValues']

Backup files are stored in a 'dump' subdirectory, and are restored from there as well by default.

Script (unattended) usage

As of v1.2.0, note that --noConfirm is required to perform data restores involving deletions without any confirmation.

Docker CLI usage

docker run --rm -it bchew/dynamodump -h

dynamodump container images are also published to Amazon ECR Public and GitHub Packages:

public.ecr.aws/bchew/dynamodump
ghcr.io/bchew/dynamodump

Links to the registries specified:

AWS example

Single table backup/restore:

dynamodump -m backup -r us-west-1 -s testTable
dynamodump -m restore -r us-west-1 -s testTable

Multiple table backup/restore (assumes prefix of 'production-' of table names, use --prefixSeparator to specify a different separator):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production*

The above, but between different environments (e.g. production-_ tables to development-_ tables):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production* -d development*

Backup all tables and restore only data (will not delete and recreate schema):

dynamodump -m backup -r us-west-1 -s "*"
dynamodump -m restore -r us-west-1 -s "*" --dataOnly

Dump all table schemas and create the schemas (e.g. creating blank tables in a different AWS account):

dynamodump -m backup -r us-west-1 -p source_credentials -s "*" --schemaOnly
dynamodump -m restore -r us-west-1 -p destination_credentials -s "*" --schemaOnly

Backup all tables based on AWS tag key=value

dynamodump -p profile -r us-east-1 -m backup -t KEY=VALUE

Backup all tables based on AWS tag, compress and store in specified S3 bucket.

dynamodump -p profile -r us-east-1 -m backup -a tar -b some_s3_bucket -t TAG_KEY=TAG_VALUE
dynamodump -p profile -r us-east-1 -m backup -a zip -b some_s3_bucket -t TAG_KEY=TAG_VALUE

Restore from S3 bucket to specified destination table

## source_table identifies archive file in S3 bucket from which backup data is restored
dynamodump -a tar -b some_s3_bucket -m restore -r us-east-1 -p profile -d destination_table -s source_table

Local example

The following assumes your local DynamoDB is running on localhost:8000 and is accessible via 'a' as access/secret keys. You must specify the host to get local behavior.

dynamodump -m backup -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a
dynamodump -m restore -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a

Multiple table backup/restore as stated in the AWS examples are also available for local.

Development

python3 -m venv env
source env/bin/activate
# install dev requirements
pip3 install -r requirements-dev.txt
# one-time install of pre-commit hooks
pre-commit install

About

Simple backup and restore for Amazon DynamoDB using AWS SDK for Python (boto3)

Topics

Resources

Stars

876 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

dynamodump

Build StatusCodeQL StatusDocker StatusLinting StatusTest StatusPyPI versionPyPI pyversionsCode Style

Simple backup and restore script for Amazon DynamoDB using AWS SDK for Python (boto3) to work similarly to mysqldump.

Suitable for DynamoDB usages of smaller data volume which do not warrant the usage of AWS Data Pipeline for backup/restores/empty.

dynamodump supports local DynamoDB instances as well (tested with DynamoDB Local).

Table of Contents

Installation

pip install dynamodump

Usage

usage: dynamodump.py [-h] [-a {zip,tar}] [-b BUCKET] [-m {backup,restore,empty}] [-r REGION] [--host HOST] [--port PORT] [--accessKey ACCESSKEY] [--secretKey SECRETKEY] [-p PROFILE] [-s SRCTABLE] [-d DESTTABLE]
[--prefixSeparator PREFIXSEPARATOR] [--noSeparator] [--readCapacity READCAPACITY] [-t TAG] [--writeCapacity WRITECAPACITY] [--schemaOnly] [--dataOnly] [--noConfirm] [--skipThroughputUpdate]
[--dumpPath DUMPPATH] [--billingMode {PROVISIONED,PAY_PER_REQUEST}] [--log LOG] [--limit LIMIT] [-f FILTEROPTION]
Simple DynamoDB backup/restore/empty.
options:
-h, --help show this help message and exit
-a {zip,tar}, --archive {zip,tar}
Type of compressed archive to create. If unset, don't create archive
-b BUCKET, --bucket BUCKET
S3 bucket in which to store or retrieve backups. [must already exist]
-m {backup,restore,empty}, --mode {backup,restore,empty}
Operation to perform
-r REGION, --region REGION
AWS region to use, e.g. 'us-west-1'. Can use any region for local testing
--host HOST Host of local DynamoDB. This parameter initialises dynamodump for local DynamoDB testing [required only for local]
--port PORT Port of local DynamoDB [required only for local]
--accessKey ACCESSKEY
Access key of local DynamoDB [required only for local]
--secretKey SECRETKEY
Secret key of local DynamoDB [required only for local]
-p PROFILE, --profile PROFILE
AWS credentials file profile to use. Allows you to use a profile instead accessKey, secretKey authentication
-s SRCTABLE, --srcTable SRCTABLE
Source DynamoDB table name to backup or restore from, use 'tablename*' for wildcard prefix selection or '*' for all tables. Mutually exclusive with --tag
-d DESTTABLE, --destTable DESTTABLE
Destination DynamoDB table name to backup or restore to, use 'tablename*' for wildcard prefix selection (defaults to use '-' separator) [optional, defaults to source]
--prefixSeparator PREFIXSEPARATOR
Specify a different prefix separator, e.g. '.' [optional]
--noSeparator Overrides the use of a prefix separator for backup wildcard searches [optional]
--readCapacity READCAPACITY
Change the temp read capacity of the DynamoDB table to backup from [optional]
-t TAG, --tag TAG Tag to use for identifying tables to back up. Mutually exclusive with srcTable. Provided as KEY=VALUE
--writeCapacity WRITECAPACITY
Change the temp write capacity of the DynamoDB table to restore to [defaults to 25, optional]
--schemaOnly Backup or restore the schema only. Do not backup/restore data. Can be used with both backup and restore modes. Cannot be used with the --dataOnly [optional]
--dataOnly Restore data only. Do not delete/recreate schema [optional for restore]
--noConfirm Don't ask for confirmation before deleting existing schemas.
--skipThroughputUpdate
Skip updating throughput values across tables [optional]
--dumpPath DUMPPATH Directory to place and search for DynamoDB table backups (defaults to use 'dump') [optional]
--billingMode {PROVISIONED,PAY_PER_REQUEST}
Set billing mode between PROVISIONED|PAY_PER_REQUEST (defaults to use 'PROVISIONED') [optional]
--log LOG Logging level - DEBUG|INFO|WARNING|ERROR|CRITICAL [optional]
--limit LIMIT Limit option for backup, will stop the back up process after number of backed up items reaches the limit [optional]
-f FILTEROPTION, --filterOption FILTEROPTION
Filter option for backup, JSON file of which keys are ['FilterExpression', 'ExpressionAttributeNames', 'ExpressionAttributeValues']

Backup files are stored in a 'dump' subdirectory, and are restored from there as well by default.

Script (unattended) usage

As of v1.2.0, note that --noConfirm is required to perform data restores involving deletions without any confirmation.

Docker CLI usage

docker run --rm -it bchew/dynamodump -h

dynamodump container images are also published to Amazon ECR Public and GitHub Packages:

public.ecr.aws/bchew/dynamodump
ghcr.io/bchew/dynamodump

Links to the registries specified:

AWS example

Single table backup/restore:

dynamodump -m backup -r us-west-1 -s testTable
dynamodump -m restore -r us-west-1 -s testTable

Multiple table backup/restore (assumes prefix of 'production-' of table names, use --prefixSeparator to specify a different separator):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production*

The above, but between different environments (e.g. production-_ tables to development-_ tables):

dynamodump -m backup -r us-west-1 -s production*
dynamodump -m restore -r us-west-1 -s production* -d development*

Backup all tables and restore only data (will not delete and recreate schema):

dynamodump -m backup -r us-west-1 -s "*"
dynamodump -m restore -r us-west-1 -s "*" --dataOnly

Dump all table schemas and create the schemas (e.g. creating blank tables in a different AWS account):

dynamodump -m backup -r us-west-1 -p source_credentials -s "*" --schemaOnly
dynamodump -m restore -r us-west-1 -p destination_credentials -s "*" --schemaOnly

Backup all tables based on AWS tag key=value

dynamodump -p profile -r us-east-1 -m backup -t KEY=VALUE

Backup all tables based on AWS tag, compress and store in specified S3 bucket.

dynamodump -p profile -r us-east-1 -m backup -a tar -b some_s3_bucket -t TAG_KEY=TAG_VALUE
dynamodump -p profile -r us-east-1 -m backup -a zip -b some_s3_bucket -t TAG_KEY=TAG_VALUE

Restore from S3 bucket to specified destination table

## source_table identifies archive file in S3 bucket from which backup data is restored
dynamodump -a tar -b some_s3_bucket -m restore -r us-east-1 -p profile -d destination_table -s source_table

Local example

The following assumes your local DynamoDB is running on localhost:8000 and is accessible via 'a' as access/secret keys. You must specify the host to get local behavior.

dynamodump -m backup -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a
dynamodump -m restore -r local -s testTable --host localhost --port 8000 --accessKey a --secretKey a

Multiple table backup/restore as stated in the AWS examples are also available for local.

Development

python3 -m venv env
source env/bin/activate
# install dev requirements
pip3 install -r requirements-dev.txt
# one-time install of pre-commit hooks
pre-commit install

About

Simple backup and restore for Amazon DynamoDB using AWS SDK for Python (boto3)

Topics

Resources

Stars

876 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages