【SCF VS Code 实践:CVM定时操作】

  • 2019 年 10 月 8 日
  • 笔记

一 背景

说实话已经使用SCF一段时间了,之前写过一篇Serverless初探,最近看到出了Tencent Serverless Toolkit for VS Code的IDE插件,刚好借此使用下,相较于之前没有IDE插件,编码在本地,但是debug非常繁琐,需要上传代码到云端控制台操作,现在有了IDE插件从本地编码测试上传部署一条路,快速体验下此为SCF添翼的神器。

二 Demo实例

2.1 相关软件安装配置

2.1.1 软件安装

  • VS Code :在 VS Code下载页面 下载对应的 IDE 并安装,其版本要求为 v1.33.0 +

2.1.2 插件安装

image.png

2.1.3 scf cli配置

  • Sci 安装
pip install scf
  • 配置腾讯云信息
image.png

2.2 项目配置

2.2.1 打开本地文件夹保存scf项目

2.2.2 拉取demo源码

image.png
https://github.com/TencentServerless/scf_vscode_demo1.git 

2.2.3 修改源码

image.png

修改index.html文件内容

API Gateway 网关响应请求时间模版

image.png

2.2.4 函数调试

API Gateway 网关响应请求时间模版

image.png

2.2.5 上传函数

image.png

2.3 测试

2.3.1 获取url

image.png

2.3.2 浏览器访问测试

https://service-rvj6zzgt-1259570274.ap-shanghai.apigateway.myqcloud.com/release/scf_v1

image.png

三 CVM定时开关机实战

3.1 项目背景

目前有客户有需求对数量众多的测试环境想通过非工作时间进行关机操作,同时腾讯提供关机不收费的CVM操作,一定程度可以节省IT开支,每天早上工作时间提前进行开机,如此如果人工来操作重复周期性的操作显然非常不合适,但是共有云目前没有提供这种对服务器定时开关机操作的产品功能,只能利用其API来进行,但是需要一台具备公网能力的服务器来发起API调用请求,此时刚好利用Serverless的 Tencent Serverless Toolkit for VS Code小试牛刀,本次示例利用腾讯无服务器云函数(CFS)简单示例下Serverless的一小部分功能。

之前由于没有IDE,将程序部署到CFS后运行不便与调试,现在有了神器Tencent Serverless Toolkit for VS Code,简单方便的本地配置,快速拉取云端函数并可以在本地模拟COS,CMQ,API网关等出发事件运行还书,本地化的开发,调试,可谓补齐了CFS不便于代码上传调试的缺点,利用此插件可在本地快捷调试代码,一键上传程序,为CFS如虎添翼。

3.2 项目编写

3.2.1 根据模版创建项目

image.png

3.2.2 填写项目名称

填写项目名称完成项目创建

image.png

3.2.3 了解项目结构

在项目模版中,主要关注index.py 和template.yaml

  • Index.py 为业务逻辑代码
  • Template.yaml 为腾讯云SCF配置相关,如下为我的定时任务配置

为提高安全性其中由于使用的了腾讯云的secretid/secretkey,将其作为变量放置在配置中,业务代码从配置中获取,

其中也配置了超时时间以及定时cron

Resources:    default:      Type: TencentCloud::Serverless::Namespace      cvm_oper:        Properties:          CodeUri: .          Description: cvm oper          Environment:            Variables:              secretid: AKIDZyGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx              secretkey: kFUTDkxxxxxxxxxxxxxxxxxxxxxxxx          Events:            stop_cvm:              Properties:                CronExpression: 0 59 11 * * MON-FRI *                Enable: true              Type: Timer          Handler: index.main_handler          MemorySize: 128          Runtime: Python3.6          Timeout: 10          VpcConfig:            SubnetId: ''            VpcId: ''        Type: TencentCloud::Serverless::Function
image.png

3.3 编写代码

3.3.1 代码程序

在此我利用腾讯云的CVM的SDK进行了云服务器的停止与开机操作,在此简单实例下cvm启动

image.png

其中有event,正式环境可以为其传入自己业务需求的参数来处理具体业务逻辑。

3.3.2 本地测试

在本地IDE进行运行测试

image.png

查看以及运行成功,服务器也正常启动

image.png

3.4 上传项目到云端

3.4.1 上传到云端进行测试

image.png

3.4.2 云端查看项目

image.png
image.png
image.png

3.5 云端测试

image.png

3.6 查看运行日志

image.png

至此我们以及利用Tencent Serverless Toolkit for VS Cod完成了简单的项目编写部署,在此只是抛砖引玉,实际代码需要考虑到传入参数,多项目协调部署等。

四 思考

从裸金属物理服务器到虚拟化平台,再到云服务器,现在到容器技术,Serverless以函数为扩展单位,虚拟化运行时环境(Runtime)。是现有计算资源的最小单位,具有完全自动、一键部署、高度可扩展等特点。开发者在构建和运行应用时无需管理服务器等基础设施,应用被解耦为细粒度的函数,函数是部署和运行的基本单位。用户只为实际使用的资源付费。

拥有了Tencent Serverless Toolkit for VS Code,对于SCF如鱼得水,本地化代码编写测试上传部署一条龙,配置也托管在代码中,无需在登录云平台进行配置,config as code模式大大提升了SCF的效率,简化操作,适用于开发人员。

在此只是最简单的试用了一下CFS,其更强大的功能及优势在云计算的潮流下后期会越显明显,适用场景众多,业务进行拆分,分工更加精细。截取官网的一张最常用的移动与WEB应用图,业务各模块分离,函数具有弹性伸缩,前端入口为各业务模块的API网关,配合CDB/COS完成总体架构。

参考链接: