node.js - NodeJs - 检测应用程序是在 AWS 上还是在本地

标签 node.js amazon-web-services amazon-ec2

NodeJs 有没有办法检测它当前是在 EC2 实例上运行还是在本地运行?我有一些功能会根据部署位置而变化。我可以检测到 IP 地址,但我想要更动态的东西,而不是绑定(bind)到特定的服务器配置。

最佳答案

我们可以打 EC2 Metadata endpoint判断是否有 EC2 实例。

此 curl 仅在 EC2 实例中有效

curl http://169.254.169.254/latest/meta-data/

图书馆 node-ec2-metadata公开了一种易于使用的方法,该方法在幕后调用此元数据服务。

var metadata = require("node-ec2-metadata");

metadata.isEC2().then(function (onEC2) {
  console.log("Running on EC2? " + onEC2);
});

要记住的一点,直接来自文档(因为他们点击了 HEAD url 并在 500 毫秒后超时):

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

关于node.js - NodeJs - 检测应用程序是在 AWS 上还是在本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66647568/

相关文章:

node.js - nodejs https#request 在相同的 curl 请求成功的地方失败

amazon-web-services - AWS RDS 数据库日志设置日志组的保留期限

amazon-web-services - 如何在单个 URL 中包含 S3 存储桶名称和区域/端点?

node.js - 将 Node.js Docker 从本地(Apple M1)推送到 Heroku 时,继续遇到相同的部署错误(Exec Format Error)

javascript - 如何用 Jest 覆盖(或模拟)类方法以测试函数?

amazon-web-services - 与Web服务器位于同一域的AWS CloudFront分配

ruby-on-rails - 使用 Rubber : 'libapache2-mod-passenger' was not found 部署

mongodb - 卸载 mongo

node.js - 蒙戈错误: connection timed out

amazon-web-services - AWS Cloudformation 模板存储