Lambda,AWS和Python的自动化管理操作 - 自动开机和关机
admin
2023-03-31 03:41:42
0

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

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

import boto3

def 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.py
Region: eu-north-1
Region: ap-south-1
Region: eu-west-3
Region: eu-west-2
Region: eu-west-1
Region: ap-northeast-2
Region: ap-northeast-1
Region: sa-east-1
Region: ca-central-1
Region: ap-southeast-1
Region: ap-southeast-2
Stopped instance:  i-0bb70cc9666ce2af3
Region: eu-central-1
Region: us-east-1
Stopped instance:  i-00e9dc7c254dbe497
Region: us-east-2
Region: us-west-1
Region: us-west-2

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

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

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": "*"
    }
  ]
}

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

拷贝函数上来

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

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

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

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

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

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

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

完成创建

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

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

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

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

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

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

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

相关内容

热门资讯

【第一资讯】“上海滩可以开挂吗... 有 亲,根据资深记者爆料上海滩是可以开挂的,确实有挂(咨询软件无需打开直...
韩国政府计划解除对朝鲜《劳动新... △韩国总统李在明韩国国家情报院、统一部等相关部门12月26日举行“特殊资料监管部门协商机制会议”, ...
终于懂了“新贝壳牛牛到底是不是... 网上科普关于“新贝壳牛牛有没有挂”话题很是火热,小编也是针对新贝壳牛牛作*弊开挂的方法以及开挂对应的...
今日重大通报“欢乐情怀可以开挂... 家人们!今天小编来为大家解答欢乐情怀透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...
华为:全球悬赏300万元解决A... 来源:市场资讯 (来源:观察者网) 12月26日,@华为中国 发布消息,华为第六届奥林帕斯奖正式启动...
终于明白“今日花牌到底有挂吗?... 终于明白“今日花牌到底有挂吗?”(其实是有挂)您好,今日花牌这个游戏其实有挂的,确实是有挂的,需要了...
安徽大学2025国际青年学者论... 12月25日,以“安栖梦想 大道同行”为主题的安徽大学2025国际青年学者论坛如期举行。 本次论坛由...
玩家最新攻略“陕西欢喜到底有挂... 家人们!今天小编来为大家解答陕西欢喜透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...
【第一消息】“上海敲麻到底有挂... 家人们!今天小编来为大家解答上海敲麻透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很...
【第一财经】“点点四川长牌真的... 有 亲,根据资深记者爆料点点四川长牌是可以开挂的,确实有挂(咨询软件无需...