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

同一Beanstalk环境中可否使用独立应用包部署两个站点?

问题原因

Elastic Beanstalk Windows平台默认采用全量替换的部署逻辑:每次新应用包部署时,平台会先触发上一次部署包中定义的uninstall脚本清理旧资源,再执行新包的安装逻辑。你两次部署的是独立的bundle,部署B时会先执行A的卸载脚本,因此SiteA会被删除。

可行实现方案

你的需求可以通过以下三种方案实现,可根据实际场景选择:

方案1:独立环境+负载均衡路由(最推荐)

为SiteA、SiteB分别创建独立的Beanstalk环境,两套环境完全隔离,各自的CI流水线独立部署对应站点,互不干扰。在两套环境前配置AWS应用负载均衡(ALB),根据域名/路径规则将请求转发到对应站点的环境即可。
这个方案完全适配你独立代码库、独立迭代的需求,不存在资源冲突风险,也不需要修改现有部署逻辑。

方案2:单环境多组件合并部署

新增一个公共CI任务,每次两个站点的CI生成独立包后,将两个包的文件合并为同一个部署包,在aws-windows-deployment-manifest.json的deployments.custom数组中同时注册SiteA和SiteB两个部署项:

{
  "manifestVersion": 1,
  "deployments": {
    "custom": [
      {
        "name": "SiteA",
        "scripts": {
          "install": {"file": "installSiteA.ps1"},
          "restart": {"file": "restart.ps1"},
          "uninstall": {"file": "uninstallSiteA.ps1"}
        }
      },
      {
        "name": "SiteB",
        "scripts": {
          "install": {"file": "installSiteB.ps1"},
          "restart": {"file": "restart.ps1"},
          "uninstall": {"file": "uninstallSiteB.ps1"}
        }
      }
    ]
  }
}

合并后统一部署到同一个Beanstalk环境,两个站点会同时保留,不会触发互相卸载。

方案3:容器化单环境部署

将两个站点分别打包为独立容器镜像,使用Beanstalk的多容器Docker环境,在docker-compose.yml中定义两个站点服务,各自的CI只需更新自己的镜像版本即可,不会影响另一个站点的运行。

现有代码注意事项

你当前的配置存在两处笔误,会导致部署失败,需要修正:

  • app_bundleA的卸载脚本中删除的站点名为Intranet,与你安装的站点名SiteA不一致
  • app_bundleA的manifest配置中,install、uninstall脚本的文件名拼写错误,比实际脚本名少了一个字母l(实际为installSiteA.ps1/uninstallSiteA.ps1,配置中写为instalSiteA.ps1/uninstalSiteA.ps1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:06:06