

這是新的 *CloudFormation 範本參考指南*。請更新您的書籤和連結。如需 CloudFormation 入門的說明，請參閱 [AWS CloudFormation 使用者指南](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# `DeletionPolicy` 屬性
<a name="aws-attribute-deletionpolicy"></a>

使用 `DeletionPolicy` 屬性，您可以在刪除資源的堆疊時保留並在某些情況下備份資源。您需要為要控制的每個資源指定 `DeletionPolicy` 屬性。如果資源沒有`DeletionPolicy`屬性， 預設會 CloudFormation 刪除資源。

此功能也適用於導致資源從堆疊中刪除的堆疊更新操作。例如，如果您從堆疊範本中移除資源，則會使用範本更新堆疊。此功能不適用於其實體執行個體在堆疊更新操作期間遭到取代的資源。例如，如果您編輯資源的屬性，讓 CloudFormation 在堆疊更新期間取代該資源。

**注意**  
**例外狀況**：`AWS::RDS::DBCluster` 資源以及未指定 `DBClusterIdentifier` 屬性之 `AWS::RDS::DBInstance` 資源的預設政策是 `Snapshot`。

若要在刪除資源的堆疊時保留資源，請針對該資源指定 `Retain`。您可以針對任何資源使用 `Retain`。例如，您可以保留巢狀堆疊、Amazon S3 儲存貯體或 EC2 執行個體，讓您可以在刪除這些資源的堆疊之後繼續使用或修改這些資源。

**注意**  
如果您想要修改 CloudFormation 外部的資源，請使用 `Retain` 刪除政策，然後刪除堆疊。否則，您的資源可能會與 CloudFormation 範本不同步，並導致堆疊錯誤。

針對支援快照的資源 (例如 `AWS::EC2::Volume`)，指定 `Snapshot` 讓 CloudFormation 先建立快照，再刪除資源。

下列程式碼片段包含具有 `Retain` 刪除政策的 Amazon S3 儲存貯體資源。刪除此堆疊時，CloudFormation 會保留而不刪除儲存貯體。

## JSON
<a name="aws-attribute-deletionpolicy-example.json"></a>

```
{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Resources" : {
    "MyBucket" : {
      "Type" : "AWS::S3::Bucket",
      "DeletionPolicy" : "Retain"
    }
  }
}
```

## YAML
<a name="aws-attribute-deletionpolicy-example.yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyBucket:
    Type: AWS::S3::Bucket
    DeletionPolicy: Retain
```

## `DeletionPolicy` 選項
<a name="aws-attribute-deletionpolicy-options"></a>

`Delete`  
在刪除堆疊期間，如果適用，CloudFormation 會刪除資源和其所有內容。您可以將此刪除政策新增至任何資源類型。根據預設，如果您未指定 `DeletionPolicy`，則 CloudFormation 會刪除您的資源。不過，請注意下列考量：  
+ 針對 `AWS::RDS::DBCluster` 資源，預設政策是 `Snapshot`。
+ 針對未指定 `AWS::RDS::DBInstance` 屬性的 `DBClusterIdentifier` 資源，預設政策是 `Snapshot`。
+ 針對 Amazon S3 儲存貯體，您必須刪除儲存貯體中的所有物件，刪除才會成功。
CloudFormation 的預設行為是刪除具有 ForceDeleteWithoutRecovery 旗標的秘密。

`Retain`  
刪除資源的堆疊時，CloudFormation 會保留而不刪除資源或其內容。您可以將此刪除政策新增至任何資源類型。CloudFormation 完成堆疊刪除時，堆疊將會處於 `Delete_Complete` 狀態；不過，保留的資源會持續存在並繼續產生適當費用，直到您刪除這些資源。  
針對更新操作，適用下列考量：  
+ 如果刪除資源，則 `DeletionPolicy` 會保留實體資源，但請確定從 CloudFormation 範圍予以刪除。
+ 如果更新資源，因而建立新的實體資源來取代舊資源，則會完全刪除舊資源 (包括 CloudFormation 範圍中)。

`RetainExceptOnCreate`  
`RetainExceptOnCreate` 的行為與堆疊操作的 `Retain` 一樣 (最初建立資源的堆疊操作除外)。若建立資源的堆疊操作被復原，則 CloudFormation 將刪除該資源。對於所有其他堆疊操作 (例如堆疊刪除)，CloudFormation 會保留資源及其內容。其結果是，會刪除新的、空的以及未使用的資源，而會保留使用中的資源及其資料。請參閱 [UpdateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html) API 文件，在未更新範本的情況下使用此刪除政策做為 API 參數。

`Snapshot`  
針對支援快照的資源，CloudFormation 會先建立資源的快照，再刪除資源。CloudFormation 完成堆疊刪除時，堆疊將會處於 `Delete_Complete` 狀態；不過，使用此政策建立的快照會持續存在並繼續產生適當費用，直到您刪除這些快照。  
支援快照的資源包括：  
+ [AWS::DocDB::DBCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-docdb-dbcluster.html)
+ [AWS::EC2::Volume](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-volume.html)
+ [AWS::ElastiCache::CacheCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticache-cachecluster.html)
+ [AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticache-replicationgroup.html)
+ [AWS::Neptune::DBCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-neptune-dbcluster.html)
+ [AWS::RDS::DBCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbcluster.html)
+ [AWS::RDS::DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html)
+ [AWS::Redshift::Cluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-redshift-cluster.html)