CloudFormation能否基于参数列表是否含指定值配置资源删除策略?
CloudFormation条件化配置删除策略的实现方法
CloudFormation支持实现你需要的逻辑,但不能直接用示例中的!Contains语法直接赋值给DeletionPolicy,需要借助条件定义+条件函数来完成。
具体实现步骤:
定义判断条件
在模板的Conditions块中先定义逻辑,检查Profiles列表是否包含"dev":Conditions: IsDevEnvironment: !Contains [!Ref Profiles, "dev"]动态设置删除策略
在S3桶资源中,使用!If条件函数根据上述条件指定删除策略:MyBucket: Type: AWS::S3::Bucket DeletionPolicy: !If [IsDevEnvironment, Delete, Retain]- 当
Profiles包含"dev"时,删除策略为Delete(删除栈时销毁桶) - 当
Profiles不包含"dev"时,删除策略为Retain(删除栈时保留桶)
- 当
补充说明:
!Contains函数可直接作用于CommaDelimitedList类型的参数,无需额外格式转换。- 该方法依赖CloudFormation对元属性(如
DeletionPolicy)支持条件函数的特性,目前AWS官方已全面支持此用法。
内容的提问来源于stack exchange,提问作者Garret Wilson
相关产品推荐
相关产品推荐

