現場実践|CloudFormation実践

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

「CloudFormationのコードが1ファイルに全部入っていて管理しにくい」「スタックの変更前に影響を確認したい」——CloudFormationのネストスタック・クロスStack参照・変更セットを使った本番環境での設計と管理を解説します。

読了目安:約18分更新日:2026年3月

💡 CloudFormationは単一ファイルで全リソースを管理すると肥大化して管理が困難になります。ネストスタックとクロスStack参照でリソースを論理的に分割することが本番環境のベストプラクティスです。

この記事を書いた人
現役ITエンジニア・IT講師(経験14年)
CCNA・CCNP 取得LPIC-1 保有SES現場を複数経験

CloudFormationを使ったAWS環境のIaC化を複数プロジェクトで担当してきた立場から解説します。

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月からフリーランス講師として本格始動予定です。

※CloudFormationの機能はAWSにより変更される場合があります。

ABOUT ME
たから
サラリーマンをしながら開業して経営やってます。 今年、本業で独立・別事業を起業予定です。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900/FE/サーティファイC言語 ◆サイドビジネス:アパレル事業/複数のWEBメディアを運営