You can route all database traffic via a Static IP in Node.js using QuotaGuard Static. Currently there is a limitation in that you can't use the built in connection pooling so this is not recommended for high traffic applications.
This example provided by:
Ladislav Prskavec (https://gist.github.com/abtris/3eb89a5b8862ee0819f23649420beb55).
var pg = require('pg'), url = require('url'), SocksConnection = require('socksjs'); var db = url.parse(process.env.REDSHIFT_CONN_STRING), dbAuth = db.auth, dbUsername = dbAuth.split(':')[0], dbPassword = dbAuth.split(':')[1], dbName = db.pathname.replace('/', ''); var proxy = url.parse(process.env.QUOTAGUARDSTATIC_URL), auth = proxy.auth, username = auth.split(':')[0], pass = auth.split(':')[1]; var sock_options = { host: proxy.hostname, port: 1080, user: username, pass: pass }; var remote_options = { host: db.hostname, port: db.port }; var sockConn = new SocksConnection(remote_options, sock_options); var config = { user: dbUsername, database: dbName, password: dbPassword, stream: sockConn }; var client = new pg.Client(config); // connect to our database client.connect(function (err) { if (err) throw err; // execute a query on our database client.query('SELECT $1::text as name', ['john doe'], function (err, result) { if (err) throw err; // just print the result to the console console.log(result.rows[0]); // outputs: { name: 'apiary' } // disconnect the client client.end(function (err) { if (err) throw err; }); }); });
Working with sensitive data, like HIPAA, Financial, or Personally Identifiable Information (PII)?
Then you will want to check out our QuotaGuard Shield solution, it's the same as QuotaGuard Static, but with stronger end to end security for your requests. We can also help migrate current Static customers to Shield for free, just reach out to us at Support to request assistance.