CloudFormationスタック

AWS CloudFormationにおけるリソース管理の基本単位。テンプレートから作成されたAWSリソースの集合体であり、ライフサイクル管理の単位でもある。

Infrastructure as Codeツールにおける「状態管理」の概念を、AWS側がマネージドで担う設計が特徴的だ。TerraformのStateファイルに相当するものをユーザーが管理する必要がない。

テンプレート・スタック・リソースの関係

スタックを削除すれば、そこに含まれるリソースも一括削除される(DeletionPolicyの設定次第)。

スタック分割戦略

どのリソースをどのスタックにまとめるかは重要な設計判断。AWSはライフサイクルオーナーシップの2軸で考えることを推奨している。

典型的な分割パターン:

関心の分離の原則をインフラレイヤーに適用したものとも言える。

スタック間連携の方法

Outputs/Exports

あるスタックの出力値を別のスタックで!ImportValueを使ってインポートする。エクスポートされた値を参照しているスタックがある限り、元スタックを削除できない暗黙的依存が生まれる。

Nested Stacks

スタックの中にスタックを入れ子にする。共通パターンのモジュール化に適している。

StackSets

複数のAWSアカウント・リージョンに同じスタックをデプロイする。組織全体のガバナンス一元管理に使う。

削除時の保護

本番環境のデータベースにはRetainSnapshotを設定しておくのが安全だ。

関連