操作场景
本文介绍如何快速创建一个 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 进行访问。
云端测试
您可以在浏览器里打开该访问路径 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