仅当不存在时如何通过AWS Cloudformation创建AWS ECS集群

时间:2018-09-26 15:34:53

标签: json amazon-web-services amazon-cloudformation amazon-ecs

我要在.json中指定以下代码块,以通过AWS cloudformation创建集群。

"MyCluster": {
      "Type" : "AWS::ECS::Cluster",
      "Properties" : {
      "ClusterName" : {
          "Ref": "EcsCluster"
        }
    }   
}

如果要使用特定名称的集群已经存在,我想提供一个例外条件来忽略集群的创建。 任何帮助将不胜感激。

1 个答案:

答案 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来重写模板,检查集群是否存在,如果存在则删除资源定义。