配置文件-云函数
在 CloudBase CLI 配置文件 cloudbaserc.json 中,通过 functions 数组可以定义多个云函数的配置项,这些配置项控制着函数的部署行为和运行时特性。
配置扁平化
从 CLI 0.6.0 版本起,functions 选项中的 config 选项已扁平化处理,原有嵌套在 config 中的所有配置项现在可以直接写在 functions 数组项中,使用更加简便。
快速示例
一个典型的云函数配置示例:
{
"envId": "dev-xxxx",
"functions": [
{
"name": "app",
"timeout": 5,
"runtime": "Nodejs18.15",
"installDependency": true,
"handler": "index.main"
}
]
}
配置项详解
基础配置项
| 配置项 | 必填 | 类型 | 默认值 | 描述 |
|---|---|---|---|---|
name | 是 | String | - | 云函数名称,即函数部署后的标识符 |
handler | 否 | String | index.main | 函数处理方法名称,格式为 文件名.函数名Java 运行时必须指定完整路径,如 package.Class::mainHandler |
runtime | 否 | String | Nodejs18.15 | 运行时环境,详见运行时环境 |
timeout | 否 | Number | 5 | 函数超时时间,取值范围 1-60 秒 |
memorySize | 否 | Number | 256 | 函数内存大小(MB),可选值: 128、256、512、1024、2048 |
代码和依赖配置
| 配置项 | 必填 | 类型 | 默认值 | 描述 |
|---|---|---|---|---|
ignore | 否 | String/Array | - | 部署时忽略的文件或目录,支持 glob 匹配规则 建议忽略 node_modules、.git 等 |
installDependency | 否 | Boolean | false | 是否在云端自动安装依赖包(仅支持 Node.js 运行时) |
codeSecret | 否 | String | - | 代码加密密钥,由 36 位大小写字母和数字组成 |
高级配置
| 配置项 | 必填 | 类型 | 默认值 | 描述 |
|---|---|---|---|---|
envVariables | 否 | Object | - | 环境变量键值对,部署时会完全覆盖线上配置 |
vpc | 否 | Object | - | 私有网络配置,详见VPC 配置 |
triggers | 否 | Array | - | 触发器配置,详见触发器配置 |
params | 否 | Object | - | CLI 调用云函数时的默认入参 |
运行时环境
CloudBase 云函数支持以下运行时环境:
Node.js 运行时
Nodejs20.19(公测中)Nodejs18.15(推荐)Nodejs16.13Nodejs14.18Nodejs12.16Nodejs10.15
其他语言运行时
Php8.0Php7.4Php7.2Python3.9Python3.7Python3.6Python2.7Golang1Java8
运行时说明
- Node.js 项目默认使用
Nodejs18.15运行时,可以省略runtime配置 - PHP、Java 等非 Node.js 运行时必须显式指定
runtime值 - 启用
codeSecret代码加密后,将无法在小程序 IDE 和腾讯云控制台中查看云函数源代码
触发器配置
触发器配置项用于定义云函数的自动触发规则:
| 配置项 | 必填 | 类型 | 描述 |
|---|---|---|---|
name | 是 | String | 触发器名称,最大支持 60 个字符 支持字符: a-z、A-Z、0-9、- 和 _,必须以字母开头 |
type | 是 | String | 触发器类型,目前仅支持 timer (定时触发器) |
config | 是 | String | 触发器配置,定时触发器使用标准 Cron 表达式 |
配置示例:
{
"triggers": [
{
"name": "myTrigger",
"type": "timer",
"config": "0 0 2 1 * * *"
}
]
}
触发器限制
目前每个云函数仅支持配置一个触发器。详细的触发器管理请参考 触发器文档。
VPC 配置
私有网络配置项用于将云函数部署到指定的 VPC 网络中:
| 配置项 | 必填 | 类型 | 描述 |
|---|---|---|---|
vpcId | 是 | String | VPC 网络 ID |
subnetId | 是 | String | VPC 子网 ID |
配置示例:
{
"vpc": {
"vpcId": "vpc-xxx",
"subnetId": "subnet-xxx"
}
}
更新函数配置
使用 tcb fn config update 命令可以更新已部署云函数的运行时配置:
# 更新指定函数的配置
tcb fn config update <functionName>
# 更新配置文件中所有函数的配置
tcb fn config update
命令行为说明:
- CLI 会从
cloudbaserc.json中读取函数配置并同步到云端 - 配置文件中存在的所有配置项都会被更新,暂不支持指定更新单个配置项
- 支持更新的配置包括: 超时时间、环境变量、内存大小、VPC 网络、依赖安装等
注意
使用此命令时,配置文件中的配置会完全覆盖云端配置,请确保配置文件包含所有需要保留的配置项。
使用示例:
# 更新 app 函数的配置
tcb fn config update app
# 更新所有函数的配置
tcb fn config update
完整配置示例
以下是一个包含所有常用配置项的完整示例:
{
"envId": "dev-xxxx",
"functions": [
{
"name": "app",
"handler": "index.main",
"timeout": 5,
"runtime": "Nodejs18.15",
"memorySize": 256,
"installDependency": true,
"envVariables": {
"key": "value",
"DB_HOST": "localhost"
},
"vpc": {
"vpcId": "vpc-xxx",
"subnetId": "subnet-xxx"
},
"triggers": [
{
"name": "myTrigger",
"type": "timer",
"config": "0 0 2 1 * * *"
}
],
"params": {},
"ignore": [
"*.md",
".git",
"node_modules",
"node_modules/**/*",
"test/**/*"
]
}
]
}
重要提示
环境变量覆盖规则
部署时 envVariables 配置会完全覆盖云端已有的环境变量配置,而非增量合并。
示例场景:
- 云端已配置环境变量:
{DB_HOST: "xxx", API_KEY: "xxx"} - 配置文件中仅有:
{DB_HOST: "yyy"} - 部署后云端环境变量变为:
{DB_HOST: "yyy"}(API_KEY 被删除)
建议做法:
如果在控制台手动配置了环境变量,请确保在 cloudbaserc.json 中也包含这些配置,否则部署后会丢失。