亚马逊云企业认证 AWS CloudFormation 入门教程:用模板创建EC2、VPC与RDS并解决部署报错
很多用户第一次使用 AWS CloudFormation,并不是想了解定义,而是已经在控制台里反复点过 VPC、子网、安全组、EC2、RDS,结果环境一多就难以复用:测试环境和生产环境参数不一致,安全组端口漏开,数据库恢复后连接字符串又变了,修改配置时还容易误删资源。用户真正关心的是:怎样把这些操作写成模板,怎样少踩坑,部署失败后怎样快速定位问题。
如果你现在正准备上线一个网站、API 服务或内部业务系统,CloudFormation 最适合解决两类问题:第一,减少重复创建资源时的手工错误;第二,把服务器、数据库和网络配置固化下来,后续可以复制、更新和回滚。下面的内容不讲空泛原理,直接围绕模板编写、参数选择、控制台部署和故障排查展开。
部署前先确认的4项准备
1. 账号和权限
亚马逊云企业认证 如果你用的是主账号,虽然可以直接创建资源,但不建议长期这样操作。更稳妥的方式是使用具备 CloudFormation、EC2、VPC、RDS、IAM、CloudWatch 基础权限的 IAM 用户或角色。
| 准备项 | 最低要求 | 常见问题 |
| CloudFormation 权限 | 创建、更新、删除堆栈 | 控制台能打开但创建失败 |
| EC2/VPC 权限 | 创建实例、网络与安全组 | 提示未授权操作 |
| RDS 权限 | 创建数据库实例与子网组 | 数据库步骤回滚 |
| IAM PassRole | 若模板中引用角色则需要 | 堆栈事件报 AccessDenied |
2. 你需要提前准备的资源
- 亚马逊云企业认证 至少一个可用 Region,建议离用户近,优先考虑延迟和数据合规要求。
- 一对 EC2 Key Pair,后续 Linux 用 SSH 连接,Windows 可用于获取管理员密码。
- 一个明确的 CIDR 规划,例如 VPC 使用 10.0.0.0/16,公有子网 10.0.1.0/24,私有子网 10.0.2.0/24。
- 数据库密码不要硬编码在模板里,至少改成参数输入,实际生产可配合 Secrets Manager。
3. 常被忽略的前置条件
很多新手模板语法没错,但部署还是失败,原因不在模板本身,而在基础资源条件未满足。例如:所选可用区不支持某实例规格、RDS 所需两个子网不在不同可用区、默认 VPC 被删后又沿用旧模板参数、账户在当前区域的 vCPU 配额不足。
4. 决策时最关键的参数
| 参数 | 建议填写方式 | 影响 |
| InstanceType | 入门可选 t3.micro/t3.small | 决定成本与性能 |
| DBInstanceClass | 测试库 db.t3.micro,生产按负载提高 | 影响并发和内存 |
| AllowedSSHLocation | 不要填 0.0.0.0/0,改成你的公网IP/32 | 影响服务器暴露面 |
| DBAllocatedStorage | MySQL 起步 20GB,按增长预留 | 影响存储成本和空间 |
| MultiAZ | 测试关闭,生产关键库再开启 | 影响可用性和费用 |
先从控制台创建一个可运行的堆栈
如果你是第一次上手,不建议一开始就写复杂模板。先用一个最小模板把 VPC、公网子网、安全组和一台 Linux EC2 创建出来,确认流程打通,再加数据库和更多网络规则。
步骤1:进入 CloudFormation 创建堆栈
登录 AWS 控制台后,搜索并进入 CloudFormation,点击“Create stack”,选择“With new resources (standard)”。模板来源可以选“Upload a template file”,上传本地 YAML 文件。
这里最容易出现的问题是:模板文件编码异常、YAML 缩进错误、参数类型与默认值不匹配。建议使用空格缩进,不要混用 Tab。
步骤2:填写堆栈名称与参数
堆栈名称建议带环境标识,例如 web-prod-stack、web-test-stack。参数填写时重点看三类:网络段、实例规格、访问来源。
- KeyName:选择已创建的密钥对,否则 Linux 实例无法 SSH 登录。
- AllowedSSHLocation:填你的办公公网 IP,例如 203.0.113.10/32。
- VpcCIDR/SubnetCIDR:避免与现有网络冲突,后续如果要做 VPC Peering 或 VPN,这一步尤其关键。
步骤3:设置高级选项
在高级选项中建议开启堆栈失败通知,至少加上标签,例如 Environment=Test、Owner=Ops。对于数据库和关键磁盘类资源,可考虑在模板中设置删除策略,避免删除堆栈时数据直接被清空。
步骤4:查看 Events 定位失败点
创建后不要只看“Create failed”,要进入堆栈详情页的 Events 标签查看具体资源。CloudFormation 的排错核心不是猜,而是看事件顺序:哪个资源先失败、是权限问题、配额问题还是依赖关系问题。
| 常见事件提示 | 可能原因 | 处理办法 |
| Parameters validation failed | 参数值超范围或类型不符 | 检查 AllowedValues、CIDR 格式、实例规格 |
| Resource creation cancelled | 前置资源失败导致后续取消 | 先看最早失败的那条事件 |
| AccessDenied | IAM 权限不足 | 补齐对应服务权限和 PassRole |
| InsufficientInstanceCapacity | 当前可用区容量不足 | 更换可用区或实例规格 |
模板实战:创建 VPC、EC2 和 MySQL RDS
下面这类结构最适合入门用户:一个 VPC、两个子网、一个互联网网关、一台 EC2 放在公有子网、一台 RDS 放在私有子网。这样既能演示网络配置,也方便后续扩展应用和数据库分层。
推荐资源结构
| 资源 | 建议配置 | 说明 |
| VPC | 10.0.0.0/16 | 给后续子网留空间 |
| Public Subnet | 10.0.1.0/24 | 放 EC2 与 NAT 相关资源 |
| Private Subnet A/B | 10.0.2.0/24、10.0.3.0/24 | RDS 需要至少两个可用区子网 |
| EC2 Security Group | 22、80、443 按需开放 | SSH 限定源IP |
| RDS Security Group | 3306 仅允许 EC2 安全组访问 | 不要直接暴露公网 |
模板参数建议
入门模板至少要参数化以下内容,而不是写死:
- EC2 实例规格:方便测试和生产复用。
- AMI ID:不同 Region 不同,别跨区域直接照搬。
- 数据库用户名、数据库名称、存储大小。
- 亚马逊云企业认证 SSH 来源 IP 和 Web 访问范围。
关键配置细节
1)EC2 如果需要公网访问,除了关联公有子网,还要确认分配公网 IP,路由表中有 0.0.0.0/0 指向 Internet Gateway。
2)RDS 如果是私网部署,必须创建 DB Subnet Group,并且两个子网位于不同可用区,否则实例创建经常失败。
3)安全组建议用“安全组引用”而不是开放整段网段。比如 RDS 的 3306 只允许来自 EC2 安全组,而不是 0.0.0.0/0。
Linux 初始化命令示例
如果模板里使用 UserData 自动安装 Nginx 或应用运行环境,建议先把脚本控制在最小范围,避免一堆命令混在一起导致实例健康检查失败。
| 用途 | 示例命令 |
| 更新软件源 | sudo yum update -y 或 sudo apt update -y |
| 安装 Nginx | sudo yum install nginx -y |
| 启动服务 | sudo systemctl enable nginx && sudo systemctl start nginx |
| 查看监听端口 | ss -lntp |
如果 UserData 执行失败,先到 EC2 上查看日志。Amazon Linux 常看 /var/log/cloud-init-output.log,Ubuntu 也可以从 cloud-init 日志入手,不要一开始就误判成模板错误。
部署完成后怎样验证资源真的可用
1. SSH 远程连接 Linux 实例
在 EC2 控制台复制公有 IP,然后本地执行:
ssh -i your-key.pem ec2-user@公网IP
若使用 Ubuntu AMI,用户名通常是 ubuntu。连接失败时优先检查四项:密钥是否匹配、22 端口是否放通、安全组源地址是否包含你当前公网 IP、实例是否真的拿到了公有 IP。
2. Windows 实例使用 RDP
如果模板部署的是 Windows EC2,需要安全组开放 3389,并在实例创建完成后通过控制台获取管理员密码。很多用户卡在“明明实例正常却连不上”,通常是 3389 未放行、网络 ACL 拒绝、或公司出口网络屏蔽了 RDP。
3. MySQL 连接检查
从 EC2 内部连接私网 RDS 才是推荐方式。先在 EC2 上执行端口连通测试,再用 MySQL 客户端连接:
mysql -h 数据库终端节点 -u admin -p
如果报 Can't connect to MySQL server,优先排查:
- RDS 安全组是否允许来自 EC2 安全组的 3306。
- 亚马逊云企业认证 RDS 是否部署在私有子网,且 EC2 与 RDS 路由互通。
- 数据库状态是否为 available,而不是 backing-up 或 modifying。
- 参数组是否改动了连接相关配置后未重启生效。
更新模板时最容易踩的坑
CloudFormation 真正的价值不只是创建,而是后续更新。很多用户第一次更新堆栈后发现实例被替换、数据库重建,问题通常出在没有识别“修改会触发 replacement”的字段。
哪些修改容易触发资源替换
| 资源 | 高风险修改项 | 后果 |
| EC2 | 部分网络属性、AMI、根卷配置 | 实例被替换,原临时数据丢失 |
| RDS | 某些存储/引擎/网络参数 | 可能重建实例或造成中断 |
| 子网/VPC | CIDR 变更 | 依赖资源整体重建 |
更新前建议
- 对关键卷和数据库先做快照备份。
- 生产堆栈开启 Termination Protection,防止误删。
- 先在测试环境执行 Change Set,确认哪些资源会修改或替换。
- 数据库资源增加保留策略,避免删除堆栈时数据跟着删。
不同业务场景下怎么选配置
个人开发者
如果只是部署博客、测试 API 或学习 Linux,建议单台 EC2 + 最小 MySQL/RDS 测试实例,公有子网即可。重点不是高可用,而是把模板参数化,后续可以快速重建环境。
亚马逊云企业认证 企业用户
亚马逊云企业认证 建议拆分网络、计算、数据库三个模板或使用嵌套堆栈。数据库放私有子网,应用服务器通过安全组互通。上线前为模板增加标签、日志、备份保留和变更审批流程。
跨境业务
优先按用户访问区域选 Region,再测试网络延迟。应用层可配合 Route 53、CloudFront 和 HTTPS 证书部署。CloudFormation 模板中要把证书 ARN、域名和安全组规则参数化,避免跨区复制时出错。
网站应用
至少开放 80/443,SSH 只允许固定来源。若后续接入负载均衡,可先把 EC2 安全组改成仅接受负载均衡安全组流量,减少直接暴露。
数据库业务
RDS 建议单独一个堆栈管理,避免业务服务器更新时影响数据库。备份窗口、维护窗口、参数组、监控项最好都写在模板里,避免上线后再手工补。
部署失败时,不要重试,先按这个顺序排查
先看堆栈事件,再看具体资源日志
CloudFormation 错误经常是连锁反应。后面的“创建取消”通常不是根因。正确做法是找到第一条失败事件,然后跳到对应服务核对原始错误。
最常见的5类错误
| 错误类型 | 典型表现 | 排查思路 |
| YAML/JSON 语法问题 | 模板上传即失败 | 检查缩进、冒号、列表格式 |
| 权限不足 | 创建到某资源时报 AccessDenied | 补 IAM 权限与 PassRole |
| 网络配置错误 | 实例成功但无法 SSH/数据库不可达 | 查路由表、安全组、NACL、公网IP |
| 资源依赖缺失 | IGW、子网、路由关联顺序出错 | 检查 DependsOn 与引用关系 |
| 配额或容量限制 | 实例无法启动或数据库规格不可用 | 换规格、换可用区、申请提额 |
上线后还需要做的优化
安全优化
- SSH 和 RDP 不要对全网开放,限定办公 IP 或通过堡垒机访问。
- 数据库放私网,不直接暴露公网端点。
- 敏感参数不要硬编码在模板里,至少改为 NoEcho 参数。
- 给 EC2 绑定 IAM Role,不要在服务器里保存长期 AK/SK。
性能优化
- Web 服务先看 CPU、内存、磁盘突发和网络带宽,不要只盯实例规格。
- RDS 若连接数高,优先检查最大连接、慢查询和应用连接池配置。
- 静态资源建议后续接入 CDN,模板里可预留证书与域名参数。
成本优化
- 测试环境使用小规格并设置自动停机策略。
- 删除不再使用的 EBS、快照和弹性 IP。
- RDS Multi-AZ、Provisioned IOPS 等配置只在有明确要求时启用。
稳定性优化
- 关键堆栈启用删除保护。
- 数据库和磁盘定期做快照,演练恢复流程。
- 更新前先执行 Change Set,避免误替换生产资源。
- 通过 CloudWatch 监控 CPU、内存、磁盘与连接数,发现异常再更新模板而不是直接在控制台改。
如果你当前还是手动创建 EC2、RDS 和安全组,最实用的入门路径不是一次写完整平台模板,而是先用 CloudFormation 固化一个最小可运行环境:VPC、公有子网、EC2、安全组、私网 RDS。先保证部署成功、能 SSH、能连 MySQL、能回滚,再逐步增加 HTTPS、DNS、负载均衡、备份策略和监控配置。这样学得更快,也更接近真实运维场景。
如果需要更深入咨询了解可以联系全球代理上TG: @cloudcup 他们在云平台领域有更专业的知识和建议,他们有国际阿里云,国际腾讯云,国际华为云,aws亚马逊,谷歌云一级代理的渠道,微软云开户充值。oss防风控上传加密系统。客服1V1服务,支持免实名、免备案、免绑卡。开通即享专属VIP优惠、充值秒到账、官网下单享双重售后支持。