千家信息网

怎么利用AWS Serverless服务Lambda来实现定时开关机

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要介绍"怎么利用AWS Serverless服务Lambda来实现定时开关机",在日常操作中,相信很多人在怎么利用AWS Serverless服务Lambda来实现定时开关机问题上存在疑惑,
千家信息网最后更新 2024年11月23日怎么利用AWS Serverless服务Lambda来实现定时开关机

这篇文章主要介绍"怎么利用AWS Serverless服务Lambda来实现定时开关机",在日常操作中,相信很多人在怎么利用AWS Serverless服务Lambda来实现定时开关机问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么利用AWS Serverless服务Lambda来实现定时开关机"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、什么是AWS Lambda

AWS Lambda 是一项计算服务,可使您无需预配置或管理服务器即可运行代码。您只需按消耗的计算时间付费 - 代码未运行时不产生费用。借助 AWS Lambda,您几乎可以为任何类型的应用程序或后端服务运行代码,而且无需执行任何管理。AWS Lambda 在可用性高的计算基础设施上运行您的代码,执行计算资源的所有管理工作,其中包括服务器和操作系统维护、容量预置和自动扩展、代码监控和记录。目前支持 Node.js、Java、C# 和 Python等语言。

二、场景描述

很多时候,对于测试和开发实例,为了节省花费,我们通常会选择设置定时开关机。实现定时开关机的方式有很多:

1. AWSCLI + Crontab

2. AWS Lambda + Cloudwatch Event

3. 结合AWS API编写程序(支持的语言C#,Python,Java等)

4. 第三方开发好的软件

在今天我们主要介绍使用AWS Lambda和Cloudwatch Event来实现定时开关机.

三、原理分析

在这个案例中,我们主要创建两个AWS Lambda函数(基于Python函数)来定时开机和关机,同时,创建CloudWatch Events去触发,实现每天晚上关机和早上开机的功能。

四、AWS Lambda 配置

1. 打开AWS Lambda 控制台,选择"创建AWS Lambda函数"(第一次使用AWS Lambda需要需要选择立即开始使用),在选择函数界面,选择"空白函数"

2. 配置触发器界面,直接选择下一步;

3. 配置函数界面,需要配置相关Lambda函数信息:

名称:"StopEC2Instances"

描述:"stops EC2 instances every day at night".

语言:Python 2.7.

4. 在Lambda 函数代码编辑框,复制如下信息:

import boto3

# Enter the region your instances are in, e.g. 'us-east-1'

region = 'XX-XXXXX-X'

# Enter your instances here: ex. ['X-XXXXXXXX', 'X-XXXXXXXX']

instances = ['X-XXXXXXXX']

def lambda_handler(event, context):

ec2 = boto3.client('ec2', region_name=region)

ec2.stop_instances(InstanceIds=instances)

print 'stopped your instances: ' + str(instances)

5. Lambda 函数处理程序和角色,选择"自定义角色",会弹出新的界面 ;

6. 在创建IAM角色界面,角色选择"自定义IAM角色",角色名字,写"lambda_start_stop_ec2"或者其他,

7. 在查看策略文档里main,复制如下策略:

{

"Version": "2012-10-17",

"Statement": [

{

"Effect": "Allow",

"Action": [

"logs:CreateLogGroup",

"logs:CreateLogStream",

"logs:PutLogEvents"

],

"Resource": "arn:aws:logs:*:*:*"

},

{

"Effect": "Allow",

"Action": [

"ec2:Start*",

"ec2:Stop*"

],

"Resource": "*"

}

]

}

8. 选择允许.

9. 直接点击"下一步",创建函数即可。

11. 重复上面的步骤创建启动实例的函数,代码如下:

import boto3

# Enter the region your instances are in, e.g. 'us-east-1'

region = 'XX-XXXXX-X'

instances = ['X-XXXXXXXX']

def lambda_handler(event, context):

ec2 = boto3.client('ec2', region_name=region)

ec2.start_instances(InstanceIds=instances)

print 'started your instances: ' + str(instances)

备注:名字和描述自己填,角色选择之前创建的即可。

五、配置Cloudwatch Event

接下来,我们需要创建一个CloudWatch事件去触发我们的AWS Lambda函数。

1. 进入Cloudwatch控制台.

2. 选择事件,规则,点击"创建规则"

3. 事件源:选择"计划",Crontab表达式:00 23 * * ? *

即设置每晚23点关机实例,关于更多关于表达式的格式,可以参考:https://docs.aws.amazon.com/zh_cn/console/cloudwatch/events/createrule

4. 目标栏,选择"添加目标",目标类型选择"Lambda函数",选择我们创建的StopEC2Instances函数,点击配置详细信息,以下可以参考:

文件名:"StopEC2Instances"

描 述:"stops EC2 instances every day at night".

状 态:已启用

5. 点击创建规则即可.

按照同样的步骤,创建另外的规则在开启实例的配置。

到此,关于"怎么利用AWS Serverless服务Lambda来实现定时开关机"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0