如何为AWS::RDS::DBCluster设置DeletionPolicy和UpdateReplacePolicy?
能否修改AWS::RDS::DBCluster的DeletionPolicy和UpdateReplacePolicy?
根据AWS文档,AWS::RDS::DBCluster资源的默认DeletionPolicy是Snapshot,但我尝试将其设置为Delete时,收到错误提示:
#: extraneous key [DeletionPolicy] is not permitted
问题原因
模板报错是因为DeletionPolicy是资源级别的属性,不属于Properties的子项,同时你还多打了个逗号(Delete,),这两个问题共同导致CloudFormation验证失败。
解决方案
可以修改DeletionPolicy和UpdateReplacePolicy,只要将它们放在资源的根层级(与Type、Properties同级)即可,修正后的模板示例如下:
auroraCluster: Type: AWS::RDS::DBCluster DeletionPolicy: Delete UpdateReplacePolicy: Delete # 可选,按需设置资源被替换时的行为 Properties: AvailabilityZones: - eu-north-1a - eu-north-1b - eu-north-1c DatabaseName: publisher DBClusterIdentifier: ${self:service}-db-cluster-${sls:stage} DBSubnetGroupName: !Ref subnetGroup DeletionProtection: !If [isProd, 'true', 'false'] Engine: aurora-postgresql Port: 5432 EngineVersion: 14.3 KmsKeyId: !Ref kmsKey ManageMasterUserPassword: 'true' MasterUsername: postgres MasterUserSecret: SecretArn: !Ref secretRds ServerlessV2ScalingConfiguration: MaxCapacity: 2 MinCapacity: 1 StorageEncrypted: 'true' VpcSecurityGroupIds: - !Ref securityGroupDb
设置完成后,删除CloudFormation栈时会直接删除DBCluster,而非默认创建快照;UpdateReplacePolicy则用于控制当资源因属性修改需要被替换时的行为,同样支持Delete、Snapshot等选项。
内容的提问来源于stack exchange,提问作者r.r
相关产品推荐
相关产品推荐

