

這是新的 *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` 屬性套用至任何資源。如果更新的資源屬性的更新行為是指定為 **Replacement** (替換)，系統會僅執行 `UpdateReplacePolicy`，進而導致 CloudFormation 使用具有新實體 ID 的新資源替換舊資源。例如，如果您更新 [AWS::RDS::DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-rds-database-instance.html) 資源類型的 `Engine` 屬性，CloudFormation 會建立新的資源，並將目前的資料庫執行個體資源取代為此新的資源。`UpdateReplacePolicy` 屬性會表示 CloudFormation 是否刪除、保留，或建立舊資料庫執行個體的快照。資源每個屬性的更新行為會在 [AWS 資源和屬性類型參考](aws-template-resource-type-ref.md) 中該資源的參考主題中指定。

除了使用[變更集](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-direct.html)執行的堆疊更新之外，此 `UpdateReplacePolicy` 屬性也會套用至[您直接執行的堆疊更新](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html)。

**注意**  
保留資源會持續存在，並繼續產生適用的費用，直到您將這些資源刪除為止。使用此政策建立的快照會持續存在，並繼續產生適用的費用，直到您將這些快照刪除為止。`UpdateReplacePolicy` 會保留舊實體資源或快照，但將他們從 CloudFormation 範圍內移除。

`UpdateReplacePolicy` 與 [`DeletionPolicy`](aws-attribute-deletionpolicy.md) 屬性不同，因為它僅適用於在堆疊更新期間替換的資源。將 `DeletionPolicy` 用於在堆疊刪除時，或在堆疊更新期間將資源定義本身從範本中刪除時遭到刪除的資源。

下列程式碼片段包含具有 `Retain` 替換政策的 Amazon RDS 資料庫執行個體資源。將此資源替換為具有新實體 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)`