EC2作为AWS云平台的核心计算服务,为用户提供了可弹性伸缩的云计算能力。对于刚完成AWS账户注册的用户而言,正确创建EC2实例是开启云服务之旅的第一步。本文将从实例类型深度选型、安全组配置原则到完整的实例创建流程进行全面解析,帮助用户避免常见陷阱,构建安全、高效、经济的云基础设施。
一、EC2实例创建前的准备工作
1. AWS账户激活与基础设置
完成AWS账户注册后,首先需要完成以下关键步骤:
- 账户验证:AWS会向注册邮箱发送验证链接,并通过信用卡扣除1美元预授权(随后会退还)以验证账户有效性。
- 账单警报配置:在AWS Billing控制台创建预算警报,设置月度消费阈值,避免意外费用产生。
- 启用MFA:为根账户和所有IAM用户启用多因素认证,这是AWS安全最佳实践的首要要求。
2. 区域与可用区选择
AWS在全球拥有32个地理区域和102个可用区,选择合适的区域直接影响应用性能和合规性:
- 延迟优先:选择距离最终用户最近的区域,可通过AWS Global Accelerator或CloudFront进一步优化全球访问速度。
- 合规要求:某些行业(如金融、医疗)要求数据必须存储在特定地理区域,需提前确认当地法规。
- 服务可用性:不同区域的AWS服务可用性可能存在差异,可通过AWS Regional Services List查询。
- 价格差异:同一服务在不同区域的定价可能不同,例如美国弗吉尼亚北部(us-east-1)通常是价格最低的区域之一。
3. IAM权限配置
强烈建议不要使用根账户创建和管理EC2实例。应创建具有最小权限的IAM用户:
- 创建EC2管理员用户组,附加 AmazonEC2FullAccess 托管策略
- 创建IAM用户并将其添加到该用户组
- 为该用户创建访问密钥(Access Key)和秘密访问密钥(Secret Access Key)
- 配置AWS CLI或SDK使用这些凭证进行编程访问
二、EC2实例类型深度选型指南
1. 实例类型家族分类与适用场景
AWS提供了超过400种实例类型,分为多个家族,每个家族针对特定工作负载进行了优化:
| 实例家族 |
优化方向 |
典型适用场景 |
代表型号 |
| 通用型(General Purpose) |
计算、内存和网络资源均衡 |
Web 服务器、开发环境、小型数据库 |
t3.micro、t3.small、m5.large |
| 计算优化型(Compute Optimized) |
高性能处理器 |
批处理、科学计算、游戏服务器 |
c5.large、c6i.xlarge |
| 内存优化型(Memory Optimized) |
大内存容量 |
内存数据库、大数据分析、SAP HANA |
r5.large、x1e.32xlarge |
| 存储优化型(Storage Optimized) |
高 I/O 性能本地存储 |
NoSQL 数据库、数据仓库 |
i3.large、d2.xlarge |
| 加速计算型(Accelerated Computing) |
GPU/FPGA 加速 |
机器学习、图形渲染、高性能计算 |
p3.2xlarge、g4dn.xlarge |
2. 突发性能实例(T系列)详解
T系列实例是AWS最受欢迎的入门级实例类型,采用CPU积分机制:
- CPU积分:实例在空闲时累积积分,在负载高峰时消耗积分以获得高于基准的CPU性能。
- 基准性能:t3.micro的基准性能为10%,即每小时累积6个CPU积分,每个积分可提供1分钟的100%CPU性能。
- 无限制模式:默认启用,允许实例在积分耗尽后继续使用CPU,但会产生额外费用。
- 适用场景:开发测试环境、低流量Web服务器、微服务。
注意:对于持续高CPU负载的工作负载,T系列实例可能比M系列或C系列更昂贵,应避免使用。
3. 实例购买选项对比
AWS提供三种主要的实例购买选项,满足不同的使用模式:
| 购买选项 |
定价模式 |
成本优势 |
适用场景 |
| 按需实例(On-Demand) |
按秒计费 |
无长期承诺,灵活启停 |
短期、突发或不可预测的工作负载 |
| 预留实例(Reserved Instances) |
1 年或 3 年承诺 |
最高 75% 折扣 |
长期稳定运行的生产工作负载 |
| Spot 实例(Spot Instances) |
竞价模式,价格随供需变化 |
最高 90% 折扣 |
容错性强、可中断的工作负载 |
最佳实践:
- 开发测试环境:使用按需实例或Spot实例
- 生产环境核心服务:使用标准预留实例
- 批处理作业、CI/CD流水线:使用Spot实例
4. 实例选型最佳实践
- 从最小可行实例开始:先使用t3.micro或t3.small进行测试,根据实际负载逐步升级。
- 使用AWS Compute Optimizer:该服务会分析您的实例使用情况,提供个性化的优化建议。
- 考虑新一代实例:AWS不断推出新一代实例(如C6i、M6i、R6i),通常提供更好的性能价格比。
- 避免过度配置:大多数用户倾向于选择比实际需要更大的实例,导致资源浪费。
- 测试不同实例类型:对于关键工作负载,建议在生产环境中测试2-3种候选实例类型,选择性能价格比最优的。
三、安全组配置详解
1. 安全组基本概念
安全组是AWS的虚拟防火墙,用于控制EC2实例的入站和出站流量:
- 状态性防火墙:如果您允许入站流量,对应的出站响应流量会自动被允许,反之亦然。
- 实例级别防护:安全组应用于单个EC2实例,而不是子网级别。
- 默认拒绝所有:默认情况下,安全组拒绝所有入站流量,允许所有出站流量。
- 规则是允许性的:安全组只支持允许规则,不支持拒绝规则。
2. 安全组规则配置原则
- 最小权限原则:只开放必要的端口和IP地址范围。
- 避免使用0.0.0.0/0:除非绝对必要(如公共Web服务器的80/443端口),否则不要允许来自任何IP地址的访问。
- 使用特定安全组引用:允许来自其他安全组的流量,而不是IP地址,这样当实例IP变化时无需更新规则。
- 限制SSH/RDP访问:只允许来自您的办公网络或VPN的SSH(22端口)和RDP(3389端口)访问。
- 定期审计:定期审查安全组规则,删除不再需要的规则。
3. 常见服务端口与安全组模板
以下是一些常见服务的标准端口和推荐的安全组配置:
| 服务 |
协议 |
端口 |
推荐源地址 |
| SSH(Linux) |
TCP |
22 |
您的 IP 地址 / 32 或 VPN 子网 |
| RDP(Windows) |
TCP |
3389 |
您的 IP 地址 / 32 或 VPN 子网 |
| HTTP |
TCP |
80 |
0.0.0.0/0(公共 Web 服务器) |
| HTTPS |
TCP |
443 |
0.0.0.0/0(公共 Web 服务器) |
| MySQL |
TCP |
3306 |
应用服务器安全组 ID |
| PostgreSQL |
TCP |
5432 |
应用服务器安全组 ID |
| MongoDB |
TCP |
27017 |
应用服务器安全组 ID |
4. 安全组最佳实践
- 为不同角色创建不同安全组:例如Web服务器安全组、数据库服务器安全组、应用服务器安全组。
- 不要修改默认安全组:默认安全组允许同一安全组内的所有实例相互通信,应创建自定义安全组用于生产环境。
- 使用安全组名称而不是ID:在引用其他安全组时,使用名称而不是ID,这样在不同环境中更容易复制配置。
- 启用VPC流日志:VPC流日志可以记录所有进出VPC的流量,帮助您排查安全问题和审计合规性。
- 使用AWS Config:AWS Config可以监控安全组配置变更,并在配置不符合规则时发出警报。
四、EC2实例创建完整步骤
1. 启动实例向导
- 登录AWS管理控制台,导航到EC2控制台
- 点击"启动实例"按钮
- 输入实例名称(例如"web-server-prod-01")
2. AMI选择
Amazon Machine Image(AMI)是包含操作系统和预配置软件的模板:
- Amazon Linux 2 AMI:AWS官方推荐的Linux发行版,免费使用,包含AWS CLI和其他工具。
- Ubuntu Server:最受欢迎的Linux发行版之一,社区支持良好。
- Red Hat Enterprise Linux:企业级Linux发行版,需要额外付费。
- Windows Server:Windows操作系统,包含SQL Server等选项。
最佳实践:选择最新版本的AMI,并定期更新实例以获取安全补丁。
3. 实例类型选择
根据本文第二部分的选型指南,选择适合您工作负载的实例类型。对于入门用户,建议从t3.micro开始(符合AWS免费套餐条件)。
4. 网络与子网配置
- 选择您的VPC(如果没有创建,AWS会提供默认VPC)
- 选择子网(可用区)
- 自动分配公网IP:如果实例需要直接访问互联网,选择"启用"
- 网络接口:保持默认设置即可
5. 存储配置
- 根卷:默认情况下,AWS会创建一个8GB的gp3通用SSD根卷。
- 卷类型:
- gp3:通用SSD,性价比最高,适用于大多数工作负载
- gp2:上一代通用SSD,已逐渐被gp3取代
- io2:预置IOPS SSD,适用于需要高I/O性能的数据库
- st1:吞吐量优化HDD,适用于大数据仓库
- 加密:启用根卷加密,这是AWS安全最佳实践之一。
6. 标签配置
标签是键值对,用于组织和管理AWS资源:
- 推荐标签:Name、Environment(prod/staging/dev)、Project、Owner、CostCenter
- 标签可以用于成本分配、资源分组和自动化管理
7. 安全组配置
- 选择"创建新安全组"
- 输入安全组名称和描述
- 添加入站规则:
- 对于Linux实例:添加SSH规则,源地址设置为您的IP地址
- 对于Web服务器:添加HTTP(80)和HTTPS(443)规则,源地址设置为0.0.0.0/0
- 出站规则:保持默认(允许所有出站流量)
8. 密钥对创建与管理
密钥对用于安全地连接到Linux实例:
- 选择"创建新密钥对"
- 输入密钥对名称(例如"my-ec2-key")
- 密钥对类型:选择RSA
- 私钥文件格式:选择.pem(适用于Linux/macOS)或.ppk(适用于Windows PuTTY)
- 点击"创建密钥对",并将私钥文件下载到安全位置
重要:私钥文件只能下载一次,丢失后无法恢复。请妥善保管,不要与他人分享。
9. 实例启动与连接
- 检查所有配置,确认无误后点击"启动实例"
- 等待实例状态变为"运行中"
- 选择实例,点击"连接"按钮
- 按照提供的说明使用SSH连接到Linux实例:
chmod 400 my-ec2-key.pem
ssh -i "my-ec2-key.pem" ec2-user@<public-ip-address>
五、创建后的验证与基础优化
1. 实例状态检查
AWS提供两种实例状态检查:
- 系统状态检查:检查AWS基础设施是否正常运行
- 实例状态检查:检查实例本身的操作系统和网络配置
如果状态检查失败,AWS会自动尝试恢复实例。如果恢复失败,您需要手动停止并启动实例。
2. 基础安全加固
# Amazon Linux 2
sudo yum update -y
# Ubuntu
sudo apt update && sudo apt upgrade -y
- 配置防火墙:在实例内部配置iptables或ufw作为额外的安全层
- 禁用root登录:编辑/etc/ssh/sshd_config,设置 PermitRootLogin no
- 配置密码策略:强制使用强密码,并定期更改
- 安装安全监控工具:如fail2ban,防止暴力破解SSH
3. 监控与告警配置
- 启用Amazon CloudWatch基本监控(免费)
- 创建CloudWatch告警:
- CPU利用率超过80%持续5分钟
- 磁盘空间不足10%
- 实例状态检查失败
- 配置SNS主题,将告警发送到您的邮箱或手机
六、常见问题与故障排除
1. 无法连接到实例
- 检查安全组:确保入站规则允许来自您IP地址的SSH/RDP流量
- 检查网络ACL:网络ACL是子网级别的防火墙,确保允许相应端口的流量
- 检查实例状态:确保实例处于"运行中"状态,并且状态检查通过
- 检查公网IP:确保实例已分配公网IP,并且您使用的是正确的IP地址
- 检查密钥对权限:确保私钥文件权限为400(Linux/macOS)
2. 实例意外终止
- 检查CloudTrail日志:CloudTrail会记录所有AWS API调用,包括终止实例的操作
- 启用终止保护:在实例设置中启用终止保护,防止意外终止
- 使用自动扩展组:对于生产环境,使用自动扩展组确保实例数量符合预期
3. 费用过高
- 检查未使用的资源:删除不再需要的实例、卷、弹性IP和快照
- 使用AWS Cost Explorer:分析您的费用构成,找出成本优化机会
- 考虑预留实例或Savings Plans:对于长期运行的实例,购买预留实例或Savings Plans可以显著降低成本
创建EC2实例是AWS云服务的基础操作,但要做到安全、高效、经济并不容易。本文详细介绍了实例类型选型、安全组配置和完整的实例创建流程,以及创建后的验证和优化步骤。
相关阅读:
谷歌云开户资源迁移准备:从AWS/Azure迁移注意事项
谷歌云开户后备份策略设计:跨区域容灾方案基础框架
阿里云国际开户API调用失败?AccessKey配置与权限授权排查
AWS云开户邮箱收不到验证邮件?完整排查流程与替代验证方式
腾讯云国际开户节点选择坑:延迟过高 + 数据迁移成本控制