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

Kha*_*lid 15 amazon-web-services amazon-elastic-beanstalk

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

.ebextensions配置内容之一是创建一个文件夹,实际上是必须创建的文件夹只有一次,因为如果我第二次或更多次部署应用程序我就会出错,并且错误说"文件夹已经存在" .

所以我需要给出条件,如果文件夹已经存在,则不必再次运行创建文件夹的命令.

如果有人对如何实现这一点有任何见解或指导,我将不胜感激.谢谢!

mju*_*jul 31

.ebextensions配置文件允许通过在test:命令上使用指令来执行条件命令.然后该命令仅在测试为真时运行(返回0).

示例.ebextensions/create_dir.config文件:

commands:
  01_create_dir:
    test: test ! -d "${DIR}"
    command: mkdir "${DIR}"
Run Code Online (Sandbox Code Playgroud)

另一个例子(实际在EB上测试)如果目录不存在则有条件地运行脚本:

commands:
  01_intall_foo:
    test: test ! -d /home/ec2-user/foo
    command: "/home/ec2-user/install-foo.sh"
    cwd: "/home/ec2-user/"
Run Code Online (Sandbox Code Playgroud)

AWS的稀疏文档位于:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-commands

PS.如果你只是需要有条件地创建目录,你可以在没有条件的情况下完成它,使用-p选项mkdir来有条件地创建目录,如下所示:

commands:
  01_create_dir:
    command: mkdir -p "${DIR}"
Run Code Online (Sandbox Code Playgroud)


yeg*_*256 9

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

commands:
  make-directory:
    command: |
      if [ ! -f "${DIR}" ]; then
        mkdir "${DIR}"
      fi
Run Code Online (Sandbox Code Playgroud)

请参阅jcabi-beanstalk-maven-plugin中的更大示例.