Serverless应用调试“秘诀”

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 在应用开发过程中,或者应用开发完成,当所执行结果不符合预期时,我们通常要进行一定的调试工作。但是在Serverless加架构下,调试往往会受到极大的环境因素限制,通常情况下会出现的情况是,所开发的应用在本地是可以比较健康的、符合预期的运行,但是在FaaS平台上,则会出现一些不可预测的问题;或者是在一些特殊的环境下,本地没有办法模拟线上环境,难以进行项目的开发和调试。

在应用开发过程中,或者应用开发完成,当所执行结果不符合预期时,我们通常要进行一定的调试工作。但是在Serverless加架构下,调试往往会受到极大的环境因素限制,通常情况下会出现的情况是,所开发的应用在本地是可以比较健康的、符合预期的运行,但是在FaaS平台上,则会出现一些不可预测的问题;或者是在一些特殊的环境下,本地没有办法模拟线上环境,难以进行项目的开发和调试。

Serverless应用的调试,一直都是都是备受诟病的,但是各个云厂商并没有因此放弃在调试方向的不断深入探索。以阿里云函数计算为例,其提供了在线调试、本地调试等多种调试方案。

在线调试

简单调试

所谓的简单的调试,就是在控制台来进行调试,以阿里云函数计算为例,我们可以在控制台通过执行按钮,进行基本的调试:

必要时候,我们也可以通过设置Event来模拟一些事件:

在线进行调试的好处是,可以使用线上的一些环境进行代码的测试。否则当我们线上环境拥有VPC等资源时,在本地环境是很难进行调试,例如数据库需要通过VPC来进行访问时,或者有对象存储触发器的业务逻辑等。

断点调试

在线进行函数计算的代码调试,除了简单的调试之外,部分云厂商也是支持断点调试的,例如阿里云函数计算的远程调试、腾讯云云函数的远程调试等。以阿里云函数计算远程调试为例,我们可以通过控制台进行函数的在线调试。当我们创建好函数之后,可以选择远程调试,并点击开启调试:

开启调试之后,稍等片刻,系统将会进入远程调试界面:

此时我们可以进行一些断点调试:

本地调试

命令行工具

就目前来看,大部分FaaS平台都会为用户提供相对完备的命令行工具,包括AWS的SAM CLI,阿里云的Funcruft,同时也有一些开源项目例如Serverless Framework、Serverless Devs等对多云厂商的支持等。通过命令行工具进行代码调试的方法很简单,以Serverless Devs为例,本地调试阿里云函数计算:

首先确保,我们本地拥有一个函数计算的项目:

然后在项目下执行调试指令,例如在Docker中进行调试:

编辑器插件

以VScode插件为例,当我们下载好阿里云函数计算的VSCode插件,并且配置好账号信息之后,我们可以在本地新建函数,并且在进行打点,之后可以进行断点调试:

当我们的函数调试完成之后,可以进行部署等操作。

其他调试方案

Web框架的本地调试

在阿里云FaaS平台开发传统Web框架,以Python语言Bottle框架为例,可以增加:

app = bottle.default_app()

并且对run()方法进行条件限制(if __name__ == '__main__'):

if __name__ == '__main__':

   bottle.run(host='localhost', port=8080, debug=True)

例如:

# index.py

import bottle


@bottle.route('/hello/<name>')

def index(name):

   return "Hello world"


app = bottle.default_app()


if __name__ == '__main__':

   bottle.run(host='localhost', port=8080, debug=True)

这样,我们可以在本地开发的同时,和传统开发思路一样,在本地进行调试。当我们部署到线上时,只需要在入口方法处填写ndex.app,即可实现平滑的部署。

本地模拟事件调试

针对非Web框架,可以在本地构建一个方法,例如要调试一下对象存储触发器,可以是:

import json



def handler(event, context):

   print(event)



def test():

   event = {

       "events": [

           {

               "eventName": "ObjectCreated:PutObject",

               "eventSource": "acs:oss",

               "eventTime": "2017-04-21T12:46:37.000Z",

               "eventVersion": "1.0",

               "oss": {

                   "bucket": {

                       "arn": "acs:oss:cn-shanghai:123456789:bucketname",

                       "name": "testbucket",

                       "ownerIdentity": "123456789",

                       "virtualBucket": ""

                   },

                   "object": {

                       "deltaSize": 122539,

                       "eTag": "688A7BF4F233DC9C88A80BF985AB7329",

                       "key": "image/a.jpg",

                       "size": 122539

                   },

                   "ossSchemaVersion": "1.0",

                   "ruleId": "9adac8e253828f4f7c0466d941fa3db81161****"

               },

               "region": "cn-shanghai",

               "requestParameters": {

                   "sourceIPAddress": "140.205.***.***"

               },

               "responseElements": {

                   "requestId": "58F9FF2D3DF792092E12044C"

               },

               "userIdentity": {

                   "principalId": "123456789"

               }

           }

       ]

   }

   handler(json.dumps(event), None)



if __name__ == "__main__":

   print(test())

这样通过构造一个event对象,即可实现模拟事件触发

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
5天前
|
存储 人工智能 Serverless
函数计算进化之路:AI 应用运行时的状态剖析
AI应用正从“请求-响应”迈向“对话式智能体”,推动Serverless架构向“会话原生”演进。阿里云函数计算引领云上 AI 应用 Serverless 运行时技术创新,实现性能、隔离与成本平衡,开启Serverless AI新范式。
146 12
|
5月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
531 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
3月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
214 0
|
5月前
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
503 30
|
11天前
|
人工智能 Kubernetes 安全
重塑云上 AI 应用“运行时”,函数计算进化之路
回顾历史,电网的修建,深刻地改变了世界的经济地理和创新格局。今天,一个 AI 原生的云端运行时的进化,其意义也远不止于技术本身。这是一次设计哲学的升华:从“让应用适应平台”到“让平台主动理解和适应智能应用”的转变。当一个强大、易用、经济且安全的 AI 运行时成为像水电一样的基础设施时,它将极大地降低创新的门槛。一个独立的开发者、一个小型创业团队,将有能力去创造和部署世界级的 AI 应用。这才是技术平权的真谛,是激发全社会创新潜能的关键。
|
5月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
339 12
|
5月前
|
人工智能 开发框架 运维
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
Serverless MCP 运行时业界首发,函数计算支持阿里云百炼 MCP 服务!阿里云百炼发布业界首个全生命周期 MCP 服务,无需用户管理资源、开发部署、工程运维等工作,5 分钟即可快速搭建一个连接 MCP 服务的 Agent(智能体)。作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力。
 Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
|
6月前
|
人工智能 运维 架构师
Serverless + AI 让应用开发更简单,加速应用智能化
Serverless + AI 让应用开发更简单,加速应用智能化
193 5
|
7月前
|
SQL 分布式计算 Serverless
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
167 0
|
7月前
|
存储 弹性计算 运维
海量日志接入 Elasticsearch Serverless 应用降本70%以上
本文将探讨在日志场景下,使用阿里云Elasticsearch Serverless相较于基于ECS自建Elasticsearch集群的成本与性能优势,展示如何通过Serverless架构实现高达 70%以上的成本节约。
418 0

热门文章

最新文章

相关产品

  • 函数计算