AWS EC2定时开关机(lambda+cloudwatch实现)

这篇具有很好参考价值的文章主要介绍了AWS EC2定时开关机(lambda+cloudwatch实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

        在使用AWS云平台的过程中,不免会使用到EC2实例的按需收费模式用于部署测试和开发环境等无需24小时运行的情况。这时为了更加经济,希望每天可以设置EC2只在白天运行,晚上则关机减少费用。

        在这里我们以设置EC2实例在每周一至周五的9:00-20:00运行,其余时间关机。即需要实现每天的20:00关闭实例,早上9:00开启实例。

一、创建IAM角色

        创建IAM角色,打开IAM-角色-创建角色,可信实体选择AWS服务,使用案例选择Lambda,点击下一步

aws lambda 定时触发,aws,云计算

         点击创建策略

aws lambda 定时触发,aws,云计算

点击json格式,输入以下内容,点击下一步

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

aws lambda 定时触发,aws,云计算

        点击下一步,标签可以不用写,继续点击下一步审核

        策略名称和描述可以任意填写,我这里策略名称填写了【LambdaStartStopEC2instances】然后点击创建策略

aws lambda 定时触发,aws,云计算

         回到创建角色界面,刷新策略,勾选我们刚刚创建的策略,然后下一步

aws lambda 定时触发,aws,云计算

        角色的名称可以任意填写,我这里填写的是【EC2_instance_start_stop】,点击创建。

aws lambda 定时触发,aws,云计算

二、创建Lambda函数

        打开lambda控制台,点击控制面板右上角的创建函数按钮,创建第一个关闭EC2实例的函数。

aws lambda 定时触发,aws,云计算

        选择从头开始创建,函数名称任取,我的是【StopEC2Instances】

        运行时函数编写语言选择Python,版本看情况,我这里是【Python 3.9】

        更改默认执行角色选择【使用现有角色】,从下面的框中选择我们刚刚在IAM中创建的角色【EC2_instance_start_stop】,然后点击创建函数

aws lambda 定时触发,aws,云计算

        代码中输入以下内容,注意region填自己EC2所在的区域,我这里是东京(ap-northeast-1),instances里面填EC2实例的ID,有多个EC2的话,使用","逗号分开。

        修改完成后点击【Deploy】保存。 

import boto3
region = 'ap-northeast-1'
instances = ['i-xxxxxxEC2实例ID1','i-xxxxxxEC2实例ID2']
ec2 = boto3.client('ec2', region_name=region)

def lambda_handler(event, context):
    ec2.stop_instances(InstanceIds=instances)
    print('stopped your instances: ' + str(instances))

aws lambda 定时触发,aws,云计算

        继续创建开启EC2的函数,函数名【​StartEC2Instances】

        运行时函数编写语言选择【Python 3.9】

        更改默认执行角色选择【使用现有角色】,从下面的框中选择我们刚刚在IAM中创建的角色【EC2_instance_start_stop】,然后点击创建函数

aws lambda 定时触发,aws,云计算

         代码中输入以下内容,注意region填自己EC2所在的区域,我这里是东京(ap-northeast-1),instances里面填EC2实例的ID,有多个EC2的话,使用","逗号分开。

        修改完成后点击【Deploy】保存。 

import boto3
region = 'ap-northeast-1'
instances = ['i-xxxxxxEC2实例ID1','i-xxxxxxEC2实例ID2']
ec2 = boto3.client('ec2', region_name=region)

def lambda_handler(event, context):
    ec2.start_instances(InstanceIds=instances)
    print('started your instances: ' + str(instances))

aws lambda 定时触发,aws,云计算

 三、CloudWatch创建规则

        这里我们选择使用AWS新的入口,打开AWS EventBridge服务,点击Scheduler菜单中的【计划】,然后点击创建计划。

aws lambda 定时触发,aws,云计算

         计划名称输入【EverydaystopEC2instances】aws lambda 定时触发,aws,云计算

        发生次数选择【周期性计划】

        计划类型选择【基础cron的计划】

        Cron表达式按需填写,我这里是设置的每周一至周五的晚上8点关机,所以分钟为0,小时为20,月为*,周中日MON-FRI,年*,月中日和周中日填一个另外一个就会自动变成?,这样就填好了表达式

        弹性时间可以按需选择,我这里直接就关闭了

aws lambda 定时触发,aws,云计算

         注意:下面时间范围这里我选择的是上海时间,即指上海时间的20点,选择不同时区上面的时间就不一样了,这里有不同的需求可以按需选择

        然后点击下一步

aws lambda 定时触发,aws,云计算

         常用API里选择【AWS Lambda Invoke】

aws lambda 定时触发,aws,云计算

        Lambda函数选择我们创建的【​StopEC2Instances】,然后点击下一步

aws lambda 定时触发,aws,云计算        重试策略我直接关闭了(PS:就关个机要啥重试)

        权限这里直接就默认的【为此计划创建新角色】就好了,然后点击下一步

aws lambda 定时触发,aws,云计算

        下一步就是检查自己的配置,核对无误后拉到最下面点击创建计划即可

aws lambda 定时触发,aws,云计算

        这里就创建好了第一个关机的计划了,我们继续创建下一个开机的计划。

        返回计划面板,点击创建计划

        计划名称【EverydaystartEC2instances】

        计划模式这里还是【周期性计划】-【基于cron的计划】,Cron表达式里,我们填写开机时间为每周一至周五的每天早上9点整。确认下面的时区同样是上海时间后,点击下一步。

aws lambda 定时触发,aws,云计算

         常用API里选择【AWS Lambda Invoke】,Lambda函数选择我们创建的【​StartEC2Instances】,然后点击下一步

aws lambda 定时触发,aws,云计算

        同样权限这里还是创建新角色,默认就行,然后下一步

aws lambda 定时触发,aws,云计算

        核对信息无误后点击创建计划。

        至此,EC2实例的自动开关机就实现了,如果要验证是否成功的话,可以将计划的关机和开机时间调整为几分钟后,然后等到时候看下EC2实例的状态即可验证。

        另外,在EC2实例中建议做好需要启动服务的开机自启动,这样每天早上实例开启后就可以自行启动服务,无需再手动去进行服务启动调整之类的工作了。文章来源地址https://www.toymoban.com/news/detail-675840.html

到了这里,关于AWS EC2定时开关机(lambda+cloudwatch实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AWS(EC2)助我实现项目管理应用上云

    AWS(EC2)助我实现项目管理应用上云 公司内部使用项目管理软件- 禅道 来管理研发生产流程,从需求的录入,到任务的分配和拆分指派,再到bug管理等一系列的研发生产流程。 但是这套项目管理软件是部署在内网,由于疫情影响,公司有部分人员需要居家办公,导致日常工

    2024年01月16日
    浏览(39)
  • 【AWS入门】AWS Auto Scaling根据EC2负载的情况伸缩EC2实例

    Auto Scalling:根据EC2负载的情况伸缩EC2实例,配置方式有两种,一种时启动模板(推荐),一种时启动配置(即将下线,不推荐),接下来我们就来尝试以下用启动模板的方式来配置Auto Scaling。 EC2 启动模板 创建启动模板 设置资源标签:以后扩展的所有EC2实例,名字都会叫d

    2024年02月11日
    浏览(46)
  • 【aws】| 04 | AWS EC2 实例磁盘空间扩容

    进入控制台,选择 EBS - Volumes -Action - Modify Volume 首先使用lsblk可以查看附加到实例上的所有存储卷的真实size以及分区情况 注: 挂载在根目录上的是EBS存储卷上的分区而不是这个卷,而且卷被扩容但是分区大小不变依旧不能扩容。 xvda是一个存储卷,xvda1是存储卷上的一个分区

    2024年02月11日
    浏览(72)
  • AWS EC2实例管理

    针对近期学习的AWS EC2实例进行知识归纳与总结,欢迎家人们指正错误!ψ(`∇´)ψ AWS:亚马逊网络服务平台(亚马逊云服务平台)(Amazon Web Service) 英文全称:Amazon Elastic Compute Cloud 中文全称:亚马逊弹性计算云,又名“实例(instance)” 通俗理解:实例是 AWS 云中的 虚拟服

    2024年02月04日
    浏览(54)
  • AWS CDK安装到AWS EC2 Linux 2

    AWS CDK安装到AWS EC2 Linux 2,并记录过程。 以上报·epel·提供的·libuv·版本过低,关闭·epel·的·YUM·源, 以上报没找到GLIBC库,卸载版本20.10.0,安装版本16.0.0: 碰到了没有找到Python3的问题, 由于我使用的是Python3.8,需要创建一个软链接: aws-cdk-lib 2.116.0 AWS: Getting started with th

    2024年02月03日
    浏览(78)
  • AWS——01篇(AWS入门 以及 AWS之EC2实例及简单实用)

    什么是AWS? 好,我就截这么多,更多的自己搜搜看…… 官网地址如下: https://aws.amazon.com/cn/. 注册时,如果有谷歌邮箱,最好使用谷歌邮箱,如下: 按照提示注册成功之后,登录即可使用 随便点点,貌似看到了点东西 继续…… 3.1.1 入口 如下: 3.1.2 设置名称 + 选择服务 如

    2024年02月14日
    浏览(60)
  • AWS EC2的SSM配置(AWS云中的跳板机)

    开发人员需要访问AWS云中私有子网的数据库服务等,都需要通过EC2进行SSH隧道代理。这里假设本地已经有一款稳定优秀的SSH客户端工具,并且假设已经会熟练使用SSH的隧道代理。 搜索找到EC2服务,如下图: 点击“启动实例”,开始EC2实例创建,如下图: 填入名称后,选择默

    2024年02月02日
    浏览(43)
  • 【AWS】如何用SSH连接aws上的EC2实例(虚拟机)?

    目录 0.环境 1.连接结果示例 2.SSH连接思路 3.具体步骤 1)安装并运行ssh服务 2)启动ssh服务 3)在AWS上找到正在运行的EC2实例,并且根据提供的ssh连接语句进行连接 windows 11 64位 前提: 有aws账户(IAM),已经存在一个EC2实例(虚拟机) 首先,需要有AWS账户以及正在运行的EC2实

    2024年02月10日
    浏览(42)
  • AWS实操-EC2-创建购买linux(centos)EC2服务器

    启动实例 在AWS EC2控制界面,进行单击启动实例以创建和配置虚拟机。 配置实例 在该界面进行配置服务器名称、选择AMI镜像等。 选择浏览其他AMI,选择centos镜像,下文以centos7.6为例 在搜索框输入对应系统版本,建议选择经过验证提供商的AMI镜像 选择合适业务的EC2配置 选择

    2024年04月16日
    浏览(68)
  • 设置 AWS EC2 允许使用密码登录

    AWS 的服务器默认是使用秘钥进行登录,如果想要使用密码进行登录,可进行如下设置 1、先使用秘钥登录(安装aws网站上的教程即可) 2、登录之后为 root 创建密码 系统会让你输入两次密码,一定要注意了。 3、切换为root用户 4、编辑 sshd_config 并做修改 将  PasswordAuthenticati

    2024年02月11日
    浏览(101)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包