Serverless AI训练营:课时5:函数的调试与部署
课时5:函数的调试与部署
内容介绍
一、引入举例
二、函数计算及相关的开发工具
三、函数部署
一、引入举例
相对于来说,调试的部分是比较困难的,因为调试的本身就是Serverless架构的一大弱点。
引入:写代码为什么要有调试的过程呢?不调试行不行?
上学的时候无论是考试还是做什么都少不了一个检查的过程,比如说写完作业,爸妈就会说写完了检查一下;考试的时候老师也会说,答完卷检查一下,一会儿就要交卷了;
在我们做完某件事情的时候,都有这样一个检查的过程,来保证我们尽可能的少犯错误或者不犯错误,程序也是如此;
*写完的代码是否有BUG
*代码在函数上是否可以运行的起来
*函数运行是否和自己的预期一致
*代码是否会进行一些奇奇怪怪的操作
*......
写了一堆代码,难免这些代码会做一些奇奇怪怪的事情。
比如说:少了一个字母,用错了一个标点符号,或者说程序的输出与预期的是不一致的;或者程序存在逻辑问题,程序在处理某些业务时,少考虑了一些因素等等很多问题....
所以这个时候我们就需要自己检查一下看看是不是OK的,如果不OK马上修改,如果OK就提交代码、上传代码、部署代码等。那么这个过程就可以认为是我们调试的过程,当然,调试也并不是这样简单容易的,有很多的方法和理论。
二、函数计算及相关的开发工具
1、云调试
打开浏览器,进入项目页面,点击invoke按钮进行调试就可以了
当左侧有一个项目的时候,只需要点击右边的invoke他就可以输出目标结果。
大家可以看到在线调试这个图我们已经完成了调试↓
输出了hello world,这种方法非常简单,对于临时使用是非常有效果的,但对于稍微麻烦一些的项目可能就不大适合在线上调试了,这个时候我们就需要本地开发和调试方法,毕竟我们大部分的代码都是在本地来进行开发和调试的,虽然说现在大家都在云端写代码、云端开发、云端抵BUG是未来的趋势;但是,至少目前来看还是本地开发更习惯、更靠谱一些。所以这个时候就需要插件命令行工具。
2、命令行工具
首先,在安装命令行工具之后如果想进行本地调试,还需要安装docker,安装之后就可以通过invoke的指令来进行本地的调试了。
当我们输入完指令
jiangyu@B-165MLVDL-0004 demo03 % fun local invoke demo03/demo03
按回车之后,会顺利的输出相关的结果
当然,如果是第一次使用,可能也会涉及到通过拉取镜像的一个过程。
3、VSCode插件
如果要在编辑器中写代码,调试的话,要有VSCode插件,只需要点击VSCode运行功能,插件就可以自动拉起docker帮助我们进行调试。
举例调试一个项目<demo-03>
只需要点击这个按钮即可(下图鼠标位置)↓
可以看到顺利的输出了相关的结果↓
可以看到这张图片已经顺利的输出了预期结果↓。
4、无工具调试
没有docker是不行的,因为调试机制的本身就是要依赖docker的;但是,人类往往是具有创造力的,没有条件就要创造条件,也可无工具调试。
以拍三为例,只需要增加一段代码,来调试来调用我们的方法,至于event可以采用我们即将使用的触发器的情况,这样就可以实现我们简单的调试方法了。
调试方法对比
|
云调试 |
命令工具 |
VSCode插件 |
无工具调试 |
是否本地执行 |
否(云端) |
是 |
是 |
是 |
是否需要安装工具 |
否 |
是 |
是 |
否 |
是否需要安装 Docker |
否 |
是 |
是 |
否 |
是否可以模拟真实环境 |
是 |
绝大部分是 |
绝大部分是 |
部分是 |
是否简单快速 |
是 |
是 |
是 |
是 |
是否符合开发习惯 |
否 |
是 |
是 |
是 |
在一般小的情况下,不想开编辑器,不想用docker的情况下,想要比较靠谱的情况下可以使用云端调试。
如果想在本地调试,开发更加亲密一些,可以使用命令行工具或者VSCode插件。
如果不想安装各种工具,完全可以使用最后这种方法进行调试。
云端调试虽然说不太符合我们的开发习惯,但是这种开发方法真的可以百分之百模拟现场;第2种和第3种方法虽然可能通过docker镜像方法,已经尽可能的模仿了线上环境,但是对于一些线上资源交货的场景,尤其是通过VPC等和其他资源进行交货的场景,这种方法未必可以很好的解决类似的问题;针对最后一种方法,只可以说临时用一下还好,它的环境真的可能和线上环境天差地别,那么,很可能会对我们真正上线的时候造成一定的影响。
三、函数部署
部署部分很容易,方法也很简单,也不需要特殊的依赖,就算没有docker等这些依赖,也都是完全可以的。
第一种方法:在创建函数或者更新函数的时候上传代码包等;
第二种方法:如左图所示,通过命令行工具执行来进行部署;
第三种方法:通过VSCODE插件,点击上传按钮,即可进行部署;
在线部署:编写代码保存,上传代码。
客户端部署:通过VSCODE插件,通过命令行工具
格外强调
命令行工具的/H指令真的非常方便,无论在任何时候都可以使用/H指令来查看当前功能下的一些使用方法。