CN112134918A - 云服务中函数与触发器匹配状态的检测及处理方法 - Google Patents

云服务中函数与触发器匹配状态的检测及处理方法 Download PDF

Info

Publication number
CN112134918A
CN112134918A CN202010773369.1A CN202010773369A CN112134918A CN 112134918 A CN112134918 A CN 112134918A CN 202010773369 A CN202010773369 A CN 202010773369A CN 112134918 A CN112134918 A CN 112134918A
Authority
CN
China
Prior art keywords
function
trigger
program
matched
cloud
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010773369.1A
Other languages
English (en)
Other versions
CN112134918B (zh
Inventor
毛紫薇
李克勤
麻志毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Institute of Information Technology AIIT of Peking University
Hangzhou Weiming Information Technology Co Ltd
Original Assignee
Advanced Institute of Information Technology AIIT of Peking University
Hangzhou Weiming Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Institute of Information Technology AIIT of Peking University, Hangzhou Weiming Information Technology Co Ltd filed Critical Advanced Institute of Information Technology AIIT of Peking University
Priority to CN202010773369.1A priority Critical patent/CN112134918B/zh
Publication of CN112134918A publication Critical patent/CN112134918A/zh
Application granted granted Critical
Publication of CN112134918B publication Critical patent/CN112134918B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Signal Processing (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Computational Linguistics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种云服务中函数与触发器匹配状态的检测及处理方法。该方法包括:分析函数的特征信息;查询所述函数是否已创建触发器;若已创建触发器,则检查所述函数与所述触发器是否匹配;若不匹配,则进行自动修复;若未创建触发器,则根据所述函数的特征信息推荐并自动创建触发器。本申请的方法,能够自动检测函数与触发器的匹配状态,并根据检测结果进行相应的处理,从而大大减少了由于触发器不匹配问题导致的函数不能执行或执行出错的问题,以及大大降低了人工检测的成本和劳动量,提高了工作效率。

Description

云服务中函数与触发器匹配状态的检测及处理方法
技术领域
本申请涉及云计算技术领域,具体涉及一种云服务中函数与触发器匹配状态的检测及处理方法。
背景技术
随着云计算技术的飞速发展,无服务器(Serverless)架构成为搭建业务系统的新热门。函数即服务(FaaS,Functions as a Service)是无服务器的一种实现技术,每一个函数都是一个服务,函数可以由任何语言编写,开发者无需预置或管理服务器即可运行代码。通过云服务运行函数并返回运行结果,从而实现了函数在基于云基础设施的抽象层上的运行,无需预置或管理服务器。目前,大量的FaaS产品涌入云计算市场,国外主要有AWS的Lambda、Azure的Function、Google的Cloud Functions等,国内主要有华为的函数工作流、阿里的函数计算、腾讯的云函数等。FaaS产品可以统称为函数计算。
函数计算作为事件驱动的托管计算服务,函数的调用最主要的方式是云产品事件源的触发执行,通过创建触发器来调度或处理云资源和外部请求。触发器实现了函数与云服务的对接,触发器创建以后,会按照预置的机制运行函数。然而,开发者经常碰到这种情况:已创建函数、完成配置和创建触发器,但是预置条件发生之后函数并未执行或执行出错。这种情况往往由触发器和函数不匹配造成。这种错误在创建函数之初常难以察觉,只有当预置条件多次执行才可能被发现,那时可能已造成巨大损失。触发器种类繁多且涉及多个云服务,成功调用函数不仅需要选择合适的触发器类型,正确设置函数的参数和配置信息也是关键,这就需要开发者对触发器特性有深入了解。同时,随着触发器和函数数量不断增多,触发器管理以及触发器与函数匹配检测也成为亟待解决的难题。
云计算服务提供商在提供函数计算服务时,也提供了控制台、API接口、SDK工具包、CLI命令程序,帮助用户管理函数和触发器。目前,对于函数计算中函数与触发器的匹配检查,目前市面上没有自动化的方法或工具。由于函数计算有别于传统服务器程序的部署,开发者创建函数和触发器以后,对于函数和触发器不匹配的错误是“无感知”的,且易被忽视,当数据源的预置条件触发而函数未执行或出错时才能推理发现问题所在。而由于人工发现问题和修复问题的滞后性,这时函数作为应用程序中的一个服务长期未被有效执行,将导致应用程序的云服务运行出现错误、无法得到正确的运行结果。
发明内容
本申请的目的是提供一种云服务中函数与触发器匹配状态的检测及处理方法。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
根据本申请实施例的一个方面,提供一种函数与触发器匹配状态的检测及处理方法,包括:
分析函数的特征信息;
查询所述函数是否已创建触发器;
若已创建触发器,则检查所述函数与所述触发器是否匹配;
若不匹配,则进行自动修复;
若未创建触发器,则根据所述函数的特征信息推荐并自动创建触发器。
进一步地,所述函数的特征信息包括所述函数的代码特征、函数配置和委托权限。
进一步地,所述代码特征包括所述函数代码的传入值结构和返回值结构。
进一步地,所述分析函数的特征信息,包括:
通过API接口获取函数代码;
静态扫描所述函数代码,分析获得所述函数所调用的云服务、传入值结构和返回值结构;
通过API接口查找函数配置;
通过IAM的API接口查询委托的内容和权限信息。
进一步地,所述自动修复包括:
若是所述函数的返回值结构、函数配置和委托权限中的一项或多项与所述触发器不匹配,则将所述一项或多项修改至与所述触发器相匹配;
若是所述函数的传入值结构与所述触发器不匹配,则删除或禁用所述触发器。
进一步地,所述根据所述函数的特征信息推荐并自动创建触发器,包括:
从预搭建的触发器特征库中,查找与所述函数的特征信息相匹配的触发器特征信息;
若查找到符合条件的触发器,则调用API接口根据所述触发器特征信息创建该触发器;
否则,从所述触发器特征库中,查找与所述函数的传入值结构相匹配的触发器,若查找到与所述函数的传入值结构相匹配的触发器信息,则调用API接口根据所述触发器特征信息创建该触发器,将所述函数的与被创建的触发器不相匹配的特征信息修改为与所述被创建的触发器相一致。
进一步地,所述检查所述函数与所述触发器是否匹配,包括:
从预搭建的触发器特征库中查找出所述触发器的特征信息;
将所述函数的特征信息与所述触发器的特征信息进行比对;
若所述函数的特征信息与所述触发器的特征信息相匹配,则确定所述函数与所述触发器匹配;
否则,确定所述函数与所述触发器不匹配。
根据本申请实施例的另一个方面,提供一种程序的云服务运行方法,包括:
接收来自客户端的程序;其中,所述程序包括函数;
响应于来自所述客户端的程序运行请求,以上述的方法实现云服务中函数与触发器匹配状态的检测及处理;
运行经过检测及处理的程序,将运行结果发送给客户端。
根据本申请实施例的另一个方面,提供一种云服务器,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现上述的方法。
根据本申请实施例的另一个方面,提供一种用于程序开发及云运行的系统,包括客户端及云服务器;
所述客户端,用于开发程序并向所述云服务器发送所述程序的代码,以及用于向所述云服务器发送程序运行请求,并接收所述云服务器返回的运行结果;
所述云服务器,用于:
接收来自客户端的程序;其中,所述程序包括函数;
响应于来自所述客户端的程序运行请求,以上述任一项所述的方法实现云服务中函数与触发器匹配状态的检测及处理;
运行经过检测及处理的程序,将运行结果发送给客户端。
根据本申请实施例的另一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以实现上述的方法。
本申请实施例的其中一个方面提供的技术方案可以包括以下有益效果:
本申请实施例提供的云服务中函数与触发器匹配状态的检测及处理方法,能够自动检测函数与触发器的匹配状态,并根据检测结果进行相应的处理,从而大大减少了由于触发器不匹配问题导致的函数不能执行或执行出错的问题,以及大大降低了人工检测的成本和劳动量,提高了工作效率。
本申请的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者,部分特征和优点可以从说明书中推知或毫无疑义地确定,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了函数使用流程图;
图2示出了本申请的一个实施例的云服务中函数与触发器匹配状态的检测及处理方法的流程示意图;
图3示出了本申请的另一实施例的云服务中函数与触发器匹配状态的检测及处理方法的流程示意图;
图4示出了本申请的另一实施例的程序的云服务运行方法的流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,下面结合附图和具体实施例对本申请做进一步说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
云计算技术的核心是服务化,服务化就需要提供闭环和灵活的服务。而云计算也在持续发展中,从最初的基础设施服务化(IaaS),平台服务化(PaaS),软件服务化(SaaS),陆续演化出数据库服务化(DBaaS),容器服务化(CaaS)。其实一个更细分的服务化叫做FaaS,FaaS是Functions as a Service的缩写,可以广义的理解为功能服务化,也可以解释为函数服务化。使用FaaS只需要关注业务代码逻辑,无需关注服务器资源,所以FaaS也跟无服务器技术(Serverless)密切相关。可以说FaaS提供了一个更加细分和抽象的服务化能力。采用FaaS/Serverless架构,将后端逻辑拆分成多个函数的形式进行执行,使组件间实现充分解耦。这样拆分除了每个函数都很好地实现了单一职责原则(SRP,SingleResponsibility Principle)之外,它的好处还包括:
减少开支:通过购买共享的基础设施,同时减少了花费在运维上的人力成本,最终减少了开支;
减轻负担:不再需要重复造轮子,需要什么功能直接集成调用即可,也无需考虑整体的性能,只专注于业务代码的实现;
易于扩展:云上提供了自动的弹性扩展,用了多少计算资源,就购买多少,完全按需付费;
简化管理:自动化的弹性扩展、减少了打包和部署的复杂度、可以快速推向市场,这些都让管理变得简单高效;
环保计算:即使在云的环境上,仍习惯于购买多余的服务器,最终导致空闲。Serverless杜绝了这种情况。
云计算服务提供商也纷纷推出FaaS产品,比如国外的AWS Lambda、Google CloudFunctions、Azure Functions等,国内的华为的函数工作流、阿里的函数计算、腾讯的云函数等。本申请中统称FaaS产品为函数计算。
函数计算是一项基于事件驱动的函数托管计费服务。使用函数计算,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免维护、高可靠的方式运行。
函数使用流程如图1所示。开发者在客户端上进行程序开发、编写程序代码,支持Node.js、Python、Java、Go、C#、PHP等多种编程语言,上传代码至函数计算服务并完成相应配置,可以通过API、SDK调用函数,或者创建触发器通过云服务事件源触发函数。函数运行时,函数计算会根据请求量弹性扩容。函数计算提供云日志和云监控。函数执行结束,根据函数实际执行时间按量计费。
创建函数时,设置的配置信息主要包括委托、超时时间、VPC访问、环境变量等。委托授予函数在运行时具有哪些额外权限,如果函数中使用其他的云服务资源,需要设置委托进行授权。VPC是虚拟私有云,开启VPC访问,则函数能通过内网访问其他云资源,有的云服务资源只能通过VPC访问(如分布式消息服务)。
在函数计算上构建应用程序,核心组件是函数和事件源。事件源是发布事件的公有云服务或者自定义的应用程序,函数是处理事件的自定义代码。触发器用于连接事件源和函数。一个函数可以添加一个或多个触发器,用于连接云服务资源来调用函数,以响应生命周期事件、外部请求或计划。
以华为云的函数工作流为例,函数支持SMN、DMS、APIG、OBS、DIS、TIMER、LTS、CTS等多种类型触发器。
消息通知服务SMN触发器可以编写函数来处理SMN的通知,在将消息发布到SMN主题时,服务可以通过将消息负载作为参数传递来调用函数,函数代码可以处理事件,比如将消息发布到其他SMN主题或将消息发送到其他华为云服务。
分布式消息服务DMS触发器可以将函数配置为自动轮询DMS消息队列并处理任何新消息,函数计算会定期轮询队列中的新消息,服务将轮询到的消息作为参数传递来调用函数。
API Gateway触发器可以通过HTTPS调用函数,使用API Gateway自定义REST API和终端节点来实现。可以将各个API操作(如GET和PUT)映射到特定的函数,当向该API终端节点发送HTTPS请求时,API Gateway会调用相应的函数。
对象存储服务OBS触发器可以编写函数来处理OBS存储桶事件,例如对象创建事件或对象删除事件。
数据接入服务DIS触发器可以将函数配置为自动轮询流并处理任何新记录,例如网站点击流、财务交易记录、社交媒体源、IT日志和位置跟踪事件等。
定时触发器TIMER可以使用TIMER的计划事件功能定期调用函数,可以指定固定频率(分钟、小时、天数)或指定cron表达式定期调用函数。
日志触发器LTS可以编写函数来处理云日志服务订阅的日志,当云日志服务采集到订阅的日志后,可以通过将采集到的日志作为参数传递来调用函数,函数代码可以对其进行自定义处理、分析或将其加载到其他系统。
云审计服务触发器CTS可以编写函数,根据CTS云审计服务类型和操作订阅所需要的事件通知,当CTS云审计服务获取已订阅的操作记录后,通过CTS触发器将采集到的操作记录作为参数传递来调用函数。经由函数对日志中的关键信息进行分析和处理,对系统、网络等业务模块进行自动修复,或通过短信、邮件等形式产生告警,通知业务人员进行处理。
文档数据库服务DDS触发器。使用DDS触发器,每次更新数据库中的表时,都可以触发函数以执行额外的工作。
分布式消息服务Kafka触发器。使用Kafka触发器,当向Kafka实例的Topic生产消息时,函数计算会处理消息,触发函数以执行额外的工作。
如图2所示,本申请的一个实施例提供了一种云服务中函数与触发器匹配状态的检测及处理方法,用于帮助使用函数计算的用户快速发现和修复函数与触发器不匹配的错误,帮助用户快速创建触发器并完成匹配。
该方法通过函数代码分析、配置分析、触发器分析,比对云服务特征库、触发器特征库,实现触发器智能推荐和触发器匹配检查,一键创建新的触发器,自动修复函数代码和配置信息,自动删除无法匹配的触发器。该方法的主要实现触发器匹配检查与修复、触发器智能推荐两个功能,实现过程主要分为以下几个步骤:
(1)搭建云服务特征库;
(2)分析函数代码特征(调用的云服务、传参的结构、返回值结构)、函数配置和委托权限;
(3)搭建触发器特征库;
根据函数是否有触发器执行第(4)(5)操作;
(4)有触发器时,执行触发器匹配检查与修复(修复函数代码、配置或删除无法匹配的触发器)
(5)没有触发器时,执行触发器智能推荐(自动创建触发器,修复函数代码、配置)。
1.搭建云服务特征库
云服务器提供SDK或API,实现云服务的外部调用。不同云服务提供的SDK和API都有各自特征,提取不同云服务各自的特征信息归类整理成云服务特征库,用于识别函数代码中调用了哪些云服务。
以SMN消息通知服务为例:
(1)使用API调用SMN服务完成相关操作时,请求的URL格式为{URI-scheme}://{Endpoint}/{resource-path}?{query-string}。其中的Endpoint值对于不同云服务有不同特征值,可用于区分云服务类型。SMN服务的创建主题操作的API的URL地址为:
“https://smn.{domain}.myhuaweicloud.com/v2/{project_id}/notifications/topics”可通过解析函数中出现的URL中是否有“https://smn.”字符串判断是否调用SMN服务。
(2)使用SDK进行SMN的相关操作时,函数代码中会引用“from smnsdkcore.clientimport SMNClient”、“from smnsdkrequests.v20171105.SmsPublish importSmsPublish”等相关类库。所以可以通过解析代码引用的类库是否有“smnsdkcore”或“smnsdkrequests”判断是否调用SMN服务。同时,函数代码中需要定义一个smn(SMNClient)对象,以完成后续操作,所以可以通过“SMNClient”字符匹配发现调用SMN服务。
在函数计算中与触发器相关的云服务的调用代码(Python)特征总结如下:
Figure BDA0002617475850000091
2.分析函数代码特征、函数配置和委托权限
(1)分析代码特征,包括以下步骤:
A.云服务器通过云服务商提供的API接口获取函数代码:
“GET/v2/{project_id}/fgs/functions/{function_urn}/code”
B.静态扫描函数代码,分析代码中引用的第三方库和调用的API地址,比对云服务特征库,得到函数中调用的云服务。
C.静态扫描函数代码,分析函数传入值event对象的结构。
D.静态扫描函数代码,分析函数最终返回对象的结构。
1)扫描代码中引用的类库,发现函数中出现“from obs import ObsClient”,从云服务特征库中可知这是OBS服务的类库,而函数中“obsClient=ObsClient(”对OBS对象进行了定义,可明确函数调用了OBS服务。
2)扫描代码中,代码中引用了“requests”类库,且调用了“requests.post”方法,提取发送的url地址
"https://smn.cn-north-4.myhuaweicloud.com/v2/auegfu1hewh/notifications/topics"
比较云服务特征库,发现与SMN服务的API特征符合,函数调用了SMN服务。
3)分析handler函数的“event”对象,从代码:
“responseType=event['queryStringParameters']['responseType']”
发现传入值event对象有“queryStringParameters”属性。
4)分析handler函数的返回值,发现“return json.dumps(defaultResponse)”,最后return的是‘defaultResponse’对象。
最后得到的返回值的结构为:
{“statusCode”:””,”isBase64Ebcoded”:””,”headers”:””,”body”:””}
(2)分析函数配置
通过云服务提供商提供的API接口查找函数的配置信息,API接口为:
GET/v2/{project_id}/fgs/functions/{function_urn}/config
从请求返回的响应参数“func_vpc”中获取是否配置vpc连接。
(3)分析函数委托的权限,包括以下步骤:
A.通过函数计算的API接口查找函数的配置信息,API接口为:
GET/v2/{project_id}/fgs/functions/{function_urn}/config
从请求返回的响应参数“xrole”中获取函数配置的委托名称。
B.通过IAM的API接口查询委托的内容详情,其中查询时参数“name”为上一步得到的委托名称。API接口为:
GET/v3.0/OS-AGENCY/agencies
C.通过IAM的API接口查询该委托的权限信息,其中“agency_id”参数值为上一步中获得的“id”,请求的API接口为:GET/v3.0/OS-AGENCY/domains/{domain_id}/agencies/{agency_id}/roles
能够从policy->Statement->Action中获取该委托授予的权限信息,格式为“什么服务:什么资源:什么操作”。
3.搭建触发器特征库
函数计算的触发器,用于预配置事件源映射,当事件源发生后自动调用执行对应函数。不同类型的触发器对应不同的事件源,具有不同的特征,如事件发送消息的数据格式、需要的函数配置、需要的委托权限等等。这些内容如果配置不正确,将会导致事件源发送而函数不被触发器触发的问题。
不同类型触发器的特征信息汇总如下表所示,其中“函数配置”特征信息是指函数能被触发器成功调用需要额外设置的函数配置,“函数委托”特征信息是指函数能被触发器成功调用需要设置的委托权限信息。
Figure BDA0002617475850000111
4.触发器匹配检查与修复
(1)查询函数的触发信息。通过云服务厂商提供的函数计算的API接口,查询函数所有的触发器设置信息。API的URI如下:
GET/v2/{project_id}/fgs/triggers/{function_urn}(“project_id”为项目ID,“function_urn”为函数的URN。)
(2)函数和触发器匹配检查。
根据上一步确定的触发器类型,查找和提取触发器特征库中该触发器的特征信息(代码特征、配置特征、委托权限),与函数扫描分析得到的函数代码特征、配置信息、委托权限做匹配比较,检查是否一一匹配,最后得出匹配检查结果。
通过步骤3中的函数的分析,发现函数的传入值对象有“queryStringParameters”属性,与定时触发器的消息格式不匹配,所以该函数与定时触发器不匹配。
(3)自动修复
上一步中确定了函数与触发器是否匹配,如果结果为不匹配则提供自动修复功能。自动修复主要分成以下几种类型:
A.如果是函数返回值引起的函数和触发器不匹配,则对函数的原有返回值data进行重构,改为{“statusCode”:200,“isBase64Encoded”:false,“headers”:{},“body”:data}格式。
B.如果是函数配置引起的函数和触发器不匹配,则修改函数的配置信息(开启/关闭VPC)以满足触发器的配置特征。
C.如果是函数委托权限引起的函数和触发器不匹配,则根据触发器的委托特征,修改函数的委托配置。
D.如果是函数的传入值引起的函数和触发器不匹配,无法通过修改代码解决不匹配问题(修改代码可能将引发函数功能逻辑出错),所以只能删除或禁用该触发器。
5.触发器智能推荐
根据函数的特征信息推荐并自动创建合适的触发器。
(1)从触发器特征库中,查找与该函数的代码特征、配置信息、委托权限都匹配的触发器。若存在符合条件的触发器,则调用API接口创建该触发器。或不存在符合条件的触发器,则进行下一步。
(2)从触发器特征库中,查找与该函数的代码的传入值格式匹配的触发器。如果不存在符合条件的触发器,则该函数无法找到适合的触发器。如果存在符合条件的触发器,则再次根据其他特征再次筛选,具体步骤如下:
A.加入代码的返回值格式作为筛选条件,如果存在符合条件触发器,但函数的配置或委托特征不满足触发器特征库中的要求,则自动创建该触发器后,修改配置或委托信息。
B.加入配置信息作为筛选条件,如果存在符合条件的触发器,但函数的委托权限或代码的返回值格式不满足触发器特征库中的要求,则自动创建该触发器后,修改返回值格式或者委托信息。
如图3所示,本申请的另一个实施例提供了一种云服务中函数与触发器匹配状态的检测及处理方法,包括:
S10、分析函数的特征信息。
函数的特征信息包括该函数的代码特征、函数配置和委托权限。
代码特征包括该函数代码的传入值结构和返回值结构。传入值结构也可以称为传参格式。返回值结构也可以称为返回值格式。
在某些实施方式中,分析函数的特征信息,包括:
S101、通过API接口获取函数代码;
S102、静态扫描所述函数代码,分析获得所述函数所调用的云服务、传入值结构和返回值结构;
S103、通过API接口查找函数配置;
S104、通过IAM的API接口查询委托的内容和权限信息。
S20、查询所述函数是否已创建触发器。
具体地,通过云服务厂商提供的函数计算的API接口,查询该函数是否已经创建触发器。
S30、若已创建触发器,则检查该函数与该触发器是否匹配。
在某些实施方式中,检查该函数与该触发器是否匹配,包括:
S301、从预搭建的触发器特征库中查找出所述触发器的特征信息;
S302、将所述函数的特征信息与所述触发器的特征信息进行比对;
S303、若所述函数的特征信息与所述触发器的特征信息相匹配,则确定所述函数与所述触发器匹配;
S304、否则,确定所述函数与所述触发器不匹配。
S40、若不匹配,则进行自动修复。
自动修复包括:
S401、若是所述函数的返回值结构、函数配置和委托权限中的一项或多项与所述触发器不匹配,则将所述一项或多项修改至与所述触发器相匹配;
S402、若是所述函数的传入值结构与所述触发器不匹配,则删除或禁用所述触发器。
S50、若未创建触发器,则根据所述函数的特征信息推荐并自动创建触发器。
在某些实施方式中,根据所述函数的特征信息推荐并自动创建触发器,包括:
S501、从预搭建的触发器特征库中,查找与所述函数的特征信息相匹配的触发器特征信息;
S502、若查找到符合条件的触发器,则调用API接口根据所述触发器特征信息创建该触发器;
S503、否则,从所述触发器特征库中,查找与所述函数的传入值结构相匹配的触发器,若查找到与所述函数的传入值结构相匹配的触发器信息,则调用API接口根据所述触发器特征信息创建该触发器,将所述函数的与被创建的触发器不相匹配的特征信息修改为与所述被创建的触发器相一致。
同一个函数可以创建多个不同的触发器,只要存在一个触发器与该函数是匹配的,则就不需要对其他不匹配的触发器进行修复;当其创建的所有触发器都不匹配时,则需要从其创建的触发器中选择一个触发器进行修复。
本申请实施例提供的云服务中函数与触发器匹配状态的检测及处理方法,能够自动检测函数与触发器的匹配状态,并根据检测结果进行相应的处理,从而大大减少了由于触发器不匹配问题导致的函数不能执行或执行出错的问题,以及大大降低了人工检测的成本和劳动量,提高了工作效率。
如图4所示,本申请的另一个实施例提供了一种程序的云服务运行方法,包括:
S01、接收来自客户端的程序;其中,所述程序包括函数;
S02、响应于来自所述客户端的程序运行请求,以上述的方法实现函数与触发器匹配状态的检测及处理;
S03、运行经过检测及处理的程序,将运行结果发送给客户端。
本申请的另一个实施例提供了一种云服务器,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现上述的方法。
在程序的云服务运行中,云服务器用于接收来自客户端的程序代码,响应于客户端的程序代码运行请求运行程序代码,然后将运行结果发送给客户端。
本申请的另一个实施例提供了一种用于程序开发及云运行的系统,包括客户端及云服务器;
客户端,用于开发程序并向所述云服务器发送所述程序的代码,以及用于向所述云服务器发送程序运行请求,并接收所述云服务器返回的运行结果;
所述云服务器,用于:
接收来自客户端的程序;其中,所述程序包括函数;程序可以包括一个或多个函数;
响应于来自所述客户端的程序运行请求,以上述的方法实现函数与触发器匹配状态的检测及处理;
运行经过检测及处理的程序,将运行结果发送给客户端。
程序开发者在客户端开发程序,编写程序代码,编写好程序代码之后,将其发送到云服务器进行运行,并得到运行结果。
本申请的另一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以实现上述的方法。
本申请实施例提出的一种函数与触发器匹配状态的检测及处理方法,帮助使用函数计算的用户快速发现和修复函数与触发器不匹配的错误,帮助用户快速创建触发器并完成匹配。该方法基于云服务的API和SDK,采用静态代码分析、触发器分析、配置分析相结合的技术手段,自动检测函数计算中函数和已有的触发器是否匹配,并根据预设选项自动修复函数代码和配置以保障函数被正确调用,或者移除或禁用冗余或不适用的触发器,最终实现函数计算中触发器的自动化管理。
本申请所有的实施例均以华为云服务和Python语言为例,但是本申请所涉及的技术不仅限于华为云和Python语言。
本申请实施例的检测及处理方法,通过函数代码静态分析、函数配置分析、触发器分析,比对云服务特征库、触发器特征库,实现函数计算中函数与触发器的自动匹配检查与修复;通过函数代码静态分析、函数配置分析、触发器分析,比对云服务特征库、触发器特征库,实现函数计算中触发器的智能推荐与自动创建。
本申请实施例的检测及处理方法为用户新增触发器时提供智能推荐,帮助用户快速选择合适的触发器,并快速修改相关代码或配置,提高了创建函数服务的工作效率。该方法能够自动化检查并修复租户空间的所有函数与已有触发器之间不匹配的问题,保证了函数服务的可用性,大大降低了无服务器应用程序的运维和管理难度,降低了无服务器应用程序的云服务运行的出错率,提高了云服务运行的准确度。
需要说明的是:
术语“模块”并非意图受限于特定物理形式。取决于具体应用,模块可以实现为硬件、固件、软件和/或其组合。此外,不同的模块可以共享公共组件或甚至由相同组件实现。不同模块之间可以存在或不存在清楚的界限。
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本申请也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请的内容,并且上面对特定语言所做的描述是为了披露本申请的最佳实施方式。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本申请的示例性实施例的描述中,本申请的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本申请要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本申请的单独实施例。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述实施例仅表达了本申请的实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (10)

1.一种云服务中函数与触发器匹配状态的检测及处理方法,其特征在于,包括:
分析函数的特征信息;
查询所述函数是否已创建触发器;
若已创建触发器,则检查所述函数与所述触发器是否匹配;
若不匹配,则进行自动修复;
若未创建触发器,则根据所述函数的特征信息推荐并自动创建触发器。
2.根据权利要求1所述的方法,其特征在于,所述函数的特征信息包括所述函数的代码特征、函数配置和委托权限。
3.根据权利要求2所述的方法,其特征在于,所述代码特征包括所述函数代码的传入值结构和返回值结构。
4.根据权利要求3所述的方法,其特征在于,所述分析函数的特征信息,包括:
通过API接口获取函数代码;
静态扫描所述函数代码,分析获得所述函数所调用的云服务、传入值结构和返回值结构;
通过API接口查找函数配置;
通过IAM的API接口查询委托的内容和权限信息。
5.根据权利要求3所述的方法,其特征在于,所述自动修复包括:
若是所述函数的返回值结构、函数配置和委托权限中的一项或多项与所述触发器不匹配,则将所述一项或多项修改至与所述触发器相匹配;
若是所述函数的传入值结构与所述触发器不匹配,则删除或禁用所述触发器。
6.根据权利要求3所述的方法,其特征在于,所述根据所述函数的特征信息推荐并自动创建触发器,包括:
从预搭建的触发器特征库中,查找与所述函数的特征信息相匹配的触发器特征信息;
若查找到符合条件的触发器,则调用API接口根据所述触发器特征信息创建该触发器;
否则,从所述触发器特征库中,查找与所述函数的传入值结构相匹配的触发器,若查找到与所述函数的传入值结构相匹配的触发器信息,则调用API接口根据所述触发器特征信息创建该触发器,将所述函数的与被创建的触发器不相匹配的特征信息修改为与所述被创建的触发器相一致。
7.根据权利要求1所述的方法,其特征在于,所述检查所述函数与所述触发器是否匹配,包括:
从预搭建的触发器特征库中查找出所述触发器的特征信息;
将所述函数的特征信息与所述触发器的特征信息进行比对;
若所述函数的特征信息与所述触发器的特征信息相匹配,则确定所述函数与所述触发器匹配;
否则,确定所述函数与所述触发器不匹配。
8.一种程序的云服务运行方法,其特征在于,包括:
接收来自客户端的程序;其中,所述程序包括函数;
响应于来自所述客户端的程序运行请求,以权利要求1-7任一项所述的方法实现云服务中函数与触发器匹配状态的检测及处理;
运行经过检测及处理的程序,将运行结果发送给客户端。
9.一种云服务器,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如权利要求1-8中任一所述的方法。
10.一种用于程序开发及云运行的系统,其特征在于,包括客户端及云服务器;
所述客户端,用于开发程序并向所述云服务器发送所述程序的代码,以及用于向所述云服务器发送程序运行请求,并接收所述云服务器返回的运行结果;
所述云服务器,用于:
接收来自客户端的程序;其中,所述程序包括函数;
响应于来自所述客户端的程序运行请求,以权利要求1-7任一项所述的方法实现云服务中函数与触发器匹配状态的检测及处理;
运行经过检测及处理的程序,将运行结果发送给客户端。
CN202010773369.1A 2020-08-04 2020-08-04 云服务中函数与触发器匹配状态的检测及处理方法 Active CN112134918B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010773369.1A CN112134918B (zh) 2020-08-04 2020-08-04 云服务中函数与触发器匹配状态的检测及处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010773369.1A CN112134918B (zh) 2020-08-04 2020-08-04 云服务中函数与触发器匹配状态的检测及处理方法

Publications (2)

Publication Number Publication Date
CN112134918A true CN112134918A (zh) 2020-12-25
CN112134918B CN112134918B (zh) 2023-04-07

Family

ID=73851517

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010773369.1A Active CN112134918B (zh) 2020-08-04 2020-08-04 云服务中函数与触发器匹配状态的检测及处理方法

Country Status (1)

Country Link
CN (1) CN112134918B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116610310A (zh) * 2023-05-31 2023-08-18 天津大学 一种基于Serverless架构的FaaS函数管理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109683856A (zh) * 2018-10-26 2019-04-26 平安科技(深圳)有限公司 电子装置、Faas平台函数创建方法及存储介质
US20190312899A1 (en) * 2018-04-04 2019-10-10 Puresec Ltd. System and method for protecting serverless applications
CN110650215A (zh) * 2019-10-24 2020-01-03 百度在线网络技术(北京)有限公司 边缘网络的函数执行方法及装置
CN111241521A (zh) * 2020-01-03 2020-06-05 浙江省北大信息技术高等研究院 一种云上函数权限检测并修复方法、装置、存储介质及终端

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190312899A1 (en) * 2018-04-04 2019-10-10 Puresec Ltd. System and method for protecting serverless applications
CN109683856A (zh) * 2018-10-26 2019-04-26 平安科技(深圳)有限公司 电子装置、Faas平台函数创建方法及存储介质
CN110650215A (zh) * 2019-10-24 2020-01-03 百度在线网络技术(北京)有限公司 边缘网络的函数执行方法及装置
CN111241521A (zh) * 2020-01-03 2020-06-05 浙江省北大信息技术高等研究院 一种云上函数权限检测并修复方法、装置、存储介质及终端

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JOEL SCHEUNER等: "Function-as-a-Service Performance Evaluation:A Multivocal Literature Review", 《ARXIV》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116610310A (zh) * 2023-05-31 2023-08-18 天津大学 一种基于Serverless架构的FaaS函数管理方法
CN116610310B (zh) * 2023-05-31 2023-11-14 天津大学 一种基于Serverless架构的FaaS函数管理方法

Also Published As

Publication number Publication date
CN112134918B (zh) 2023-04-07

Similar Documents

Publication Publication Date Title
US7904875B2 (en) Configuring and allocating software product technical services
US20080040455A1 (en) Model-based deployment and configuration of software in a distributed environment
US10909023B2 (en) Function-message oriented test case generation for supporting continuous globalization verification testing
US8732668B2 (en) System and method of error handling in a platform as a service environment
US20130339933A1 (en) Systems and methods for quality assurance automation
CN110569035A (zh) 软件开发项目的代码编译方法、装置、设备和存储介质
EP2667301B1 (en) Decision service manager
US11321226B2 (en) Joint validation across code repositories
CN112486466B (zh) 一种基于微服务架构的快速通用基础框架实现方法
WO2012052215A1 (en) Software development
WO2023207146A1 (zh) Esop系统的服务模拟方法、装置、设备及存储介质
CN111694612A (zh) 配置检查方法、装置、计算机系统及存储介质
CN115812298A (zh) 供应故障的区块链管理
CN112134918B (zh) 云服务中函数与触发器匹配状态的检测及处理方法
US10176011B2 (en) Automatically generating and executing a service operation implementation for executing a task
Kinny The Agentis Agent InteractionModel
CN113992736B (zh) 基于云计算服务平台的结构化数据的互联方法及服务器
US11307964B2 (en) Multi-level debugger
US10778538B2 (en) Automated self-recovery of distributed services
CN113867778A (zh) 一种镜像文件的生成方法、装置、电子设备及存储介质
Hawkridge et al. Comparison of Erlang/OTP and JADE implementations for standby redundancy in a holonic controller
CN111061789A (zh) 一种智能电网基建信息管理系统
CN110874713A (zh) 业务状态管理方法与装置
Elgedawy CRESCENT: a reliable framework for durable composite web services management
US20240012657A1 (en) Bpaas compatibility check

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Mao Ziwei

Inventor after: Li Keqin

Inventor before: Mao Ziwei

Inventor before: Li Keqin

Inventor before: Ma Zhiyi

EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20201225

Assignee: Zhejiang Visual Intelligence Innovation Center Co.,Ltd.

Assignor: Institute of Information Technology, Zhejiang Peking University|Hangzhou Weiming Information Technology Co.,Ltd.

Contract record no.: X2023330000927

Denomination of invention: Detection and processing methods for matching states between functions and triggers in cloud services

Granted publication date: 20230407

License type: Common License

Record date: 20231219