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

Elastic Beanstalk环境包持久化:重启/更新后如何保留依赖库?

解决方案

方案1:使用.ebextensions配置文件实现自动部署(推荐)

这是Elastic Beanstalk官方原生支持的方案,完全适配EB的生命周期管理逻辑:

  • 在你的Node.js项目根目录下创建名为.ebextensions的文件夹
  • 在该文件夹中新建后缀为.config的YAML格式配置文件,比如命名为install_chromium.config
  • 在配置文件中写入安装逻辑,示例内容如下:
commands:
  install_chromium:
    command: |
      curl https://intoli.com/install-google-chrome.sh | bash
      # 根据实际系统版本补充安装缺失的依赖库,Amazon Linux 2用yum,Amazon Linux 2023换为dnf
      yum install -y atk at-spi2-atk cups-libs gtk3 libdrm libxkbcommon xorg-x11-server-Xvfb libXcomposite libXdamage libXrandr libXtst alsa-lib
  • 将修改后的项目代码重新打包部署到EB环境即可,之后每次新实例启动、环境版本更新、实例重启时,EB都会自动执行配置中的安装命令,无需手动介入。
  • 如果你使用puppeteer这类依赖Chromium的Node.js库,建议在EB控制台「配置」-「软件」-「环境属性」中添加环境变量PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true,避免重复下载内置Chromium二进制文件,直接调用系统预装的版本即可。

方案2:构建自定义AMI实现依赖持久化

如果Chromium及依赖安装耗时较长,每次实例启动执行安装会拖慢部署速度,可选择自定义镜像方案:

  • 启动一个当前EB环境正在使用的基础AMI实例,通过SSH连接后手动安装好Chromium及所有需要的依赖
  • 将该实例制作为自定义AMI,记录对应的AMI ID
  • 在EB控制台「配置」-「容量」-「AMI ID」处填写你制作的自定义AMI ID,保存并更新环境即可
  • 后续所有新启动的实例都会基于已预装依赖的镜像启动,不需要每次执行安装逻辑,启动速度更快。

注意事项

  • 运行Chromium时如果出现沙箱权限报错,可在启动参数中添加--no-sandbox --disable-setuid-sandbox,生产环境有安全要求的场景建议单独配置沙箱权限,不直接关闭沙箱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:18:02