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

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

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

有问题的 Web 应用程序在其当前部署位置的子文件夹中为二进制资产创建本地缓存,为了使其正常工作,我需要为 IIS_IUSRS 组添加对该文件夹的读/写权限。

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

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

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

第二个批处理文件设置了此“BinaryData”文件夹所需的 ACL。Elastic Beanstalk 执行它在上述文件夹中找到的任何批处理文件,目前看来这已经奏效了。

我还没有找到任何关于如何“正式”实现这一点的文档,而是从这里找到了这个技巧博客文章

如果您能以“更清洁”的方式实现这一目标,我们将非常感激。

答案1

现在是 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 应用程序执行此操作的官方方法。

相关内容