

# スタックリソースの更新動作を理解する
<a name="using-cfn-updating-stacks-update-behaviors"></a>

更新を送信すると、CloudFormation はスタックの現在のテンプレートと送信された内容の違いに基づいてリソースを更新します。変更されていないリソースは、更新プロセス中も中断されることなく実行されます。更新されたリソースの場合、CloudFormation では以下のいずれかの更新動作を使用します。

**中断を伴わない更新**  <a name="update-no-interrupt"></a>
CloudFormation は、リソースの使用を中断することなく、またリソースの物理 ID を変更することなく、リソースを更新します。たとえば、[AWS::CloudTrail::Trail](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudtrail-trail.html) リソースの特定のプロパティを更新すると、CloudFormation は中断せずに証跡を更新します。

**一時的な中断を伴う更新**  <a name="update-some-interrupt"></a>
CloudFormation は、一部の実行を中断してリソースの更新を行います。例えば、[AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html) リソースの特定のプロパティを更新すると、CloudFormation や Amazon EC2 でインスタンスを再設定する際にインスタンスが一時的に中断される場合があります。

**置換**  <a name="update-replacement"></a>
CloudFormation は更新の際にリソースを再作成し、新しい物理 ID も生成されます。CloudFormation は、通常まず置換リソースを作成し、他の従属するリソースからの参照が置換リソースを指すように変更してから、古いリソースを削除します。たとえば、[AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html)リソースタイプの `AvailabilityZone` プロパティを更新すると、CloudFormation によって新しいリソースが作成され、現在の EC2 インスタンスリソースと置き換えられます。  
置換が必要なプロパティを追加または削除すると、更新もトリガーされます。更新は、プロパティの実際の値が変更されなくても、発生します。

CloudFormation が使用するメソッドは、特定のリソースタイプに対してどのプロパティを更新するかによって異なります。各プロパティの更新動作は、「[AWS リソースおよびプロパティタイプのリファレンス](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-template-resource-type-ref.html)」に記載されています。

更新動作によって、リソースを変更するタイミングを決定し、アプリケーションに対する変更の影響を軽減できます。特に、更新中にリソースが*置き換えられる*必要があるタイミングを計画することができます。たとえば、[AWS::RDS::DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html) リソースタイプの `Port` プロパティを更新すると、CloudFormation によって新しい DB インスタンスが作成され、ポート設定が更新されて古い DB インスタンスが削除されることで、DB インスタンスが置き換えられます。更新の前に、以下を実行してデータベースの置き換えに対して準備することをお勧めします。
+ 現在のデータベースのスナップショットを作成します。
+ DB インスタンスが置き換えられる場合、その DB インスタンスを使用するアプリケーションが中断をどのように処理するかについての戦略を準備します。
+ その DB インスタンスを使用するアプリケーションが、更新されたポート設定や、その他に行われた更新を考慮することを確認します。
+ DB スナップショットを使用して、新しい DB インスタンスにデータベースを復元します。

この例は完全なものではありませんが、更新中にリソースが置き換えられる場合に考慮する事項について紹介するためのものです。

**注記**  
テンプレートに[ネストされたスタック](using-cfn-nested-stacks.md)が 1 つ以上含まれる場合、CloudFormation もすべてのネストされたスタックに対して更新を開始します。これは、ネストされたスタックが変更されているかどうかを判定するために必要です。CloudFormation はネストされたスタック内の、対応するテンプレートで指定した変更があったリソースのみを更新します。