为满足不同场景下的用户需求,函数计算提供事件函数和HTTP函数两种函数类型,支持内置运行时、自定义运行时和容器镜像三种部署函数的方式。本文介绍函数计算支持的函数类型以及函数部署方式,供您进行技术选型。
函数类型
函数计算目前支持两种类型的函数:事件函数和HTTP函数。事件函数适用于事件驱动模型中通过事件发生来调用关联函数;HTTP函数主要适用于快速构建Web应用等场景。
函数计算的编程模型中,入口函数的模型由函数名、函数入参和返回值三部分组成。其中,函数入参也可以调用代码中定义的其他函数。
事件函数和HTTP函数在触发方式和函数入参两方面的区别如下。
函数类型 | 触发方式 | 函数入参 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
事件函数 | 您可以通过触发函数执行来实现某个特定功能。事件函数支持通过定时器、调用API/SDK或其他阿里云服务的触发器来触发函数执行。支持创建任何除HTTP触发器以外类型的触发器,例如OSS触发器、SLS触发器、CDN事件触发器、Tablestore触发器和EventBridge触发器等。关于支持的触发器类型和更多信息,请参见触发器简介。所有支持类型的触发器均可触发事件函数。 | 以Node.js语言为例,一个简单的入口函数模型如下所示。
入参说明
有关Node.js事件函数的更多信息,请参见事件请求处理程序(Event Handler)。有关其他编程语言的函数入参介绍,请参见开发语言列表。 | ||||||||
HTTP函数 | HTTP函数仅支持通过发送HTTP/HTTPS请求来触发函数执行。您可以自行配置触发方式,例如GET、POST、PUT、DELETE、HEAD和PATCH方式。 为函数创建HTTP触发器后,HTTP触发器通过发送HTTP/HTTPS请求触发函数执行。一个版本或别名下仅支持创建一个HTTP触发器。具体信息,请参见HTTP触发器概述。 | 以Node.js语言为例,一个简单的入口函数模型如下所示。
入参说明
有关Node.js HTTP函数的更多信息,请参见HTTP请求处理程序(HTTP Handler)。有关其他编程语言的函数入参介绍,请参见开发语言列表。 |
部署方式
从开发流程角度,函数的部署方式包括通过控制台部署、通过Serverless Devs工具部署和调用API/SDK部署。具体信息,请参见使用控制台创建函数、使用Serverless Devs管理函数资源和CreateFunction。
从Runtime类型角度,函数计算支持三种部署方式:使用内置运行时创建、使用自定义运行时创建、使用容器镜像创建。您可以根据业务情况选择不同的部署方式。
部署方式介绍
使用自定义运行时创建
如果您想基于各个语言的流行框架(Java SpringBoot、Node.js Express、Python Flask、Golang Gin 等)编写程序,或者迁移已有的框架应用,请选择自定义运行时。具体操作,请参见创建函数。

使用容器镜像创建
阿里云容器镜像服务ACR(Alibaba Cloud Container Registry)是面向容器镜像、Helm Chart等符合OCI标准的云原生制品安全托管及高效分发平台。使用容器镜像部署函数功能,您无需自建并维护镜像托管服务,即可享用云上安全高效的镜像托管和分发服务。具体操作,请参见创建Custom Container函数。

部署方式差异对比
对比项 | 使用内置运行时创建 | 使用自定义运行时创建 | 使用容器镜像创建 |
---|---|---|---|
代码包限制 | 最大支持10 GB原始代码 | 最大支持10 GB原始代码 | 最大支持10 GB未解压镜像 |
代码包格式 | ZIP、JAR(Java)、文件夹 | ZIP、JAR(Java)、文件夹 | 参见什么是容器镜像服务ACR |
是否支持GPU实例 | 不支持 | 不支持 | 支持 |
运行时环境 | Node.js、Python、PHP、Java、.NET Core 、Go | 无限制 | 无限制 |