返回列表

亚马逊云代金券 AWS EC2 自动化运维教程:补丁管理、远程命令执行与配置维护实操指南

亚马逊aws / 2026-10-21 16:07:28

如果需要更深入咨询了解可以联系全球代理上TG: @cloudcup  他们在云平台领域有更专业的知识和建议,他们有国际阿里云,国际腾讯云,国际华为云,aws亚马逊,谷歌云一级代理的渠道,微软云开户充值。oss防风控上传加密系统。客服1V1服务,支持免实名、免备案、免绑卡。开通即享专属VIP优惠、充值秒到账、官网下单享双重售后支持。

搜索“AWS EC2 自动化运维:补丁管理、远程命令与配置维护”的用户,通常已经有一批 EC2 在运行,当前痛点不是怎么开机,而是怎么少登录服务器、少手工操作、少漏打补丁,并且在需要批量改配置时能快速落地。

实际决策中,用户最关心的往往是这几个问题:现有 EC2 能不能直接接入自动化运维;要不要开公网;Linux 和 Windows 能不能统一管理;补丁是否会导致业务中断;远程命令失败后怎么排查;多账号多区域如何保持配置一致。下面直接进入操作层面的配置实践。

用户最关心的决策点:先判断你的 EC2 是否适合接入自动化运维

在开始前,先不要急着创建补丁任务。建议先确认这 4 个关键判断项,否则后面大概率会卡在实例不在线、命令无法下发或补丁基线不生效。

检查项建议值不满足时的表现
实例系统Amazon Linux 2、Amazon Linux 2023、Ubuntu、RHEL、CentOS、Windows Server部分旧版系统不支持完整补丁策略
SSM Agent已安装并正在运行实例不会出现在托管节点列表
IAM 实例角色附加 AmazonSSMManagedInstanceCore命令下发失败,状态为 AccessDenied 或 Not available
网络连通性可访问 SSM、EC2Messages、SSMMessages 端点实例显示离线或长时间无响应

如果你的目标是减少 SSH 或 RDP 的使用频率,那么推荐优先走 Systems Manager,而不是继续依赖堡垒机手动维护。对于没有公网 IP 的私网 EC2,这套方式更适合。

准备工作:账号、权限、网络和实例前置条件

账号与权限要求

控制台操作账号至少需要以下能力:查看 EC2、创建或修改 IAM Role、使用 Systems Manager、查看 CloudWatch Logs。若由运维团队统一管理,建议为操作人员单独分配最小权限策略,而不是直接使用管理员账户。

所需资源清单

  • 至少 1 台 EC2 实例,建议先用测试环境验证
  • 一个可绑定到 EC2 的 IAM Role
  • Systems Manager 可用区域
  • 若实例无公网访问能力,需要配置 VPC Interface Endpoint
  • 可选:CloudWatch Logs 日志组,用于保存命令输出

网络前置条件

很多人误以为 EC2 自动化运维必须开放 22 或 3389 端口,实际上使用 Systems Manager 时,实例不需要暴露 SSH 或 RDP 到公网。真正要保证的是实例能访问以下服务端点。

服务用途必需性
ssmSystems Manager 主服务通信必需
ec2messages接收任务与状态消息必需
ssmmessages交互式消息通道必需
logs写入 CloudWatch Logs建议
s3部分补丁与文档分发建议

如果 EC2 在私有子网中,建议在对应 VPC 下创建 Interface Endpoint,并在安全组中允许实例到这些端点的 443 出站访问。很多“SSM 连不上”的问题,本质上都是端点或路由没配好。

步骤一:为 EC2 开启 Systems Manager 托管能力

1. 创建或检查 IAM 实例角色

进入 AWS 控制台,打开 IAM,选择“角色”,点击“创建角色”。受信任实体选择 EC2,权限策略至少附加 AmazonSSMManagedInstanceCore。如果你希望命令输出写入 CloudWatch Logs,另外补充日志写入权限。

角色创建完成后,进入 EC2 控制台,选择目标实例,在“操作”中点击“安全”或“IAM 角色”,把该角色关联到实例。

2. 检查 SSM Agent 状态

Amazon Linux 2 和大部分新镜像默认已安装 SSM Agent,但不代表一定在运行。你可以通过以下方式检查。

系统检查命令启动命令
Amazon Linux / RHEL / CentOSsystemctl status amazon-ssm-agentsystemctl enable --now amazon-ssm-agent
Ubuntusnap services amazon-ssm-agent 或 systemctl status amazon-ssm-agentsnap start amazon-ssm-agent 或 systemctl enable --now amazon-ssm-agent
Windows Server服务管理器中查看 Amazon SSM Agent启动该服务并设为自动

如果实例是自定义镜像导入,或历史环境较老,常见情况是 Agent 根本没装。此时不要先排查 IAM,优先确认 Agent 是否存在。

3. 在 Systems Manager 中确认实例上线

进入 Systems Manager 控制台,点击“Fleet Manager”或“Managed Nodes”。如果目标实例已经显示为托管节点且状态在线,说明自动化运维基础条件已经满足。

如果没有显示,按下面顺序排查更快:

  • 先看 IAM Role 是否已附加到实例
  • 再看 Agent 是否运行
  • 最后检查网络是否可访问 SSM 相关端点

步骤二:使用 Patch Manager 管理 EC2 补丁

补丁管理最容易出问题的地方,不是“怎么点”,而是“什么时候打、打哪些、失败后怎么回滚”。生产环境建议先从扫描模式开始,不要直接大规模安装。

1. 创建补丁基线或使用默认基线

进入 Systems Manager,选择“Patch Manager”,先查看当前区域默认 Patch Baseline。对于大多数 Linux/Windows 环境,可以先使用 AWS 预置基线做初始验证;如果你有严格维护窗口要求,再自定义批准规则。

参数建议填写说明
操作系统按实例系统分别创建不要把 Linux 和 Windows 混在一个基线里
自动批准延迟测试环境 0-2 天,生产环境 7-14 天避免补丁刚发布就进生产
严重级别优先 Critical、Security先保安全修复,再扩展普通更新
拒绝列表已知业务冲突补丁编号适合有兼容性要求的业务

2. 给实例打标签,避免误操作全量服务器

建议在 EC2 上至少打这几类标签:Env=dev/test/prod、App=xxx、PatchGroup=linux-web。后续补丁扫描、安装、命令下发都尽量基于标签,而不是手动选实例 ID。这样能减少漏选或误选。

3. 先执行补丁扫描

亚马逊云代金券 在 Patch Manager 中创建补丁操作时,Operation 先选择 Scan。目标选择标签,例如 PatchGroup=linux-web。并发数建议先控制在 10%-20%,错误阈值设置为 1 或 2 台,先观察结果。

扫描完成后,查看 Missing count、Installed count、Failed count。若缺失补丁过多,先在测试实例验证安装影响,再扩大范围。

4. 再执行补丁安装

确认测试通过后,把 Operation 改为 Install。对于生产实例,建议在维护窗口执行,并提前确认是否允许重启。Windows 更新更容易触发重启,Linux 内核补丁同样可能需要重启才能生效。

亚马逊云代金券 实操建议:

  • Web 集群先逐台滚动更新,不要同时更新全部节点
  • 数据库节点先做快照或备份,再执行安装
  • 和 Auto Scaling 绑定的实例,确认更新后是否会触发健康检查替换

步骤三:通过 Run Command 远程执行批量命令

当你需要批量改配置、重启服务、清理日志、同步脚本时,Run Command 比 SSH 一台台登录更高效。最常见的问题是命令执行了但没人知道输出在哪里,或者脚本在某些实例上失败却没发现。

1. 创建命令任务

进入 Systems Manager,点击“Run Command”,选择文档。Linux 常用 AWS-RunShellScript,Windows 常用 AWS-RunPowerShellScript。

目标实例建议仍然按标签选择,例如:

  • Env=prod
  • App=nginx
  • Role=web

2. 填写命令内容

下面是一个 Linux 维护示例:更新配置文件后重载 Nginx。

命令示例作用
cp /opt/config/nginx.conf /etc/nginx/nginx.conf覆盖配置
nginx -t先校验配置语法
systemctl reload nginx平滑重载服务

建议不要把“改配置”和“重启服务”写成一步不可回退的大脚本。更稳妥的方式是先校验,再执行重载。如果 nginx -t 失败,命令应直接退出,避免把错误配置推到线上。

亚马逊云代金券 3. 配置并发与错误阈值

这一步非常关键。很多用户命令执行失败,不是脚本错,而是一次打到了太多实例。

场景最大并发最大错误
测试环境50%5
中小规模生产10%1
核心业务集群1 台或 5%1

亚马逊云代金券 如果你的服务后面挂了负载均衡,建议先在目标组中摘除节点,再执行命令,验证正常后重新加入。这样比直接对在线实例操作更稳。

4. 保存输出日志

在 Run Command 中开启 CloudWatch Logs 或写入 S3。否则等命令完成后,很难统一追踪执行结果。尤其是脚本依赖路径、权限、环境变量时,日志是定位失败原因的唯一依据。

步骤四:用 State Manager 维护长期配置一致性

如果你反复执行相同命令,比如确保 CloudWatch Agent 持续安装、时区不被改动、某个配置文件始终存在,那么不要继续用临时命令,直接改用 State Manager。

1. 创建 Association

进入 Systems Manager,点击“State Manager”,创建 Association。可选择现成文档,例如安装 CloudWatch Agent,或者使用脚本型文档持续校验文件内容、服务状态、软件包版本。

亚马逊云代金券 2. 设定执行频率

适合做长期维护的配置有:

  • 固定日志采集配置
  • 统一时区、NTP 设置
  • 核心进程存活检查
  • 安全基线脚本
  • 定期同步业务脚本或证书文件

执行频率不宜过密。普通配置巡检可设置为 30 分钟到 24 小时一次;频率过高会增加 Agent 负载,也会让日志过多,影响排查效率。

3. 版本控制建议

配置脚本不要直接内嵌大量逻辑。建议把脚本放到代码仓库或 S3 中,文件名带版本号,例如 deploy-nginx-v3.sh,Association 只负责下发和执行。这样出现配置异常时,能快速回退到上一个版本,而不是在线改脚本。

亚马逊云代金券 不同使用场景的配置建议

用户类型推荐方案重点关注
个人开发者1-5 台 EC2,使用默认 Patch Baseline + Run Command先跑通补丁扫描和日志输出
企业用户按环境与业务标签分组,维护窗口分批更新审批流程、回滚方案、CloudWatch 监控
跨境业务按区域独立基线与维护窗口不同地域补丁窗口、网络延迟、端点可达性
网站应用Web 层滚动更新,负载均衡配合摘流Nginx/Apache 配置校验、发布顺序
数据库业务先快照备份,再补丁和配置维护重启窗口、IO 抖动、备份一致性

如果你的 EC2 还承担数据库角色,不建议把系统补丁、数据库参数修改、磁盘扩容放在同一维护窗口里处理。分开执行,故障面更小,定位也更快。

常见故障排查:为什么自动化运维任务执行不了

实例在 Systems Manager 中不显示

优先检查 IAM Role 是否正确附加,实例是否运行 SSM Agent,其次检查出站网络。私有子网中最容易漏的是没有配置 SSM 相关 VPC Endpoint。

Run Command 显示 Success,但业务没生效

通常是脚本执行了,但目标路径、systemd 服务名或运行用户不对。例如你以 root 下发命令,但应用实际读取的是其他目录配置。处理方法是把关键输出写入日志,并在命令中增加 pwd、whoami、ls 等验证步骤。

补丁安装后实例需要重启,业务中断

说明补丁策略没有和业务窗口对齐。对于生产实例,应先扫描,再确认是否包含内核或 Windows 重启型更新;必要时先做 AMI 或快照,并按可用区分批滚动执行。

命令部分实例成功、部分失败

多半不是脚本本身有问题,而是实例基础状态不一致,例如系统版本不同、磁盘满、Agent 版本不同、依赖包缺失。建议先用 Run Command 执行只读检查脚本,统一收集版本、磁盘、内存、服务状态,再做正式变更。

CloudWatch Logs 没有命令输出

检查 Run Command 是否启用了日志输出,实例角色是否有写日志权限,日志组是否存在,以及区域是否一致。很多人是在 us-east-1 执行任务,却去另一个区域找日志。

优化建议:让 EC2 自动化运维更稳、更省、更好排查

安全优化

  • 尽量用 Systems Manager 替代直接开放 22/3389
  • IAM 角色按最小权限配置,不要让实例拥有多余管理权限
  • 敏感脚本参数放入 Parameter Store,而不是硬编码在命令中
  • 补丁、命令、配置变更全部落日志,方便审计

性能优化

  • 大型补丁任务分批执行,避免同一时间大量实例下载更新
  • 命令脚本先做前置检查,减少失败重试
  • 对高 IO 服务器,补丁窗口避开备份和批处理任务

成本优化

  • 先对低频变更场景使用 Run Command,不必一开始就上复杂编排
  • 日志保留期按需设置,避免 CloudWatch Logs 长期堆积
  • 测试环境复用默认补丁基线,减少过度定制维护成本

稳定性优化

  • 所有批量任务先以标签锁定小范围实例验证
  • 生产变更统一通过维护窗口执行
  • 关键实例变更前做 EBS 快照或 AMI
  • 同类实例保持镜像、Agent 版本、目录结构一致

如果你当前正在评估 AWS EC2 自动化运维的落地顺序,最实用的实施路径是:先让实例全部接入 Systems Manager,再用 Run Command 做只读检查,之后上线 Patch Manager 扫描,最后把高频重复任务收敛到 State Manager。这样推进,风险最小,排障路径也最清晰。

如果需要更深入咨询了解可以联系全球代理上TG: @cloudcup  他们在云平台领域有更专业的知识和建议,他们有国际阿里云,国际腾讯云,国际华为云,aws亚马逊,谷歌云一级代理的渠道,微软云开户充值。oss防风控上传加密系统。客服1V1服务,支持免实名、免备案、免绑卡。开通即享专属VIP优惠、充值秒到账、官网下单享双重售后支持。
Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系