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 接口时,functionRootPathbase64Code 是可选的,即您可以选择提供函数所在目录,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 接口时,functionRootPathbase64Code 是可选的,即您可以选择提供函数所在目录,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'
}