【问题标题】:AWS CloudFormation template - Required valuesAWS CloudFormation 模板 - 必需值
【发布时间】:2020-10-23 01:15:32
【问题描述】:

当我们定义参数并在Resources中引用它时,参数值的存在只在堆栈创建时检查;如果我们没有提及参数值,则堆栈创建失败并回滚并出现以下异常

参数验证失败:参数名称的参数值 xxx 不存在。用户请求回滚。

我知道原因,并且从 AWS Cloud Formation 文档中的 general requirement of parameters 中很清楚。

• 每个参数必须在运行时为 AWS 分配一个值 CloudFormation 以成功配置堆栈。

但是,我想告诉用户他们在创建堆栈之前没有提及参数值的时间。

问题:有没有一种方法可以强制我们在继续创建堆栈之前输入参数的值?

例如,如果我们没有提及堆栈名称,控制台将不会让您继续。我想要类似的东西,如果存在缺失值,它会阻止堆栈创建继续进行。这张图片与我的问题无关;但是为了向您展示我希望我的自定义参数在缺少值的情况下显示什么

更新:如果有人喜欢类似的功能,那么以下是示例解决方案,其中参数“名称”限制使用在继续之前输入至少一个字符,“SecuritygroupIngressCIDR”强制使用有效 IP。

Parameters:
  Name:
    Type: String
    AllowedPattern: ^[a-zA-Z0-9]*$
    MinLength: 1
    
  SecurityGroupIngressCIDR:
    Description: The IP address range that can be used to communicate to the EC2 instances
    Type: String
    MinLength: '9'
    MaxLength: '18'
    AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})
    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    正如@Paolo 所说,这是通常的做法。一个补充的例子是:

    Parameters:
      Name:
        Type: String
        AllowedPattern: ^[a-zA-Z0-9]*$
        MinLength: 1
    

    当您点击Create stack 这是控制台中的第 4 步时,这只会出错,这是毫无价值的。不能同时指定参数或堆栈名称(第 2 步)。

    【讨论】:

    • 完美而简单。
    • 猜猜你可以去掉MinLength,如果你在正则表达式中指定+而不是*
    • @Paolo 是的。这是一个更通用的例子。它是可用于实现类似结果的众多可能性之一。
    【解决方案2】:

    您可以将AllowedPatternConstraint description 组合为参数。

    来自documentation

    AllowedPattern
    A regular expression that represents the patterns to allow for String types
    
    ConstraintDescription
    A string that explains a constraint when the constraint is violated.
    

    【讨论】:

    • 为您的支持投票。
    猜你喜欢
    • 2021-07-20
    • 2016-12-12
    • 2018-05-04
    • 1970-01-01
    • 2018-10-12
    • 2020-01-15
    • 2017-06-18
    • 1970-01-01
    • 2018-02-07
    相关资源
    最近更新 更多