创建及测试函数

最近更新时间:2024-07-22 11:57:53

我的收藏

操作场景

本文介绍如何快速创建一个 Web 函数,您可通过本文了解 Web 函数创建过程及云函数控制台基本操作。

前提条件

在使用腾讯云云函数之前,您需要 注册腾讯云账号 并完成 实名认证

操作步骤

通过模板创建函数

1. 登录 Serverless 控制台,单击左侧导航栏的函数服务
2. 在主界面上方选择期望创建函数的地域,并单击新建,进入函数创建流程。
3. 选择使用模板创建来新建函数,在搜索框里筛选 WebFunc,筛选所有 Web 函数模板,选择您想使用的模板,单击下一步。如下图所示:



4. 配置页面,您可以查看模板项目的具体配置信息并进行修改。
5. 单击完成,即可创建函数。 函数创建完成后,您可在函数管理页面,查看 Web 函数的基本信息,并通过 API 网关生成的访问路径 URL 进行访问。

自定义创建函数

1. 登录 Serverless 控制台,单击左侧导航栏的函数服务
2. 在主界面上方选择期望创建函数的地域,并单击新建,进入函数创建流程。
3. 选择使用从头开始来新建函数,并填写函数基础配置,如下图所示:


函数类型:选择 “Web 函数”。
函数名称:填写您自己的函数名称。
地域:填写您的函数部署地域。
运行环境:此处以 Nodejs 框架为例,选择 “Nodejs 12.16”。
4. 高级配置中,查看其它必填配置项。
命名空间:默认为 default,您也可以选择其它空间部署。
启动命令:对于 Web 函数,您必须为您的项目配置 scf_bootstrap 启动文件,保证 Web Server 在函数环境中可以正常启动。您可以选择 SCF 为您提供的默认框架模板,也可以使用自定义模板,编写您自己的启动命令。详情可参见 启动文件说明
5. 触发器配置中,触发器目前只支持 API 网关触发和函数 URL,将自动按照默认配置创建触发器。
API 网关触发:



函数 URL:



6. 单击完成,即可创建函数。 函数创建完成后,您可在函数管理页面,查看 Web 函数的基本信息,并通过 API 网关/ 函数 URL 生成的访问路径 URL 进行访问。

云端测试

方式1
方式2
方式3
您可以在浏览器里打开该访问路径 URL,如果可以正常访问,则说明函数创建成功。如下图所示:


您可以在函数代码页面,通过测试能力,拼装指定的 HTTP 请求进行测试,通过 HTTP 响应结果查看函数是否部署成功。


注意:
控制台测试通过网关 API 接口进行测试调用,如果失败,API 侧会自动执行重试逻辑,最多重试4次,因此您的一次失败请求会看到多条执行日志。
您可以使用其他 HTTP 测试工具,如 CURL、POSTMAN 等测试您已创建成功的 Web 函数。

查看日志

Web 函数场景下,各个请求的返回 Body 信息不会自动上报到日志,您可以根据自己的开发语言,通过console.log()print() 等语句,在代码里自定义上报。
对于 PHP,由于所有的输入会自动作为返回体,您需要执行以下命令,将日志输出到 stdout 中,完成日志上报:
<?php
$stdout = fopen("php://stderr","w");
fwrite($stdout,"123\\n");
?>
在已创建函数的详情页面,选择日志查询,即可查看函数详细日志。详情可参见 查看运行日志

查看监控

在已创建函数的详情页面,选择监控信息,即可查看函数调用次数、运行时间等情况。详情可参见 监控指标说明
注意:
监控统计的粒度最小为1分钟。您需要等待1分钟后,才可查看当次的监控记录。

常见错误码解决方法

常见错误分为用户错误与平台错误两种类型:
用户错误:用户操作不当导致的运行失败,例如发送的请求不符合标准、启动文件命令写错、未监听正确端口、内部业务代码写错等,返回错误码为4xx。
平台错误:由于函数平台内部错误导致的运行失败,错误码为500。
下表描述了请求错误和函数错误可能出现的场景,以便您迅速排查问题。更多错误码详情可参见 云函数状态码

2xx状态码

状态码
返回信息
说明
200
Success
函数执行成功,如果看到该返回码,但返回信息与预期不符,请检查您代码逻辑是否正确。

4xx状态码

状态码
返回信息
说明
404
InvalidSubnetID
当函数执行执调用时子网 id 错误时,会有该返回信息,请检查函数的网络配置信息是否正确以及子网 id 是否有效。
405
ContainerStateExitedByUser
容器进程正常退出,请检查您的启动文件是否编写正确。详情请参见 状态码相关问题
406
RequestTooLarge
函数调用请求参数体太大时,会有该返回信息,同步请求事件最大为6MB。
407
The HTTP response body exceeds the size limit.
函数返回 Body 过大,超出6MB限制,请调整函数返回值大小后重试。
430
User code exception caught
当用户代码执行出现错误时,会有该返回信息,可以根据控制台的错误日志,查看代码错误堆栈信息,检查代码是否能正常执行。
433
TimeLimitReached
当函数执行时间超出超时配置,会有该返回信息,请检查业务代码是否有大量耗时处理操作,或在函数配置页调整执行超时时间。
439
User process exit when running
当函数执行时用户进程意外退出时,会有该返回信息,可根据返回错误信息查询进程退出原因修复函数代码。
446
PortBindingFailed
未监听指定端口,请检查您的业务代码是否监听9000端口。
499
kRequestCanceled
用户手动中断请求。

5xx状态码

状态码
返回信息
说明
500
InternalError
内部错误,请稍后重试。若仍无法解决,请联系 在线客服

本地调试注意事项

在本地容器调试时,为了保证和云上标准容器环境一致,需注意本地环境内的可读写文件限制。本地容器启动命令可参考如下命令:
注意:
此命令仅为参考,请修改为您自己的镜像环境。
docker run -ti --read-only -w /var/user \\
-v /usr/local/cloudfunction/runtime:/var/runtime:ro \\
-v ${PWD}:/var/user:ro \\
-v /tmp:/tmp \\
-v /usr/local/cloudfunction/runtime:/var/runtime:ro \\
-v /usr/local/cloudfunction/lang:/var/lang:ro \\
ccr.ccs.tencentyun.com/cloudfunc/qcloud-func bash