我正在使用cloudformation,我希望能够使用伪值
在AWS::NoValue
中的Fn::Sub
像这样:
!Sub ["ATL_DATASET_URL=${DatasetURL}",
DatasetURL: !If [IsURLProvided,
!Ref BitbucketDatasetURL,
!Ref "AWS::NoValue"]]
我的模板通过验证,但未部署。这是单击创建堆栈时收到的错误消息。
Template error: every value of the context object of every Fn::Sub object must be a string or a function that returns a string
答案 0 :(得分:2)
如果您要跳过为DatasetURL
设置值,请使!If
返回空字符串''
,当条件的计算结果为false而不是AWS::NoValue
时。< / p>
如果返回false,则返回AWS::NoValue
,将删除DatasetURL
的映射。
答案 1 :(得分:1)
@franklinsijo的替代方法是,如果您实际上想删除属性(例如,If
)(如果未给出Sub
的话,则交换YourPropertyName
和BitbucketDatasetURL
语句。
YourPropertyName: !If
- IsURLProvided
- !Sub ["ATL_DATASET_URL=${DatasetURL}", DatasetURL: !Ref BitbucketDatasetURL]
- !Ref "AWS::NoValue"
或更短
YourPropertyName: !If
- IsURLProvided
- !Sub "ATL_DATASET_URL=${BitbucketDatasetURL}"
- !Ref "AWS::NoValue"