Git Product home page Git Product logo

dynamodbbackup's Introduction

dynamodb-backup-restore

Build status

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      (required)  Amazon S3 backup bucket name
  --s3prefix      (optional)  subfolder for backup (recommend use AWS DynamoDb table name)
  --s3encryption  (optional)  AES256 (default) or aws:kms
  --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 */
    S3Encryption: '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 (recommend use AWS DynamoDb table name)
  --s3encryption  (optional)  AES256 (default) or aws:kms
  --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 */
    S3Encryption: '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

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 = 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 */
            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 = 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
  --restoretime  (required)  JavaScript timestamp of when to restore to
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 (recommend 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();

dynamodbbackup's People

Contributors

bharat-dpd avatar forevermatt avatar jerep6 avatar kabo avatar kyeotic avatar nathaniel-holder avatar northerncodemky avatar olegsirbu avatar rozhok avatar shevchenkos avatar smelchior avatar snakelab avatar thoean avatar tonytamps avatar vincentkwok avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.