在 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.config03_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 中选择特定平台?

在 AWS Elastic Beanstalk 中运行 composer 命令

AWS Elastic Beanstalk 中的 HTTPS 配置