关于 aws-diagrams
这项 AWS 架构图技能可将 CloudFormation 模板、AWS CLI 输出或自然语言描述转换为 Eraser 图表。它解析 AWS 资源及其关系,生成 Eraser DSL,并通过 Eraser API 渲染。
主要功能
- 01解析 CloudFormation 模板
- 02读取 AWS CLI 输出
- 03提取 AWS 资源及关系
- 04生成 Eraser DSL
- 05调用 Eraser API 渲染图表
适用场景
- 01将 CloudFormation 模板转为资源图
- 02根据 AWS CLI 输出绘制基础设施图
- 03依据描述绘制 AWS 架构草图
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ eraserlabs/ eraser-io --skill aws-diagrams安装后在 Claude Code 中输入/aws-diagrams确认已加载。
详细介绍
AWS 图表生成器
根据 CloudFormation 模板、AWS CLI 输出或自然语言描述生成 AWS 基础设施架构图。
使用场景
在以下情况下启用此技能:
- 用户提供了 AWS CloudFormation 模板(YAML/JSON)
- 用户提供了 AWS CLI 输出(例如,
aws ec2 describe-instances) - 用户想要可视化 AWS 资源
- 用户提到了 AWS 服务(EC2、S3、RDS、Lambda、VPC 等)
- 用户要求“绘制我的 AWS 基础设施图”
工作原理
此技能通过解析 AWS 资源并直接调用 Eraser API 来生成 AWS 专用图表:
- 解析 AWS 资源:从 CloudFormation、CLI 输出或描述中提取资源
- 映射 AWS 关系:识别 VPC、子网、安全组和 IAM 角色
- 生成 Eraser DSL:根据 AWS 资源创建 Eraser DSL 代码
- 调用 Eraser API:使用
/api/render/elements,并设置diagramType: "cloud-architecture-diagram"
说明
用户提供 AWS 基础设施信息时:
-
解析来源
- CloudFormation:提取
Resources部分,识别类型(AWS::EC2::Instance 等) - CLI 输出:解析
aws命令的 JSON 输出 - 描述:识别 AWS 服务名称及其关系
- CloudFormation:提取
-
识别 AWS 组件
- 网络:VPC、子网、Internet Gateway、NAT Gateway、路由表
- 计算:EC2 实例、Auto Scaling 组、Lambda 函数、ECS 服务
- 存储:S3 存储桶、EBS 卷、EFS 文件系统
- 数据库:RDS 实例、DynamoDB 表、ElastiCache 集群
- 安全:安全组、IAM 角色、IAM 策略、NACL
- 负载均衡:ALB、NLB、CLB
- 其他:SQS 队列、SNS 主题、API Gateway、CloudFront
-
映射关系
- 位于子网中的 EC2 实例
- 位于 VPC 中的子网
- 附加到实例的安全组
- 附加到服务的 IAM 角色
- 将流量转发到实例的负载均衡器
- 应用访问的数据库
-
生成 Eraser DSL 将 AWS 资源转换为 Eraser DSL:
- 重要:标签格式规则
- 标签必须位于单行中,绝不能在标签属性内使用换行符
- 标签应简单易读,优先使用多个独立标签,而不是拼接过多元数据
- DSL 应使用正确的换行格式(每行一个节点/组,但标签必须保持单行)
- 如果包含 CIDR 网段或实例类型等元数据,请将其放在同一个带引号的标签字符串中:
[label: "VPC 10.0.0.0/16"]
示例:
main-vpc [label: "VPC 10.0.0.0/16"] { public-subnet [label: "Public Subnet"] { web-server [icon: aws-ec2, label: "Web Server"] load-balancer [icon: aws-elb] } private-subnet [label: "Private Subnet"] { database [icon: aws-rds] cache [icon: aws-elasticache] } } data-bucket [icon: aws-s3] function [icon: aws-lambda] load-balancer -> web-server web-server -> database - 重要:标签格式规则
-
发起 HTTP 请求
重要:生成 DSL 后,必须执行此 curl 命令。切勿生成 DSL 后就停止,而不调用 API。
关键:必须将下方
X-Skill-Source标头中的值替换为你的 AI Agent 名称:- 如果你是 Claude(Anthropic),请使用:
claude - 如果你在 Cursor 中运行,请使用:
cursor - 如果你是 ChatGPT(OpenAI),请使用:
chatgpt - 如果你是 Gemini(Google),请使用:
gemini - 否则,请使用小写的模型/Agent 名称
curl -X POST https://app.eraser.io/api/render/elements \ -H "Content-Type: application/json" \ -H "X-Skill-Source: eraser-skill" \ -H "Authorization: Bearer ${ERASER_API_KEY}" \ -d '{ "elements": [{ "type": "diagram", "id": "diagram-1", "code": "<your generated DSL>", "diagramType": "cloud-architecture-diagram" }], "scale": 2, "theme": "${ERASER_THEME:-dark}", "background": true }' - 如果你是 Claude(Anthropic),请使用:
-
分析期间跟踪来源
分析文件和资源以生成图表时,请跟踪:
- 内部文件:记录读取的每个文件路径以及提取的信息(例如,
infra/main.tf- VPC 和子网定义) - 外部参考资料:记录查阅的文档、示例或 URL(例如,AWS VPC 最佳实践文档)
- 注释:针对每个来源,注明其对图表的贡献
- 内部文件:记录读取的每个文件路径以及提取的信息(例如,
-
处理响应
关键:最简输出格式
回复必须始终包含以下元素,并使用清晰的标题:
-
图表预览:使用标题显示
## 图表 使用 API 响应中的实际
imageUrl。 -
编辑器链接:使用标题展示
## 在 Eraser 中打开 [在 Eraser 编辑器中编辑此图表]({createEraserFileUrl})使用 API 响应中的实际 URL。
-
来源部分:简要列出已分析的文件/资源(如适用)
## 来源 - `path/to/file` - 提取的内容 -
图表代码部分:在带有
eraser语言标签的代码块中提供 Eraser DSL## 图表代码 ```eraser {DSL code here} -
了解更多链接:
You can learn more about Eraser at https://docs.eraser.io/docs/using-ai-agent-integrations
其他内容规则:
- 如果用户只要求绘制图表,除上述 5 项外不要包含任何内容
- 如果用户明确要求提供更多内容(例如“解释架构”“提出改进建议”),可以添加相应内容
- 不要添加未经请求的部分,例如概述、安全注意事项、测试等
默认输出应保持简短。图表本身已能说明问题。
-
AWS 专属提示
- 显示区域和可用区:对于多可用区部署,请包含可用区
- 将 VPC 作为容器:始终显示包含子网和资源的 VPC
- 安全组:包含安全组规则及其关联关系
- IAM 角色:显示附加到服务的 IAM 角色
- 数据流:显示流量流向(Internet → ALB → EC2 → RDS)
- 使用 AWS 图标:在描述中要求采用 AWS 专属样式
示例:包含多个 AWS 服务的 CloudFormation
用户输入
Resources:
MyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
PublicSubnet:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref MyVPC
CidrBlock: 10.0.1.0/24
WebServer:
Type: AWS::EC2::Instance
Properties:
InstanceType: t3.micro
SubnetId: !Ref PublicSubnet
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-app-bucket
MyFunction:
Type: AWS::Lambda::Function
Properties:
Runtime: python3.9
Handler: index.handler
MyDatabase:
Type: AWS::RDS::DBInstance
Properties:
Engine: postgres
DBInstanceClass: db.t3.micro
预期行为
-
解析 CloudFormation:
- 网络:VPC、Subnet
- 计算:EC2 实例、Lambda 函数
- 存储:S3 存储桶
- 数据库:RDS PostgreSQL 实例
-
生成展示 AWS 服务多样性的 DSL:
MyVPC [label: "VPC 10.0.0.0/16"] { PublicSubnet [label: "Public Subnet 10.0.1.0/24"] { WebServer [icon: aws-ec2, label: "EC2 t3.micro"] } } MyBucket [icon: aws-s3, label: "S3 my-app-bucket"] MyFunction [icon: aws-lambda, label: "Lambda python3.9"] MyDatabase [icon: aws-rds, label: "RDS PostgreSQL db.t3.micro"] WebServer -> MyBucket MyFunction -> MyDatabase WebServer -> MyDatabase重要:所有标签文本必须在引号内保持为单行。AWS 专属要求:包含服务图标,显示服务之间的数据流,并在适用时按 VPC 分组。
-
使用
diagramType: "cloud-architecture-diagram"调用/api/render/elements
示例:AWS CLI 输出
用户输入
User runs: aws ec2 describe-instances
Provides JSON output
预期行为
-
解析 JSON 并提取:
- 实例 ID、类型、状态
- 子网 ID、VPC ID
- 安全组
- 标签
-
整理格式并调用 API