课时5:函数的调试与部署

简介: 函数的调试与部署

Serverless AI训练营:课时5:函数的调试与部署

课程地址:https://developer.aliyun.com/trainingcamp/1eeaedf056f14ad98e9986c31068e939?spm=a2c6h.26142516.J_2566289780.1.37c67cbd7bCsFs

课时5:函数的调试与部署

内容介绍
一、引入举例

二、函数计算及相关的开发工具

三、函数部署

 

一、引入举例

相对于来说,调试的部分是比较困难的,因为调试的本身就是Serverless架构的一大弱点。

引入:写代码为什么要有调试的过程呢?不调试行不行?

上学的时候无论是考试还是做什么都少不了一个检查的过程,比如说写完作业,爸妈就会说写完了检查一下;考试的时候老师也会说,答完卷检查一下,一会儿就要交卷了;

在我们做完某件事情的时候,都有这样一个检查的过程,来保证我们尽可能的少犯错误或者不犯错误,程序也是如此;

*写完的代码是否有BUG

*代码在函数上是否可以运行的起来

*函数运行是否和自己的预期一致

*代码是否会进行一些奇奇怪怪的操作

*......

写了一堆代码,难免这些代码会做一些奇奇怪怪的事情。

比如说:少了一个字母,用错了一个标点符号,或者说程序的输出与预期的是不一致的;或者程序存在逻辑问题,程序在处理某些业务时,少考虑了一些因素等等很多问题....

所以这个时候我们就需要自己检查一下看看是不是OK的,如果不OK马上修改,如果OK就提交代码、上传代码、部署代码等。那么这个过程就可以认为是我们调试的过程,当然,调试也并不是这样简单容易的,有很多的方法和理论。

 

二、函数计算及相关的开发工具

1、云调试

打开浏览器,进入项目页面,点击invoke按钮进行调试就可以了

image.png

当左侧有一个项目的时候,只需要点击右边的invoke他就可以输出目标结果。

大家可以看到在线调试这个图我们已经完成了调试↓

image.png

输出了hello world,这种方法非常简单,对于临时使用是非常有效果的,但对于稍微麻烦一些的项目可能就不大适合在线上调试了,这个时候我们就需要本地开发和调试方法,毕竟我们大部分的代码都是在本地来进行开发和调试的,虽然说现在大家都在云端写代码、云端开发、云端抵BUG是未来的趋势;但是,至少目前来看还是本地开发更习惯、更靠谱一些。所以这个时候就需要插件命令行工具。

2、命令行工具

首先,在安装命令行工具之后如果想进行本地调试,还需要安装docker,安装之后就可以通过invoke的指令来进行本地的调试了。

image.png

当我们输入完指令

jiangyu@B-165MLVDL-0004 demo03  % fun local invoke demo03/demo03

按回车之后,会顺利的输出相关的结果

image.png

当然,如果是第一次使用,可能也会涉及到通过拉取镜像的一个过程。

3VSCode插件

如果要在编辑器中写代码,调试的话,要有VSCode插件,只需要点击VSCode运行功能,插件就可以自动拉起docker帮助我们进行调试。

image.png

举例调试一个项目<demo-03>

只需要点击这个按钮即可(下图鼠标位置)↓

image.png

可以看到顺利的输出了相关的结果↓

image.png

可以看到这张图片已经顺利的输出了预期结果↓。

image.png

4、无工具调试

没有docker是不行的,因为调试机制的本身就是要依赖docker的;但是,人类往往是具有创造力的,没有条件就要创造条件,也可无工具调试。

image.png

以拍三为例,只需要增加一段代码,来调试来调用我们的方法,至于event可以采用我们即将使用的触发器的情况,这样就可以实现我们简单的调试方法了。

调试方法对比

 

云调试

命令工具

VSCode插件

无工具调试

是否本地执行

否(云端)

是否需要安装工具

是否需要安装 Docker

是否可以模拟真实环境

绝大部分是

绝大部分是

部分是

是否简单快速

是否符合开发习惯

在一般小的情况下,不想开编辑器,不想用docker的情况下,想要比较靠谱的情况下可以使用云端调试。

如果想在本地调试,开发更加亲密一些,可以使用命令行工具或者VSCode插件。

如果不想安装各种工具,完全可以使用最后这种方法进行调试。

云端调试虽然说不太符合我们的开发习惯,但是这种开发方法真的可以百分之百模拟现场;第2种和第3种方法虽然可能通过docker镜像方法,已经尽可能的模仿了线上环境,但是对于一些线上资源交货的场景,尤其是通过VPC等和其他资源进行交货的场景,这种方法未必可以很好的解决类似的问题;针对最后一种方法,只可以说临时用一下还好,它的环境真的可能和线上环境天差地别,那么,很可能会对我们真正上线的时候造成一定的影响。

 

三、函数部署

部署部分很容易,方法也很简单,也不需要特殊的依赖,就算没有docker等这些依赖,也都是完全可以的。

第一种方法:在创建函数或者更新函数的时候上传代码包等;

第二种方法:如左图所示,通过命令行工具执行来进行部署;

第三种方法:通过VSCODE插件,点击上传按钮,即可进行部署;

在线部署:编写代码保存,上传代码。

客户端部署:通过VSCODE插件,通过命令行工具

image.png

 

格外强调

命令行工具的/H指令真的非常方便,无论在任何时候都可以使用/H指令来查看当前功能下的一些使用方法。

相关实践学习
函数计算部署PuLID for FLUX人像写真实现智能换颜效果
只需一张图片,生成程序员专属写真!本次实验在函数计算中内置PuLID for FLUX,您可以通过函数计算+Serverless应用中心一键部署Flux模型,快速体验超写实图像生成的魅力。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
2023年电赛---运动目标控制与自动追踪系统(E题)OpenART mini的代码移植到OpenMV
2023年电赛---运动目标控制与自动追踪系统(E题)OpenART mini的代码移植到OpenMV
473 0
|
网络协议 物联网 测试技术
AliOS Things网络连接技术概述
AliOS Things具有非常丰富的连接组件和能力,主要包括: 自组织网络协议(uMesh), 套接字适配层(SAL),TCP/IP网络协议栈(LwIP)和连接协议(WiFi,BLE, LoRaWAN, GPRS和NB-IoT等)
7838 0
|
SQL NoSQL 关系型数据库
分布式事务Seata
分布式事务Seata
773 0
|
存储 安全 NoSQL
Java高性能序列化工具Kryo序列化
Java高性能序列化工具Kryo序列化
552 0
Java高性能序列化工具Kryo序列化
|
JavaScript
VUE学习二:事件监听(v-on)、条件判断(v-if/v-else-if/v-else)、循环遍历(v-for)
这篇文章是关于Vue.js的学习指南,涵盖了事件监听、条件判断、循环遍历、数组方法响应性、案例分析以及高阶函数的使用。
249 2
VUE学习二:事件监听(v-on)、条件判断(v-if/v-else-if/v-else)、循环遍历(v-for)
|
前端开发 IDE 程序员
【Vue3+Ts+Vite】使用Vite与TS构建Vue3项目
🔈今天学习一下如何初始化一个 Vue3 + Ts + Vite 的项目🔊与时俱进 开始用全新的技术。本文包含以下内容:基础框架的搭建,别名配置,vue-router配置,pinia配置,axios配置,ESLint配置。
1873 0
|
算法
【图像】图像增强-降噪锐化
【图像】图像增强-降噪锐化
201 1
|
测试技术 数据库连接 Android开发
Junit - 基础注解(@BeforeClass、@Before、@Test、@After、@AfterClass)
Junit - 基础注解(@BeforeClass、@Before、@Test、@After、@AfterClass)
680 0
Junit - 基础注解(@BeforeClass、@Before、@Test、@After、@AfterClass)
|
机器学习/深度学习 虚拟化
|
网络协议 API
检测指定TCP端口开放状态免费API接口教程
该API用于检测目标主机指定TCP端口是否开放,适用于检测连通状态等场景。支持指定大陆、美国、香港等检测节点。请求地址为 `https://cn.apihz.cn/api/wangzhan/port.php`,支持POST和GET请求方式。请求参数包括 `id`、`key`、`type`、`host` 和 `port`。返回参数包含检测结果和状态码。示例请求:`https://cn.apihz.cn/api/wangzhan/port.php?id=88888888&key=88888888&type=1&host=49.234.56.78&port=80`。
439 3