一、前提条件
在使用腾讯云云函数之前,你需要 注册腾讯云账号 并完成 实名认证。
二、通过模板创建函数
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