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