You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Heroku运行环境中获取当前应用名称?

在Heroku中可靠识别当前应用身份的方法

这问题我之前帮朋友处理过,确实当用自定义域名替代默认的xxxxx.herokuapp.com时,靠域名提取应用名的方法就完全失效了。给你几个不受域名影响的可靠方案:

1. 读取Heroku自动注入的环境变量(推荐)

Heroku会给每个运行中的dyno注入运行时元数据环境变量,这些变量不受自定义域名影响,直接读取就能拿到应用身份信息:

  • HEROKU_APP_NAME:你的应用名称
  • HEROKU_APP_ID:应用的唯一ID

启用方式

如果你的应用还没启用这个功能,需要先通过Heroku CLI开启:

heroku labs:enable runtime-dyno-metadata -a your-app-name

代码示例

不同语言读取的方式很简单:

  • Python:
    import os
    app_name = os.getenv("HEROKU_APP_NAME")
    app_id = os.getenv("HEROKU_APP_ID")
    
  • Node.js:
    const appName = process.env.HEROKU_APP_NAME;
    const appId = process.env.HEROKU_APP_ID;
    

这个方案是最优的,不需要额外的网络请求,性能最好,而且数据直接来自Heroku的运行时环境,最可靠。

2. 通过内部元数据端点获取

Heroku提供了一个内部的元数据服务,只能在dyno内部访问,你可以通过HTTP请求获取应用信息:

  • 获取应用名称:发送GET请求到 http://169.254.169.254/latest/meta-data/app-name
  • 获取应用ID:发送GET请求到 http://169.254.169.254/latest/meta-data/app-id

示例(curl命令)

# 获取应用名称
curl http://169.254.169.254/latest/meta-data/app-name
# 获取应用ID
curl http://169.254.169.254/latest/meta-data/app-id

这个方案不需要启用任何额外功能,但需要发起一个内部HTTP请求,适合那些无法使用环境变量的场景(比如某些脚本)。注意:这个端点只能在Heroku的dyno中访问,本地开发环境无法使用。

3. 使用Heroku CLI(适合脚本场景)

如果你的dyno中安装了Heroku CLI并且配置了认证,可以通过命令直接获取应用信息:

# 获取应用名称(需要jq工具解析JSON)
heroku apps:info --json | jq -r '.name'
# 获取应用ID
heroku apps:info --json | jq -r '.id'

不过这个方案需要额外安装CLI和jq,还要配置认证(比如设置HEROKU_API_KEY环境变量),不如前两个方案方便,一般只在特定的脚本任务中使用。

总结一下,优先用环境变量的方案,简单可靠又高效;如果环境变量无法使用,再考虑内部元数据端点的方式。

内容的提问来源于stack exchange,提问作者ysun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 23:48:10