json - 仅当 AWS Cloudformation 不存在时,如何通过它创建 AWS ECS 集群
问题描述
我在 .json 中指定以下代码块以通过 AWS cloudformation 创建集群。
"MyCluster": {
"Type" : "AWS::ECS::Cluster",
"Properties" : {
"ClusterName" : {
"Ref": "EcsCluster"
}
}
}
如果具有特定名称的集群已经存在,我想提供一个异常条件来忽略集群创建。任何帮助将不胜感激。
解决方案
您只能根据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重写模板,检查集群是否存在,如果存在则移除资源定义。
推荐阅读
- javascript - JavaScript 函数可以在没有 onclick 的情况下调用?
- ruby - windows 7 运行 ruby.exe 与 ruby 的区别
- python - 如何检查坐标网格中是否存在坐标对(纬度,经度)?
- powershell - Powershell 聚合嵌套数组值
- ios - 地点选择器已禁用,但仍发布实施指南
- jquery - 动态更改选择的代码,也可以在 Safari 中使用
- android - 通过标准模板与 Prism 模板创建 Xamarin 表单项目时出现资源错误
- arm - ARM 汇编语言指令中的排列说明符(.16b,.8b) 是什么?
- c - 当写入器比读取器快时 C FIFO 崩溃
- wpf - 跨应用程序域边界 WPF 调用命令