函数概述

最近更新时间:2023-08-21 09:41:21

我的收藏
函数是云函数 SCF 管理、运行的基本单元,通常由一系列配置与一系列可运行代码/软件包组成。您可以通过 API 触发函数运行,还可以通过不同的触发器向函数传递不同的事件触发函数运行并对事件进行处理。

函数相关概念

地域

函数资源必须归属于某个地域,SCF 已经支持的地域可参见 支持地域

命名空间

函数资源必须创建在某个地域的某个命名空间下,每个地域默认具有一个 default 命名空间,支持用户 新建命名空间,命名空间名称创建后不可修改。

函数名称

函数名称为函数的唯一标识,同一个命名空间下的函数名称不可重复,创建后不可修改。

函数类型

SCF 支持 event 函数和 Web 函数两种函数类型。
event 函数由指定格式的事件触发,例如定时触发事件、COS 触发事件等,事件结构详情见 触发器
Web 函数专注于优化 Web 服务场景,可以直接接受并处理 HTTP 请求,详情见 Web 函数

时区

云函数内默认使用 UTC 时间,您可以通过配置环境变量 TZ 修改。在您选择时区后,将自动添加对应时区的 TZ 环境变量。

运行环境

函数的代码运行环境,SCF 现已支持 PythonNode.jsPHPJAVAGolangCustom Runtime镜像部署

函数执行方法

执行方法表明了调用云函数时需要从哪个文件中的哪个函数开始执行,可分为以下三种方式:
一段式格式为 "[文件名]" ,支持 Golang 环境时使用,例如 "main"。
两段式格式为 "[文件名].[函数名]" ,支持 Python、Node.js 及 PHP 环境时使用,例如 "index.main_handler"。
说明
两段式的执行方法中,前一段指向代码包中不包含后缀的文件名,后一段指向文件中的入口函数名。需确保代码包中的文件名后缀与语言环境匹配,例如 Python 环境为 .py 文件,Node.js 环境为 .js 文件。
三段式格式为 "[package].[class]::[method]",支持 Java 环境时使用,例如 "example.Hello::mainHandler"。

函数描述

可用于记录函数相关作用等信息。

函数相关配置

除上述配置外,还可通过控制台编辑函数配置或 更新函数配置 修改以下内容,配置更多函数运行时的信息:

资源类型

函数支持算力包含 CPU、GPU。

资源规格

设置资源类型对应的规格,如 CPU 不同内存配置,GPU 不同卡类型等,详情见 函数算力支持

初始化超时时间

指定函数初始化阶段最长运行时间,可选值范围为3-300秒,镜像部署函数默认90秒,其他函数默认60秒。
注意
函数初始化阶段包括准备函数代码、准备镜像、准备层等相关资源以及执行函数主流程代码。如果您的函数具有较大的镜像或复杂的函数主流程业务逻辑,请适当调大初始化超时时间。
初始化超时时间仅在触发实例冷启动调用的场景下生效。
客户端的等待时间建议稍大于初始化超时时间与执行超时时间的和。

执行超时时间

指定函数的最长运行时间,可选值范围为1秒- 900秒,默认3秒。

环境变量

在配置中定义的环境变量可在函数运行时从环境中获取到。详情见 环境变量

运行角色

将角色中包含的策略对应权限授权给函数,详情见 权限管理。例如,函数代码中执行将某对象写入对象存储 COS 的动作,需要为该函数配置具有写 COS 权限的运行角色。

日志配置

将函数调用日志投递至指定的日志主题,详情见 日志管理

网络配置

配置函数网络访问权限,详情见 网络配置
公网访问:默认启用,关闭后函数无法访问公网资源。
固定出口 IP:启用后平台将为函数分配一个固定的公网出口 IP。
私有网络:启用后,函数可以访问同一个私有网络下的资源。

文件系统

启用后,函数可以访问所挂载的文件系统的资源。详情见 挂载 CFS 文件系统

执行配置

执行配置包含异步执行、状态追踪和异步执行事件管理,详情见 执行配置
异步执行:启用后,函数执行超时时间最大可支持 24 小时,函数创建后该配置无法修改。
链路追踪:仅在异步执行启用的情况下可开启,开启后针对异步执行的事件,将开始记录响应事件的实时状态,并提供事件的统计、查询及终止服务,产生的事件状态数据将为您保留3天。

异步调用配置

通过 异步调用配置 设置异步调用场景下的重试策略,还可以配置 死信队列 收集错误事件信息、分析失败原因。

应用性能观测

启用后,SCF 将上报函数运行基本耗时到指定的应用性能监控 APM 业务系统,您还可以在函数代码中埋点进行自定义上报,帮助您跟踪和监控函数的执行。详情见 应用性能观测

DNS 配置

在云函数的使用场景下,域名解析延时有可能导致函数执行超时失败,影响正常的业务逻辑;在函数高频调用的情况下,有可能导致 DNS 服务器解析超出频率限制,同样导致函数执行失败。云函数提供了 DNS 缓存配置来解决上述问题。DNS 缓存可以提升域名解析效率,缓解网络抖动等因素对域名解析成功率的影响。详情见 DNS 缓存配置

函数可执行的操作

创建函数:创建一个新的函数。
更新函数配置:更新函数的各项配置。
更新函数代码:更新函数的运行代码。
获取详情:获取函数配置、触发器及代码详情。
测试运行函数:根据需要,通过同步或异步方法触发函数运行。
获取日志:获取函数运行情况及输出的日志。
删除函数:删除不再需要的函数。
复制函数:复制函数到指定的地域、指定的名称、指定的配置。
函数的触发器相关操作有:
创建触发器:创建一个新的触发器。
删除触发器:删除已有触发器。
启停触发器:通过设置触发器启动或停止来临时停止云函数被事件源所发生的事件触发。