python实现自动开机_Lambda,AWS和Python的自动化管理操作 - 自动开机和关机

下面是一个例子遍历所有的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有开机和关机的权限

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 服务 的确关机了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值