【问题标题】:Cloudformation condition for string parameter length字符串参数长度的成云条件
【发布时间】:2020-11-03 11:25:54
【问题描述】:

在我的 cloudformation 代码(yaml 文件)中,我想编写条件来检查字符串参数是否长于某个值(比如说 15),但我没有找到任何方法。 两个主要问题是,

  1. 如何获取字符串参数长度?
  2. 获得长度后,如何编写条件来检查该长度是否大于/小于特定值?

我希望 cloudformation 有一个像 LongerThan 这样的 Fn 或类似的东西

 Conditions:
    isLongerThanParam:
        'Fn::LongerThan':
            - {Ref: Param}
            - '15'

但他们只支持这些功能:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-conditions.html

【问题讨论】:

  • 我认为没有办法做到这一点;正如您所发现的,内在功能非常有限。你想做什么?可能还有另一种方法可以实现您想要的。
  • 存储桶名称有 cloudformation 限制“存储桶名称应在 3 到 63 个字符之间”,并且我的存储桶名称包含一些常量前缀(48 个字符)和参数 "Fn::Sub": "<prefix>-${Param}",所以我m 尝试检查参数是否超过 15,然后使用不同的前缀。
  • 对参数设置 MaxLength 约束就足够了吗?但是,这不允许您使用后备;它只会阻止存储桶名称超过最大长度并导致错误。
  • 是的,我想过但是我不想改参数名(其他地方用的)我想改前缀。
  • 您可以按照@PMah 的建议使用 MaxLength,但保留原始参数和第二个 LongerThanFifteenBucketName。添加条件LongerThanFifteenShorterThanFifteen并使用!If引用正确的参数?

标签: conditional-statements amazon-cloudformation


【解决方案1】:

没找到办法

CFN 中没有这样的功能。您已经提供了可用条件检查的链接,并且没有条件来检查某项是否大于或低于其他项。

一些可能的解决方法 可能涉及CloudFormation macro 的开发,这将采用 lambda 函数的形式。该函数将采用您的Fn::LongerThan,并根据您希望它的行为方式对其进行一些转换。作为宏的结果,无论Fn::LongerThan 是否满足,都会返回有效条件。

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多