腾讯云云Web函数使用教程 - 创建及测试函数
文档简介:
操作场景:
本文介绍如何快速创建一个 Web 函数,您可通过本文了解 Web 函数创建过程及云函数控制台基本操作。
前提条件:
在使用腾讯云云函数之前,您需要 注册腾讯云账号 并完成 实名认证。
操作场景
本文介绍如何快速创建一个 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 网关触发,将自动按照默认配置创建触发器。


6. 单击完成,即可创建函数。
函数创建完成后,您可在函数管理页面,查看 Web 函数的基本信息,并通过 API 网关生成的访问路径 URL 进行访问。
云端测试
您可以在浏览器里打开该访问路径 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。
|
410
|
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