【发布时间】:2019-07-23 23:18:07
【问题描述】:
我想使用 CloudFormation 模板创建 Elastic Beanstalk。我想定义一个环境变量ENV_VAR_1 并将其值设置为模板参数var1 的值。但是如果var1 是一个空字符串,则根本不希望ENV_VAR_1 存在。 IE。我不希望 ENV_VAR_1 没有价值。
首先我尝试了Conditions,但在创建ElasticBeanstalkEnvironment 资源期间我得到了"Encountered unsupported property Condition"。
Parameters:
var1:
Type: String
Conditions:
isVar1Empty: !Equals [ !Ref var1, "" ]
Resources:
ElasticBeanstalkEnvironment:
Type: 'AWS::ElasticBeanstalk::Environment'
Properties:
OptionSettings:
- Namespace: 'aws:elasticbeanstalk:application:environment'
Condition: isVar1Empty
OptionName: ENV_VAR_1
Value: !Ref var1
然后我尝试了AWS::NoValue
Parameters:
var1:
Type: String
Resources:
ElasticBeanstalkEnvironment:
Type: 'AWS::ElasticBeanstalk::Environment'
Properties:
OptionSettings:
- Namespace: 'aws:elasticbeanstalk:application:environment'
OptionName: ENV_VAR_1
Value: !If [[!Equals [ !Ref var1, "" ]], !Ref 'AWS::NoValue', !Ref var1]
和许多排列组合。结果相同:当var1 为空时,将创建Elastic Beanstalk,并将ENV_VAR_1 设置为""
【问题讨论】:
-
!Equals 在 Fn::If 块中是不允许的......所以你上面所说的将不起作用。是的,我知道您的问题是如果不满足条件,如何避免设置变量(甚至设置为 null 或空字符串),但只是指出这一点,这样其他人就不会对共享的代码中的明显错误感到困惑
标签: amazon-web-services environment-variables amazon-cloudformation amazon-elastic-beanstalk