AWS:如何在CloudFormation模板中指定布尔参数

Wil*_*ich 35 amazon-web-services aws-cloudformation

我正在尝试在CloudFormation模板中指定一个布尔参数,以便我可以根据传入的参数有条件地创建资源.

查看此处此处的文档,可能会出现明显缺少布尔数据类型的情况.

指定布尔值的最佳做法是什么?可能是Number0或1次或StringAllowedValues"真"与"假"?

wjo*_*dan 53

快速入门模板是多么复杂的模板可以/应该创建一个良好的,半官方的参考点,并完全按照你描述的,用他们实施条件资源布尔值StringAllowedValues truefalse.这是一个具体的例子:

"EnableBanner": {
    "AllowedValues": [
        "true",
        "false"
    ],
    "Default": "false",
    "Description": "To include a banner to be displayed when connecting via SSH to the bastion, set this parameter to true",
    "Type": "String"
}
Run Code Online (Sandbox Code Playgroud)

类似的示例可以在条件中使用 CloudFormation文档中的现有资源示例中找到,其中AllowedValuesdefaultNONE(默认).

要根据此类布尔参数有条件地创建资源,请添加包含内部函数匹配的Condition语句,然后向该资源添加一个键.Fn::EqualstrueCondition

这是一个完整的,最小的示例模板:

启动堆栈

Parameters:
  CreateResource:
    Description: Whether I should create a resource.
    Default: false
    Type: String
    AllowedValues: [true, false]
Conditions:
  ShouldCreateResource:
    !Equals [true, !Ref CreateResource]
Resources:
  Resource:
    Type: AWS::CloudFormation::WaitConditionHandle
    Condition: ShouldCreateResource
Run Code Online (Sandbox Code Playgroud)

  • 这是愚蠢的,你真棒. (15认同)
  • 对于字符串'true'和文字'true'是否对同一事物求值,我仍不清楚。我在文档中看到了这两种情况的示例,似乎可以互换使用。 (3认同)
  • @Arel,在YAML中,“ true”和“ true”都是字符串。字符串周围的引号通常是可选的。当涉及数字或特殊字符时,有些例外。 (2认同)
  • @arel @MarkR YAML规范[标签解析](https://yaml.org/spec/1.2/spec.html#id2805071)明确将`true`解析为本机布尔类型,因此,'true'和至少在YAML本身中,“ true”不会评估同一件事。在CloudFormation中,至少对于String类型的参数值似乎在验证之前将任何YAML本地值转换为String,因此在这种情况下,至少'true'和'true'可以互换。 (2认同)