0.0.6 • Published 7 years ago

dynamodb-backup v0.0.6

Weekly downloads
2
License
MIT
Repository
github
Last release
7 years ago

##Dynamo DB backup restore

This tool supports following functionality:

  • Full backup AWS DynamoDb table to Amazon S3 bucket within or between regions.
  • Incremental backup AWS DynamoDb table to Amazon S3 bucket within or between regions.
  • AWS Lambda based incremental backup 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.

##Steps for build/deployment ###Publish node module

npm adduser

npm publish

to change version for republish

  change version manually
       (or use) 
  npm version patch

###Build

nvm install node

chmod +x .travis/build.sh

.travis/build.sh

###Deployment

fullbackup.sh

deployLambda.sh

deployLambdaEvent.sh

# dynamodb-backup-restore

Usage samples

Full backup

$ gulp backup-full --s3bucket <bucket> --s3prefix <prefix> --s3region <region> --dbtable <table> --dbregion <region>
Options:
  --s3bucket  (required)  Amazon S3 backup bucket name
  --s3prefix  (optional)  subfolder for backup(recomend use AWS DynamoDb table name)
  --s3region  (required)  AWS Region for Amazon S3 backup bucket
  --dbtable   (required)  AWS DynamoDb table name
  --dbregion  (required)  AWS Region for AWS DynamoDb table
const Backup = require('dynamodb-backup-restore').Backup;

let config = {
    S3Bucket: 'STRING_VALUE', /* required */
    S3Prefix: 'STRING_VALUE', /* optional */
    S3Region: 'STRING_VALUE', /* required */
    DbTable:  'STRING_VALUE', /* required */
    DbRegion: 'STRING_VALUE'  /* required */
};
let backup = new Backup(config);
backup.full();

Incremental backup

$ gulp backup-incremental --s3bucket <bucket> --s3prefix <prefix> --s3region <region> --dbtable <table> --dbregion <region>
Options:
  --s3bucket  (required)  Amazon S3 backup bucket name
  --s3prefix  (optional)  subfolder for backup(recomend use AWS DynamoDb table name)
  --s3region  (required)  AWS Region for Amazon S3 backup bucket
  --dbtable   (required)  AWS DynamoDb table name
  --dbregion  (required)  AWS Region for AWS DynamoDb table
const Backup = require('dynamodb-backup-restore').Backup;

let config = {
    S3Bucket: 'STRING_VALUE', /* required */
    S3Prefix: 'STRING_VALUE', /* optional */
    S3Region: 'STRING_VALUE', /* required */
    DbTable:  'STRING_VALUE', /* required */
    DbRegion: 'STRING_VALUE'  /* required */
};
let backup = new Backup(config);
backup.incremental();

AWS Lambda based incremental backup

const Backup = require('dynamodb-backup-restore').Backup;

module.exports.handler = (event, context, callback) => {
    if (!event.Records) {
        callback('There are no items to process.');
    }
    else {
        let config = {
            S3Bucket: 'STRING_VALUE', /* required */
            S3Region: 'STRING_VALUE', /* required */
            S3Prefix: 'STRING_VALUE'  /* optional */
        };
        let backup = new Backup(config);
        backup.fromDbStream(event.Records).then(() => {
            callback();
        }).catch(err => {
            callback(err);
        });
    }
}

Restore

$ gulp restore --s3bucket <bucket> --s3prefix <prefix> --s3region <region> --dbtable <table> --dbregion <region>
Options:
  --s3bucket  (required)  Amazon S3 backup bucket name
  --s3prefix  (optional)  subfolder for backup(recomend use AWS DynamoDb table name)
  --s3region  (required)  AWS Region for Amazon S3 backup bucket
  --dbtable   (required)  AWS DynamoDb table name
  --dbregion  (required)  AWS Region for AWS DynamoDb table
  --lessDays  (optional)  restores to days less than current date
  --lessHours (optional)  restores to hours less than current time 
  --lessMinutes (optional) restores to minutes less than current time
const Restore = require('dynamodb-backup-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 */
};
Restore(config);

Deploy S3 Backup Bucket

$ gulp deploy-s3-bucket --s3bucket <bucket> --s3region <region>
Options:
  --s3bucket  (required)  Amazon S3 backup bucket name
  --s3region  (required)  AWS Region for Amazon S3 backup bucket
const Deploy = require('dynamodb-backup-restore').Deploy;

let config = {
    S3Bucket: 'STRING_VALUE', /* required */
    S3Region: 'STRING_VALUE'  /* required */
};
let deploy = new Deploy(config);
deploy.backupBucket();

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    (required)  Amazon S3 backup bucket name
  --s3prefix    (optional)  subfolder for backup(recomend use AWS DynamoDb table name)
  --s3region    (required)  AWS Region for Amazon S3 backup bucket
  --dbregion    (required)  AWS Region for AWS DynamoDb table
  --lName       (required)  AWS Lambda Function Name
  --lRegion     (required)  AWS Region for AWS Lambda Funtion
  --lAlias      (required)  AWS Lambda Function Alias
  --lRoleName   (required)  AWS Lambda Function Execution Role
  --lMemorySize (optional)  AWS Lambda MemorySize in MB (defaults to 128)
  --lTimeout    (optional)  AWS Lambda Timeout in Seconds (defaults to 6)
const Deploy = require('dynamodb-backup-restore').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 = new Deploy(config);
deploy.lambda();

Deploy AWS Lambda Event

$ gulp deploy-lambda-event --dbtable <table> --dbregion <region> --lName <lambdaName> --lRegion <region> --lAlias <lambdaAlias>
Options:
  --dbtable   (required)  AWS DynamoDb table name
  --dbregion  (required)  AWS Region for AWS DynamoDb table
  --lName     (required)  AWS Lambda Function Name
  --lRegion   (required)  AWS Region for AWS Lambda Funtion
  --lAlias    (required)  AWS Lambda Function Alias
const Deploy = require('dynamodb-backup-restore').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 = new Deploy(config);
deploy.lambdaEvent();