AWS 弹性豆茎。仅在新实例上或手动执行 .ebextensions 命令

AWS Elastic Beanstalk . Execute .ebextensions commands only on new Instance or Manually

我已将我的 .ebextensions 文件夹配置为在领导 ec2 实例上下载并安装 windows 服务。 问题是每次我想更新到新版本的 Web 应用程序(不是 windows 服务)时,这些命令都会再次执行并尝试重新安装该服务。

另一边。每次我只想更新寡妇服务时,我都必须通过 ssh 或 rdp 手动完成工作。或者重新部署触发 .ebextensions 命令的整个应用程序。

有没有我跳过的更优雅的工作流程?

您遇到的 Elastic Beanstalk 最弱 link。您在同一个 EB 实例上托管两个不同的服务,EB 不支持这种服务(我同意这很蹩脚)。
我通过将测试附加到设置扩展配置文件来解决 "setup only once" 需求。在我的例子中,它是一个 linux 框,但你可以做类似的事情:

commands:
    10_setup_win_service:
        test: test ! -f /opt/elasticbeanstalk/.post-provisioning-complete
        command: <...>

现在要完成这个 hack,我有一个名为 .ebextensions/99_finalize_setup.config:

的文件
commands:
  99_write_post_provisioning_complete_file:
    command: touch /opt/elasticbeanstalk/.post-provisioning-complete

这种方法确保 win 服务只安装一次。

现在对于win服务的维护问题,您不能为此使用EB工具集。您对此处选项的理解是正确的——要么使用 SSH 自动执行工作,要么通过登录服务器手动完成。