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

如何自动化启停EC2实例并运行S3存储的Python脚本后自动关机

EC2 按需启停+启动自动执行S3脚本操作方案

前提:你已完成EC2 IAM角色配置,具备S3对象读取权限。


1. 按需自动化启停EC2实例实现

按需选择以下两种场景的方案:

1.1 固定时间定时启停

使用EventBridge配置调度规则即可:

  • 进入EventBridge控制台,新建规则,选择调度类型,按需求配置cron表达式(比如每天9点启动、18点停止)
  • 目标选择AWS API 调用,分别创建启停两条规则,对应StartInstances和StopInstances接口,填入你的EC2实例ID后保存规则即可生效。

1.2 触发式按需启停(无固定时间,随业务需求触发)

通过Lambda函数封装启停逻辑,可对接任意业务触发源(API请求、S3事件、内部系统触发等):

  • 新建Python运行环境的Lambda函数,核心代码参考:
import boto3
ec2 = boto3.resource('ec2')
INSTANCE_ID = "替换为你的EC2实例ID"

def lambda_handler(event, context):
    action = event.get("action", "start")
    if action == "start":
        ec2.Instance(INSTANCE_ID).start()
        return {"status": "instance started"}
    elif action == "stop":
        ec2.Instance(INSTANCE_ID).stop()
        return {"status": "instance stopped"}
  • 为Lambda执行角色添加ec2:StartInstances、ec2:StopInstances权限,即可通过调用Lambda函数触发EC2启停。

2. EC2启动自动拉取S3脚本执行,完成后自动停机

通过EC2原生的用户数据(User Data)功能实现,无需额外安装第三方工具:

  1. 停止目标EC2实例,进入实例设置页,选择编辑用户数据,填入以下脚本(替换占位符内容):
#!/bin/bash
# 进入自定义工作目录
mkdir -p /opt/s3_script_runner
cd /opt/s3_script_runner
# 拉取S3中的Python脚本,替换为你的S3对象路径
aws s3 cp s3://<你的S3桶名>/<你的脚本路径>/task.py ./
# 执行Python脚本
python3 task.py
# 脚本执行完成后自动关机,无论脚本执行成功/失败都会执行
shutdown -h now

提示:如果使用非Amazon Linux系统镜像,请提前在镜像中安装好aws cli、Python3及脚本依赖的第三方库,避免执行报错。

  1. 为EC2关联的IAM角色补充ec2:StopInstances权限,保证实例有权限执行关机操作。
  2. 启动实例测试即可,实例启动后会自动执行用户数据逻辑,脚本运行完成后自动停止,不会产生冗余费用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:06:04