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

Posted

技术标签:

【中文标题】AWS 弹性豆茎。仅在新实例上或手动执行 .ebextensions 命令【英文标题】:AWS Elastic Beanstalk . Execute .ebextensions commands only on new Instance or Manually 【发布时间】:2015-04-19 11:04:27 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

您遇到了 Elastic Beanstalk 最薄弱环节。您在同一个 EB 实例上托管两个不同的服务,EB 不支持(我同意这很蹩脚)。 我通过将测试附加到设置扩展配置文件来解决“仅设置一次”的需求。在我的例子中,它是一个 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 自动完成工作,要么通过登录服务器手动完成。

【讨论】:

以上是关于AWS 弹性豆茎。仅在新实例上或手动执行 .ebextensions 命令的主要内容,如果未能解决你的问题,请参考以下文章

AWS 弹性豆茎。用户上传的文件保存在哪里?

不能 git aws.push 到带有 ruby​​ 存储库的弹性豆茎

AWS 弹性豆茎上的 CORS

在亚马逊 AWS 弹性豆茎(或本地?)上安装解析仪表板

无法终止弹性豆茎环境

芹菜工人在 aws 弹性豆茎中失败 [退出:芹菜工人(退出状态 1;未预期)]