我浏览了很多 CloudFormation 文档,但找不到任何将 DeletionPolicy
从 Retain
更新为 Delete
的引用已部署堆栈中的资源。
堆栈中部署的现有资源的 DeletionPolicy
设置为 Retain
。我无法将其更改为删除
。当我尝试将删除策略设置为Delete
来更新堆栈时,它表示更改集不包含任何要部署的更改。
。但变化是显而易见的。
我的目的是从堆栈中的资源中删除deletionPolicy属性或将它们设置为Delete
用于部署的框架:Serverless
将以下资源模板视为堆栈中的现有资源:
ResourceA:
Type: AWS::IAM::Role
DeletionPolicy: Retain //This is how it is currently deployed
Properties:
RoleName: RoleName-${self:custom.env.stage}
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: events.amazonaws.com
Action: sts:AssumeRole
尝试将上述资源属性更改为:
ResourceA:
Type: AWS::IAM::Role
DeletionPolicy: Delete // <--- The change
Properties:
RoleName: RoleName-${self:custom.env.stage}
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: events.amazonaws.com
Action: sts:AssumeRole
目的是摆脱删除策略,但将删除策略设置为“删除”也将允许我继续我打算做的事情。
ResourceA:
Type: AWS::IAM::Role
Properties:
RoleName: RoleName-${self:custom.env.stage}
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: events.amazonaws.com
Action: sts:AssumeRole
最佳答案
@Gaurav:我使用 Serverless Framework 遇到了同样的问题。仅更新 DeletionPolicy
就会导致跳过更新。
我的解决方法是向堆栈添加虚拟资源以部署更新,然后删除虚拟资源并再次部署。
看起来像是无服务器框架中的错误。
关于amazon-web-services - 如何将 DeletionPolicy 从保留更新为删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74191749/