千家信息网

Lambda,AWS和Python的自动化管理操作 - 自动开机和关机

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,上一篇豆子已经配置在PyCharm里面添加了boto3和pyboto3,因此写脚本的时候可以直接在自己的PyCharm里面编写。下面是一个例子遍历所有的region查找EC2,如果状态是开机,那就关掉
千家信息网最后更新 2026年11月02日Lambda,AWS和Python的自动化管理操作 - 自动开机和关机

上一篇豆子已经配置在PyCharm里面添加了boto3和pyboto3,因此写脚本的时候可以直接在自己的PyCharm里面编写。

下面是一个例子遍历所有的region查找EC2,如果状态是开机,那就关掉;或者倒过来也可以写成 如果是关机状态,就开机。

import boto3def lambda_handler(event, context):    # Get list of regions    ec2_client = boto3.client('ec2')    regions = [region['RegionName']               for region in ec2_client.describe_regions()['Regions']]    # Iterate over each region    for region in regions:        ec2 = boto3.resource('ec2', region_name=region)        print("Region:", region)        # Get only running instances        instances = ec2.instances.filter(            Filters=[{'Name': 'instance-state-name',                      'Values': ['running']}])        #Stop the instances        for instance in instances:            instance.stop()            print('Stopped instance: ', instance.id)        # instances = ec2.instances.filter(        #     Filters=[{'Name': 'instance-state-name',        #               'Values': ['stopped']}])        #        # for instance in instances:        #     instance.start()        #     print('Start instance: ', instance.id)if __name__ == '__main__':    lambda_handler(0,0)

执行一下是工作的

C:\Users\yuan\PycharmProjects\aws\venv\Scripts\python.exe C:/Users/yuan/PycharmProjects/aws/StopInstance.pyRegion: eu-north-1Region: ap-south-1Region: eu-west-3Region: eu-west-2Region: eu-west-1Region: ap-northeast-2Region: ap-northeast-1Region: sa-east-1Region: ca-central-1Region: ap-southeast-1Region: ap-southeast-2Stopped instance:  i-0bb70cc9666ce2af3Region: eu-central-1Region: us-east-1Stopped instance:  i-00e9dc7c254dbe497Region: us-east-2Region: us-west-1Region: us-west-2

然后我们在aws的Lambda里创建一个新的函数, 这里我已经自定义了一个role了,确保这个role可以对ec2有开机和关机的权限

IAM的权限如下所示:

{  "Version": "2012-10-17",  "Statement": [    {      "Effect": "Allow",      "Action": [        "logs:CreateLogGroup",        "logs:CreateLogStream",        "logs:PutLogEvents"      ],      "Resource": "arn:aws:logs:*:*:*"    },    {      "Effect": "Allow",      "Action": [        "ec2:DescribeInstances",        "ec2:DescribeRegions",        "ec2:StartInstances",        "ec2:StopInstances"      ],      "Resource": "*"    }  ]}

拷贝函数上来

接下来 在cloudwatch里面添加一个新的rule

创建向导,这里选择schedule,这里使用 cron的表达式,注意他是GMT的时间,因此需要自己和本地时间转换一下

写好之后他会有个友好的提示界面

完成创建

回到Lambda的界面, 可以看见他的触发器多了一个CloudWatch Events

等待执行之后,可以查看日志

也可以确认EC2 服务 的确关机了

函数 时间 权限 状态 界面 接下来 例子 向导 拷贝 日志 时候 脚本 表达式 触发器 豆子 上一 工作 提示 服务 选择 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司经营范围 厦门中拓互联网络科技有限公司 没上市的科技互联网公司 金融科技 互联网金融 上海致骋互联网科技 成都仁贤领冠互联网科技有限公司 互联网科技公司需要的职位 隆华科技工业互联网 华服互联网科技官网 千方科技属于互联网企业吗 青岛科技大学互联网大赛研究生 呼和浩特新华互联网科技学院 互联网新科技动漫ppt素材 深圳艾果互联网通讯科技 雨阳互联网卡科技有限公司 黑云互联网科技有限公司 兰石爱特工业互联网科技分公司 亚光科技低轨卫星互联网 山东蛋芒互联网科技有限公司 互联网科技创新方面的资料 中智农互联网科技 互联网下的科技发展 科技创新互联网企业 互联网科技美容 成都狮子座互联网科技 互联网科技公司名称 武汉健翔互联网络科技有限公司 荆州市昕露互联网络科技有限公司 畅思互联网科技 恒生科技互联网指数十大成分股
0