

これは新しい CloudFormation テンプレートリファレンスガイドです。ブックマークとリンクを更新してください。CloudFormation の開始方法については、『[AWS CloudFormation ユーザーガイド](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)』を参照してください。

# `UpdateReplacePolicy` 属性
<a name="aws-attribute-updatereplacepolicy"></a>

`UpdateReplacePolicy` 属性では、スタック更新オペレーションでリソースを置き換えるときに、リソースの既存の物理インスタンスを保持したり、必要に応じてバックアップしたりします。

スタックの更新を開始すると、CloudFormation は、送信された内容とスタックの現在のテンプレートおよびパラメータの違いに基づいてリソースを更新します。リソースプロパティの更新に伴ってリソースの置換が必要となる場合、CloudFormation は更新時にリソースを再作成します。詳細については、「*AWS CloudFormation ユーザーガイド*」の「[スタックリソースの更新動作](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html)」を参照してください。

リソースの再作成に伴って物理 ID が生成されます。CloudFormation は、まず置き換えリソースを作成し、次に他の依存リソースからの参照を置き換えリソースを指すように変更します。デフォルトでは、CloudFormation は古いリソースを削除します。`UpdateReplacePolicy` では、CloudFormation で古いリソースを保持するか、必要に応じて古いリソースのスナップショットを作成するかを指定できます。

スナップショットをサポートするリソース (`AWS::EC2::Volume` など) の場合は、`Snapshot` を指定し、CloudFormation でスナップショットを作成してから古いリソースインスタンスを削除します。

`UpdateReplacePolicy` 属性は、任意のリソースに適用できます。`UpdateReplacePolicy` が実行されるのは、更新するリソースプロパティの更新動作が **Replacement** と指定されている場合に限ります。これにより、CloudFormation は古いリソースを新しいリソースに置き換えて新しい物理 ID を割り当てます。例えば、[AWS::RDS::DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-rds-database-instance.html) リソースタイプの `Engine` プロパティを更新すると、CloudFormation によって新しいリソースが作成され、現在の DB インスタンスリソースと置き換えられます。次に、`UpdateReplacePolicy` 属性は、CloudFormation による古い DB インスタンスの削除、保持、またはスナップショットの作成を行うかどうかを指定します。リソースの各プロパティの更新動作は、[AWS リソースおよびプロパティタイプのリファレンス](aws-template-resource-type-ref.md) で、そのリソースに関する参照トピックに指定されています。

`UpdateReplacePolicy` 属性は、[変更セット](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html)を使用して実行されるスタックの更新だけでなく、[直接実行するスタックの更新](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-direct.html)にも適用されます。

**注記**  
保持されたリソースは存続し、削除されるまでは、該当する料金が引き続き発生します。このポリシーを使用して作成されたスナップショットは引き続き存在し、それらのスナップショットを削除するまで該当の料金が発生します。`UpdateReplacePolicy` は、古い物理リソースまたはスナップショットを保持しますが、CloudFormation のスコープからは削除します。

`UpdateReplacePolicy` は、スタックの更新時に置き換えるリソースにのみ適用されるという点で、[`DeletionPolicy`](aws-attribute-deletionpolicy.md) 属性とは異なります。`DeletionPolicy` は、スタックの削除時にリソースを削除する場合や、スタック更新の一環としてリソース定義自体をテンプレートから削除する場合に使用します。

次のスニペットに示す Amazon RDS データベースインスタンスリソースでは、置換ポリシーとして `Retain` を使用しています。このリソースが新しいリソースに置き換えられて新しい物理 ID が割り当てられると、CloudFormation は古いデータベースインスタンスを削除せずに保持します。

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

```
{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Resources" : {
    "myDB" : {
      "Type" : "AWS::RDS::DBInstance",
      "DeletionPolicy" : "Retain",
      "UpdateReplacePolicy" : "Retain",
      "Properties" : {}
    }
  }
}
```

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

```
AWSTemplateFormatVersion: 2010-09-09
Resources:
  myDB:
    Type: AWS::RDS::DBInstance
    DeletionPolicy: Retain
    UpdateReplacePolicy: Retain
    Properties: {}
```

## `UpdateReplacePolicy` オプション
<a name="aws-attribute-updatereplacepolicy-options"></a>

`Delete`  
CloudFormation はリソースの置換に伴ってリソースとそのすべてのコンテンツ (該当する場合) を削除します。このポリシーは、任意のリソースタイプに追加できます。デフォルトでは、`UpdateReplacePolicy` を指定しない場合、CloudFormation はリソースを削除します。ただし、次の点を考慮する必要があります。  
Amazon S3 バケットでは、削除を成功させるためにはバケットのすべてのオブジェクトを削除する必要があります。

`Retain`  
CloudFormation はリソースの置換に伴ってリソースを保持します。リソースやそのコンテンツは削除されません。このポリシーは、任意のリソースタイプに追加できます。保持されたリソースは存続し、削除されるまでは、該当する料金が引き続き発生します。  
リソースを置き換えると、古い物理リソースは、`UpdateReplacePolicy` には保持されますが、CloudFormation のスコープからは削除されます。

`Snapshot`  
スナップショットをサポートするリソースについては、CloudFormation は削除前に、リソースのスナップショットを作成します。このポリシーで作成されたスナップショットは存続し、削除されるまでは、該当する料金が引き続き発生します。  
スナップショットをサポートしていないリソースに対して `UpdateReplacePolicy` の `Snapshot` オプションを指定すると、CloudFormation は、`Delete` というデフォルトのオプションに戻ります。
スナップショットをサポートするリソースは以下のとおりです。  
+ `[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)`