【问题标题】:AWS Cloudformation - use AWS::NoValue within Fn::SubAWS Cloudformation - 在 Fn::Sub 中使用 AWS::NoValue
【发布时间】:2020-07-20 05:37:44
【问题描述】:

我正在使用 cloudformation,我希望能够使用伪值 AWS::NoValueFn::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

【问题讨论】:

  • 进展如何?仍然不清楚你能做什么?

标签: amazon-web-services amazon-cloudformation


【解决方案1】:

如果您想跳过为DatasetURL 设置值,请让!If 在条件评估为假而不是AWS::NoValue 时返回空字符串''

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

【讨论】:

  • 谢谢,这行得通,但如果 ATL_DATASET_URL 参数的值为空,则删除该参数会有帮助
  • 我相信@Marcin 的回答可以解决这个问题!如果没有,您能否提供有关此 !Sub 函数使用的属性的更多信息。
【解决方案2】:

@franklinsijo 的替代方法是交换 IfSub 语句,如果您想实际删除属性(例如 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"

【讨论】:

    猜你喜欢
    • 2020-06-13
    • 2020-11-26
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 2018-12-25
    • 2017-05-01
    • 2017-11-11
    相关资源
    最近更新 更多