

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

# `UpdatePolicy` 属性
<a name="aws-attribute-updatepolicy"></a>

`UpdatePolicy` 属性を使用して、スタック更新操作中に CloudFormation が特定のリソースに対する更新を処理する方法を指定します。

**Topics**
+ [概要:](#aws-resource-update-policies)
+ [WorkSpaces Applications の更新ポリシー](#aws-attribute-update-policy-app-stream-fleet)
+ [AutoScalingReplacingUpdate ポリシー](#cfn-attributes-updatepolicy-replacingupdate)
+ [AutoScalingRollingUpdate ポリシー](#cfn-attributes-updatepolicy-rollingupdate)
+ [AutoScalingScheduledAction ポリシー](#cfn-attributes-updatepolicy-scheduledactions)
+ [UseOnlineResharding ポリシー](#cfn-attributes-updatepolicy-useonlineresharding)
+ [EnableVersionUpgrade ポリシー](#cfn-attributes-updatepolicy-upgradeopensearchdomain)
+ [CodeDeployLambdaAliasUpdate ポリシー](#cfn-attributes-updatepolicy-codedeploylambdaaliasupdate)
+ [例](#aws-attribute-updatepolicy-examples)

## 概要:
<a name="aws-resource-update-policies"></a>

次の説明にあるように、`UpdatePolicy` 属性を使用することで、以下のリソースの更新方法を制御することができます。
+ **[AWS::AppStream::Fleet](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-appstream-fleet.html)** – CloudFormation はフリートを停止および起動することができ、その結果としてフリートのインスタンスが置き換えられます。これにより、スタック更新の直後に最新の変更がすべてのインスタンスに適用されます。
+ **[https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html)** – Auto Scaling グループでは、1 つ、または複数の更新ポリシーを使用して、CloudFormation が特定の更新を処理する方法を制御できます。これらのポリシーには以下が含まれます。
  + **`AutoScalingReplacingUpdate` および `AutoScalingRollingUpdate` ポリシー** – CloudFormation は、`AutoScalingReplacingUpdate` ポリシーを使用して Auto Scaling グループとそのインスタンスを置き換えるか、`AutoScalingRollingUpdate` ポリシーを使用してインスタンスのみを置き換えることができます。これらの置換オペレーションは、次の変更を 1 つ以上行ったときに発生します。
    + Auto Scaling グループの [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-launchconfiguration.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-launchconfiguration.html) の変更。
    + Auto Scaling グループの `VPCZoneIdentifier` プロパティの変更。
    + Auto Scaling グループの `LaunchTemplate` プロパティの変更。
    + Auto Scaling グループの `PlacementGroup` プロパティの変更。
    + 現在の `LaunchConfiguration` に一致しないインスタンスを含む Auto Scaling グループの更新。

    `AutoScalingReplacingUpdate` ポリシーと `AutoScalingRollingUpdate` ポリシーの両方を指定した場合に `WillReplace` プロパティを `true` に設定すると、`AutoScalingReplacingUpdate` が優先されます。
  + **`AutoScalingScheduledAction` ポリシー** – このポリシーは、特定の時間にグループをスケールするアクションがスケジュールされている Auto Scaling グループが含まれるスタックを更新するときに適用されます。CloudFormation は、スタックテンプレートで明示的に変更されている場合を除き、グループの最小サイズ、最大サイズ、希望容量を変更できません。このポリシーは、スケジュールされているスケーリングアクティビティに支障をきたす可能性のある、予期しない更新を防ぐために役立ちます。
+ **[https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticache-replicationgroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticache-replicationgroup.html)** – CloudFormation は、リソース全体を置き換えるのではなく、シャードを追加または削除することによって、レプリケーショングループのシャードを変更できます。
+ **[https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opensearchservice-domain.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opensearchservice-domain.html)** および **[https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticsearch-domain.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticsearch-domain.html)** (レガシー) – CloudFormation は OpenSearch Service ドメインを、リソース全体を置き換えることなく OpenSearch または Elasticsearch の新しいバージョンにアップグレードできます。
+ **[https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-lambda-alias.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-lambda-alias.html)** – CloudFormation は、エイリアスでバージョンが変更されたときに CodeDeploy デプロイを実行できます。

この後のセクションでは、各リソースタイプでサポートされる `UpdatePolicy` 属性の構文とプロパティを説明します。

## WorkSpaces Applications の更新ポリシー
<a name="aws-attribute-update-policy-app-stream-fleet"></a>

更新前に WorkSpaces Applications フリートを停止し、更新後に再起動するには、WorkSpaces Applications 更新ポリシーを使用します。

### 構文
<a name="aws-attribute-update-policy-app-stream-fleet-syntax"></a>

#### JSON
<a name="aws-attribute-update-policy-app-stream-fleet-syntax-json"></a>

```
{
    "UpdatePolicy": {
        "StopBeforeUpdate": {
            "Type": "Boolean"
        },
        "StartAfterUpdate": {
            "Type": "Boolean"
        }
    }
}
```

#### YAML
<a name="aws-attribute-update-policy-app-stream-fleet-syntax-yaml"></a>

```
UpdatePolicy:
  StopBeforeUpdate:
    Type: Boolean
  StartAfterUpdate:
    Type: Boolean
```

`StopBeforeUpdate`  <a name="cfn-attributes-updatepolicy-replacingupdate-StopBeforeUpdate"></a>
更新前に指定されたフリートを停止します。  
*必須:* いいえ

`StartAfterUpdate`  <a name="cfn-attributes-updatepolicy-replacingupdate-StartAfterUpdate"></a>
更新後に指定されたフリートを開始します。  
*必須:* いいえ

## AutoScalingReplacingUpdate ポリシー
<a name="cfn-attributes-updatepolicy-replacingupdate"></a>

Auto Scaling グループと、それに含まれるインスタンスを置き換えるには、`AutoScalingReplacingUpdate` ポリシーを使用します。

更新を実行する前に、新旧両方の Auto Scaling グループに Amazon EC2 キャパシティーが十分あることを確認してください。

### 構文
<a name="cfn-attributes-updatepolicy-replacingupdate-syntax"></a>

#### JSON
<a name="aws-attribute-updatepolicy-replacingupdate-syntax.json"></a>

```
"UpdatePolicy" : {
  "AutoScalingReplacingUpdate" : {
    "WillReplace" : Boolean
  }
}
```

#### YAML
<a name="aws-attribute-updatepolicy-replacingupdate-syntax.yaml"></a>

```
UpdatePolicy:
  AutoScalingReplacingUpdate:
    WillReplace: Boolean
```

### プロパティ
<a name="cfn-attributes-updatepolicy-replacingupdate-properties"></a>

`WillReplace`  <a name="cfn-attributes-updatepolicy-replacingupdate-willreplace"></a>
Auto Scaling グループとそこに含まれるインスタンスが更新時に置き換えられるかどうかを指定します。置き換えられる場合、CloudFormation は新しいグループの作成が完了するまで古いグループを保持します。更新に失敗した場合、CloudFormation は古い Auto Scaling グループにロールバックし、新しい Auto Scaling グループを削除できます。  
CloudFormation は、新しいグループを作成するとき、インスタンスをデタッチすることもアタッチすることもありません。新しい Auto Scaling グループを正常に作成すると、CloudFormation はクリーンアッププロセス中に古い Auto Scaling グループを削除します。  
`WillReplace` パラメーターを設定するときは、必ず一致する [`CreationPolicy` 属性](aws-attribute-creationpolicy.md) を指定してください。インスタンスの最小数 (`MinSuccessfulInstancesPercent` プロパティで指定) が `Timeout` 期間 (`CreationPolicy` 属性で指定) 内に成功シグナルを送信しない場合、置き換え更新は失敗し、CloudFormation が古い Auto Scaling グループにロールバックします。  
型: ブール  
*必須:* いいえ

## AutoScalingRollingUpdate ポリシー
<a name="cfn-attributes-updatepolicy-rollingupdate"></a>

スケーリングアクティビティが古いインスタンスを新しいインスタンスに徐々に置き換えるのを待つ代わりに、Auto Scaling グループ内のインスタンスのローリング更新を実行するには、`AutoScalingRollingUpdate` ポリシーを使用します。このポリシーは、CloudFormation が Auto Scaling グループ内のインスタンスをバッチ単位で置き換えるか、リソース全体を置き換えずにすべてのインスタンスを一度に置き換えるかを指定する柔軟性を提供します。

`AutoScalingRollingUpdate` ポリシーを使用する際に考慮すべきこと:
+ CloudFormation が更新をロールバックするときは、現行のスタック更新の前にテンプレートで指定された `UpdatePolicy` 設定を使用します。例えば、`UpdatePolicy` で `MaxBatchSize` を 1 から 10 に変更してスタック更新を実行したら、更新が失敗したとします。CloudFormation は、ロールバックするときにの最大バッチサイズとして、10 ではなく 1 を使用します。このようなシナリオを回避するには、ローリング更新を開始すると思われる Auto Scaling グループへの更新を行う前に、個別の更新で `UpdatePolicy` を変更しておきます。
+ CloudFormation では、ローリング更新に干渉して失敗する可能性のある Amazon EC2 Auto Scaling プロセスを一時的に停止する `SuspendProcesses` プロパティを指定することをお勧めします。詳細については、「[How can I update my Auto Scaling group when I update my CloudFormation stack?](https://repost.aws/knowledge-center/auto-scaling-group-rolling-updates)」を参照してください。
+ CloudFormation は、インスタンスの起動時または終了時における Amazon EC2 Auto Scaling ライフサイクルフックの使用をサポートしています。これは、インスタンスが次の状態に移行する前に、カスタムアクションを実行する時間を提供します。新しいインスタンスが `InService` 状態になることを確実にするには、カスタムアクションが終了するときに、ライフサイクルフックを `CONTINUE` 結果で完了させます。応答を受け取っておらず、ライフサイクルフックがタイムアウトする場合は、デフォルトで、インスタンスの起動が失敗し、中止されたと見なされます。`InService` 状態になるインスタンスがない場合、ローリング更新は最終的に失敗します。
+ インスタンスメンテナンスポリシー、終了ポリシー、スケールイン保護などの Amazon EC2 Auto Scaling 機能を CloudFormation ローリング更新で使用することはできません。ローリング更新は、それを踏まえて計画してください。
+ `AutoScalingRollingUpdate` ポリシーを使用してプレイスメントグループ設定を削除すると、そのプレイスメントグループは Auto Scaling グループと CloudFormation テンプレートからも削除されます。また、これにより段階的更新がトリガーされるため、新しいインスタンスはプレイスメントグループで起動されません。

### 構文
<a name="cfn-attributes-updatepolicy-rollingupdate-syntax"></a>

#### JSON
<a name="aws-attribute-updatepolicy-rollingupdate-syntax.json"></a>

```
"UpdatePolicy" : {
  "AutoScalingRollingUpdate" : {
    "MaxBatchSize" : Integer,
    "MinActiveInstancesPercent" : Integer,
    "MinInstancesInService" : Integer,
    "MinSuccessfulInstancesPercent" : Integer,
    "PauseTime" : String,
    "SuspendProcesses" : [ List of processes ],
    "WaitOnResourceSignals" : Boolean
  }
}
```

#### YAML
<a name="aws-attribute-updatepolicy-rollingupdate-syntax.yaml"></a>

```
UpdatePolicy:
  AutoScalingRollingUpdate:
    MaxBatchSize: Integer
    MinActiveInstancesPercent: Integer
    MinInstancesInService: Integer
    MinSuccessfulInstancesPercent: Integer
    PauseTime: String
    SuspendProcesses:
      - List of processes
    WaitOnResourceSignals: Boolean
```

### プロパティ
<a name="aws-attribute-updatepolicy-rollingupdate-properties"></a>

`MaxBatchSize`  <a name="cfn-attributes-updatepolicy-rollingupdate-maxbatchsize"></a>
同時置換が可能なインスタンスの最大数を指定します。  
*デフォルト*: `1`  
*最大*: `100`  
*タイプ:* 整数  
*必須:* いいえ

`MinActiveInstancesPercent`  <a name="cfn-attributes-updatepolicy-rollingupdate-minactiveinstancespercent"></a>
更新を成功させるため、Auto Scaling グループのインスタンスのうち、ローリング更新中にそのグループが希望するキャパシティに対して `InService` 状態にあるインスタンスの割合を指定します。値は 0～100 の間で指定できます。CloudFormation は、10% 単位で四捨五入されます。例えば、`InService` の最小パーセンテージを 50 として 5 つのインスタンスを更新する場合、少なくとも 3 つのインスタンスが `InService` 状態になる必要があります。インスタンスが規定の 1 時間で `InService` 状態に移行しなかった場合、CloudFormation は、そのインスタンスは更新されなかったものと判断します。  
`UpdatePolicy` で `MinActiveInstancesPercent` を設定すると、`AWS::AutoScaling::AutoScalingGroup` リソースの `DesiredCapacity` プロパティがその Auto Scaling グループの現在の希望キャパシティよりも大きい場合に起動するインスタンスにも影響します。  
*デフォルト*: `100`  
*タイプ:* 整数  
*必須:* いいえ

`MinInstancesInService`  <a name="cfn-attributes-updatepolicy-rollingupdate-mininstancesinservice"></a>
Auto Scaling が古いインスタンスを更新している間、CloudFormation グループ内で使用中となる必要があるインスタンスの最小数を指定します。この値は Auto Scaling グループの [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-maxsize](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-maxsize) よりも小さくする必要があります。  
`MinInstancesInService` プロパティの値を、Auto Scaling グループの [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-minsize](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-minsize) 以上に設定することをお勧めします。これにより、0 個のインスタンスがカスタマートラフィックを処理するため、ローリング更新中の潜在的な可用性の問題が回避されます。
*デフォルト*: `0`  
*タイプ:* 整数  
*必須:* いいえ

`MinSuccessfulInstancesPercent`  <a name="cfn-attributes-updatepolicy-rollingupdate-minsuccessfulinstancespercent"></a>
更新を成功させるために成功のシグナルを送信する必要があるインスタンスの、 Auto Scaling ローリング更新における割合を指定します。値は 0～100 の間で指定できます。CloudFormation は、10% 単位で四捨五入されます。たとえば、成功の最小割合が `50` の 5 つのインスタンスを更新する場合、3 つのインスタンスが成功のシグナルを送信する必要があります。`PauseTime` プロパティで指定された時間内にインスタンスから信号が送信されない場合、CloudFormation ではインスタンスが更新されなかったものとみなされます。  
`MinSuccessfulInstancesPercent` プロパティの値を 0 より大きい値に設定することをお勧めします。`MinSuccessfulInstancesPercent` プロパティが 0 に設定されている場合、CloudFormation はキャパシティインスタンスの 0% が `InService` 状態になるまで待機します。スタックテンプレート内で定義されている後続のリソースに移動するため、`MinSuccessfulInstancesPercent` は Auto Scaling グループの状態が `UPDATE_COMPLETE` とみなされる前に直ちに返されます。CloudFormation テンプレートで他の Auto Scaling グループが定義されている場合、これらのグループも同時に更新されます。すべての Auto Scaling グループが一度にデプロイされ、キャパシティーインスタンスの 0% が `InService` 状態の場合、お客様のトラフィックを処理するインスタンスが 0 になることから、可用性上の問題が発生します。  
*デフォルト*: `100`  
*タイプ:* 整数  
*必須:* いいえ

`PauseTime`  <a name="cfn-attributes-updatepolicy-rollingupdate-pausetime"></a>
インスタンスにソフトウェアアプリケーションを起動する時間を与えるために、それらのインスタンスのバッチに変更を加えた後に CloudFormation が一時停止する時間の長さ。  
`PauseTime` は、[ISO8601 期間形式](https://en.wikipedia.org/wiki/ISO_8601#Durations) (`PT#H#M#S` の形式。それぞれの *\$1* は時間数、分数、秒数を示します) で指定します。最大 `PauseTime` は 1 時間 (`PT1H`) です。  
`WaitOnResourceSignals` が `true` に設定されている場合、`PauseTime` はタイムアウト値として機能します。これは、`AWS::AutoScaling::AutoScalingGroup` リソースの [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-desiredcapacity](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-desiredcapacity) プロパティを増やすことで、CloudFormation がローリング更新中に置き換えられるインスタンスと追加される新しいインスタンスから必要な数の有効なシグナルを受信するまで待機する最大時間を決定します。CloudFormation が予想されるシグナルを受信する前に `PauseTime` を超えた場合、更新は失敗します。最良の結果を得るには、アプリケーションが起動する十分な時間を確保できる期間を指定します。更新をロールバックする必要がある場合、`PauseTime` が短いとロールバックに失敗する可能性があります。
*デフォルト*: `WaitOnResourceSignals` プロパティが `true` に設定されたときの `PT5M` (5 分間)。それ以外の場合、デフォルト値は設定されません。  
*タイプ*: 文字列  
*必須:* いいえ

`SuspendProcesses`  <a name="cfn-attributes-updatepolicy-rollingupdate-suspendprocesses"></a>
スタックの更新中に Auto Scaling プロセスが停止されるように指定します。プロセスを停止すると、Auto Scaling がスタックの更新に干渉しなくなります。例えば、Amazon EC2 Auto Scaling がアラームに関連付けられたスケーリングポリシーを実行しないようにアラームを停止することができます。有効な値については、「*Amazon EC2 Auto Scaling ユーザーガイド*」の「[プロセスのタイプ](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-suspend-resume-processes.html#process-types)」を参照してください。  
*デフォルト*: 指定されていません  
*タイプ*: Auto Scaling プロセスのリスト  
*必須:* いいえ

`WaitOnResourceSignals`  <a name="cfn-attributes-updatepolicy-rollingupdate-waitonresourcesignals"></a>
CloudFormation が新しいインスタンスからの成功シグナルを待ってから更新を続行するかどうかを指定します。CloudFormation は、指定された `PauseTime` 期間成功シグナルを待機します。  
Auto Scaling グループにシグナルを送信するには、[cfn-signal](cfn-signal.md) ヘルパースクリプトを使用します。Elastic Load Balancing に関連付けられている Auto Scaling グループの場合、[cfn-init](cfn-init.md) ヘルパースクリプトを使用して、成功のシグナリングを行う前にインスタンスが正常であることを確認するためにヘルスチェックを追加することを検討してください。例については、[GitHub リポジトリ](https://github.com/aws-cloudformation/aws-cloudformation-templates/tree/main/AutoScaling)にある Amazon EC2 Auto Scaling ローリングアップデートのサンプルテンプレートの `verify_instance_health` コマンドを参照してください。  
*デフォルト*: `false`  
型: ブール  
*必須:* 条件的。`MinSuccessfulInstancesPercent` プロパティを指定する場合は、`WaitOnResourceSignals` プロパティを `true` に設定する必要があります。

## AutoScalingScheduledAction ポリシー
<a name="cfn-attributes-updatepolicy-scheduledactions"></a>

スケジュールされたアクションが `AWS::AutoScaling::AutoScalingGroup` リソースに関連付けられているときに CloudFormation が `MinSize`、`MaxSize`、`DesiredCapacity` の各プロパティの更新を処理する方法を指定するには、`AutoScalingScheduledAction` ポリシーを使用します。

スケジュールされたアクションを使用すると、Auto Scaling グループのグループサイズプロパティはいつでも変化する可能性があります。Auto Scaling グループやスケジュールされたアクションを含むスタックが更新されると、スケジュールされたアクションが有効になっている場合でも、CloudFormation は Auto Scaling グループのグループサイズのプロパティ値を、テンプレート内の `AWS::AutoScaling::AutoScalingGroup` リソースで定義されている値に設定します。

スケジュールされたアクションが有効なときに CloudFormation がどのグループサイズプロパティ値も変更しないようにするには、`AutoScalingScheduledAction` 更新ポリシーを使用して `IgnoreUnmodifiedGroupSizeProperties` を `true` に設定し、テンプレートで値を変更しない限り、CloudFormation が `MinSize`、`MaxSize`、または `DesiredCapacity` プロパティを変更しないようにします。



### 構文
<a name="cfn-attributes-updatepolicy-scheduledactions-syntax"></a>

#### JSON
<a name="aws-attribute-updatepolicy-scheduledactions-syntax.json"></a>

```
"UpdatePolicy" : {
  "AutoScalingScheduledAction" : {
    "IgnoreUnmodifiedGroupSizeProperties" : Boolean
  }
}
```

#### YAML
<a name="aws-attribute-updatepolicy-scheduledactions-syntax.yaml"></a>

```
UpdatePolicy:
  AutoScalingScheduledAction:
    IgnoreUnmodifiedGroupSizeProperties: Boolean
```

### プロパティ
<a name="cfn-attributes-updatepolicy-scheduledactions-properties"></a>

`IgnoreUnmodifiedGroupSizeProperties`  <a name="cfn-attributes-updatepolicy-scheduledactions-ignoreunmodifiedgroupsizeproperties"></a>
`true` の場合、CloudFormation はスタックの更新中に、現在の Auto Scaling グループと、テンプレートの `AWS::AutoScaling::AutoScalingGroup` リソースに記述されている Auto Scaling グループとの間のグループサイズプロパティの違いを無視します。テンプレートのグループサイズプロパティ値のいずれかを変更した場合、CloudFormation は変更された値を使用して Auto Scaling グループを更新します。  
このプロパティは、スタックのロールバック中に無視されます。
*デフォルト*: `false`  
型: ブール  
*必須:* いいえ

## UseOnlineResharding ポリシー
<a name="cfn-attributes-updatepolicy-useonlineresharding"></a>

[AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticache-replicationgroup.html) リソース全体を置き換えるのではなく、シャードを追加または削除してレプリケーションを変更するには、`UseOnlineResharding` 更新ポリシーを使用します。

`UseOnlineResharding` が `true` に設定されている場合、`AWS::ElastiCache::ReplicationGroup` リソースの `NumNodeGroups` プロパティと `NodeGroupConfiguration` プロパティを更新でき、CloudFormation は中断することなく、これらのプロパティを更新します。`UseOnlineResharding` が `false` に設定されている場合、または指定しない場合、`NumNodeGroups` プロパティおよび `NodeGroupConfiguration` プロパティを更新すると、CloudFormation が `AWS::ElastiCache::ReplicationGroup` リソース全体を置き換えます。

`UseOnlineResharding` 更新ポリシーにはプロパティがありません。

`UseOnlineResharding` 更新ポリシーを `true` に設定するときは、次の点を考慮します。
+ 指定されたスタック更新オペレーションの唯一の更新として、`NodeGroupConfiguration` プロパティおよび `NumNodeGroups` プロパティの更新を実行することを強くお勧めします。

  レプリケーショングループのノードグループ構成の更新は、リソースに大きな負荷がかかります。スタックの更新が失敗した場合、CloudFormation はレプリケーショングループのノードグループ構成の変更をロールバックしません。ただし、CloudFormation は失敗した更新オペレーションの一部として変更された他のすべてのプロパティをロールバックします。
+ ノードグループを更新するためには、すべてのノードグループを特定する必要があります。

  `NodeGroupConfiguration` プロパティを指定した場合、CloudFormation が中断することなくノードの数を更新するために、各ノードグループ構成に対して NodeGroupId も指定する必要があります。

  レプリケーショングループの作成時に、各ノードグループの ID を指定しない場合、ElastiCache は各ノードグループの ID を自動的に生成します。中断することなくレプリケーショングループを更新するには、ElastiCache コンソール ([https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/))、または [DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html) を使用して、レプリケーショングループ内にあるすべてのノードグループの ID を取得します。次に、シャードの追加や削除を行う前に、スタックテンプレートの各ノードグループの ID を指定します。
**注記**  
ベストプラクティスとして、スタックテンプレートでレプリケーショングループを作成するときに、指定した各ノードグループの ID を含めます。

  さらに、中断することなくノードの数を更新するには、各 `NodeGroupConfiguration` に対して `PrimaryAvailabilityZone`、`ReplicaAvailabilityZones`、`ReplicaCount` のプロパティを正確に指定する必要があります。ここでも、ElastiCache コンソール ([https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)) または [DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html) を使用して、各ノードグループの実際の値を取得して、スタックテンプレートの値と比較することができます。ノードグループのプロパティ値は、個別のスタックの更新として、またはノードグループの数を変更する同じスタックの更新の一部として更新できます。

  `UseOnlineResharding` 更新ポリシーを使用して中断することなくノードグループの数を更新すると、ElastiCache は指定された数のスロット間でキースペースを均等に分散します。後で更新することはできません。したがって、この方法でノードグループの数を更新した後で、各ノードグループ内の実際の値が反映されなくなるため、スタックテンプレートからそれぞれの `NodeGroupConfiguration` の `Slots` プロパティに指定された値を削除する必要があります。
+ 実際のノードグループの削除結果は異なる場合があります。

  現在のノードグループの数より小さい `NumNodeGroups` 値を指定すると、CloudFormation は ElastiCache に指定した数のノードに到達できるように必要な数のノードグループを削除するように指示します。ただし、ElastiCache は必ずしも必要な数のノードグループを削除できるとは限りません。イベントで ElastiCache が必要な数のノードグループを削除できない場合、CloudFormation ではこれを警告するスタックイベントが生成されます。ElastiCache が*いずれのノードグループも*削除できない場合、CloudFormation リソースの更新は失敗します。

レプリケーショングループを変更する方法の詳細については、「Amazon ElastiCache API リファレンス」の「[ModifyReplicationGroupShardConfiguration](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroupShardConfiguration.html)」を参照してください。

### 構文
<a name="cfn-attributes-updatepolicy-useonlineresharding-syntax"></a>

#### JSON
<a name="cfn-attributes-updatepolicy-useonlineresharding-syntax.json"></a>

```
"UpdatePolicy" : {
  "UseOnlineResharding" : Boolean
}
```

#### YAML
<a name="cfn-attributes-updatepolicy-useonlineresharding-syntax.yaml"></a>

```
UpdatePolicy:
  UseOnlineResharding: Boolean
```

## EnableVersionUpgrade ポリシー
<a name="cfn-attributes-updatepolicy-upgradeopensearchdomain"></a>

すべての [AWS::OpenSearchService::Domain](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opensearchservice-domain.html) または [AWS::Elasticsearch::Domain](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticsearch-domain.html) リソースを置き換えるのではなく、OpenSearch Service ドメインを OpenSearch または Elasticsearch の新しいバージョンにアップグレードする場合は、`EnableVersionUpgrade` 更新ポリシーを使用します。

`EnableVersionUpgrade` が `true` に設定されている場合、`AWS::OpenSearchService::Domain` リソースの `EngineVersion` プロパティ (またはレガシー `AWS::Elasticsearch::Domain` リソースの `ElasticsearchVersion` プロパティ) を更新することができます。これにより、CloudFormation が中断することなくそのプロパティを更新します。`EnableVersionUpgrade` が `false` に設定されているか、指定されていない場合、`EngineVersion` または `ElasticsearchVersion` プロパティを更新すると、CloudFormation は `AWS::OpenSearchService::Domain`/`AWS::Elasticsearch::Domain` リソース全体を置き換えます。

`EnableVersionUpgrade` 更新ポリシーにはプロパティがありません。

詳細については、「Amazon OpenSearch Service デベロッパーガイド」の「[Amazon OpenSearch Service ドメインのアップグレード](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/version-migration.html)」を参照してください。

### 構文
<a name="cfn-attributes-updatepolicy-upgradeopensearchdomain-syntax"></a>

#### JSON
<a name="cfn-attributes-updatepolicy-upgradeopensearchdomain-syntax.json"></a>

```
"UpdatePolicy" : {
  "EnableVersionUpgrade" : Boolean
}
```

#### YAML
<a name="cfn-attributes-updatepolicy-upgradeopensearchdomain-syntax.yaml"></a>

```
UpdatePolicy:
  EnableVersionUpgrade: Boolean
```

## CodeDeployLambdaAliasUpdate ポリシー
<a name="cfn-attributes-updatepolicy-codedeploylambdaaliasupdate"></a>

`CodeDeployLambdaAliasUpdate` リソースでのバージョンの変更時に CodeDeploy デプロイを実行するには、`AWS::Lambda::Alias` 更新ポリシーを使用します。

### 構文
<a name="cfn-attributes-updatepolicy-codedeploylambdaaliasupdate-syntax"></a>

#### JSON
<a name="aws-attribute-updatepolicy-codedeploylambdaaliasupdate-syntax.json"></a>

```
"UpdatePolicy" : {
  "CodeDeployLambdaAliasUpdate" : {
    "AfterAllowTrafficHook" : String,
    "ApplicationName" : String,
    "BeforeAllowTrafficHook" : String,
    "DeploymentGroupName" : String
  }
}
```

#### YAML
<a name="aws-attribute-updatepolicy-codedeploylambdaaliasupdate-syntax.yaml"></a>

```
UpdatePolicy:
  CodeDeployLambdaAliasUpdate:
    AfterAllowTrafficHook: String
    ApplicationName: String
    BeforeAllowTrafficHook: String
    DeploymentGroupName: String
```

### プロパティ
<a name="aws-attribute-updatepolicy-codedeploylambdaaliasupdate-properties"></a>

`AfterAllowTrafficHook`  <a name="cfn-attributes-updatepolicy-codedeploylambdaaliasupdate-afterallowtraffichook"></a>
トラフィックのルーティングが完了した後に実行する Lambda 関数の名前。  
*必須:* いいえ  
*タイプ:* 文字列

`ApplicationName`  <a name="cfn-attributes-updatepolicy-codedeploylambdaaliasupdate-applicationname"></a>
CodeDeploy アプリケーションの名前。  
*Required*: Yes  
*タイプ: *文字列

`BeforeAllowTrafficHook`  <a name="cfn-attributes-updatepolicy-codedeploylambdaaliasupdate-beforeallowtraffichook"></a>
トラフィックのルーティングが開始する前に実行する Lambda 関数の名前。  
*必須:* いいえ  
*タイプ: *文字列

`DeploymentGroupName`  <a name="cfn-attributes-updatepolicy-codedeploylambdaaliasupdate-deploymentgroupname"></a>
CodeDeploy デプロイグループの名前。ここでは、トラフィック移行ポリシーが設定されます。  
*必須:* はい  
*タイプ: *文字列

`AWS::Lambda::Alias` リソースの `UpdatePolicy` 属性を指定する例については、「[Lambda エイリアスの更新ポリシー](#aws-resource-lambda-alias-example)」を参照してください。

## 例
<a name="aws-attribute-updatepolicy-examples"></a>

次の例では、更新グループを Auto Scaling グループに追加する方法と、メタデータの更新時に可用性を維持する方法を示します。

### Auto Scaling グループに `UpdatePolicy` を追加します。
<a name="aws-attribute-updatepolicy-example-1"></a>

次の例は、更新ポリシーの追加方法を示しています。更新中、Auto Scaling グループは 2 個のインスタンスのバッチを更新し、少なくとも 1 つのインスタンスをサービスで最低 1 個のインスタンスを稼動状態にします。`WaitOnResourceSignals` フラグが設定されているため、Auto Scaling グループはグループに追加される新しいインスタンスを待機します。新しいインスタンスは、次のインスタンスのバッチを更新する前に、Auto Scaling グループにシグナルを送信する必要があります。

#### JSON
<a name="attribute-updatepolicy-example-1.json"></a>

```
"ASG" : {
  "Type":"AWS::AutoScaling::AutoScalingGroup",
  "Properties":{
    "VPCZoneIdentifier":[ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ],
    "LaunchTemplate":{
      "LaunchTemplateId":{
        "Ref":"logicalName"
      },
      "Version":{
        "Fn::GetAtt":[
          "logicalName",
          "LatestVersionNumber"
        ]
      }
    },
    "MaxSize":"4",
    "MinSize":"1"
  },
  "UpdatePolicy":{
    "AutoScalingScheduledAction":{
      "IgnoreUnmodifiedGroupSizeProperties":"true"
    },
    "AutoScalingRollingUpdate":{
      "MinInstancesInService":"1",
      "MaxBatchSize":"2",
      "WaitOnResourceSignals":"true",
      "PauseTime":"PT10M",
      "SuspendProcesses":[
        "HealthCheck",
        "ReplaceUnhealthy",
        "AZRebalance",
        "AlarmNotification",
        "ScheduledActions",
        "InstanceRefresh"
      ]
    }
  }
}
```

#### YAML
<a name="attribute-updatepolicy-example-1.yaml"></a>

```
ASG:
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    VPCZoneIdentifier:
      - subnetIdAz1
      - subnetIdAz2
      - subnetIdAz3
    LaunchTemplate:
      LaunchTemplateId: !Ref logicalName
      Version: !GetAtt logicalName.LatestVersionNumber
    MaxSize: '4'
    MinSize: '1'
  UpdatePolicy:
    AutoScalingScheduledAction:
      IgnoreUnmodifiedGroupSizeProperties: 'true'
    AutoScalingRollingUpdate:
      MinInstancesInService: '1'
      MaxBatchSize: '2'
      WaitOnResourceSignals: 'true'
      PauseTime: PT10M
      SuspendProcesses:
        - HealthCheck
        - ReplaceUnhealthy
        - AZRebalance
        - AlarmNotification
        - ScheduledActions
        - InstanceRefresh
```

### AutoScalingReplacingUpdate ポリシー
<a name="attribute-updatepolicy-AutoScalingReplacingUpdate"></a>

次の例では、関連付けられた Auto Scaling グループを更新時に強制的に置き換えるポリシーを宣言しています。更新が成功するためには、インスタンスの割合 (`MinSuccessfulPercentParameter` パラメーターにより指定) が `Timeout` 期間内に成功のシグナルを送信する必要があります。

#### JSON
<a name="attribute-updatepolicy-example-2.json"></a>

```
"UpdatePolicy" : {
  "AutoScalingReplacingUpdate" : {
    "WillReplace" : true
  }
},
"CreationPolicy" : {
  "ResourceSignal" : {
    "Count" : { "Ref" : "ResourceSignalsOnCreate"},
    "Timeout" : "PT10M"
  },
  "AutoScalingCreationPolicy" : {
    "MinSuccessfulInstancesPercent" : { "Ref" : "MinSuccessfulPercentParameter" }
  }
}
```

#### YAML
<a name="attribute-updatepolicy-example-2.yaml"></a>

```
UpdatePolicy:
  AutoScalingReplacingUpdate:
    WillReplace: true
CreationPolicy:
  ResourceSignal:
    Count: !Ref 'ResourceSignalsOnCreate'
    Timeout: PT10M
  AutoScalingCreationPolicy:
    MinSuccessfulInstancesPercent: !Ref 'MinSuccessfulPercentParameter'
```

### cfn-init Helper スクリプトのメタデータを更新する際の可用性の維持
<a name="aws-attribute-updatepolicy-cfn-init-metadata"></a>

インスタンスにソフトウェアアプリケーションをインストールするとき、[`AWS::CloudFormation::Init`](aws-resource-init.md) メタデータキーと [cfn-init](cfn-init.md) ヘルパースクリプトを使用して、Auto Scaling グループ内のインスタンスをブートストラップすることができます。CloudFormation がパッケージをインストールしてコマンドを実行し、メタデータに記述されている他のブートストラップアクションを実行します。

メタデータのみ更新する場合 (たとえば、パッケージを別のバージョンに更新する場合)、[cfn-hup](cfn-hup.md) ヘルパーデーモンを使用して更新を検出し、適用できます。ただし、`cfn-hup` デーモンはインスタンスごとに別個に実行されます。デーモンがすべてのインスタンスで同時に実行されてしまった場合、アプリケーションまたはサービスが更新中に使用不可能になる可能性があります。可用性を確保するには、CloudFormation が一度に 1 つのバッチでインスタンスを更新するようにローリング更新を強制します。

**重要**  
ローリング更新ポリシーを強制するには、CloudFormation が新しいインスタンスを作成した後、古いインスタンスを削除する必要があります。古いインスタンスに保存されている情報は失われます。

ローリング更新を強制するには、起動構成リソースの論理 ID を変更した後、スタックと、元の論理 ID (関連付けられている Auto Scaling グループなど) を指すすべての参照を更新します。CloudFormation が Auto Scaling グループ上でローリング更新をトリガーし、すべてのインスタンスを置き換えます。

### 元のテンプレート
<a name="aws-attribute-updatepolicy-cfn-init-metadata-original"></a>

```
"LaunchConfig": {
  "Type" : "AWS::AutoScaling::LaunchConfiguration",
  "Metadata" : {
    "Comment" : "Install a simple PHP application",
    "AWS::CloudFormation::Init" : {
    ...
    }
  }
}
```

### 更新された論理 ID
<a name="aws-attribute-updatepolicy-cfn-init-metadata-updated"></a>

```
"LaunchConfigUpdateRubygemsPkg": {
  "Type" : "AWS::AutoScaling::LaunchConfiguration",
  "Metadata" : {
    "Comment" : "Install a simple PHP application",
    "AWS::CloudFormation::Init" : {
    ...
    }
  }
}
```

### Lambda エイリアスの更新ポリシー
<a name="aws-resource-lambda-alias-example"></a>

次の例では、`UpdatePolicy` リソースの `AWS::Lambda::Alias` 属性を指定します。デプロイの詳細はすべて、ポリシーに渡されるアプリケーションおよびデプロイグループによって定義されます。

#### JSON
<a name="aws-attribute-updatepolicy-codedeploylambda.json"></a>

```
"Alias": {
  "Type": "AWS::Lambda::Alias",
  "Properties": {
    "FunctionName": {
      "Ref": "LambdaFunction"
    },
    "FunctionVersion": {
      "Fn::GetAtt": [
        "FunctionVersionTwo",
        "Version"
      ]
    },
    "Name": "MyAlias"
  },
  "UpdatePolicy": {
    "CodeDeployLambdaAliasUpdate": {
      "ApplicationName": {
        "Ref": "CodeDeployApplication"
      },
      "DeploymentGroupName": {
        "Ref": "CodeDeployDeploymentGroup"
      },
      "BeforeAllowTrafficHook": {
        "Ref": "PreHookLambdaFunction"
      },
      "AfterAllowTrafficHook": {
        "Ref": "PreHookLambdaFunction"
      }
    }
  }
}
```

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

```
Alias:
  Type: AWS::Lambda::Alias
  Properties:
    FunctionName: !Ref LambdaFunction
    FunctionVersion: !GetAtt FunctionVersionTwo.Version
    Name: MyAlias
  UpdatePolicy:
    CodeDeployLambdaAliasUpdate:
      ApplicationName: !Ref CodeDeployApplication
      DeploymentGroupName: !Ref CodeDeployDeploymentGroup
      BeforeAllowTrafficHook: !Ref PreHookLambdaFunction
      AfterAllowTrafficHook: !Ref PreHookLambdaFunction
```