[腾讯云]无服务器云函数SCF体验Serverless(公测中)

2018年9月12日14:12:51 发表评论 2,062 views
本文最后更新于2018年11月13日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!

什么是无服务器Serveeless

Serverless并不代表没有了服务器,只是用户不再需要关心这些底层资源了。当然,这也意味着用户无法登录服务器,并且也不需要想办法优化它。开发者只需关心最核心的代码片段,跳过复杂的、无聊的其他工作。这些代码完全由事件触发(event-trigger),平台根据请求自动平行调整服务资源,拥有近乎无限的扩容能力,空闲时则没有任何资源在运行。代码运行无状态,可以轻易实现快速迭代、极速部署。

腾讯云无服务器云函数(Serverless Cloud Function)可以实现在没有购买和管理服务器时仍能运行代码。只需要进行核心代码的编写及设置代码运行的条件,代码即可在腾讯云基础设施上自动、安全地运行,是许多场景下理想的计算平台。

体验: 使用 SCF 定时备份数据库到 COS

本代码实操教程假设以下情况:

  • 需要对数据库定期的导出备份;
  • 希望把备份结果放到 COS 以便于随时下载使用

一 准备mysqldump工具(推荐基于Linux环境)

1、创建项目根目录

2、配置根目录环境

以操作系统 Linux - geneic,操作系统版本 x86,64-bit 为例,下载 tar.gz 压缩包并存储在本地。

下载完成后,解压压缩包,可以看到解压后的文件夹内包含有 bin、lib 等目录;而我们要找到的 mysqldump 工具就在 bin 目录下。

同时可以看到 bin 目录下还有 libcrytpo.so.1.0.0 和 libssl.so.1.0.0 两个动态库。这两个库也是工具在运行时所要依赖的库,但在 bin 下的这两个文件实际为文件链接,实际指向分别是 ../lib/libcrypto.so.1.0.0 和 ../lib/libssl.so.1.0.0,因此这两个真实文件是在 lib 目录下。

因此,为了确保 mysqldump 工具可以运行成功,我们将 bin 目录下的 mysqldump 文件拷贝到我们提前准备的项目根目录下,并给予执行权限

由于项目目录下的 mysqldump 工具作为二进制程序,需要在云函数的环境中运行,因此需要具有可执行权限,需要在 Linux 或 Mac 环境下为此文件赋予可执行权限后再打包,因此建议在 Linux 或 Mac 环境下执行打包。

我们可以将项目目录放置到 Linux 或 Mac 环境下后,通过在项目目录下执行 chmod +x mysqldump 命令,为 mysqldump 工具附加上可执行权限。

同时将 lib 目录下的 libcrypto.solibcrypto.so.1.0.0libssl.solibssl.so.1.0.0 四个文件也拷贝到项目根目录下。

拷贝完成后的目录如下图:

二 部署云函数

1、编写Python脚本

在项目根目录下创建 index.py 文件,并在文件内输入如下内容并保存

2、安装python依赖包

在代码中,我们使用到了 COS 的 v5 版本 sdk 进行备份后的文件上传操作,因此我们需要安装好依赖便于脚本调用。我们可以在项目根目录通过执行 pip install cos-python-sdk-v5 -t . 命令,来将 COS 的 Python sdk 以及相关依赖安装到项目目录中。

安装完成后,项目根目录文件如下图所示:

3、云函数打包及创建

在完成以上几部操作以后,项目目录里就有了 mysqldump 工具及依赖的 so 库,有了 cos sdk依赖包,以及我们的入口函数文件 index.py。接下来就需要将项目文件打包为 zip 格式以便上传至云函数,完成函数创建。

 

4、将打包好的zip文件上传至腾讯云COS

通过如上步骤创建的 zip 包,由于体积稍大,需要通过对象存储 COS 的方式上传。

三 创建云函数并测试

1、进入腾讯SCF无服务器云函数

2、在与COS相同地域,建立函数服务

3、选择通过COS上传zip包

4、触发方式

可手动添加触发方式,如定时等,实现定时执行该函数(此处跳过,不做配置)

5、最后,点击完成,完成云函数的部署

6、点击“测试”

7、点击“新建模板”

参考下面的模板,填入相关信息,其中:

dbhost:需要备份数据库的IP地址,支持CDB及RDS

dbport:需要备份数据库的连接端口

dbuser:数据库用户

dbpwd:数据库密码

dbname:数据库名

secretid:云API秘钥ID,获取方法见: 云API秘钥获取

secretkey:云API秘钥KEY

cosregion:COS所在地域

cosbucket:bucket名

8、点击“测试运行”

结果如下:

9、查看COS bucket

后记

完成函数创建后,我们就可以测试函数的运行情况,并完成最终的定时触发配置。

  • 通过控制台右上角的测试按键,可以直接触发函数的运行。
  • 通过函数的输出日志,可以查看代码的运行情况,检查 dump 文件是否生成正常,是否成功上传到 COS 存储桶中。
  • 同时也可以到对应的备份存储桶中,查看生成的文件,检查是否数据正确,备份正常。

确认函数测试运行正常后,可以在触发器中,为函数新增一个定时触发器。我们可以根据自身需要,配置为每天,或每 12 小时,或每月的指定时间运行。定时触发器可以按 crontab 格式编写触发时间,既可以按一定时间周期,也可以指定具体时间运行。

在本代码实操示例教程中,我们通过使用 mysqldump 工具,以及对象存储 COS 的 SDK,实现了数据库的按时备份能力。通过使用云函数,我们无需使用云服务器以及配置 crontab 脚本,就可以实现高可靠的定时运维能力。云函数,以及云函数的定时触发器,在运维过程中可以被广泛使用,实现例如备份、检查、告警、同步等各种能力。

 

  • 微信小程序
  • 关注微信小程序
  • weinxin
  • 微信公众号
  • 关注微信公众号
  • weinxin
Honest1y

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: