共计 1917 个字符,预计需要花费 5 分钟才能阅读完成。
作者 | 江昱 阿里巴巴高级产品经理
本文整顿自 《Serverless 技术公开课》,关注“Serverless”公众号,回复“入门”,即可获取 Serverless 系列文章 PPT。
函数调试
函数的调试与部署,其实这是两局部内容:调试局部与部署局部。相对来说,调试局部是比拟艰难的,因为调试自身就是 Serverless 架构的一大弱点。
在开始解说调试之前,先问大家一个问题:咱们写完的代码为什么要有调试的过程呢?不调试行不行?
记得我在上学的时候,无论是考试还是做什么,都少不了一个查看的过程,例如写完作业时,爸妈会说:“做完了检查一下”;考试时,老师会说:“考完了检查一下”;在做完某件事时,咱们还要有一个查看的过程,来保障尽可能地少犯错误。
程序也是这样,咱们写了一堆代码,不免这个代码会做一些奇奇怪怪的事件,例如说咱们少写了一个字母,用错了一个符号,或者说咱们的程序输入和预期不统一,咱们的程序存在逻辑问题,咱们的程序在解决某些业务时少思考了一些因素,咱们的程序……很多问题。这个时候,咱们就要本人来检查一下,看看他是不是 OK 的,如果不 OK 要马上批改,如果 OK 了,咱们再提交代码、上传代码、部署代码等,这个过程,你就能够认为是调试的过程。
1. 函数调试形式
当然,调试也不是这么容易的,它也有很多的办法和实践,本文就针对函数计算以及相干工具,给大家解说怎么调试函数计算中的函数们。
1)云调试
首先,第一种办法,是非常简单的,咱们只须要关上浏览器,进入到咱们的我的项目页面,就能够点击 Invoke 按钮进行调试。(在线调用)
上图中能够看到,咱们曾经实现了调试,输入了 hello world,这种办法非常简单,对于长期应用是十分有成果的。
然而略微麻烦一些的我的项目,可能就不太适宜在线上调试了,这时,咱们就须要本地开发和调试办法,毕竟大部分代码开发应该都在本地,尽管大家都说云端写代码、开发、debug 是将来的趋势,然而至多目前来看,还是本地开发更习惯、更靠谱。
所以这时就须要用咱们的插件或者命令行工具了。
2)命令行工具 (命令行工具本地调试)
咱们在装置之后,如果想进行本地调试,还要装置 Docker,装置之后,咱们能够通过 invoke local 的指令来进行本地的调试。例如上图中,咱们能够看到,当我执行完了 fun local invoke demo_03/demo_03,顺利输入了后果。当然如果你是第一次应用,可能还会波及到通过 Docker 拉取镜像的过程。
3)VSCode 插件
如果要在编辑器中写代码,该怎么调试?非常简单,应用 VSCode 插件,你只须要点击 VSCode 插件的运行性能,插件就能够主动拉起 Docker,帮忙咱们本地调试代码。 从上图中能够看到,咱们曾经顺利输入了后果。
这时就会有人问:还要装置 Docker 吗?没有 Docker 行不行?没有 Docker 当然是不行的,因为这个调试的机制自身就依赖 Docker。然而咱们人类往往是具备创造力的:没有条件,就创造条件,所以,上面再给大家分享一个无工具的调试计划。
4)无工具调试 如上图,以 Python 为例,咱们只须要减少一段代码,来调用咱们的办法,至于 event 能够采纳咱们行将应用的触发器状况,这样就能够实现简略的调试办法了。
2. 实用场景
上文介绍了这么多的调试办法,什么时候该用哪个呢?
如上图,咱们来看一下比照,在个别小的状况下,如果咱们不想开编辑器,也不想用 Docker,想要获取比拟靠谱的调试,能够应用云端调试;如果咱们想本地调试,和开发更密切一些,能够用命令行工具或者 VSCode 插件;如果咱们不想装置各种工具,那么齐全能够采纳无工具调试计划。
云端调试尽管不太合乎咱们的开发习惯,然而这种调试办法能够 100% 模仿“现场场地”;命令行工具或者 VSCode 插件,尽管通过 Docker 镜像办法,曾经尽可能地模拟了线上环境,然而对于一些和线上资源交互的场景,尤其是通过 VPC 等和其余资源交互的场景,这种办法未必能够很好地解决相似的问题;无工具调试,只适宜长期用一下,它的环境和线上环境天差地别,很可能会对真正上线的后果造成肯定影响。
函数部署
函数部署的办法很简略,也不须要非凡的依赖,就算没有 Docker 也能够。
1. 在线部署
在线创立函数上传代码包,或者更新函数上传代码包等。
2. 客户端部署
1)通过命令行工具
如下图所示,通过命令行工具,执行 fun deploy 来进行部署。
2)通过 VSCode 插件
通过 VSCode 插件,点击上传部署的按钮,即可主动部署。
结语
最初额定说一下,本文并非王婆卖瓜自卖自夸,而是命令行工具的 – h 指令真的很棒,无论应用什么指令,咱们都能够通过 – h 查看到应用办法,非常简单不便,不信你也能够偷偷试一下。