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