1.0.0-alpha.29 • Published 5 years ago

mongodb-aws-documentdb-tunneling v1.0.0-alpha.29

Weekly downloads
7
License
ISC
Repository
github
Last release
5 years ago

MongoDB with AWS DocumentDB

lerna

MongoDB wich allow SSH tunneling into a AWS DocumentDB VPC by going through a EC2 instance hosted in the same VPC while also allowing local MongoDB in local environment.

Installation

npm install mongodb-aws-documentdb-tunneling --save

Usage Example

Connection

To use this SDK, call the init function as early as possible in the entry modules:

app.js

const MONGODB = require('mongodb-aws-documentdb-tunneling')

MONGODB.init({
    env: process.env.ENV === 'dev'
        ? 'local'
        : 'remote',
    makeTunnel: process.env.IN_VPC === 'false'
        ? false
        : true,
    sslCA: FS.readFileSync(
        PATH.join(__dirname, 'keys', process.env.VPC_TUNNEL_EC2_RDS_SSL_CA_KEY), 'utf8'
    ),
    vpcTunnelEC2Username: process.env.VPC_TUNNEL_EC2_USERNAME,
    vpcTunnelEC2Host: process.env.VPC_TUNNEL_EC2_HOST,
    vpcTunnelEC2Port: process.env.VPC_TUNNEL_EC2_PORT,
    documentdbClusterEndpoint: process.env.DOCUMENTDB_CLUSTER_ENDPOINT,
    documentdbClusterPort: process.env.VPC_TUNNEL_EC2_PORT_DESTINATION,
    vpcTunnelEC2PortLocal: process.env.VPC_TUNNEL_EC2_PORT_LOCAL,
    vpcTunnelEC2PrivateKey: FS.readFileSync(
        PATH.join(__dirname, `keys/${process.env.VPC_TUNNEL_EC2_PRIVATE_KEY}`), 'utf8'
    ),
    documentdbClusterDbName: process.env.DOCUMENTDB_CLUSTER_DB_NAME,
    documentdbClusterUsername: process.env.DOCUMENTDB_CLUSTER_USERNAME,
    documentdbClusterPassword: process.env.DOCUMENTDB_CLUSTER_PASSWORD,
    documentdbEndpoint: process.env.DOCUMENTDB_ENDPOINT,
})
    .then(success => DEBUG(success))
    .catch(error => { throw error })

Query

users.module.js

const const { MongoClient: MONGODB } = require('mongodb-aws-documentdb-tunneling')

/**
 * Get all users from 'onsite' database.
 * @returns {Promise<[<user>]>} users
 */
function getOnSiteUsers() {
    return MONGODB()
        .db('onsite')
        .collection('users')
        .find()
        .toArray()
}

Troubleshooting

  • ...