1.0.0-alpha.32 • Published 6 years ago
elasticsearch-aws-tunneling v1.0.0-alpha.32
Mongoose with AWS DocumentDB
Mongoose 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 mongoose-aws-documentdb-tunneling --saveUsage Example
To use this SDK, call the init function as early as possible in the entry modules after registering your models.
Models
In your models, use mongoose from the mongoose-aws-documentdb-tunneling SDK:
User.model.js
const MONGOOSE = require('mongoose-aws-documentdb-tunneling')
const UserSchema = new MONGOOSE.Schema({
...
})
MONGOOSE.model('User', UserSchema)Connection
In the app entry module:
app.js
const MONGOOSE = require('mongoose-aws-documentdb-tunneling')
const MODELS = PATH.join(__dirname, 'databases/mongodb/models')
/**
* 1. Register your models by requiring them. Here's an example to dynamicly
* add all models within a folder.
*/
FS.readdirSync(MODELS) .filter(
file => ~file.search(/^[^\.].*\.js$/)
)
.forEach(
file => require(PATH.join(MODELS, file))
)
/**
* 2. Initiate the module with required options.
*/
MONGOOSE.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,
vpcTunnelEC2PortLocal: +process.env.VPC_TUNNEL_EC2_PORT_LOCAL,
vpcTunnelEC2PrivateKey: FS.readFileSync(
PATH.join(__dirname, `keys/${process.env.VPC_TUNNEL_EC2_PRIVATE_KEY}`), 'utf8'
),
documentdbClusterEndpoint: process.env.DOCUMENTDB_CLUSTER_ENDPOINT,
documentdbClusterPort: +process.env.DOCUMENTDB_CLUSTER_PORT,
documentdbClusterDbName: process.env.DOCUMENTDB_CLUSTER_DB_NAME,
documentdbClusterUsername: process.env.DOCUMENTDB_CLUSTER_USERNAME,
documentdbClusterPassword: process.env.DOCUMENTDB_CLUSTER_PASSWORD,
documentdbEndpoint: process.env.DOCUMENTDB_ENDPOINT,
documentdbPort: +process.env.DOCUMENTDB_PORT,
})
.then(success => DEBUG(success))
.catch(error => { throw error })
/**
* 3. 🔥 Profit 🔥
*/Query
users.module.js
const const { MongooseClient: MONGOOSE } = require('mongoose-aws-documentdb-tunneling')
/**
* Get all users.
* @returns {Promise<[<user>]>} users
*/
function getUsers() {
return MONGOOSE
.model('User')
.find()
.toArray()
}Troubleshooting
- ...
1.0.0-alpha.32
6 years ago
1.0.0-alpha.31
6 years ago
1.0.0-alpha.29
6 years ago
1.0.0-alpha.28
6 years ago
1.0.0-alpha.27
6 years ago
1.0.0-alpha.26
6 years ago
1.0.0-alpha.25
6 years ago