云函数
getFunctionList
1. 接口描述
接口功能:获取云函数列表
接口声明:getFunctionList(limit, offset): Promise<Object>
自 3.7.0 版本起支持此接口
2. 输入参数
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| limit | 否 | Number | 范围 |
| offset | 否 | Number | 偏移 |
3. 返回结果
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| RequestID | 是 | String | 请求唯一标识 |
| TotalCount | 是 | Number | 总数 |
| Functions | 是 | Array | 函数列表 |
| Functions[].FunctionId | 是 | String | 函数 ID |
| Functions[].FunctionName | 是 | String | 函数名称 |
| Functions[].Namespace | 是 | String | 命名空间 |
| Functions[].Runtime | 是 | String | 运行时间 |
| Functions[].AddTime | 是 | String | 创建时间 |
| Functions[].ModTime | 是 | String | 修改时间 |
| Functions[].Status | 是 | String | 函数状态 |
| Functions[].StatusDesc | 是 | String | 函数状态详情 |
| Functions[].Description | 是 | String | 函数描述 |
4. 示例代码
import CloudBase from '@cloudbase/manager-node'
const { functions } = new CloudBase({
secretId: 'Your SecretId',
secretKey: 'Your SecretKey',
envId: 'Your envId' // 云开发环境ID,可在腾讯云云开发控制台获取
})
async function test() {
let res = await functions.getFunctionList(20, 0)
const { Functions } = res
for(let function in Functions) {
console.log(function)
}
}
test()
createFunction
1. 接口描述
接口功能:创建函数
接口声明:createFunction(funcParam: ICreateFunctionParam): Promise<Object>
⚠️ 本接口从 2.0.0 版本后,请求参数由( func: ICloudFunction, functionRootPath: string, force: boolean, base64Code: string ) 转换为 (funcParam: ICreateFunctionParam),属于不兼容变更
2. 输入参数
ICreateFunctionParam
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| func | 是 | ICloudFunction | 函数配置 |
| functionRootPath | 否 | String | 用户本地函数文件目录 |
| force | 否 | Boolean | 是否覆盖同名函数,默认为 false |
| base64Code | 否 | String | 函数文件的 base64 编码 |
| codeSecret | 否 | String | 代码 保护密钥 |
| functionPath | 否 | String | 函数所在文件夹路径 |
| deployMode | 否 | String | 代码部署方式:cos、zip 或 image;默认 cos(zip 限制 1.5MB) |
| code | 否 | IFunctionCode | 直接传入 Code(如 CosBucketName(不包含 -appid 后缀)/ CosObjectName / ZipFile / ImageConfig) |
💡 上传方式说明:默认使用
cos,可指定zip(限制 1.5MB)或image(镜像部署)。
💡 参数优先级说明:
deployMode=image> 显式code> 本地打包参数(base64Code/functionPath/functionRootPath)。
💡 冲突处理说明:当同时传入
code与本地打包参数时,将优先使用code。
💡 镜像部署说明:使用
deployMode=image或code.ImageConfig时,需提供ImageUri。
注:如果只更新函数代码,请使用 updateFunctionCode 接口。
注:如果存在同名云函数,并设置了 force 选项为 true,SDK 将会自动更新函数代码,更新函数配置并创建触发器。
注:createFunction 支持多种方式创建函数:
- 用户直接指定函数文件夹的路径
- 用户指定本地的存放函数文件夹的根目录
functionRootPath,根据functionRootPath + name确定函数文件路径 - 用户将函数代码包压缩为 zip 文件后进行 base64 转码,传入 base64Code 参数
- 用户直接传入
code进行创建
IFunctionCode
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| CosBucketName | 否 | String | COS 存储桶名称(不包含 -appid 后缀) |
| CosObjectName | 否 | String | COS 对象路径 |
| CosBucketRegion | 否 | String | COS 存储桶地域 |
| TempCosObjectName | 否 | String | 临时 COS 对象路径(TempCos) |
| ZipFile | 否 | String | ZIP 包的 base64 编码内容 |
| CosTimestamp | 否 | String | 上传到云开发 COS 后返回的时间戳 |
| ImageConfig | 否 | IFunctionImageConfig | 镜像配置(镜像部署时使用) |
IFunctionImageConfig
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| ImageType | 是 | String | 镜像仓库类型:personal 或 enterprise |
| ImageUri | 是 | String | 镜像地址,格式:{domain}/{namespace}/{imageName}:{tag}@{digest}(支持不带 digest) |
| RegistryId | 否 | String | 企业版 TCR 实例 ID;当 ImageType=enterprise 时必填 |
| Command | 否 | String | 容器启动命令;不填时默认使用 Dockerfile 中的 Entrypoint |
| Args | 否 | String | 容器启动参数;不填时默认使用 Dockerfile 中的 CMD,多个参数用空格分隔 |
| ImagePort | 否 | Integer | 镜像函数端口:Web Server 镜像为 9000,Job 镜像为 -1,默认 9000 |
注:ICloudFunctionConfig 为旧参数结构体
ICloudFunctionConfig
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| timeout | 否 | Number | 函数超时时间,单位秒,默认 10 秒 |
| envVariables | 否 | Record<string, string | number | boolean> | 包含环境变量的键值对对象 |
| vpc | 否 | IFunctionVPC | 私有网络配置 |
| runtime | 否 | String | 运行时环境配置,可选值见运行环境支持 |
| installDependency | 否 | Boolean | 是否安装依赖,仅 Node.js 有效 |
| memorySize | 否 | Number | 函数运行时内存大小,单位 MB,默认 256 |
| l5 | 否 | Boolean | 是否启用 L5 访问 |
| role | 否 | String | 函数绑定的角色 |
ICloudFunction
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| name | 是 | String | 函数名称 |
| description | 否 | String | 函数描述 |
| type | 否 | String | 函数类型,可选值:Event(默认)或 HTTP |
| timeout | 否 | Number | 函数超时时间,单位秒,默认 10 秒 |
| envVariables | 否 | Record<string, string | number | boolean> | 包含环境变量的键值对对象 |
| vpc | 否 | IFunctionVPC | 私有网络配置 |
| runtime | 否 | String | 运行时环境配置,可选值见运行环境支持 |
| installDependency | 否 | Boolean | 是否安装依赖,仅 Node.js 有效 |
| memorySize | 否 | Number | 函数运行时内存大小,单位 MB,默认 256 |
| l5 | 否 | Boolean | 是否启用 L5 访问 |
| role | 否 | String | 函数绑定的角色 |
| triggers | 否 | Array of ICloudFunctionTrigger | 触发器配置列表 |
| handler | 否 | String | 函数入口 |
| ignore | 否 | String 或 Array<String> | 上传函数代码时忽略的文件,以 Glob 模式匹配 |
| isWaitInstall | 否 | Boolean | 是否等待依赖安装完成 |
| codeSecret | 否 | String | 代码保护密钥 |
| layers | 否 | Array<ILayerItem> | 函数要关联的 Layer 版本列表,Layer 会按照在列表中顺序依次覆盖 |
ILayerItem
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| name | 是 | String | layer 名称 |
| version | 是 | Number | 版本号 |
注:handler 函数处理入口,Node.js 项目默认值为 index.main,入口文件只能在根目录,如 Node.js 项目的 index.main,指向的是 index.js 文件的 main 方法
注:如果使用在线安装依赖,Node.js 运行时需设置为 Nodejs20.19 等支持的版本,且必须在入口文件同级目录设置 package.json,在线安装依赖暂不支持其他运行时
如果不使用在线安装依赖,Node.js 运行时无需填 runtime (默认Nodejs20.19),但使用 Php 和 Java 则必填runtime 。
ICloudFunctionTrigger
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| name | 是 | String | 触发器名称 |
| type | 是 | String | 触发器类型,可选值:timer |
| config | 是 | String | 触发器配置,在定时触发器下,config 格式为 cron 表达式 |
IFunctionVPC
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| vpcId | 是 | String | VPC Id |
| subnetId | 是 | String | VPC 子网 Id |
⚠️ 请在测试时在云开发控制台确认函数创建并部署成功,有可能创建成功,
createFunction成功返回,但是部署失败,部署失败的原因通常为handler参数与源码包不对应。
3. 返回结果
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| RequestId | 是 | String | 请求 ID |
4. 示例代码
import CloudBase from "@cloudbase/manager-node";
const { functions } = new CloudBase({
secretId: "Your SecretId",
secretKey: "Your SecretKey",
envId: "Your envId", // 云开发环境ID,可在腾讯云云开发控制台获取
});
async function test() {
await functions.createFunction({
func: {
// functions 文件夹下函数文件夹的名称,即函数名
name: "app",
// 超时时间
timeout: 5,
// 环境变量
envVariables: {
key: "value",
akey: "c",
},
runtime: "Nodejs20.19",
// 函数触发器,说明见文档: https://cloud.tencent.com/document/product/876/32314
triggers: [
{
// name: 触发器的名字
name: "myTrigger",
// type: 触发器类型,目前仅支持 timer (即定时触发器)
type: "timer",
// config: 触发器配置,在定时触发器下,config 格式为 cron 表达式
config: "0 0 2 1 * * *",
},
],
layers: [
{
version: 1,
name: "layerName",
},
],
},
functionRootPath: "",
force: true,
base64Code:
"UEsDBAoAAAAAAOdCBU8AAAAAAAAAAAAAAAAFAAAAZGlzdC9QSwMEFAAIAAgAkhkBTwAAAAAAAAAAAAAAAAgAAABpbmRleC5qc2WNMQrDMBRDd59Cmx0IuUEy9wadXfdTQlT/Yv+UQMndmxZv0ST0kOTXKqhW5mTeOdleWqwOzzhnjAjylmw9kmaT7WcieYtp6TBO+DgcOlhVykB9BH8RUnHVwrvvTvi/do7begPtIeSV7NEqu/sCUEsHCLKdLCxuAAAAqAAAAFBLAwQUAAgACADnQgVPAAAAAAAAAAAAAAAADQAAAGRpc3QvZGlzdC56aXAL8GZm4WIAgedOrP5gBpRgBdIpmcUl+gFAJSIMHEA4SZIRRQkHUElmXkpqhV5WcWqvIddhAxHn8vlOs2U5djoafWebG/s92Cnkf9L/KQ4n784Wy7+o8mXCk+taK8KepdyzvBkXtYbvvEV6D8enaTm2k9Imv01XquzOfGng98NCxioi9JRDLUu9YFDh1UO73/v92F/Wd7uK+a3ik6lvLmrt/s0U4M3OsWmujk4e0AUrgBjhRnRv8MK8AfKLXlVmAQBQSwcITXynOsAAAADyAAAAUEsBAi0DCgAAAAAA50IFTwAAAAAAAAAAAAAAAAUAAAAAAAAAAAAQAO1BAAAAAGRpc3QvUEsBAi0DFAAIAAgAkhkBT7KdLCxuAAAAqAAAAAgAAAAAAAAAAAAgAKSBIwAAAGluZGV4LmpzUEsBAi0DFAAIAAgA50IFT018pzrAAAAA8gAAAA0AAAAAAAAAAAAgAKSBxwAAAGRpc3QvZGlzdC56aXBQSwUGAAAAAAMAAwCkAAAAwgEAAAAA",
});
}
test();
使用 code(COS)创建函数示例:
async function testCreateByCosCode() {
await functions.createFunction({
func: {
name: "app-cos-code",
timeout: 5,
runtime: 'Nodejs18.15',
installDependency: false,
envVariables: {}
},
code: {
CosBucketName: "my-bucket",
CosObjectName: "functions/app-cos-code.zip",
CosBucketRegion: "ap-shanghai",
},
});
}
testCreateByCosCode();
💡
CosBucketName仅填写存储桶名称本体,不包含-appid后缀(例如填写my-bucket,不是my-bucket-1250000000)。
updateFunctionCode
1. 接口描述
接口功能:更新云函数代码
接口声明:updateFunctionCode(funcParam: IUpdateFunctionCodeParam): Promise<Object>
⚠️ 本接口从 2.0.0 版本后,请求参数由( func: ICloudFunction, functionRootPath: string, base64Code: string ) 转换为 (funcParam: IUpdateFunctionCodeParam),属于不兼容变更
2. 输入参数
IUpdateFunctionCodeParam
| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| func | 是 | ICloudFunction | 函数配置 |
| functionPath | 否 | String |