我想刪除新的或現有的 AWS CloudFormation 堆疊,但不想刪除堆疊的所有資源。
簡短描述
若要在刪除堆疊時保留某些資源,請使用 CloudFormation 範本中的 DeletionPolicy 屬性。
在刪除堆疊之前,請確定為您要保留的每個資源指定保留、快照或刪除政策選項:
- 保留選項在堆疊刪除時會保留資源。
- 快照選項會在資源刪除之前建立該資源的快照。
**注意:**此選項僅適用於支援快照的資源。
- 刪除選項會將資源與堆疊一起刪除。
**注意:**如果您沒有設定 DeletionPolicy,則此選項是預設結果。
解決方法
下列步驟說明如何使用對 DeletionPolicy 使用保留選項,以防止在 CloudFormation 堆疊刪除期間刪除資源。
在 AWS CloudFormation 範本中指定 DeletionPolicy 屬性
在 CloudFormation 範本中,輸入保留作為您要保留的資源的 DeletionPolicy。在下列範例 JSON 和 YAML 範本中,為 AWS::EC2::SecurityGroup 資源指定了保留政策。
JSON:
{
"Description": "AWS CloudFormation DeletionPolicy demo",
"Resources": {
"SGroup1": {
"Type": "AWS::EC2::SecurityGroup",
"DeletionPolicy": "Retain",
"Properties": {
"GroupDescription": "EC2 Instance access"
}
},
"SGroup2": {
"Type": "AWS::EC2::SecurityGroup",
"DeletionPolicy": "Retain",
"Properties": {
"GroupDescription": "EC2 Instance access"
}
},
"SGroup1Ingress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"DeletionPolicy": "Retain",
"Properties": {
"GroupName": {
"Ref": "SGroup1"
},
"IpProtocol": "tcp",
"ToPort": "80",
"FromPort": "80",
"CidrIp": "0.0.0.0/0"
}
},
"SGroup2Ingress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"DeletionPolicy": "Retain",
"Properties": {
"GroupName": {
"Ref": "SGroup2"
},
"IpProtocol": "tcp",
"ToPort": "80",
"FromPort": "80",
"CidrIp": "0.0.0.0/0"
}
}
}
}
YAML:
Description: AWS CloudFormation DeletionPolicy demo
Resources:
SGroup1:
Type: 'AWS::EC2::SecurityGroup'
DeletionPolicy: Retain
Properties:
GroupDescription: EC2 Instance access
SGroup2:
Type: 'AWS::EC2::SecurityGroup'
DeletionPolicy: Retain
Properties:
GroupDescription: EC2 Instance access
SGroup1Ingress:
Type: 'AWS::EC2::SecurityGroupIngress'
DeletionPolicy: Retain
Properties:
GroupName: !Ref SGroup1
IpProtocol: tcp
ToPort: '80'
FromPort: '80'
CidrIp: 0.0.0.0/0
SGroup2Ingress:
Type: 'AWS::EC2::SecurityGroupIngress'
DeletionPolicy: Retain
Properties:
GroupName: !Ref SGroup2
IpProtocol: tcp
ToPort: '80'
FromPort: '80'
CidrIp: 0.0.0.0/0
上傳更新的 CloudFormation 範本
- 開啟 AWS CloudFormation 主控台。
- 對於新堆疊,請選擇建立堆疊。對於現有堆疊,請選取要更新的堆疊,然後選擇更新堆疊。
- 對於選擇範本,選取將範本上傳至 Amazon S3,然後選擇經您修改以包括刪除政策的 CloudFormation 範本。
- 選擇下一步。
- 如果您要建立新堆疊,對於堆疊名稱,請輸入您的堆疊名稱,然後選擇下一步。
- 在選項頁面上,為堆疊選取適當的選項,然後選擇下一步。
- 選擇建立。
測試 DeletionPolicy 屬性
- 刪除 AWS CloudFormation 堆疊。
- 在堆疊刪除完成後,確認對 DeletionPolicy 使用保留選項的資源仍然可用。您可以使用 AWS 管理主控台或 AWS CLI 檢查其各自服務中的資源。
例如,您可以在刪除 CloudFormation 堆疊後,使用下列步驟驗證上述範本的保留政策是否成功。
- 開啟 Amazon EC2 主控台。
- 在網路和安全區段的導覽窗格上,選擇安全群組。
- 確認附加了保留政策的安全群組仍然可用。
相關資訊
在 AWS CloudFormation 主控台建立堆疊
如何防止 CloudFormation 堆疊中的資源遭到刪除或更新?