是否有支持在 AWS Elastic Beanstalk 上运行部署后脚本的方法?

Nun*_*res 7 asp.net-mvc amazon-web-services elastic-beanstalk

我正在 Elastic Beanstalk 上部署一个 Windows / .NET MVC 应用程序,并设法克服了除一个之外的大多数挑战。

有问题的 webapp 在其当前部署位置的子文件夹中为二进制资产创建本地缓存,为此,我需要为 IIS_IUSRS 组添加权限以读取/写入该文件夹。

经过长时间的反复试验,我现在有了一个似乎有效的解决方案,但我不能 100% 确定它的“合法性”......

在 MVC 解决方案中,我创建了一个名为“.ebextensions”的文件夹,并在其中创建了一个名为“eb.config”的 yaml 文件。

在这个文件中,我基本上创建了 2 个批处理文件,我部署到 c:\temp - 第一个批处理文件检查 C:\Program Files\Amazon\ElasticBeanstalk\hooks\appdeploy\post 中是否已经有第二个文件的副本,如果没有,复制到那里。

第二个批处理文件为此“BinaryData”文件夹设置所需的 ACL。Elastic Beanstalk 执行它在上面提到的文件夹中找到的任何批处理文件,现在这似乎可以解决问题。

我一直没能找到任何关于如何“正式”实现这一点的文档,并从这篇博文中发现了这个技巧。

关于如何以“更清洁”的方式实现这一目标的任何建议将不胜感激。

小智 7

现在是 2019 年,我仍然找不到有关 .NET 应用程序的 Beanstalk Platform Hooks 的任何文档。我最终做了类似于你的解决方案的事情。

  1. .ebextensions文件夹中创建一个配置文件。
  2. 创建我要运行的脚本文件(将其保存在代码中,或将其定义/检索为步骤 1 中的配置文件的一部分)
  3. 在此配置文件中的container_commands部分下,运行命令将步骤 2 中的脚本复制到C:\Program Files\Amazon\ElasticBeanstalk\hooks\appdeploy\post\(或您想要的任何钩子)。更多信息在这里

当 Beanstalk 部署应用程序时,下面的命令container_commands将在设置服务器之后运行,但在部署代码之前1。之后,您的钩子脚本应该就位,并将根据它所在的文件夹触发。

不幸的是,我不知道这是否是 .NET 应用程序的官方方法。

  • 我也可以确认这有效。非常令人沮丧的是,当直接在 .ebextensions 中拥有安装后部分似乎合乎逻辑时,必须走这条路线 (2认同)