概述

最近更新时间:2020-05-14 11:03:21

云开发是腾讯云为移动开发者提供的一站式后端云服务,可用于开发多种客户端,它帮助开发者统一构建和管理资源,免去了应用开发过程中繁琐的服务器搭建及运维、域名注册及备案、数据接口实现等流程,让开发者可以专注于业务逻辑的实现,而无需理解后端逻辑及服务器运维知识,开发门槛更低,效率更高。

CloudBase CLI 是一个开源的命令行界面交互工具,用于帮助用户快速、方便的部署项目,管理云开发资源。

安装 CloudBase CLI

1. 安装 Node.js

如果本机没有安装 Node.js,请从 Node.js 官网下载二进制文件直接安装,建议选择版本为 LTS,版本必须为 8.6.0+。

2. 安装 CLI

现在,可以安装 @cloudbase/cli 了。

  • 使用 NPM
    $ npm i -g @cloudbase/cli
  • 使用 Yarn
    $ yarn global add @cloudbase/cli
注意:

如果 npm install -g @cloudbase/cli 失败,您可能需要修改 npm 权限,或者以系统管理员身份运行如下代码:

$ sudo npm install -g @cloudbase/cli

3. 测试安装是否成功

如果安装过程没有错误提示,一般就是安装成功了。下面,我们可以继续输入命令:

$ cloudbase -v

如果看到输出版本号,说明已经安装成功。

4. 再多了解 1 个命令

为了简化输入,cloudbase 命令可以简写成 tcb。tcb 是云开发产品英文的简称:Tencent Cloud Base。尝试到命令行终端输入:

$ tcb -h

就可以看到目前 CLI 支持的所有能力和命令了。建议可以经常使用 -h 来查看命令。

代理设置

使用 CloudBase CLI 时,需要您的终端能够访问网络。如果无法直接访问公网,可以设置 HTTP 代理使 CLI 能够正常使用,CLI 会读取 http_proxyHTTP_PROXY环境变量,自动设置网络代理服务。

例如,您可以在终端中运行以下命令,设置 CLI 通过 http://127.0.0.1:8000 的代理服务访问网络:

export HTTP_PROXY=http://127.0.0.1:8000

上面的命令只是临时设置,当您关闭终端后,代理会自动失效,下次开启终端后需要重新设置。如果需要一直通过代理访问公网,可以把命令加入到终端的配置文件中。

开通云开发服务

在开始使用云开发服务之前,您需要登录腾讯云 云开发控制台,确保已经开通了云开发服务,并且已经创建了可以使用的环境。如果您不了解如何创建环境,可以参照云开发快速入门 - 开通环境 文档进行操作。

登录

首先登录您的腾讯云账号,在获取到您的授权之后,CloudBase CLI 才能操作您的资源。CloudBase CLI 提供了两种获取授权的方式:腾讯云-云开发控制台授权以及腾讯云-云 API 密钥授权。

腾讯云-云开发控制台授权

在您的终端中输入下面的命令:

tcb login

CloudBase CLI 会自动打开云开发控制台获取授权,您需要单击同意授权按钮允许 CloudBase CLI 获取授权。如您没有登录,您需要登录后才能进行此操作。

腾讯云-云 API 密钥授权

注意:

腾讯云 API 密钥可以操作您名下的所有腾讯云资源,请妥善保存和定期更换密钥,当您更换密钥后,请及时删除旧密钥。

首先您需要到腾讯云官网获取 云 API 密钥,然后在终端中输入下面的命令:

tcb login --key

回车后,请按提示输入云 API 密钥的 SecretId 和 SecretKey 即可完成登录。

CI 中的登录

在 CI(持续集成)构建中,您可以使用下面的方式通过 API 密钥直接登录,避免交互式输入:

tcb login --apiKeyId xxx --apiKey xxx

创建项目与部署

1. 初始化

您可以使用下面的命令创建一个项目,创建项目时 CloudBase CLI 根据您输入的项目名创建一个文件夹,并写入相关的配置和模板文件。

tcb init

云开发项目是和云开发环境资源关联的实体,云开发项目聚合了云函数、数据库、文件存储等服务,您可以在云开发项目中编写函数,存储文件,并通过 cloudbase cli 快速的操作您的云函数、文件存储、数据库等资源。

云开发项目文件结构:

.
├── _gitignore
├── functions // 云函数目录
│   └── app
│       └── index.js
└── cloudbaserc.json // 项目配置文件

2. 编写函数

默认情况下,所有 Node 和 PHP 函数都统一存放在 functions 目录下,并以函数名作为文件夹名称,如 functions/cloudbase/index.js。对于 Java 函数时,则需要将 jar 文件名修改为函数名称,放在 functions 目录下即可,如 functions/cloudbase.jar
如果您想将函数存放在其他目录,您可以通过配置文件中的 functionRoot 选项指定您想存放函数的目录,functionRoot 选项代表了云函数文件夹相对于项目根目录的路径。
例如,创建一个 Node.js 函数 App,下面是 functions/app/index.js 的内容

"use strict";

exports.main = async (event, context) => {
  console.log("Hello World");
  console.log(event);
  console.log(context);
};

3. 修改配置

默认情况下,项目配置存储在 cloudbaserc.json 文件中,默认生成的函数配置为 Node 语言相关的配置,其他语言如 PHP,Java 等需要修改对应的 handler(运行入口)和 runtime(运行时),参考 配置文件 cloudbaserc.json 文件说明部分。

如果您想指定其他文件作为配置文件,可以在使用 CLI 命令时添加 --config-file config-path 参数指定配置文件,目前支持 JS 和 JSON 格式的配置文件。

{
  {
  "envId": "xxx",
  "functionRoot": "functions",
  "functions": [
    {
      "name": "app",
      "timeout": 5,
      "envVariables": {},
      "runtime": "Nodejs8.9",
      "handler": "index.main"
    }
  ]
}

4. 部署函数

最后,在项目根目录下(cloudbaserc.json 所在目录)运行 cloudbase functions:deploy 命令,即可部署 App 函数:

tcb functions:deploy app

部署完成后可以使用 tcb functions:list 命令查看已经部署完成的函数列表:

tcb functions:list

使用说明

在介绍文档中,默认省略了环境 Id,默认在 .cloudbaserc.json 文件所在目录使用 CloudBase CLI 命令。

所有命令

使用 cloudbase -h 查看所有可用命令:

tcb -h
Usage: cloudbase [options] [command]

Options:
  --config-file <path>                                                              设置配置文件,默认为 ./cloudbaserc.js 或 .cloudbaserc.json
  -V, --version                                                                     输出当前 CloudBase CLI 版本
  -h, --help                                                                        输出帮助信息

Commands:
  init [options]                                                                    创建并初始化一个新的项目
  login [options]                                                                   登录腾讯云账号
  logout                                                                            登出腾讯云账号
  env:list                                                                          展示云开发环境信息
  env:create <alias>                                                                创建新的云开发环境
  env:rename <name> [envId]                                                         重命名云开发环境
  env:login:list [envId]                                                            列出环境登录配置
  env:login:create [envId]                                                          创建环境登录配置
  env:login:update [envId]                                                          更新环境登录方式配置
  env:domain:list [envId]                                                           列出环境的安全域名列表
  env:domain:create <domain> [envId]                                                添加环境安全域名,多个以斜杠 / 分隔
  env:domain:delete [envId]                                                         删除环境的安全域名
  functions:list [options] [envId]                                                  展示云函数列表
  functions:download [options] <functionName> [dest] [envId]                        下载云函数代码
  functions:deploy [options] [functionName] [envId]                                 部署云函数
  functions:delete [functionName] [envId]                                           删除云函数
  functions:detail [options] [functionName] [envId]                                 获取云函数信息
  functions:code:update [options] <functionName> [envId]                            更新云函数代码
  functions:config:update [functionName] [envId]                                    更新云函数配置
  functions:copy [options] <functionName> <newFunctionName> [envId] [targentEnvId]  拷贝云函数
  functions:log [options] <functionName> [envId]                                    打印云函数日志
  functions:trigger:create [functionName] [envId]                                   创建云函数触发器
  functions:trigger:delete [functionName] [triggerName] [envId]                     删除云函数触发器
  functions:invoke [functionName] [params] [envId]                                  触发云端部署的云函数
  functions:run [options]                                                           本地运行云函数(当前仅支持 Node)
  storage:upload [options] <localPath> [cloudPath]                                  上传文件/文件夹
  storage:download [options] <cloudPath> <localPath>                                下载文件/文件夹,文件夹需指定 --dir 选项
  storage:delete [options] <cloudPath>                                              删除文件/文件夹,文件夹需指定 --dir 选项
  storage:list [options] [cloudPath]                                                获取文件存储的文件列表
  storage:url [options] <cloudPath>                                                 获取文件临时访问地址
  storage:detail [options] <cloudPath>                                              获取文件信息
  storage:get-acl [options]                                                         获取文件存储权限信息
  storage:set-acl [options]                                                         设置文件存储权限信息
  hosting:detail [options]                                                          查看静态网站服务信息
  hosting:deploy [options] [filePath] [cloudPath]                                   部署静态网站文件
  hosting:delete [options] [cloudPath]                                              删除静态网站文件/文件夹,文件夹需指定 --dir 选项
  hosting:list [options]                                                            展示文件列表
  server:deploy [name]                                                              部署 node 服务
  server:log [options] <name>                                                       查看日志
  server:reload <name>                                                              重启 node 服务
  server:stop <name>                                                                停止应用
  server:show                                                                       查看状态
  open [link]                                                                       在浏览器中打开云开发相关连接

Tips:

  • 登录
    $ cloudbase login
  • 初始化云开发项目
    $ cloudbase init
  • 部署云函数
    $ cloudbase functions:deploy
  • 查看命令使用介绍
    $ cloudbase functions:log -h
目录