

これは新しい 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 は、スナップショットを作成したうえで、リソースを削除するようになります。

次のスニペットでは、Amazon S3 バケットリソースの削除ポリシーが `Retain` に設定されています。このスタックを削除すると、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 はリソースとその内容を保持します。その結果として、新しいリソース、空のリソース、未使用のリソースは削除される一方、使用中のリソースとそのデータは保持されます。テンプレートを更新せずにこの削除ポリシーを API パラメータとして使用するには、[UpdateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html) 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)