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

AWS EB部署Node.js应用已配置环境变量仍无法读取求GUI解决方案

背景说明
  • 我使用GUI操作,不熟悉也从未用过AWS CLI,是程序开发新手,这是我第一次部署到AWS。
  • Stack Overflow上很多解决方案都用到CLI,但我需要的是GUI方案。
问题描述

程序需要使用环境变量,我已经在EB中设置了环境变量,但程序仍然无法正常运行(环境变量已设置成功,没有跳转报错)。我已经被这个问题卡了2天,谷歌搜索、查阅文档都没能解决。

用到的AWS服务
  • CodePipeline实现持续部署(对接GitHub v2)
  • EB作为应用运行环境,使用Node 10.x版本

注:CodePipeline部署流程运行正常无报错

故障表现

所有流程看起来都正常,但网站访问返回502错误。
事件报错信息:100.0 % of the requests are erroring with HTTP 4xx. Insufficient request rate (12.0 requests/min) to determine application health.

日志报错信息

常规报错

----------------------------------------
/var/log/web.stdout.log
----------------------------------------
Sep 17 10:15:57 ip-172-31-14-49 web: throw new TypeError('JwtStrategy requires a secret or key');
Sep 17 10:15:57 ip-172-31-14-49 web: ^
Sep 17 10:15:57 ip-172-31-14-49 web: TypeError: JwtStrategy requires a secret or key

偶现报错

----------------------------------------
/var/log/nginx/error.log
----------------------------------------
2021/09/17 15:55:34 [error] 9567#9567: *5385 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.35.193, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "172.31.14.49"
相关代码

config/passport 对应代码如下:

let jwtOptions = {} 
jwtOptions.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken()
jwtOptions.secretOrKey = process.env.TOKEN_SECRET
已完成的配置

我已在EB和EC2控制台中完成TOKEN_SECRET环境变量配置,事件记录显示环境变量已经设置成功,没有任何报错信息。但实际运行时程序仍然无法成功读取process.env.TOKEN_SECRET。

注:配置界面为中文,因区域设置问题无法切换为英文展示。


解决步骤(全GUI操作,无需使用CLI)
  1. 重启EB环境
    打开AWS Elastic Beanstalk控制台,进入对应应用的环境页面,点击右上角的操作下拉菜单,选择重启环境,等待重启完成后再测试访问。

原因:部分场景下EB设置环境变量后没有自动触发应用进程重载,重启环境可以保证新的环境变量被Node进程正确加载。

  1. 检查CodePipeline部署配置
    打开CodePipeline控制台,进入对应流水线的编辑页面,检查部署阶段的EB配置是否勾选了保留现有环境变量,避免部署时覆盖你已经配置好的环境变量。

  2. 添加环境变量检测代码验证加载情况
    在应用启动入口最开头添加如下日志打印代码:

console.log('TOKEN_SECRET加载结果:', process.env.TOKEN_SECRET)

修改后提交到GitHub触发自动部署,部署完成后在EB控制台的日志页面下载web.stdout.log,查看打印结果确认TOKEN_SECRET是否真的被加载。

  1. 确认EB平台版本兼容性
    你使用的是Node 10.x版本,在EB控制台的配置->平台页面确认当前使用的平台版本是否兼容Node 10.x,如果是旧版Amazon Linux AMI,点击更新切换到兼容的平台版本后重新部署即可。

内容的提问来源于stack exchange,提问作者JHIH-LEI

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:54:01