dynamodb-backup-restore
This tool supports the following functionality:
- Full backup of AWS DynamoDb table to Amazon S3 bucket within or between regions.
- Incremental backup of AWS DynamoDb table to Amazon S3 bucket within or between regions.
- AWS Lambda based incremental backup of AWS DynamoDb table to Amazon S3 bucket within or between regions.
- Restore AWS DynamoDb table from Amazon S3 bucket within or between regions.
- Deploy and configure Amazon S3 backup bucket.
- Deploy, configure AWS Lambda and add event source.
Built on NodeJS classes and ECMAScript 2015 (ES6).
It can be used independently and as a dependency in your code.
Usage samples
Full backup
$ gulp backup-full --s3bucket <bucket> --s3prefix <prefix> --s3region <region> --dbtable <table> --dbregion <region>Options: --s3bucket Amazon S3 backup bucket name --s3prefix subfolder
const Backup = Backup; let config = S3Bucket: 'STRING_VALUE' /* required */ S3Prefix: 'STRING_VALUE' /* optional */ S3Encryption: 'STRING_VALUE' /* optional */ S3Region: 'STRING_VALUE' /* required */ DbTable: 'STRING_VALUE' /* required */ DbRegion: 'STRING_VALUE' /* required */;let backup = config;backup;
Incremental backup
$ gulp backup-incremental --s3bucket <bucket> --s3prefix <prefix> --s3region <region> --dbtable <table> --dbregion <region>Options: --s3bucket Amazon S3 backup bucket name --s3prefix subfolder
const Backup = Backup; let config = S3Bucket: 'STRING_VALUE' /* required */ S3Prefix: 'STRING_VALUE' /* optional */ S3Encryption: 'STRING_VALUE' /* optional */ S3Region: 'STRING_VALUE' /* required */ DbTable: 'STRING_VALUE' /* required */ DbRegion: 'STRING_VALUE' /* required */;let backup = config;backup;
AWS Lambda based incremental backup
The DynamoDB Stream StreamViewType needs to be one of NEW_IMAGE
, NEW_AND_OLD_IMAGES
, or KEYS_ONLY
.
Note that DynamoDB Streams does not support encryption at rest.
const Backup = Backup; moduleexports { if !eventRecords ; else let config = S3Bucket: 'STRING_VALUE' /* required */ S3Region: 'STRING_VALUE' /* required */ S3Encryption: 'STRING_VALUE' /* optional */ S3Prefix: 'STRING_VALUE' /* optional */ DbTable: 'STRING_VALUE' /* required if stream is KEYS_ONLY, ignored otherwise */ DbRegion: 'STRING_VALUE' /* required if stream is KEYS_ONLY, ignored otherwise */ ; let backup = config; backup; }
Restore
$ gulp restore --s3bucket <bucket> --s3prefix <prefix> --s3region <region> --dbtable <table> --dbregion <region>Options: --s3bucket Amazon S3 backup bucket name --s3prefix subfolder
const Restore = Restore; let config = S3Bucket: 'STRING_VALUE' /* required */ S3Prefix: 'STRING_VALUE' /* optional */ S3Region: 'STRING_VALUE' /* required */ DbTable: 'STRING_VALUE' /* required */ DbRegion: 'STRING_VALUE' /* required */ RestoreTime:'STRING_VALUE' /* optional */;;
Deploy S3 Backup Bucket
$ gulp deploy-s3-bucket --s3bucket <bucket> --s3region <region>Options: --s3bucket Amazon S3 backup bucket name --s3region AWS Region
const Deploy = Deploy; let config = S3Bucket: 'STRING_VALUE' /* required */ S3Region: 'STRING_VALUE' /* required */;let deploy = config;deploy;
Deploy AWS Lambda Function
$ gulp deploy-lambda --s3bucket <bucket> --s3prefix <prefix> --s3region <region> --dbregion <region> --lName <lambdaName> --lRegion <region> --lAlias <lambdaAlias> --lRoleName <lambdaRole>Options: --s3bucket Amazon S3 backup bucket name --s3prefix subfolder
const Deploy = Deploy; let config = S3Bucket: 'STRING_VALUE' /* required */ S3Prefix: 'STRING_VALUE' /* optional */ S3Region: 'STRING_VALUE' /* required */ DbRegion: 'STRING_VALUE' /* required */ LambdaName: 'STRING_VALUE' /* required */ LambdaRegion: 'STRING_VALUE' /* required */ LambdaAlias: 'STRING_VALUE' /* required */ LambdaRoleName: 'STRING_VALUE' /* required */ LambdaMemorySize: 'STRING_VALUE' /* optional */ LambdaTimeout: 'STRING_VALUE' /* optional */ ;let deploy = config;deploy;
Deploy AWS Lambda Event
$ gulp deploy-lambda-event --dbtable <table> --dbregion <region> --lName <lambdaName> --lRegion <region> --lAlias <lambdaAlias>Options: --dbtable AWS DynamoDb table name --dbregion AWS Region
const Deploy = Deploy; let config = DbTable: 'STRING_VALUE' /* required */ DbRegion: 'STRING_VALUE' /* required */ LambdaName: 'STRING_VALUE' /* required */ LambdaRegion: 'STRING_VALUE' /* required */ LambdaAlias: 'STRING_VALUE' /* required */;let deploy = config;deploy;