1. AWS EC2实例创建六步指南
作为云计算领域的核心服务之一,AWS EC2(Elastic Compute Cloud)提供了可扩展的计算能力。对于刚接触AWS的新手来说,启动第一个EC2实例是掌握云服务的重要里程碑。下面我将用从业六年的经验,带您完成从零开始的完整实例创建流程。
操作前准备:确保已注册AWS账号并完成身份验证,建议启用多因素认证(MFA)提升账户安全性。首次使用可能会产生小额费用(通常有免费额度)。
1.1 控制台导航与区域选择
登录AWS管理控制台后,在"服务"菜单中找到EC2(可直接搜索)。注意右上角的区域选择器,这决定了您的实例将部署在哪个物理位置。对于国内用户,建议选择亚太区域(如东京ap-northeast-1或新加坡ap-southeast-1)以获得更稳定的网络连接。
区域选择会影响:
- 服务可用性(某些实例类型仅在特定区域提供)
- 网络延迟(选择离用户最近的区域)
- 计费标准(不同区域价格可能有差异)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 实例配置全流程解析
2.1 步骤1:选择AMI(系统镜像)
在EC2控制台点击"启动实例",首先需要选择AMI(Amazon Machine Image)。新手建议从AWS提供的免费套餐合格AMI开始:
- Amazon Linux 2:AWS优化版Linux系统,集成AWS工具链
- Ubuntu Server:熟悉的Debian系发行版,社区支持丰富
- Windows Server:需要额外许可费用,适合.NET应用
我常用的是Amazon Linux 2 AMI (HVM),其优势包括:
- 预装AWS CLI、CloudWatch等工具
- 默认启用SSH密钥登录
- 持续安全更新支持
2.2 步骤2:实例类型选择
根据工作负载选择适当的实例类型:
| 类型系列 | 适用场景 | 免费套餐选项 |
|---|---|---|
| t2/t3.micro | 开发测试、轻量应用 | ✔️ |
| m5.large | 通用应用、中型数据库 | ❌ |
| c5.xlarge | 计算密集型任务 | ❌ |
免费套餐用户务必选择标记为"Free tier eligible"的t2/t3.micro,其他类型会产生费用。不确定时可查看右侧的"每月费用估算"。
2.3 步骤3:配置实例详细信息
这个步骤包含多个关键配置项:
-
网络设置:
- 选择默认VPC(自动创建的子网和路由)
- 启用自动分配公有IP(否则需通过弹性IP访问)
-
IAM角色(可选但推荐):
创建具有S3访问权限的角色,避免在实例中存储AK/SK -
关闭"终止保护":
学习阶段建议禁用,防止误操作导致实例无法终止 -
监控设置:
启用详细监控会额外收费(基础监控免费)
2.4 步骤4:存储配置
默认8GB gp2卷通常够用,但需要注意:
- 根卷大小不能小于AMI规定的最小值
- 添加额外卷时选择正确的设备名(如/dev/xvdb)
- 生产环境建议使用io1/io2卷型提高IOPS
重要:终止实例时默认会删除关联的EBS卷,如需保留数据务必取消勾选"终止时删除"。
2.5 步骤5:标签与安全组
标签管理:
添加Name标签(如"MyFirstEC2"),这是AWS资源管理的最佳实践。
安全组配置(虚拟防火墙):
- 入站规则:至少开放SSH(22端口),来源限制为您的IP
- Web应用需额外开放HTTP(80)/HTTPS(443)
- 出站规则默认全开
典型安全组配置示例:
code复制类型:SSH
协议:TCP
端口范围:22
来源:MyIP(自动检测)或特定IP段
2.6 步骤6:密钥对管理
选择"创建新密钥对",命名后下载.pem文件。这是访问Linux实例的唯一凭证,务必:
- 将.pem文件保存在安全位置
- 设置400权限:
chmod 400 keypair.pem - Windows用户需用PuTTYgen转换为.ppk格式
3. 实例连接与基础管理
3.1 SSH连接实操
对于Linux/macOS用户:
bash复制ssh -i /path/to/keypair.pem ec2-user@<公有IP>
Windows用户使用PuTTY:
- 加载转换后的PPK密钥
- 连接至ec2-user@<公有IP>
- 首次连接需确认主机密钥
连接成功后您会看到类似提示:
code复制 __| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
[ec2-user@ip-172-31-22-86 ~]$
3.2 基础系统配置
建议初始操作:
- 更新软件包:
bash复制sudo yum update -y - 安装常用工具:
bash复制sudo yum install -y git htop tmux - 配置时区:
bash复制sudo timedatectl set-timezone Asia/Shanghai
3.3 成本控制技巧
- 创建计费告警(每月费用超过$10时通知)
- 使用实例调度(非工作时间自动停止)
- 定期检查"Cost Explorer"中的费用明细
- 测试完成后及时终止实例
4. 常见问题排查指南
4.1 连接失败排查
症状:"Connection timed out"错误
可能原因及解决方案:
- 安全组未开放22端口 → 添加入站规则
- 实例未分配公有IP → 检查网络接口配置
- 密钥对权限错误 → 执行
chmod 400 keypair.pem - 实例状态非"running" → 在控制台确认状态
4.2 实例状态异常
实例卡在"pending"状态:
- 通常需要1-5分钟初始化
- 超过10分钟可能是区域容量问题,尝试在其他AZ启动
实例自动终止:
- 检查"实例生命周期"中的终止原因
- 可能是Spot实例被回收或触发了自动伸缩策略
4.3 存储空间不足
处理方法:
- 扩展EBS卷大小(需在控制台和OS内分别操作)
- 清理日志文件:
bash复制sudo journalctl --vacuum-size=100M - 添加并挂载新EBS卷
5. 生产环境进阶建议
5.1 高可用架构设计
- 将实例部署在不同可用区(AZ)
- 使用弹性IP保持公网地址不变
- 配置负载均衡和自动伸缩组
- 定期创建AMI备份
5.2 监控与日志
基础监控方案:
- 安装CloudWatch代理:
bash复制sudo yum install -y amazon-cloudwatch-agent - 配置内存/磁盘监控指标
- 设置SNS告警通知
5.3 安全加固措施
- 禁用密码登录:
bash复制sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config sudo systemctl restart sshd - 定期轮换密钥对
- 启用VPC流日志审计网络流量
- 使用SSM Session Manager替代直接SSH
我在实际运维中发现,80%的初级问题都源于安全组配置错误或密钥对管理不当。建议新手在本地保存一份操作清单,记录每个实例的:
- 使用的AMI ID
- 关联的安全组规则
- 密钥对存放路径
- 创建时间戳和用途说明
这种元数据管理习惯会在管理多个实例时显著提高效率。当需要重建环境时,只需5分钟就能复现完全一致的配置。
