前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TCB系列学习文章——云开发的CloudBase CLI(十)

TCB系列学习文章——云开发的CloudBase CLI(十)

作者头像
F颜
发布2020-11-08 00:10:53
3.2K0
发布2020-11-08 00:10:53
举报

1、什么是CloudBase CLI?

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

2、如何安装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. 测试安装是否成功

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

代码语言:javascript
复制
$ cloudbase -v

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

4. 记住 1 个命令

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

代码语言:javascript
复制
$ tcb -h

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

5、登录授权

方式一 —— 在终端输入tcb login

代码语言:javascript
复制
$ tcb login
//将会自动打开云开发控制台获取授权,您需要单击同意授权按钮允许 CloudBase CLI 获取授权。
//如您没有登录,您需要登录后才能进行此操作。

方式二 —— 在终端输入tcb login --apiKeyId xxx --apiKey xxx

首先您需要到腾讯云官网获取云 API 密钥。然后再输入以下命令(xxx为id和密钥)。

代码语言:javascript
复制
tcb login --apiKeyId xxx --apiKey xxx

6、初始化

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

代码语言:javascript
复制
tcb init

生成结构如下所示

代码语言:javascript
复制
.
├── _gitignore
├── functions // 云函数目录
│   └── app // 云函数文件夹名称
│       └── index.js
└── cloudbaserc.json // 项目配置文件

7、配置文件cloudbaserc.json

代码语言:javascript
复制
{
  // 关联环境 ID
  envId: "dev-xxxx",
  // 云函数文件夹名称,相对路径,可以省略 './'
  functionRoot: "functions",
  // 函数配置
  functions: [
    {
      // functions 文件夹下函数文件夹的名称,即函数名
      name: "app",
      // 超时时间,单位:秒 S
      timeout: 5,
      // 环境变量,在 Node 云函数中可以通过 process.env.key 访问
      envVariables: {
        key: "value"
      }
    }
  ]
}

3、CloudBase CLI能做什么?

我们来看一下有哪些命令:

代码语言:javascript
复制
tcb -h
代码语言:javascript
复制
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]                                                                       在浏览器中打开云开发相关连接

4、管理云函数

1、函数管理

1、部署云函数

代码语言:javascript
复制
# 部署配置文件中单个云函数
cloudbase functions:deploy <functionName>
代码语言:javascript
复制
# 部署配置文件中的全部函数
cloudbase functions:deploy
代码语言:javascript
复制
# 忽略提示确认,直接覆盖部署dev函数
cloudbase functions:deploy dev --force

2、查看云函数

代码语言:javascript
复制
cloudbase functions:list
-l, --limit <limit>    返回数据长度,默认值为 20
-o, --offset <offset>  数据偏移量,默认值为 0

例子----
cloudbase functions:list -l 20 -o 10  

3、下载云函数

代码语言:javascript
复制
cloudbase functions:download <functionName> [destPath]

2、函数配置项

为了应对复杂的使用场景,我们提供了项目级的 cloudbaserc.json 配置文件,可以在 CLI 和 VS Code 插件中共享使用。

配置文件包含了使用云开发 CLI 或 VS Code 插件的过程中的相关配置,可以简化 CLI 和 VS Code 的使用。

默认情况下,使用 cloudbase init 初始化项目时,会生成 cloudbaserc.json 文件作为配置文件,您也可以使用 --config-file 指定其他文件作为配置文件,文件必须满足格式要求。

动态变量

CLI 0.9.1+ 版本引入了 2.0 新版本配置文件,支持了动态变量的特性。在 cloudbaserc.json 中声明 "version": "2.0" 即可启用新的特性,新版配置文件只支持 JSON 格式。

动态变量特性允许在 cloudbaserc.json 配置文件中使用动态变量,从环境变量或其他数据源获取动态的数据。使用 {{}} 包围的值定义为动态变量,可以引用数据源中的值。如下所示

代码语言:javascript
复制
{
  "version": "2.0",
  "envId": "envId",
  "functionRoot": "./functions",
  "functions": [
    {
      "name": "{{variable}}"
    }
  ]
}

数据源

CloudBase 定义多个数据源的命名空间,用于区分不同的数据源。你可以通过 命名空间.变量名 引用数据,如 {{tcb.envId}}

命名空间

变量名

含义

tcb

envId

配置文件或通过命令行参数指定的环境 Id

util

uid

24 位的随机字符串

env

*

从?.env?类型文件中加载的环境变量

环境变量

CloudBase 对环境变量做了特别支持,以解决不同开发阶段、不同配置,使用 CLI & Framework 部署资源的问题。CloudBase 支持使用 .env 类型文件作为主要数据源,使用不同的后缀区分不同的阶段、场景,如 .env.development 可以表示开发阶段的配置,.env.production 可以表示生产环境的配置等。

CloudBase 定义了一些约束:默认情况下,CLI & Framework 会自动加载 .env.env.local 文件中的数据,开发者可以通过使用 --mode <mode> 选项添加特定环境的配置。

代码语言:javascript
复制
.env                # 在所有的环境中被载入
.env.local          # 在所有的环境中被载入,可以加入 .gitignore 忽略
.env.[mode]         # 只在指定的模式中被载入

在加载数据源时,.env.env.local 会被直接加载(如果存在的话),当指定 --mode [mode] 时,会再加载 .env.[mode] 文件,并按照如下的顺序合并覆盖同名变量:.env.[mode] > .env.local > .env,即 .env.[mode] 中的同名变量会覆盖 .env.local.env 文件中的同名变量,以此类推。

当使用 tcb framework deploy --mode test 命令时,会自动加载 .env.env.local 以及 .env.test 等三个文件中的环境变量合并使用。

TIP

我们建议你将秘钥等私密配置放在 .env.local 文件中,并将 .env.local 加入 .gitignore 配置中。

.env.local 文件中存在以下变量

代码语言:javascript
复制
DB_HOST = localhost
DB_USER = root
DB_PASSWORD = s1mpl3

则可以在配置文件中使用

代码语言:javascript
复制
{
  "version": "2.0",
  "envId": "xxx",
  "functionRoot": "./functions",
  "functions": [
    {
      "name": "test",
      "envVariables": {
        "PASSWORD": "{{env.DB_PASSWORD}}"
      }
    }
  ]
}

扩展 env 语法

一般情况下,你可以直接在 env 文件中使用键值对

代码语言:javascript
复制
FOO=bar
VUE_APP_SECRET=secret

但是,当我们需要使用复杂的环境变量时,简单的键值对就有些力不从心了。所以,CloudBase 扩展了 .env 支持的语法,支持了复合键值对,你可以通过 . 为同名键添加属性,如

代码语言:javascript
复制
Book.Name=Test
Book.Publish=2020
Book.Authors.0=Jack
Book.Authors.1=Mike

会被编译为包含以下属性的 Book 对象

代码语言:javascript
复制
{
  "Name": "Test",
  "Publish": "2020",
  "Authors": ["Jack", "Mike"]
}

你可以在 cloudbaserc.json 直接使用 {{env.Book.Name}} 引用相关属性。

WARNING

当使用的 .env 值为对象时,在编译时会被转换成 JSON 字符串,如 {{env.Book}} 会被编译为 {"Name":"Test","Publish":"2020","Authors":["Jack","Mike"]}

字段

下面是 CloudBase 配置文件支持的字段以及其含义。

version

类型String

version 表示当前配置文件的版本,目前支持的版本号有:"2.0"。当 version 字段不存在时,默认当前配置文件为 "1.0" 版本。

envId

类型: String

envId 代表环境 ID,是环境的唯一标识。

functionRoot

类型String

云函数函数代码存放的文件夹路径,相对于根目录的路径。

functions

类型Array<CloudFunction>

函数配置项组成的数组,有关函数配置项的详细信息,请参考函数配置项文档

简单参考配置

下面是一个简单的 CLI 配置文件包含的基本信息:

代码语言:javascript
复制
{
  "version": "2.0",
  "envId": "dev-xxxx",
  "functionRoot": "functions",
  "functions": [
    {
      "name": "app",
      "timeout": 5,
      "envVariables": {
        "key": "value"
      }
    }
  ]
}

3、函数部署

fn deploy 命令部署函数的文件大小总计不能超过 50 M,否则可能会部署失败。

在一个包含 cloudbaserc.json 配置文件的项目下,您可以直接使用下面的命令部署云函数:

代码语言:javascript
复制
tcb fn deploy <functionName>

使用 fn deploy 时,functionName 选项是可以省略的,当 functionName 省略时,Cloudbase CLI 会部署配置文件中的全部函数:

代码语言:javascript
复制
# 部署配置文件中的全部函数
tcb fn deploy

覆盖同名函数

部署函数时,很可能会遇到已经存在同名云函数的情况,此时 Cloudbase CLI 会终止部署,询问是否覆盖同名函数,您可以选择覆盖已有的云函数或者终止部署。

如果您确定要覆盖可能存在的同名云函数,您可以在命令后附加 --force 选项指定 Cloudbase CLI 覆盖已存在的云函数。

代码语言:javascript
复制
tcb fn deploy dev --force

注意:覆盖函数时,也会覆盖函数的配置和触发器。

默认选项

Cloudbase CLI 为 Node.js 云函数提供了默认选项,您在部署 Node.js 云函数时可以不用指定云函数的配置,使用默认配置即可部署云函数。

云函数默认配置:

代码语言:javascript
复制
{
  // 超时时间 5S
  "timeout": 5,
  // 运行时
  "runtime": "Nodejs10.15",
  // 自动安装依赖
  "installDependency": true,
  // 处理入口
  "handler": "index.main",
  // 忽略 node_modules 目录
  "ignore": ["node_modules", "node_modules/**/*", ".git"]
}

deploy 命令做了啥?

fn deploy 会读取 cloudbaserc.json 文件中指定函数的配置,并完成以下几项工作:

  1. 将函数打包成压缩文件,并上传函数代码。
  2. 部署函数配置,包括超时时间、网络配置等。
  3. 部署函数触发器。

本文系转载,前往查看

如有侵权,请联系?cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系?cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、什么是CloudBase CLI?
  • 2、如何安装CloudBase CLI?
    • 1. 安装 Node.js
      • 2. 安装 CLI
        • 3. 测试安装是否成功
          • 4. 记住 1 个命令
            • 5、登录授权
              • 方式一 —— 在终端输入tcb login
              • 方式二 —— 在终端输入tcb login --apiKeyId xxx --apiKey xxx
            • 6、初始化
              • 7、配置文件cloudbaserc.json
          • 3、CloudBase CLI能做什么?
          • 4、管理云函数
            • 1、函数管理
              • 1、部署云函数
              • 2、查看云函数
              • 3、下载云函数
            • 2、函数配置项
              • 动态变量
                • 数据源
                • 环境变量
                • 扩展 env 语法
              • 字段
                • version
                • envId
                • functionRoot
                • functions
              • 简单参考配置
                • 3、函数部署
                  • 覆盖同名函数
                    • 默认选项
                      • deploy 命令做了啥?
                      相关产品与服务
                      云函数
                      云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                      http://www.vxiaotou.com