我要在.json中指定以下代码块,以通过AWS cloudformation创建集群。
"MyCluster": {
"Type" : "AWS::ECS::Cluster",
"Properties" : {
"ClusterName" : {
"Ref": "EcsCluster"
}
}
}
如果要使用特定名称的集群已经存在,我想提供一个例外条件来忽略集群的创建。 任何帮助将不胜感激。
答案 0 :(得分:3)
您只能基于Conditions
值有条件地创建资源,并且所有条件都是在模板的“开始时间”评估的,并且仅基于对输入参数的简单字符串和逻辑运算。因此,您无法做任何事情,例如使用自定义资源来检查集群是否已经存在,如果存在则跳过创建它。
您可以使用自定义资源修改堆栈创建的ECS集群的名称,检查您的首选名称是否已被“采用”,如果是,则返回一个不冲突的其他名称。
如果您需要完全消除资源,则需要添加一个参数以将其打开或关闭:
AWSTemplateFormatVersion: "2010-09-09"
Parameters:
CreateCluster:
Type: "String"
Description: "Whether to create the ECS Cluster"
AllowedValues: [ "true", "false" ]
Default: "false"
...
Conditions:
CreateCluster: { "Fn::Equals": [ { Ref: "CreateCluster" }, "true" ] }
....
Resources:
MyCluster:
Type: "AWS::ECS::Cluster"
Properties:
ClusterName: { Ref: "EcsCluster" }
Condition: "CreateCluster"
或者您需要使用Transform来重写模板,检查集群是否存在,如果存在则删除资源定义。