WARNING
# 当前文档已迁移到新的文档站点 (opens new window),此内容不再维护!
# API 列表
# 使用
const Client = require('@cloudbase/cli');
// 如果已使用 cloudbase login 登录过,可以不传入 secretId、secretKey 值
const client = new Client(secretId, secretKey);
client.env
.list()
.then(function(data) {
console.log(data);
})
.catch(function(err) {});
# Client 类方法
# login(options)
参数(选填):
{
key: '',
secretId: ''
secretKey: ''
}
响应:
{
code: 'SUCCESS',
msg: '登录成功!'
}
所有响应体:
{
SUCCESS: {
code: 'SUCCESS',
msg: '登录成功!'
},
INVALID_TOKEN: {
code: 'INVALID_TOKEN',
msg: '无效的身份信息!'
},
CHECK_LOGIN_FAILED: {
code: 'CHECK_LOGIN_FAILED',
msg: '检查登录态失败'
},
INVALID_PARAM(msg) {
return {
code: 'INVALID_PARAM',
msg: '参数无效:详细信息'
}
},
UNKNOWN_ERROR(msg) {
return {
code: 'UNKNOWN_ERROR',
msg: '未知错误:详细信息'
}
}
}
# logout()
退出登录
参数:无 响应:无
# env.list()
参数: 无
响应:
[
{
EnvId: 'base-830cab',
Source: 'miniapp',
Alias: 'base',
CreateTime: '2019-04-09 13:06:09',
UpdateTime: '2019-04-09 13:06:17',
Status: 'NORMAL',
PackageId: 'basic',
PackageName: '基础版'
}
]
# env.create(options)
参数:
{
alias: string
}
响应:void
# env.domain.list(options)
参数:
{
envId: string
}
响应:
[
{
Id: 'f8f7786b-cbba-4c0e-ba7e-a4139a99401d',
Domain: 'abc.com',
Status: 'ENABLE',
CreateTime: '2019-08-15 17:39:39',
UpdateTime: '2019-08-15 17:39:39'
}
]
# env.domains.create(options)
参数:
{
envId: string,
domains: string[]
}
响应:void
# env.domains.delete(options)
{
envId: string,
// 域名 Id 列表
domainIds: string[]
}
响应:
// 删除成功数量
deleted: number
# env.login.list(options)
参数:
{
envId: string
}
响应:
[
{
Id: 'be00aef4-2eb9-4413-a50d-289873bcdb0d',
Platform: 'WECHAT-OPEN',
PlatformId: 'wx9c4c30a432a38ebc',
Status: 'ENABLE',
UpdateTime: '2019-08-19 15:26:04',
CreateTime: '2019-07-11 15:47:23'
}
]
# env.login.update(options)
参数:
{
configId: '',
envId: '',
status: 'ENABLE',
appId: '',
appSecret: ''
}
响应:void
# env.login.create(options)
参数:
{
envId: '',
platform: '',
appId: '',
appSecret: ''
}
响应:void
# functions.invoke(options)
参数:
{
envId: string,
functionName: string,
params: {
a: 1
}
}
响应:
{
Log: '',
RetMsg: '{"a":1}', // 响应结果,JSON 字符串,可使用 JSON.parse() 方法序列化为对象
ErrMsg: '',
MemUsage: 217088,
Duration: 2.569999933242798,
BillDuration: 100,
FunctionRequestId: 'e9ba6ddc-b828-11e9-9290-52540029942f',
InvokeResult: 0
}
# functions.deploy(options)
参数:
{
envId: string,
functionName: string,
force: boolean,
// 函数文件夹的绝对路径(可选)
functionRootPath: '/Users/user-a/desktop/function',
// 函数代码 ZIP 文件 base64 编码(可选)
base64Code: base64String,
func: {
// 函数名
name: 'app',
// 函数配置
config: {
// 超时时间
timeout: 5,
// 环境变量
envVariables: {
key: 'value',
akey: 'c'
}
},
// 函数触发器,说明见文档: https://cloud.tencent.com/document/product/876/32314
triggers: [
{
// name: 触发器的名字
name: 'myTrigger',
// type: 触发器类型,目前仅支持 timer (即定时触发器)
type: 'timer',
// config: 触发器配置,在定时触发器下,config 格式为 cron 表达式
config: '0 0 2 1 * * *'
}
]
}
}
使用 deploy
接口时,functionRootPath
和 base64Code
是可选的,即您可以选择提供函数所在目录,CLI 会自动读取、打包上传函数,或者由您提供函数代码 ZIP 文件的 base64 编码格式。
deploy
接口会完全创建新的函数,上传函数代码,更新函数配置、触发器等,如果你只需要更新函数代码,请使用 code.update
接口。
响应:void
# functions.code.update(options)
参数:
{
// 函数文件夹的绝对路径(可选)
functionRootPath: '/Users/user-a/desktop/function',
// 函数代码 ZIP 文件 base64 编码(可选)
base64Code: '',
envId: '',
func: {
// 函数名
name: 'app',
// 函数配置
config: {
// 超时时间
timeout: 5,
// 环境变量
envVariables: {
key: 'value',
akey: 'c'
}
},
// 函数触发器,说明见文档: https://cloud.tencent.com/document/product/876/32314
triggers: [
{
// name: 触发器的名字
name: 'myTrigger',
// type: 触发器类型,目前仅支持 timer (即定时触发器)
type: 'timer',
// config: 触发器配置,在定时触发器下,config 格式为 cron 表达式
config: '0 0 2 1 * * *'
}
]
}
}
使用 code.update
接口时,functionRootPath
和 base64Code
是可选的,即您可以选择提供函数所在目录,CLI 会自动读取、打包上传函数,或者由您提供函数代码 ZIP 文件的 base64 编码格式。
响应:void
# functions.list(options)
参数:
{
envId: string
}
响应:
[
{
FunctionName: 'app',
Runtime: 'Nodejs8.9',
AddTime: '2019-08-05 16:33:22',
Description: ''
},
{
FunctionName: 'test-scf',
Runtime: 'Nodejs8.9',
AddTime: '2019-07-02 16:40:41',
Description: ''
}
]
# functions.download(options)
参数:
{
envId: 'string',
// 函数文件存放路径
destPath: 'string',
// 函数名称
functionName: 'string',
// 是否需要解压 ZIP 文件,默认情况下为 false
unzip?: false
}
响应:void
# functions.delete(options)
参数:
{
envId: string,
functionName: string
}
响应:void
# functions.detail(options)
参数:
{
envId: string,
functionName: string,
offset?: number,
limit?: number,
order?: string,
orderBy?: string,
startTime?: string,
endTime?: string,
functionRequestI?: string
}
响应:
{
ModTime: '2019-08-05 16:46:39',
Description: '',
Handler: 'index.main',
CodeSize: 636,
Timeout: 5,
MemorySize: 256,
Runtime: 'Nodejs8.9',
FunctionName: 'app',
Environment: {
Variables: [
{ Key: '', Value: '' }
]
},
Namespace: 'dev-xxx',
Status: 'Active',
Triggers: [
{
ModTime: '2019-08-05 20:15:35',
Type: 'timer',
TriggerDesc: '{"cron": "0 0 2 1 * * *"}',
TriggerName: 'myTrigger',
AddTime: '2019-08-05 20:15:35',
Enable: 1,
CustomArgument: ''
}
]
}
# functions.log(options)
参数:
{
envId: string,
functionName: string
}
响应:
[
{
FunctionName: 'test-scf',
RetMsg:
'{"key":"test","userInfo":{"appId":"wx9c4c30a432a38ebc","openId":"on01a6UeSuBLGTQpc_PAjS_RK_4o"}}',
RequestId: '68649b0f-af84-11e9-a803-525400e8849e',
StartTime: '2019-07-26 17:04:43',
RetCode: 0,
InvokeFinished: 1,
Duration: 0.44,
BillDuration: 100,
MemUsage: 131072,
Log: ''
}
]
# functions.config.update(options)
参数:
{
envId: string,
functionName: string,
config: {
// 超时时间
timeout: 6,
// 环境变量
envVariables: {
key: 'value',
akey: 'c'
}
}
}
响应:void
# functions.trigger.create(options)
参数:
{
envId: string,
functionName: string,
triggers: [
{
// name: 触发器的名字
name: 'myTrigger',
// type: 触发器类型,目前仅支持 timer (即定时触发器)
type: 'timer',
// config: 触发器配置,在定时触发器下,config 格式为 cron 表达式
config: '0 0 2 1 * * *'
}
]
}
响应:void
# functions.trigger.delete(options)
参数:
{
envId: 'dev-xxx',
functionName: 'app',
triggerName: 'myTrigger'
}
响应:void
# functions.copy(options)
参数
{
envId: 'string',
// 函数名
functionName: 'string',
// 新的函数名称,不填则和当前函数名一致
newFunctionName: 'string',
// 目标环境 Id,不填则为当前环境 Id
targetEnvId: 'string',
// 是否覆盖同名云函数
force: false
}
响应:void
# storage.uploadFile(options)
参数
{
envId: '环境 Id',
// 本地文件路径,建议传入绝对路径
localPath: './data.txt',
// 云端文件路径:`dir/data.txt`
cloudPath: 'data.txt'
}
注:当 localPath 为文件夹时,CLI 会尝试在此文件夹下(一级目录,不深度遍历)寻找和 cloudPath 中所存在文件同名的文件,如 cloudPath 为 dir/data.txt
,则会寻找 'data.txt'。
响应结果:void
# storage.uploadDirectory(options)
参数
{
envId: '环境 Id',
// 本地文件夹路径
localPath: 'test',
// 云端文件夹路径
cloudPath: 'data/test'
}
响应:void
此接口会遍历目标文件夹下所有的文件并上传,同时保持文件夹结构。
# storage.downloadFile(options)
参数:
{
envId: '环境 Id',
// 本地文件路径,建议传入绝对路径
localPath: './data.txt',
// 云端文件路径:`dir/data.txt`
cloudPath: 'data.txt'
}
响应:void
# storage.downloadDirectory(options)
{
envId: '环境 Id',
// 本地文件夹路径
localPath: 'test',
// 云端文件夹路径
cloudPath: 'data/test'
}
响应:void
NOTE:
- 此操作会遍历文件夹下的所有文件,如果文件数量过多,可能会造成执行失败。
- 当 cloudDirectory 不存在时,SDK 不会下载文件,也不会抛出错误。
# storage.deleteFile(options)
参数:
{
envId: '环境 Id',
// 云端文件路径
cloudPath: 'test.txt',
// 云端文件路径数组
cloudPaths: ['data/test.txt']
}
响应:void
# storage.deleteDirectory(options)
参数:
{
envId: '环境 Id',
// 云端文件夹路径
cloudPath: 'test',
}
响应:void
# storage.list(options)
参数:
{
envId: '环境 Id',
// 云端文件夹路径
cloudPath: 'test',
}
响应
[
{
Key: 'string' // 对象键
LastModified: 'string' // 对象最后修改时间,为 ISO8601 格式,如2019-05-24T10:56:40Z date
ETag: 'string' // 对象的实体标签(Entity Tag),是对象被创建时标识对象内容的信息标签,可用于检查对象的内容是否发生变化
Size: 'number' // 对象大小,单位为 Byte
Owner: 'string' // 对象持有者信息
StorageClass: 'string' // 对象存储类型,标准存储 STANDARD
}
]
# storage.detail(options)
参数:
{
envId: '环境 Id',
// 云端文件路径
cloudPath: 'test.txt',
}
响应
{
Size: 'string', // 文件大小 KB
Type: 'string', // 文件类型
Date: 'string', // 修改时间
ETag: 'string' // 对象的实体标签(Entity Tag)
}
# storage.getUrl(options)
参数:
{
envId: '环境 Id',
// 云端文件路径
cloudPath: 'test.txt',
}
响应
[
{
fileId: '', // 文件 Id
url: '' // 下载链接
}
]
# storage.getAcl(options)
参数:
{
envId: ''
}
响应:
'READONLY'
所有权限类型:
- READONLY:所有用户可读,仅创建者和管理员可写
- PRIVATE:仅创建者及管理员可读写
- ADMINWRITE:所有用户可读,仅管理员可写
- ADMINONLY:仅管理员可读写
# storage.setAcl(options)
参数:
{
envId: '',
acl: 'ADMINONLY'
}
响应结果
{
requestId: 'xxxx'
}
← HTTP service 更新日志 →