Как создать кластер AWS ECS через AWS Cloudformation, только если он НЕ существует - PullRequest
0 голосов
/ 26 сентября 2018

Я указываю следующий блок кода в моем .json для создания кластера с помощью облачной информации AWS.

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

Я хотел бы предоставить условие исключения, чтобы игнорировать создание кластера, если кластер с определенным именем уже существуетсуществует.Любая помощь будет высоко оценен.

1 Ответ

0 голосов
/ 26 сентября 2018

Вы можете условно создавать ресурсы только на основе значений 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 переписать шаблон, проверить, существует ли кластер, и удалить определение ресурса, если это так.

...