Web 函数(Web Function)是云函数的一种函数类型,区别于事件函数(Event Function)对于事件格式的限制,专注于优化 Web 服务场景,用户可以直接发送 HTTP 请求到 URL 触发函数执行。
功能与优势
相较于事件型函数,Web 函数在支持 Web 服务场景的能力上,具备以下优势:函数可以直接接收并处理 HTTP 或 WebSocket 原生请求,API 网关不再需要做 json 格式转换,减少请求处理环节,提升 Web 服务性能。Web 函数的编写体验更贴近编写原生 Web 服务,可以使用 Node.js 原生接口,保证和本地开发服务体验一致。丰富的框架支持,您可以使用常见的 Web 框架(例如 Nodejs Web 框架:Express
、Koa
)编写 Web 函数,也可以将您本地的 Web 框架服务以极小的改造量快速迁移上云。Web 函数自动为您创建 API 网关服务,部署完成后,网关侧会自动生成一个默认 URL 供用户访问和调用,简化了学习成本和调试过程。控制台提供了测试能力,您可以在函数控制台快速测试您的服务。
运行原理
Web 函数运行原理如下图所示:n

用户发送的 HTTP 请求经过 API 网关后,网关侧将原生请求直接透传的同时,在请求头部添加了网关触发函数时需要的函数名、函数地域等内容,并一起传递到函数环境,触发后端函数执行。函数环境内,通过内置的 Proxy 实现 Nginx 转发,并去除头部非产品规范的请求信息,将原生 HTTP 请求通过指定端口发送给用户的 Web Server 服务。用户的 Web Server 配置好指定的监听端口9000
和服务启动文件后部署到云端,通过该端口获取 HTTP 请求并进行处理。
使用限制
功能限制
目前 Web 函数只支持绑定 API 网关触发器。同一个函数支持绑定多个 API 触发器,但所有 API 都必须在一个 API 服务下。不支持异步调用,不支持重试。在腾讯云标准环境下,仅 /tmp
目录可读可写,输出文件时请注意选择 /tmp
路径,否则会导致服务因缺少写权限而异常退出。对于 JAVA、Go 等需要打包部署的项目,请保证您的 scf_bootstrap
也在 zip 包中一起上传,否则可能导致找不到启动文件。
请求限制
Web 函数只能通过 API 网关调用,不支持通过函数 API 接口触发。在 Response headers
中有以下限制:所有 key 和 value 的大小不超过4KB。body 的大小不超过6MB。部署您的 Web 服务时,必须监听指定的 9000
端口和地址 0.0.0.0
。目前 HTTP 请求 Header 里的 Connection
字段不支持自定义配置。
函数公共请求头
用户的 Web Server 从云函数环境中接收到的公共请求头如下表所示,以下字段均不支持自定义:
Header 字段 | 描述 |
X-Scf-Request-Id | 当前请求 ID |
X-Scf-Memory | 函数实例运行时可使用的最大内存 |
X-Scf-Timeout | 函数执行的超时时间 |
X-Scf-Version | 函数版本 |
X-Scf-Name | 函数名称 |
X-Scf-Namespace | 函数所在命名空间 |
X-Scf-Region | 函数所在地域 |
X-Scf-Appid | 函数所有者的 Appid |
X-Scf-Uin | 函数所有者的 Uin |
X-Scf-Session-Token | 临时 SESSION TOKEN,函数开启运行角色后会有该字段 |
X-Scf-Secret-Id | 临时 SECRET ID,函数开启运行角色后会有该字段 |
X-Scf-Secret-Key | 临时 SECRET KEY,函数开启运行角色后会有该字段 |
官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠
转转请注明出处:https://www.yunxiaoer.com/149329.html