スタックリソースの更新動作を理解する - AWS CloudFormation

スタックリソースの更新動作を理解する

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

中断を伴わない更新

AWS CloudFormation は、リソースの使用を中断することなく、またリソースの物理 ID を変更することなく、リソースを更新します。たとえば、AWS::CloudTrail::Trail リソースの特定のプロパティを更新すると、AWS CloudFormation は中断せずに証跡を更新します。

一時的な中断を伴う更新

AWS CloudFormation は、一部の実行を中断してリソースの更新を行います。例えば、AWS::EC2::Instance リソースの特定のプロパティを更新すると、AWS CloudFormation や Amazon EC2 でインスタンスを再設定する際にインスタンスが一時的に中断される場合があります。

置換

AWS CloudFormation は更新の際にリソースを再作成し、新しい物理 ID も生成されます。AWS CloudFormation は、通常まず置換リソースを作成し、他の従属するリソースからの参照が置換リソースを指すように変更してから、古いリソースを削除します。たとえば、AWS::EC2::Instanceリソースタイプの AvailabilityZone プロパティを更新すると、AWS CloudFormation によって新しいリソースが作成され、現在の EC2 インスタンスリソースと置き換えられます。

置換が必要なプロパティを追加または削除すると、更新もトリガーされます。更新は、プロパティの実際の値が変更されなくても、発生します。

AWS CloudFormation が使用するメソッドは、特定のリソースタイプに対してどのプロパティを更新するかによって異なります。各プロパティの更新動作は、「AWS リソースタイプのリファレンス」に記載されています。

更新動作によって、リソースを変更するタイミングを決定し、アプリケーションに対する変更の影響を軽減できます。特に、更新中にリソースが置き換えられる必要があるタイミングを計画することができます。たとえば、AWS::RDS::DBInstance リソースタイプの Port プロパティを更新すると、AWS CloudFormation によって新しい DB インスタンスが作成され、ポート設定が更新されて古い DB インスタンスが削除されることで、DB インスタンスが置き換えられます。更新の前に、以下を実行してデータベースの置き換えに対して準備することをお勧めします。

  • 現在のデータベースのスナップショットを作成します。

  • DB インスタンスが置き換えられる場合、その DB インスタンスを使用するアプリケーションが中断をどのように処理するかについての戦略を準備します。

  • その DB インスタンスを使用するアプリケーションが、更新されたポート設定や、その他に行われた更新を考慮することを確認します。

  • DB スナップショットを使用して、新しい DB インスタンスにデータベースを復元します。

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

注記

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