该问题通常是由于代码执行的依赖文件没有上传到云上环境导致的,可按照如下方法进行检查:
说明:
云函数的运行环境内保持的是 UTC 时间,即0时区时间,和北京时间有8小时的时间差。
可以通过语言的时间处理相关库或代码包,识别 UTC 时间并转换为+8区北京时间,或通过设置环境变量 TZ=Asia/Shanghai
指定时区。
云函数在执行过程中,都拥有一块500MB的临时磁盘空间 /tmp
,用户可以在执行代码时对该空间进行一些读写操作,也可以创建子目录,但这部分数据在函数执行完成后不会保留。
说明:
- 实例间的临时空间互相隔离,不共享,即每个实例均有独立的临时空间。
- 运行环境内除
/tmp
目录下,其他均限制为只读。
如果持续写入 /tmp
临时目录,并且由于调用频繁导致实例持续被使用,可能存在临时目录被写满,导致无法写入的问题。
请在代码中自行检查临时目录的写情况,并使用代码删除不再使用的临时文件以释放空间。
API 网关会默认将 SCF 返回结果当做 JSON 格式,详情请参见 集成响应与透传响应,在函数配置里勾选集成响应以解决问题。请注意,如果开启了集成响应,则需按照规范返回数据结构 。
可以,详情请参见 创建子用户并授予部分函数的操作权限。
请参见 SCF 日志与 CLS 打通教程 将日志转到日志服务 CLS ,并在日志服务 CLS 配置日志 投递到 COS。
可以通过调用 SCF 的 Invoke API 直接触发函数。该函数的所有者或有调用该函数 Invoke API 权限的帐号能直接调用。
可以。更新函数时会有短暂的窗口期,通常不到1分钟,在这期间请求将由旧函数代码或新函数代码实现。
SCF 可以支持大量函数实例并行。每个地域下函数总并发配额可参考 配额限制说明,可参考 并发管理 进行函数级并发管理。
如遇故障,进行同步调用的函数会返回异常信息,异步调用的函数将自动重试,重试策略可参考 错误类型与重试策略。
能。用户可使用正常的语言和操作系统功能,如创建额外的线程和进程。分配至函数的资源,包括内存、执行时间、磁盘和网络,都通过其使用的线程/进程进行共享。
我们尽量不对正常的语言和操作系统活动施加限制,但有些活动仍被禁用。例如,入站网络连接将被阻止。
可以使用 API 网关。API 网关后端配置成云函数,然后调用网关 API 来触发云函数 。详细教程请参见 如何创建触发器 和 API 网关触发器。
当前支持:手动触发(API)、定时触发、COS 触发、CMQ 触发、API 网关触发等触发方式,后续更多触发方式正在持续添加中。
目前支持 Python 2.7 & 3.6、Node.js 6.10 & 8.9 & 10.15 & 12.16、Java 8、PHP 5 & 7、Golang 及 Custom Runtime 自定义语言。后续更多开发语言支持正在持续添加中。
不能,SCF 会代您管理计算基础设施。
每个函数都运行在自己独有的环境中,拥有自己的资源和文件系统。SCF 使用与 CVM 相同的技术在基础设施和执行级别上提供安全性和隔离。
可以,您在创建云函数或修改云函数配置时,选择 VPC 配置,将云函数和 CVM,TencentDB 等部署到同一 VPC 即可。
为了提高性能,SCF 会在一定时间内保留您的函数实例,将其再用于服务后续请求。但您的代码不应假设此操作总是发生。
保持函数的无状态性可使函数按需要尽可能多地启动多个实例,从而满足请求的速率。
SCF 集成了日志功能,每次调用都会将该次调用的日志输出到控制台日志窗口中,日志记录了该函数每次使用时所消耗的资源、代码中的 log 及平台调用信息等,您可以轻松将故障排除相关的 log 语句插入到代码中。
通常是压缩时包含了外层文件夹,zip 解压后无法找到入口函数,即函数的执行方法无法在 zip 包中找到对应的执行文件或函数入口。
执行方法格式为 a.b
,其中:a 是 py 文件的名称,b 是代码中的方法名。
如果用户上传的 zip 包在解压后的根目录下找不到名为 a.py
的文件,则会提示“函数代码无法显示,代码 zip 包中找不到执行方法指定的文件名”。
例如:文件结构如下:
--RootFolder
----SecondFolder
------a.py
------thirdfolder
--------sth.json
压缩代码 zip 包时,如果压缩的是 SecondFolder,则会出现上述错误,需要选择 a.py
和 thirdfoler
进行压缩。
请先将超时时间设置为一个较大值(不超过900均可)再测试一遍,如果仍然超时,请检查您的代码 log 中是否存在过大的输入数据和计算量、无法跳出的循环、长时间的 sleep 等。
用户不必关心函数扩缩容问题,SCF 平台会代您自动扩展。每当接收函数请求时,SCF 会快速定位空闲容量并运行您的代码。由于您的代码是无状态的,可以在需要时尽可能多地启动实例,而不会发生冗长的部署和配置延迟。
用户可以选择函数分配的内存量,CPU 和其他资源也会相应的按比例进行分配。例如,选择256MB的内存时,分配至函数的 CPU 约是分配128MB内存的两倍。
可以。用户可以在函数代码中包含自己的代码库,并以 zip 包的形式上传至平台。
通常是函数并发触发了配额上限,可以通过公式“函数并发 = qps(每秒的请求数量)x 函数执行时间(秒)”来计算所需的函数并发数量。
例如,qps = 100,函数执行时间 = 100ms,则实际需要的函数并发= 100 x 0.1 = 10。如果并发超了上限,您可以通过 提交工单 来提升限制。
账号欠费,请充值后重试。
创建函数依赖 SCF_QcsRole,请使用主账号访问 云函数控制台 按照引导完成授权。
请在访问管理 角色 页面中单击 SCF_QcsRole
并确认该角色的权限策略中是否已经关联预设策略 QcloudAccessForScfRole
,如未关联,请单击添加策略并关联 QcloudAccessForScfRole
后重试。
DemoId
如何获取?请在云函数控制台创建函数流程中选择模板创建,选择需要使用的模板,单击模板右上角的查看详情,在模板详情页单击点击下载模板函数。模板代码会以 DemoId
命名下载到本地。
注意:同一个函数模板不同地域下的
DemoId
不同,在获取DemoId
时,请关注地域选择。
本页内容是否解决了您的问题?