SuperAPI AI 工具集

deploy-ec2-aws

部署与运维

查看项目

更新于 10-16 03:57

技能介绍

用途

deploy-ec2-aws 是一个用于在 AWS 上部署和管理 EC2 节点的技能,底层使用 Terraform。它会先生成一个自包含的 Terraform 项目,然后按指定的节点组名称和数量在 AWS 上创建 EC2 实例。

主要能力

  • 支持一个或多个命名节点组,每组需提供唯一名称和正整数数量。
  • 节点规格格式为 NAME=COUNT[:CPU:MEMORY_GIB],例如 api=2 或 worker=3:4:8。CPU 和内存为最低要求,解析器可能选择略大的 x86_64 实例类型;不会静默修改显式指定的数量。
  • 未提供 CPU 和内存时使用默认值:2 vCPU、4 GiB 内存,解析为 t3.medium。
  • 默认创建专用 VPC 和公有子网,添加互联网网关和默认路由。
  • 节点间允许全部协议通信(同一部署安全组内),仅对 TCP 22 端口按 ssh_cidr 开放公网入站。
  • 为每个节点分配一个弹性 IP,并输出公网 IP、私网 IP、实例 ID、实例类型和 SSH 命令,按节点名称分组。
  • 节点组名称用作 EC2 Name 标签;单节点组使用组名,多节点组追加零填充序号,如 api-01、api-02。EC2 名称不添加部署命名空间前缀。

使用方式

  1. 解析技能目录后运行脚手架脚本,例如:
python3 <skill-dir>/scripts/scaffold_project.py \
  --node api=2 \
  --node worker=3:4:8
  1. 可显式传入部署设置:
python3 <skill-dir>/scripts/scaffold_project.py \
  --target "$HOME/test/ec2-aws-demo" \
  --namespace demo \
  --aws-profile default \
  --region us-west-2 \
  --ssh-cidr 203.0.113.10/32 \
  --public-key "$HOME/.ssh/id_ed25519.pub" \
  --node api=2:2:4 \
  --node worker=3:4:8
  1. 省略 --target 时,使用脚本打印的绝对路径,并在该路径下继续所有 Terraform 操作,同时参考生成的 README.md。

默认值包括:命名空间 ec2-nodes-<YYMMDDHHMM>(本地时间)、项目路径 $HOME/test/ec2-aws-<namespace>、AWS profile 为 default、区域 us-west-2、根卷 20 GiB 加密 GP3、SSH 来源为检测到的操作员公网 IPv4 地址 /32、AMI 为通过区域 AWS SSM 公共参数解析的最新 Amazon Linux 2023 x86_64 镜像。

适用场景

适合需要快速在 AWS 上搭建一组可 SSH 访问、带弹性 IP 的 EC2 节点的场景,例如临时测试环境、开发环境或需要按组管理节点的部署。

限制与安全要求

  • 运行实时 AWS 或 Terraform 命令前,需阅读 references/deployment.md。
  • 在 terraform init、plan、apply 或 destroy 前验证 AWS 身份,必要时刷新 AWS SSO 登录。
  • 除非用户明确要求部署或清理,否则不要运行 terraform apply 或 terraform destroy。
  • 建议保存 Terraform plan 并在 apply 前审查。
  • 需提醒 AWS 对公网 IPv4 地址(包括已附加的弹性 IP)收费。
  • 不要打印 Terraform state、凭据或私钥材料。
  • 除非用户明确要求替换本地项目,否则不要对包含 state 的部署目录使用 --force。
  • apply 后要求无变更的 Terraform plan,若出现未请求的 destroy 或替换则停止。
  • 需在每个节点上测试 SSH,而不仅是每组一个代表节点。
  • apply 后报告绝对部署路径、生成的 README.md、公网/私网 IP 输出、解析的实例类型和 SSH 命令。
  • 如需额外公网端口,应添加满足请求的最窄安全组规则,并要求显式来源 CIDR,不得默认将应用端口开放为 0.0.0.0/0。