Amazon web services 如何在.ebextensions配置(AWS Elastic Beanstalk)中使用条件

Amazon web services 如何在.ebextensions配置(AWS Elastic Beanstalk)中使用条件,amazon-web-services,amazon-elastic-beanstalk,Amazon Web Services,Amazon Elastic Beanstalk,我希望我可以使用conditional for.ebextensions配置,但我不知道如何使用它,我目前的情况是: .ebextensions的配置内容之一是创建文件夹,实际上必须创建的文件夹只有一次,因为如果我部署应用程序第二次或更多次,我会遇到错误,错误显示“文件夹已经存在” 因此,我需要给出条件,如果文件夹已经存在,则无需再次运行创建文件夹的命令 如果有人对如何实现这一目标有任何见解或方向,我将不胜感激。谢谢大家! 我认为唯一的方法是使用外壳条件: commands: make-di

我希望我可以使用conditional for.ebextensions配置,但我不知道如何使用它,我目前的情况是:

.ebextensions的配置内容之一是创建文件夹,实际上必须创建的文件夹只有一次,因为如果我部署应用程序第二次或更多次,我会遇到错误,错误显示“文件夹已经存在”

因此,我需要给出条件,如果文件夹已经存在,则无需再次运行创建文件夹的命令


如果有人对如何实现这一目标有任何见解或方向,我将不胜感激。谢谢大家!

我认为唯一的方法是使用外壳条件:

commands:
  make-directory:
    command: |
      if [ ! -f "${DIR}" ]; then
        mkdir "${DIR}"
      fi

请参阅中的较大示例。

中的.ebextensions配置文件允许通过对命令使用
test:
指令执行有条件的命令。然后,该命令仅在测试为true(返回0)时运行

示例
.ebextensions/create_dir.config
文件:

commands:
  01_create_dir:
    test: test ! -d "${DIR}"
    command: mkdir "${DIR}"
另一个示例(实际在EB上测试)在目录不存在时有条件地运行脚本:

commands:
  01_intall_foo:
    test: test ! -d /home/ec2-user/foo
    command: "/home/ec2-user/install-foo.sh"
    cwd: "/home/ec2-user/"
AWS的稀疏文档如下所示:

附言。 如果只需要有条件地创建目录,则可以不带条件地创建目录,使用
mkdir
-p
选项有条件地创建目录,如下所示:

commands:
  01_create_dir:
    command: mkdir -p "${DIR}"

是的,你说得对,我已经要求在.ebextensions中不支持aws条件。啊,好的,谢谢你的建议,我会先试试。顺便说一句,我怎样才能理解if[!-f“${DIR}”;然后mkdir“${DIR}”fiI需要3个条件来设置3个命令,1)命令需要检查是否已经创建了任何文件夹,2)我在/etc/fstab中放置了一行脚本,所以我需要检查脚本是否已经创建,3)我需要检查是否已经安装了文件夹(mount)。如果我能理解条件脚本命令,那就太好了。感谢他们的例子,他们使用
test:'[!/usr/bin/python]&echo“python not installed”
有条件地运行python脚本,这让我很困惑。如果python丢失了,它不运行命令吗?mkdir-p是个好主意。Thanks@oskarth
在测试中使用if语句测试该路径的存在性,它的内容为“if not
/usr/bin/python
return false”。@RyanFisher-Thx,我也被我自己的注释(echo)弄糊涂了,可能是文档变了。@oskarth我很好地让您更加困惑,我的解释是错误的,测试返回的是真而不是假。括号是if语句的简写,因此如果缺少
/usr/bin/python
,则
&&
的左侧为true,因此执行右侧(回显消息)。