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

时间:2013-06-18 08:56:42

标签: amazon-web-services elastic-beanstalk

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

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

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

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

2 个答案:

答案 0 :(得分:29)

.ebextensions配置文件允许在命令上使用test:指令执行条件命令。然后该命令仅在测试为真时运行(返回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的稀疏文档在这里:

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}"

答案 1 :(得分:8)

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

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

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