Issue
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.
Solution
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
Answered By - Balu Vyamajala Answer Checked By - Katrina (WPSolving Volunteer)