函数类型选型

为满足不同场景下的用户需求,函数计算提供事件函数和HTTP函数两种函数类型。本文介绍函数计算支持的函数类型的适用场景及差异,供您进行技术选型。

选型分析

函数计算支持两种类型的函数:事件函数和HTTP函数。

  • 事件函数适用于事件驱动模型中通过事件发生来调用关联函数。

  • HTTP函数适用于快速构建Web应用等场景。

函数计算的编程模型中,入口函数的模型由函数名、函数入参和返回值三部分组成。其中,函数入参也可以调用代码中定义的其他函数。

事件函数和HTTP函数在触发方式和函数入参两方面的区别如下。

函数类型

触发方式

函数入参

事件函数

您可以通过触发函数执行来实现某个特定功能。事件函数支持通过定时器、调用API/SDK或其他阿里云服务的触发器来触发函数执行。支持创建任何除HTTP触发器以外类型的触发器,例如OSS触发器、SLS触发器、CDN事件触发器、Tablestore触发器和EventBridge触发器等。关于支持的触发器类型和更多信息,请参见触发器简介。所有支持类型的触发器均可触发事件函数。

以Node.js语言为例,一个简单的入口函数模型如下所示。

exports.handler = function(event, context, callback) {
  callback(null, 'hello world');
}

入参说明

函数入参

解释说明

event

您调用函数时传入的事件数据,您可以根据实际情况对其进行转换。

context

函数计算平台定义的函数入参,它的数据结构由函数计算设计,包含函数运行时的信息,例如请求ID、临时密钥等。

callback

系统定义的函数,作为入口函数的入参用于返回调用函数的结果。

有关Node.js事件函数的更多信息,请参见事件请求处理程序(Event Handler)。有关其他编程语言的函数入参介绍,请参见开发语言列表

HTTP函数

HTTP函数仅支持通过发送HTTP/HTTPS请求来触发函数执行。您可以自行配置触发方式,例如GET、POST、PUT、DELETE、HEAD和PATCH方式。

为函数创建HTTP触发器后,HTTP触发器通过发送HTTP/HTTPS请求触发函数执行。一个版本或别名下仅支持创建一个HTTP触发器。具体信息,请参见HTTP触发器概述

以Node.js语言为例,一个简单的入口函数模型如下所示。

exports.handler = function(request, response, context) {
  response.send(null, 'hello world');
}

入参说明

函数入参

解释说明

request

请求结构体,包括HTTP请求头部键值对、请求方法和客户端IP地址等。

response

响应接口,包括HTTP响应头部键值对和HTTP body等。

context

函数计算平台定义的函数入参,它的数据结构由函数计算设计,包含函数运行时的信息,例如请求ID、临时密钥等。

有关Node.js HTTP函数的更多信息,请参见HTTP请求处理程序(HTTP Handler)。有关其他编程语言的函数入参介绍,请参见开发语言列表