当配置AWS Cloudformation 的时候,我们可以把一些常用的组件单独地写成模板文件,当需要创建这些服务的时候,我们可以直接调用他们,而不需要手动的复制粘贴同样的内容到我们自己的模板文件里面。这个类似我们写一个程序,可以直接调用其他的函数一样。
调用其他的模板,主要体现在两种方式上,一个是nested stack,直接在我们的模板里面的Resource部分,指向其他的模板文件;另外一个是通过一个现有的stack 他output的结果 export, import对应的值到我们的模板文件里面。
这里我们先来看看nested stack是如何实现的。理论上可以无限制地嵌套下去,不过这个嵌套层次太多了容易出问题,因此一般两层结构就足够了
下面看个实例说明,相关代码可以在这个github上找到
https://github.com/natonic/CloudFormation-Deep-Dive/tree/master/Labs/NestedStacks
首先我们先创建一个S3 bucket,然后上传两个json文件。这两个文件都是现成的template文件,内容几乎一致,都是创建一个S3 bucket,配置S3 Bucket Policy;唯一的区别是一个S3有deletion policy,需要retain;另外一个没有deletion policy
然后我们创建一个Stack
在template里面我们只创建了2个resource,分别指向我们的两个json文件
一路Next 点下去,最后一页会要求我们确认
稍等1分钟,我们的2个S3 Bucket就创建好了
切换到S3看看
接下来 我们试试删除
删除很顺利,切换到S3,发现只有一个Bucket了
在我们的Cloudformation 的root stack的Resource上面 我可以分别点开对应的子 stack查看,一个子stack里面的资源因为没有配置 deletion policy 直接被删了
另外一个S3Bucket 因为配置了deletion policy所以skipped了
实验结束。
来源:oschina
链接:https://my.oschina.net/u/4330404/blog/4266773