【问题标题】:Fn::Equals throwing error when CommaDelimitedList parameter is used使用 CommaDelimitedList 参数时 Fn::Equals 抛出错误
【发布时间】:2020-07-29 17:57:01
【问题描述】:

我正在编写一个 CF 模板来创建一个 Elasticache 复制组。其中,我有一个名为SnapshotsCommaDelimitedList 类型的参数,用于将存储在s3 中的RDB 快照文件作为ARN 列表传递-

Snapshots:
    Description: >-
      List of ARNs of Redis RDB snapshot files to populate the Elasticache
      cluster (optional)
    Type: CommaDelimitedList

我试图有一个像下面这样的条件,它将检查 Snapshots 是否为空 -

Conditions:
  HasSnapshots: !Not 
    - !Equals 
      - !Ref Snapshots
      - ''

当我尝试在 CloudFormation Designer 中验证我的模板时,它会引发错误 -

29/07/2020, 22:50:33 - Template contains errors.: Template error: every Fn::Equals object requires a list of 2 string parameters.

这样做的正确方法是什么?我必须对Snapshots 使用字符串类型而不是 CommaDelimitedList 吗?还是有其他更好的方法?

我需要此参数用于 AWS::ElastiCache::ReplicationGroup 类型的 Resource,如下所示,以使用在 Snapshots 参数中作为 ARN 列表给出的快照文件填充 ElastiCache 集群(如果提供的话)-

RedisReplicationGroup:
  Type: 'AWS::ElastiCache::ReplicationGroup'
  Properties:
    ...
    ...
    SnapshotArns: !If 
      - HasSnapshots
      - !Ref Snapshots
      - !Ref 'AWS::NoValue'

【问题讨论】:

  • 进展如何?还不清楚你能做什么?如果没有,我们将不胜感激。

标签: amazon-web-services amazon-cloudformation amazon-elasticache


【解决方案1】:

您可以使用Join 执行以下操作:

Conditions:

  HasSnapshots: !Not 
    - !Equals 
      - !Join ["", !Ref Snapshots]
      - ''

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多