免费工具

CloudFormation 转图表

粘贴 YAML 或 JSON 格式的 CloudFormation 模板、AWS SAM 模板或 cdk synth 的输出,即可得到可编辑的 AWS 架构图。资源会变成位于其 VPC 和子网中的卡片,Ref、GetAtt 和 DependsOn 会变成连线。试用无需账号。

示例输出

由 CloudFormation 示例绘制的示例图表
试试示例VPC 中的 Web 应用(YAML)SAM 订单 APICDK synth 输出(JSON)

使用方法

  1. 粘贴或拖入模板

    部署时使用的 template.yaml 或 template.json(包括 !Ref、!Sub 等短格式标签),或 cdk synth 生成的模板。注释和 Fn:: 长格式都没问题。

  2. 查看你的堆栈

    每个资源会按其 AWS 服务变成一张卡片。VPC 和子网会变成框架,包住其中运行的内容,资源之间的引用会变成连线。

  3. 在 Archboard 中打开

    保存为新图表后,可以重新排列卡片、添加备注、分享链接,或导出为 SVG 和 PNG。注册只需 Google 或 GitHub 账号。

从 CloudFormation 模板中绘制哪些内容

图表根据模板的 Resources 部分和以下属性生成:

  • ResourcesType

    Resources 下的条目按其 Type 绘制为卡片,例如 AWS::Lambda::Function 或 AWS::RDS::DBInstance。事件源映射、SNS 订阅和安全组入站规则这类起连接作用的类型会变成连线,自定义资源显示为通用卡片。

  • !Ref!GetAtt!Sub

    只要某个属性通过 Ref、Fn::GetAtt 或 Fn::Sub 中的名称指向另一个资源,无论短格式还是长格式,都会绘制一条连线。Fn::If 中的引用由条件决定,因此绘制为虚线。

  • DependsOn

    DependsOn 条目绘制为虚线连线,无论它写的是一个资源名还是一个列表;如果这两个资源之间已有引用连线,则不再另画。指向不绘制的资源(例如 AWS::EC2::VPCGatewayAttachment)的 DependsOn 不会添加连线。

  • VpcIdSubnetId

    VPC 绘制为包含其子网的框架;通过 VpcId、SubnetId、SubnetIds 或 VpcConfig 放置的资源位于各自的子网中,跨多个子网时位于 VPC 框架中。

  • EventsConnectors

    SAM 函数事件绘制为连线:来自 API 路由(标签如 POST /orders),或来自启动该函数的队列、存储桶、流或规则。定时计划会变成触发器卡片,Connectors 会变成 Read 或 Write 连线。

  • aws:cdk:path

    对于 cdk synth 输出,卡片会使用 aws:cdk:path 中易读的名称,而不是生成的逻辑 ID;包含两个及以上资源的 construct 会变成框架,CDKMetadata 和 CDK 自身的辅助资源会被隐藏。

  • AWS::CloudFormation::Stack

    每个嵌套堆栈绘制为一张卡片,作为参数传入的资源连向它,读取其输出的资源由它连出。

AWS SAM 模板

带有 Transform: AWS::Serverless-2016-10-31 的模板会按原样读取,无需运行 sam build。函数、API、HTTP API、简单表、状态机和嵌套应用都有各自的卡片,SAM 根据函数事件创建的 API 也会显示为卡片,Policies 中引用的资源会连接到对应的函数。Globals 只保存共享设置,因此不会绘制。

CloudFormation 架构图不包含什么

  • 参数的值和默认值、Mappings、Outputs 以及 Conditions 的结果:所有资源都会绘制,包括条件会跳过的资源,属性值也不会显示。
  • 嵌套堆栈或 SAM 应用中的资源,因为不会获取由 TemplateURL 或 Location 指定的子模板。通过 Fn::ImportValue 从其他堆栈导入的值只计数,不绘制。
  • SAM 以外的宏和转换,以及 Fn::ForEach 循环:都不会展开,因此 ForEach 循环显示为一张占位卡片。
  • 堆栈状态、配置漂移、费用,或运行时哪些服务相互调用。图表显示的是模板如何连接资源,而不是实际流量。

关于 CloudFormation 架构图的问题

能同时读取 YAML 和 JSON 模板吗?

可以。使用 !Ref、!GetAtt、!Sub 等短格式标签的 YAML 模板、用 Fn:: 键写成的同一模板,以及它的 JSON 版本,都会得到相同的图表。注释和 AWSTemplateFormatVersion 行都没问题。

可以可视化 AWS SAM 模板吗?

可以。在运行 sam build 或 sam deploy 之前,直接粘贴 template.yaml。每个函数的事件会变成来自 API、队列、存储桶、流和定时计划的连线,Connectors 会变成 Read 或 Write 连线,隐式 API 也有自己的卡片。

如何可视化 AWS CDK 应用?

运行 cdk synth 并粘贴它输出的模板,或从 cdk.out 文件夹中拖入以堆栈命名的文件(例如 MyStack.template.json)。卡片按 construct 路径命名,较大的 construct 会变成框架,CDK 元数据会被隐藏。用 TypeScript、Python 或其他语言编写的 CDK 代码本身不会被读取。

嵌套堆栈会怎样处理?

每个 AWS::CloudFormation::Stack 资源绘制为一张卡片,连接到它作为参数接收的资源,以及通过 Fn::GetAtt 读取其输出的资源。子模板不会被获取;如需查看其中内容,请单独粘贴该模板。

在 Archboard 中打开图表后会怎样?

本页面上的预览不会被保存。选择“在 Archboard 中打开”后,你看到的图表(卡片、框架、名称和连线)会保存为工作区中的新图表,你可以重新排列、添加注释、分享或导出。它只是一个起点:之后对模板的修改不会更新该图表。

CloudFormation 可视化工具免费吗?

免费。粘贴模板和查看图表都无需账号。在 Archboard 中打开需要一个免费账号。

一分钟打开画布

使用 Google 或 GitHub 登录。单席位免费,团队加入后再升级。