繁体   English   中英

AWS Cloudformation参数依赖项

[英]AWS Cloudformation parameter dependency

我正在尝试执行以下操作:

"Parameters": {
    "InterfaceMode" : {
        "Description": "Configure instance to run in onearm or inline mode",
        "Type": "String",
        "Default": "onearm",
        "AllowedValues": [ "onearm", "inline" ], 
    }
    "InlineSubnetId" : {
        "Description": "Name of a subnet assigned to the VPC to use for second interface in inline mode.", 
        "Type": "AWS::EC2::Subnet::Id",
        "Default": "None"
    },

现在,如果用户选择onearm,则只需要一个接口,不需要InlineSubnetId。 通常,用户会将“InlineSubnetId”下拉列表保留为空,但这不适用于云形式验证,因为它需要AWS类型的值。 我不能只使用字符串类型,因为我希望用户从AWS提供的SubnetId中进行选择。

怎么解决这个问题?

  1. 有没有办法绕过验证,允许选择的AWS类型为空?
  2. 有没有办法在Subnet :: Id列表中添加“None”等其他选项?
  3. 有没有办法在模式内联时隐藏inlineSubnetId参数?
  4. 第二页参数怎么样,这取决于第一页参数的输出?

谢谢您的帮助。

不幸的是,如果您希望Parameter是可选的,则不能使用任何特定于AWS的参数类型(即AWS::* )。 您希望的解决方案也不会起作用。 我建议使用一个类型的String ,其AllowedPattern设置为^(subnet-[0-9a-fA-F]{8})?$ ,但这不符合您使用现有预先填充的下拉列表的要求子网值。

我不认为你的问题有一个很好的解决方案。 您可以尝试的一件事是使用AWS :: NoValue作为默认默认值,但我怀疑它是否有效。

我一直在寻找这种类型的条件参数,据我所知,它不存在。 您最接近的是AWS Condition。

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-conditions html的

这将允许您根据输入参数定义评估为true或false的条件,然后可以将这些条件与Fn:If语句一起使用以将不同的值注入资源。

因此,对于上面的场景,您可能希望将值默认为已知的子网ID,但如果不需要,则使用条件忽略此值。 不幸的是,如果您尝试在不同的VPC上使用相同的CloudFormation模板,这会有点短暂,因为默认子网不存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM