【问题标题】:NodeJs - Detect whether app is on AWS or localNodeJs - 检测应用程序是在 AWS 上还是在本地
【发布时间】:2021-03-16 08:58:26
【问题描述】:

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

【问题讨论】:

  • 当你运行 nodeJS 时,它运行在一个端口上。因此,了解您所在环境的最简单方法是更改​​每个环境运行的端口。前任。本地:3000,EC2:3010。或者。您可以创建环境变量并为每个环境更改它们
  • 我打算用环境变量来解决它,如果我终止服务器有点烦人,我必须重新定义它们。 (除非有办法动态定义它们,哈哈)

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


【解决方案1】:

我们可以点击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);
});

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

在非 EC2 主机上,初始调用最多可能需要 500 毫秒,但 结果被缓存,因此后续调用会立即提供结果

【讨论】:

  • 哇,这是一个很好的解决方案,谢谢
  • 很高兴,我能帮上忙。
猜你喜欢
  • 2013-03-09
  • 2011-03-23
  • 2016-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 2011-02-20
  • 1970-01-01
相关资源
最近更新 更多