You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EC2实例自动关机后如何设置自动启动?含staging实例问题

解决AWS EC2实例自动关机后的自动启动方案及根源排查建议

嘿,针对你遇到的EC2实例(包括staging环境)莫名自动关机的问题,我来分享几种AWS官方提供的自动启动方案,同时也给你一些排查关机根源的思路——毕竟先解决“为什么关机”才能彻底避免反复踩坑嘛!

一、自动启动意外关机实例的可行方案

1. EC2 自动恢复(Auto Recovery)

这个方案专门针对硬件故障或AWS系统问题导致的实例停机,会自动在健康的硬件上重启你的实例(保留原实例ID、IP、存储等配置)。

  • 设置方式:
    • 控制台操作:选中目标实例 → 右键「实例设置」→ 「启用自动恢复」
    • CLI命令:
      aws ec2 modify-instance-attribute \
        --instance-id i-xxxxxxxxxxxxxxxxx \
        --attribute "disableApiTermination" --value "false" \
        --attribute "instanceInitiatedShutdownBehavior" --value "stop"
      
    注:自动恢复仅在实例的系统状态检查失败时触发,适合硬件层面的故障场景。

2. EventBridge(原CloudWatch Events)+ Lambda 函数

这是最灵活的方案,不管什么原因导致实例变为stopped状态,都能自动触发启动操作,完全自定义逻辑。

  • 步骤:
    • 创建Lambda函数:使用Python的boto3库编写启动逻辑,示例代码:
      import boto3
      
      ec2_client = boto3.client('ec2')
      
      def lambda_handler(event, context):
          # 可以从事件中获取触发的实例ID,或者指定固定实例ID
          instance_ids = [event['detail']['instance-id']]
          ec2_client.start_instances(InstanceIds=instance_ids)
          return f"已启动实例: {instance_ids}"
      
    • 创建EventBridge规则:
      • 事件模式选择「EC2实例状态变更」,过滤条件设置为状态为stopped
      • 将目标配置为刚才创建的Lambda函数
        优势:可以批量处理多个实例,还能扩展逻辑(比如发送告警通知后再启动)。

3. 自动缩放组(Auto Scaling Group, ASG)

如果你的实例是部署在ASG中的,ASG会自动维持你设置的「期望实例数」——只要实例变为不健康状态(包括stopped),ASG就会自动替换或重启实例。

  • 关键配置:
    • 确保ASG的健康检查包含EC2实例状态检查(默认开启)
    • 可以设置「实例重启策略」,针对不健康实例优先尝试重启,而非直接替换
      适合需要高可用的业务场景,不仅能自动启动,还能应对实例终止的情况。

二、先排查自动关机的根源!

自动启动只是临时解决方案,找到关机原因才能一劳永逸:

  • 查看系统日志/控制台输出:在EC2控制台选中实例 → 「监控」→ 「获取系统日志」「获取控制台输出」,排查是否有内核错误、OOM(内存不足)、系统脚本异常等问题
  • 检查AWS账单状态:确认是否因为账户欠费导致实例被停机(AWS会在欠费时停止非关键实例)
  • 查看CloudTrail日志:搜索StopInstances或TerminateInstances API调用,确认是用户操作、第三方工具还是AWS服务触发的关机
  • 检查实例配置:确认实例的「实例启动时的关机行为」设置,以及用户数据中是否包含自动关机的脚本

内容的提问来源于stack exchange,提问作者josue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 20:42:36