AWS Cloudformation-在Fn :: Sub中使用AWS :: NoValue

时间:2020-04-07 21:56:03

标签: amazon-web-services amazon-cloudformation

我正在使用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

2 个答案:

答案 0 :(得分:2)

如果您要跳过为DatasetURL设置值,请使!If返回空字符串'',当条件的计算结果为false而不是AWS::NoValue时。< / p>

如果返回false,则返回AWS::NoValue,将删除DatasetURL的映射。

答案 1 :(得分:1)

@franklinsijo的替代方法是,如果您实际上想删除属性(例如,If)(如果未给出Sub的话,则交换YourPropertyNameBitbucketDatasetURL语句。

  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"