温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-08-30 19:10:58 来源:亿速云 阅读:165 作者:chen 栏目:云计算

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI