CloudFormationスタック設計実践|ネストされたスタック・クロスStack参照・変更セットの活用

現場実践|CloudFormation実践
CloudFormationスタック設計実践|ネストされたスタック・クロスStack参照・変更セットの活用
「CloudFormationのコードが1ファイルに全部入っていて管理しにくい」「スタックの変更前に影響を確認したい」——CloudFormationのネストスタック・クロスStack参照・変更セットを使った本番環境での設計と管理を解説します。
💡 CloudFormationは単一ファイルで全リソースを管理すると肥大化して管理が困難になります。ネストスタックとクロスStack参照でリソースを論理的に分割することが本番環境のベストプラクティスです。
1. スタックの分割設計パターン
ネットワーク層スタック
VPC・サブネット・IGW・NAT GW・ルートテーブルを管理。変更頻度が低いため独立したスタックにする。
アプリケーション層スタック
EC2・ECS・ALB・Auto Scalingを管理。デプロイのたびに更新するため独立させる。
データ層スタック
RDS・ElastiCache・DynamoDBを管理。変更時のリスクが最も高いため独立させて慎重に管理する。
2. クロスStack参照(Outputs・ImportValue)
# ネットワーク層スタック(Outputs)
Outputs:
VpcId:
Value: !Ref VPC
Export:
Name: !Sub "${AWS::StackName}-VpcId"
PrivateSubnetAId:
Value: !Ref PrivateSubnetA
Export:
Name: !Sub "${AWS::StackName}-PrivateSubnetAId"
---
# アプリケーション層スタック(ImportValue)
Resources:
EC2Instance:
Type: AWS::EC2::Instance
Properties:
SubnetId: !ImportValue "network-stack-PrivateSubnetAId"
VpcId: !ImportValue "network-stack-VpcId"3. 変更セット(Change Set)で本番変更を安全に実行
- 変更セットを事前に確認:「aws cloudformation create-change-set」で変更を適用する前に「何が変更されるか」をReplacementフラグ付きで確認する
- Replacement=Trueに注意:変更セットでReplacement=Trueが表示される変更はリソースの削除→再作成を意味する。RDSのReplacement=Trueは本番では実行前に十分確認する
- ロールバック設定:変更セット実行時に「–no-execute-change-set」を外してからロールバック設定を有効にして実行することでエラー時に自動ロールバックが機能する
📌 この記事のポイント
- CloudFormationはネットワーク・アプリ・データの3層でスタックを分割して変更リスクと管理性を向上させる
- クロスStack参照(Outputs→ImportValue)でスタック間でVPC IDやサブネットIDを安全に共有する
- 変更セットで「Replacement=True」のリソースを必ず確認してからapplyすることが本番環境の安全な変更管理
キャリアの疑問、一緒に解決しませんか?
Route Bloomでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。
ABOUT ME




