AWS CloudFormation 中的条件属性

MLu*_*MLu 12 amazon-web-services amazon-cloudformation

我们有一个用于创建一些 EC2 实例的 AWS CloudFormation 模板。然而,其中一些需要特定的PrivateIpAddress,我正在努力弄清楚如何将其合并到模板中。

现在我有一个模板参数PrivateIP和一个创建条件RequestedPrivateIP。到现在为止还挺好。但是我不知道如何将它合并到AWS::EC2::Instance资源规范中。我试过这个:

    "PrivateIpAddress": {
        "Fn::If": [ "RequestedPrivateIP",
            { "Ref": "PrivateIP" },
            ""                            <-- This doesn't work
        ]
    },
Run Code Online (Sandbox Code Playgroud)

但是当RequestedPrivateIP是 false时失败了

CREATE_FAILED    AWS::EC2::Instance    NodeInstance    Invalid addresses: []
Run Code Online (Sandbox Code Playgroud)

知道如何有选择地分配静态私有 IP,如果未指定,则将其留给 AWS 来设置动态私有 IP?

Gra*_*eme 23

我会将结构更改为:

"PrivateIpAddress": {
    "Fn::If": [ "RequestedPrivateIP",
        { "Ref": "PrivateIP" },
        {"Ref" : "AWS::NoValue" }
    ]
}
Run Code Online (Sandbox Code Playgroud)

AWS::NoValue 可以为您的 if 语句提供 else 选项。 http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html