在 aws elastic beanstalk 中创建 .ebextensions 文件夹
Posted
技术标签:
【中文标题】在 aws elastic beanstalk 中创建 .ebextensions 文件夹【英文标题】:Creation of .ebextensions folder in aws elastic beanstalk 【发布时间】:2015-01-04 00:47:08 【问题描述】:当在 aws elastic beanstalk 上自动缩放触发器时,我正在尝试部署 shellscript 脚本来安装程序。
我在 google 上搜索过,这一切都指向创建 .ebextensions 以使用配置文件在启动时安装程序 我可以知道如何创建它吗?
非常感谢您提前提供的帮助
【问题讨论】:
您要安装什么程序?根据您的回答,有几种方法可以在启动时安装东西。 嗨,Tal,我已订阅 Trend Micro 的深度安全即服务。他们为我提供了启动脚本。我希望在实例因自动缩放而产生时启动此启动脚本 【参考方案1】:您需要执行以下操作(显然满足您的要求):
在打包软件的根目录中创建一个名为 .ebextensions
的文件夹drwxr-xr-x 4 root root 4096 Sep 30 13:39 .
dr-xr-x--- 7 root root 4096 Nov 4 15:22 ..
drwxr-xr-x 2 root root 4096 Nov 4 15:22 .ebextensions
在 .ebextensions 文件夹中创建两个名为 02_files.config 和 03_container_commands.config
的文件-rw-r--r-- 1 root root 11334 Jul 25 12:26 02_files.config
-rw-r--r-- 1 root root 960 Nov 4 11:22 03_container_commands.config
02_files.config 的内容应该包含您的 shell 脚本的内容:
files:
"/path/to/your/shellscript/myscript.sh" :
mode: "000755"
owner: root
group: root
content: |
#!/bin/sh
echo "Hello World!" >> /var/log/myscript.out
03_container_commands.config 的内容应该包含运行您的 shell 脚本的命令:
container_commands:
01_runmyshellscript:
command: "/path/to/your/shellscript/myscript.sh"
现在,当您上传代码时,它会在 /path/to/your/shellscript/myscript.sh 中创建您的 shell 脚本,然后执行它发送 Hello World!到 /var/log/myscript.out
【讨论】:
如果我错了,请纠正我,我应该在我的弹性 beanstalk 实例本身上创建 .ebextensions?由于我的应用程序本身由趋势微托管 您不应该在弹性豆茎实例上创建任何东西。您在本地计算机上创建目录,对其进行压缩,然后通过控制台将该压缩文件上传到 EB。您可以在应用程序版本下找到它 @GeorgeRushby 是否必须按照您在答案中给出的名称命名文件?像“02_files.config”和“03_container_commands.config”? @Sandun 不是,但它可以帮助我理解各个阶段的执行顺序。在这种情况下,所有文件都将在容器命令运行之前创建。您可以在此处阅读有关流程顺序的更多信息docs.aws.amazon.com/elasticbeanstalk/latest/dg/…【参考方案2】:您需要了解 Elastic Beanstalk 不是魔法。它只是启动 EC2 服务器并按特定顺序在它们上运行一堆 shell 脚本。一旦您意识到这一点,您就可以让 Elastic Beanstalk 在启动服务器时也执行您的脚本。有关如何要求 EB 执行您的东西的完整文档是 here。
在您的情况下,您需要让 EB 执行 container_commands
,这基本上是一个要在 设置您的应用程序之后运行的脚本。
所以首先要做的是将趋势微脚本添加到您的应用程序源中,以便可以在运行时找到它。假设它位于scripts/trendmicro.sh
然后,让 EB 执行脚本就像将文件添加到应用程序源一样简单。
您可以添加一个名为 /.ebextensions/container_commands.config
的文件,其内容如下:
container_commands:
trent_micro_startup:
command: "scripts/trendmicro.sh"
【讨论】:
"scripts" 在您上传的 zip 文件的根目录中? @red888 是的,在 Tal 的示例中,脚本目录将位于项目的根目录中。您可以像其他代码一样将您的 EB 配置文件/脚本提交到源代码管理。以上是关于在 aws elastic beanstalk 中创建 .ebextensions 文件夹的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AWS elastic-beanstalk 中更改我的 python 版本
如何在 AWS Elastic Beanstalk 中更改数据库配置
在 AWS Elastic Beanstalk 和 EKS 上部署了一个 laravel 应用程序 相同的数据库 RDS 为啥在 Elastic Beanstalk 中获得快速响应
如何在 AWS Elastic Beanstalk 中选择特定平台?