AWS ElasticBeanstalk 在部署时配置或运行其他命令

Posted

技术标签:

【中文标题】AWS ElasticBeanstalk 在部署时配置或运行其他命令【英文标题】:AWS ElasticBeanstalk configuring or running additional commands on deployment 【发布时间】:2020-10-28 00:57:06 【问题描述】:

我正在将 Laravel 应用程序部署到 AWS ElasticBeanstalk。我配置了 CLI,并且可以将应用程序部署到运行该命令的 ElasticBeanstalk 环境中。这是我到目前为止所做的。

我在其中创建了一个 ElasticBeanstalk 应用程序和一个环境。

然后我使用“eb init”初始化应用程序以进行部署,并使用“eb deploy”进行部署。但我想添加一些在部署期间要运行的额外命令。例如,我可能会运行“gulp build”或其他命令。我在哪里以及如何计算它?我知道有一个 .elasticextension 文件夹,但这不允许我们添加要在部署时运行的自定义命令。

【问题讨论】:

【参考方案1】:

我知道有一个 .elasticextension 文件夹,但这不允许我们添加要在部署时运行的自定义命令。

不确定在部署期间无法在.ebextensions 中运行命令是什么意思。但这些扩展通常用于在部署应用程序时运行命令或脚本。有专门的部分:

commands:您可以使用 commands 键在 EC2 实例上执行命令。命令运行应用程序和网络服务器设置并提取应用程序版本文件之前。

container_commands:您可以使用 container_commands 键来执行影响您的应用程序源代码的命令。容器命令运行应用程序和 Web 服务器已设置并且应用程序版本存档已提取,但在应用程序版本部署之前运行。

Amazon Linux 2 上还有 platform hooks,可进一步微调您的应用程序部署。

最后,如果它们都不适合,您可以在CodePipleline 中为您的应用程序创建专门的构建步骤。 专用步骤可用于为 EB 创建应用程序的完全部署版本,而在 EB 实例上要做的工作量最少。

【讨论】:

您好最后一个选项,“专用步骤可用于为 EB 创建应用程序的完全部署版本,而在 EB 实例上要做的工作量最少”。你能给我一个链接来建立那个吗?我正在努力在网上找到那个材料。 @WaiYanHein 在构建 CodePipeline 时,您可以使用 CodeBuild 创建构建步骤。 CodeBuild 将生成您的部署包(工件),并将 ElasticBeanstaslk 作为提供者传递给 Deply 操作。 嗨@Marcin,感谢您的回复。我已经有那个了。我集成了 CodeBuild 来运行单元测试。我的问题是“如果我在 CodeBuild 中编译资产并运行测试,是否会部署在 CodeBuild 中编译的资产?”。例如,“npm 运行生产”? @WaiYanHein 您可以在 buildspec.yml 中指定要传递给 EB 的部署操作的工件。您可能仍需要在 EB 上的 ebextenastions 中使用一些初始化命令。使用 CB 背后的主要思想是,大量繁重的编译或测试在 EB 之前完成,而不是在 EB 实例上完成。

以上是关于AWS ElasticBeanstalk 在部署时配置或运行其他命令的主要内容,如果未能解决你的问题,请参考以下文章

如何访问部署在 aws elasticbeanstalk 中的文件

如何使用aws elasticbeanstalk中的钩子运行部署后脚本?

在 AWS ElasticBeanstalk 上部署 WordPress 应用程序 - 上传大小

未从主管 AWS Elasticbeanstalk 激活 Virtualenv

如何在 AWS elasticbeanstalk 上部署 symfony 3 项目

Rails 部署到 AWS ElasticBeanstalk/RDS 失败