我们有一个用于创建一些 EC2 实例的 AWS CloudFormation 模板。然而,其中一些需要特定的PrivateIpAddress
,我正在努力弄清楚如何将其合并到模板中。
现在我有一个模板参数PrivateIP
和一个创建 Condition RequestedPrivateIP
。到目前为止,一切都很好。但是我不知道如何将它合并到AWS::EC2::Instance
资源规范中。我试过这个:
"PrivateIpAddress": {
"Fn::If": [ "RequestedPrivateIP",
{ "Ref": "PrivateIP" },
"" <-- This doesn't work
]
},
但是当RequestedPrivateIP
是假的时候失败了
CREATE_FAILED AWS::EC2::Instance NodeInstance Invalid addresses: []
知道如何有选择地分配静态私有 IP,如果未指定,则将其留给 AWS 设置动态 IP?
我会将结构更改为:
AWS::NoValue 可以为您的 if 语句提供 else 选项。 http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html
由于该
PrivateIpAddress
属性似乎不支持将空字符串作为其值,因此我建议您创建两个单独的AWS::EC2::Instance
. 其中一个将具有您的条件RequestedPrivateIP
,而另一个应该具有相同的条件但被否定,例如DidNotRequestPrivateIP
。