SuperAPI AI 工具集

aws-ec2

部署与运维

查看项目

更新于 10-15 12:43

技能介绍

AWS EC2 技能用于在 AWS 上部署和管理 Amazon EC2 计算实例,适用于生产、预发布和开发工作负载。

用途与适用场景

适用场景包括:为应用托管启动新的计算实例;构建黄金 AMI 以实现一致的部署;在负载均衡器后搭建自动扩缩组;将工作负载迁移到 Spot 实例以节省成本;排查实例连接、性能或启动失败问题;创建启动模板以实现可重复的基础设施。

前置条件

使用前需要:已安装并配置 AWS CLI v2(aws configure);具备 IAM 权限:ec2:、autoscaling:、elasticloadbalancing:*、iam:PassRole;已有带子网的 VPC(参见 aws-vpc);已创建 SSH 密钥对,例如:aws ec2 create-key-pair --key-name my-key --query 'KeyMaterial' --output text > my-key.pem。

实例类型选择

按用途划分:通用型 t3、t3a、m6i、m7g,适合 Web 服务器、小型数据库、开发测试;计算优化型 c6i、c7g,适合批处理、媒体编码、ML 推理;内存优化型 r6i、r7g、x2idn,适合内存缓存、大型数据库;存储优化型 i3、i4i、d3,适合数据仓库、分布式文件系统;加速型 p4d、g5、inf2,适合 ML 训练、GPU 渲染、推理;突发型 t3.micro-t3.2xlarge,适合低稳态负载配合偶发峰值。

主要能力与使用方式

启动实例:使用 aws ec2 run-instances 指定镜像、实例类型、密钥对、安全组、子网、IAM 实例配置文件、元数据选项、EBS 块设备映射和标签。示例中建议将元数据选项设为 HttpTokens=required 以满足 IMDSv2 安全最佳实践,块设备使用 gp3 并设置 Iops、Throughput、Encrypted,并通过 --user-data 传入启动脚本。

用户数据脚本:以 Amazon Linux 2023 为例,脚本可执行系统更新、安装并启动 nginx、安装 CloudWatch 代理和 CodeDeploy 代理等初始化操作。

启动模板:使用 aws ec2 create-launch-template 创建完整配置的模板,包含镜像、实例类型、安全组、IAM 实例配置文件、元数据选项、加密 EBS、标签、监控与 userData(base64 编码);通过 create-launch-template-version 创建新版本,并通过 modify-launch-template 设置默认版本。

自动扩缩组:使用 aws autoscaling create-auto-scaling-group 创建混合实例策略的 ASG,可覆盖多种实例类型,配置 OnDemandBaseCapacity、OnDemandPercentageAboveBaseCapacity 和 SpotAllocationStrategy(capacity-optimized),并关联目标组、ELB 健康检查与宽限期。使用 put-scaling-policy 配置目标跟踪扩缩(如平均 CPU 60%),使用 put-scheduled-update-group-action 按 cron 表达式进行计划扩缩。

Spot 实例:可通过 request-spot-instances 请求 Spot 实例,通过 describe-spot-price-history 查询当前 Spot 价格,并使用 request-spot-fleet 创建 Spot 舰队,指定目标容量、价格、分配策略和多种启动规格。

AMI 管理:使用 create-image 从运行中实例创建 AMI(支持 --no-reboot 并添加标签);使用 copy-image 跨区域复制以做灾难恢复;使用 deregister-image 和 delete-snapshot 注销旧 AMI 并删除快照;使用 modify-image-attribute 与其他 AWS 账户共享 AMI。

实例管理:使用 describe-instances 配合过滤和查询列出运行中实例的关键信息;使用 stop-instances/start-instances 启停实例;调整实例类型前需先停止实例,等待停止后通过 modify-instance-attribute 修改类型再启动;使用 get-console-output 和 get-console-screenshot 调试启动或图形界面问题。

Terraform:提供使用 aws_launch_template、aws_autoscaling_group 和 aws_autoscaling_policy 的声明式示例,包含元数据选项 required、gp3 加密卷、user_data、标签传播和基于 ASGAverageCPUUtilization 的目标跟踪策略。

故障排查

常见问题与修复:实例卡在 pending,可能是容量不足,可尝试其他可用区或实例类型;无法 SSH,通常是安全组或 NACL 阻断 22 端口,需检查安全组入站规则和路由表;实例立即终止,可能是 EBS 卷限制或 AMI 问题,查看 describe-instances 的 StateReason;出现 IMDSv1 弃用警告,需在启动模板中设置 HttpTokens=required;用户数据未运行,需确认脚本包含 #!/bin/bash 并检查 /var/log/cloud-init-output.log;Spot 实例被终止是 AWS 回收容量所致,应使用 capacity-optimized 分配并多样化实例类型;ASG 未替换不健康实例,可能是健康检查宽限期过短,需覆盖应用启动时间;EBS 吞吐瓶颈,gp2 卷过小导致 IOPS 不足,应迁移到 gp3 并设置明确的 IOPS/吞吐。

相关技能

aws-vpc 涉及 VPC 网络、子网和安全组;aws-iam 涉及实例配置文件和角色;aws-cost-optimization 涉及规格调整和 Spot 策略;terraform-aws 涉及基础设施即代码部署;cloudformation 涉及 AWS 原生 IaC 模板。