Reputation: 934
Is there a way in NodeJs to detect whether it's currently running on an EC2 instance or whether it's being run locally? I have some functionality that changes based on where it's deployed. I can detect the IP address but I want something more dynamic, not tied to specific server configurations.
Upvotes: 3
Views: 1231
Reputation: 7589
You could try checking for env variables, e.g.
if(process.env.PARTITION) {...}
if(process.env.NODE_ENV) {...}
if(process.env.PROJECT_ID) {...}
Or you can check if .env file exist
, because this should be in your .gitignore
and only be present on your ocal environment.
Upvotes: 0
Reputation: 10333
We could hit EC2 Metadata endpoint to determine EC2 instance or not.
This curl woks only within an EC2 instance
curl http://169.254.169.254/latest/meta-data/
Library node-ec2-metadata exposes an easy to use method which calls this metadata service behind the scenes.
var metadata = require("node-ec2-metadata");
metadata.isEC2().then(function (onEC2) {
console.log("Running on EC2? " + onEC2);
});
Point to keep in mind, straight from the docs(since they hit the HEAD url and timeout after 500ms):
The initial call may take up to 500ms on a non-EC2 host, but the result is cached so subsequent calls provide a result immediately
Upvotes: 5