CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
AWS CloudFormation 入门/课时/嵌套 Stack
RawBlame
课时目录12 节

AWS CloudFormation 入门

  1. 01CloudFormation 是什么
  2. 02模板结构
  3. 03资源声明
  4. 04参数与映射
  5. 05Stack 生命周期
  6. 06嵌套 Stack
  7. 07Drift 检测
  8. 08CloudFormation vs Terraform
  9. 09SAM 与 Lambda
  10. 10与 AWS CDK 关系
  11. 11失败回滚
  12. 12综合练习

嵌套 Stack

模块化、NestedStack 引用。

25 分钟

嵌套 Stack

大型模板可拆成 Nested Stack:父 Stack 通过 AWS::CloudFormation::Stack 引用子模板(S3 URL 或同账户模板)。模块化方式类似 Terraform Module,但子 Stack 在控制台显示为 独立 Stack 树。

学习目标

  • 用 Nested Stack 拆分 network / database 层
  • 理解 TemplateURL 与参数传递
  • 对照 tf-modules

父 Stack 引用子 Stack

Resources:
  NetworkStack:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: https://s3.amazonaws.com/my-bucket/cfn/network.yaml
      Parameters:
        VpcCidr: 10.0.0.0/16
        Environment: !Ref Environment

  DatabaseStack:
    Type: AWS::CloudFormation::Stack
    DependsOn: NetworkStack
    Properties:
      TemplateURL: https://s3.amazonaws.com/my-bucket/cfn/database.yaml
      Parameters:
        VpcId: !GetAtt NetworkStack.Outputs.VpcId
        PrivateSubnetIds: !GetAtt NetworkStack.Outputs.PrivateSubnetIds
        DbPassword: !Ref DbPassword

子模板 Outputs 暴露 VpcId 等,父 Stack 用 !GetAtt ChildStack.Outputs.Xxx 读取——类似 module.network.vpc_id。

子模板 network.yaml 片段

Outputs:
  VpcId:
    Value: !Ref LabVpc
    Export:
      Name: !Sub '${AWS::StackName}-VpcId'
  PrivateSubnetIds:
    Value: !Join [',', [!Ref PrivateSubnet1, !Ref PrivateSubnet2]]
模式CloudFormationTerraform
拆分Nested Stack + S3 模板module "network"
传参Parameters 映射module 的 input variables
输出Outputs + !GetAttoutput + module.xxx

StackSets(了解)

StackSets 在 Organizations 多账号/多 Region 批量 部署同一模板——企业合规基线场景。CodeRoadMap 单账号实验 Nested Stack 足够;多云仍选 terraform-essentials。

练习

  • 将 cf-resources 中的 VPC 段抽成 子模板
network.yaml
  • 父 Stack 只保留 Parameters 与两个 Nested Stack 资源
  • 对比 tf-practice 的 modules/network 目录结构
  • 小结

    Nested Stack = 可复用的子模板 + 父 Stack 编排。 下一课 Drift 检测。

    加载本节练习…
    ← 上一课Stack 生命周期下一课 →Drift 检测