部署应用

最近更新时间:2024-03-28 17:36:41

我的收藏

操作场景

完成本地项目开发后,您可以快速部署应用、查看部署信息并进行函数调试。

前提条件

已完成本地项目开发,详情请参见 项目开发

操作步骤

快速部署

您可以通过 Serverless Cloud Framework,快速将项目部署到云端,具体操作如下:
scf deploy
输入该指令后,Serverless Cloud Framework CLI 将会为您完成以下操作:

1. 扫码授权

通过扫描二维码,完成一键授权,授权后 CLI 工具会将生成临时密钥信息写入当前目录下的 .env 文件里,临时密钥的有效时间2小时,失效后,部署的时候会引导您重新扫码鉴权。
如果不想重复扫码,您也可以将永久密钥配置在项目目录下的 .env 文件中:
# .env
TENCENT_SECRET_ID=xxxxxxxxxx #您账号的 SecretId
TENCENT_SECRET_KEY=xxxxxxxx #您账号的 SecretKey
SecretId 和 SecretKey 可以在 API 密钥管理 中获取。

2. 打包上传

完成授权后,Serverless Cloud Framework 会根据您在 serverless.yml 文件中配置的项目代码路径,自动为您进行项目的打包与上传。

3. 云端部署

上传后的项目,会根据您在 yml 文件中进行的参数配置,完成云上资源的创建,部署完成后,命令行会输出部署后的资源信息。

高级能力

查看部署过程中的具体日志信息:
scf deploy --debug
多版本部署时,切换指定流量到 $latest 函数版本,其余流量到最后一次发的函数版本上,实现灰度发布。
scf deploy --inputs traffic=0.1 public=true
应用目录下含有多个 Serverless 实例,只需要更新指定项目:
scf deploy --target xxx
例如:在该项目根目录下,通过指令 scf deploy --target ./cos,仅更新 cos 实例,其它实例不受影响。
.
├── src
│ ├── serverless.yml
│ └── index1.js
├── cos
│ └── serverless.yml
├── db
│ └── serverless.yml
└── .env

查看部署信息

完成部署后,通过以下指令,查看项目的部署信息:
scf info

配置预置并发

通过 scf 命令,您可以快速为您部署的函数发布新版本并绑定预置并发实例配置,具体流程如下:
注意:
使用预置并发功能前,您必须保证已通过 scf deploy 完成函数 LATEST 版本部署,部署后,即可通过下列指定为函数发布版本并配置预置并发。
默认配置 provisionedNum 预置并发数,将自动发布新版本,并为该版本绑定指定数量的并发。
scf deploy --inputs provisionedNum=100
同时配置 provisionedNumqualifier 参数,将为函数指定版本配置预置并发。
例如,在函数版本1上配置预置并发,可执行如下命令:
scf deploy --inputs provisionedNum=100 qualifier=1
如需为其他版本配置预置并发,修改 qualifier 值即可。
当前还不支持通过命令行直接移除实例,请登录函数控制台完成实例的移除;或通过 scf remove 删除函数后重新发版部署。

函数调试

说明:
当前该指令只支持通过 Serverless Cloud Framework 云函数组件 部署的函数项目,其它组件的支持也在计划中。
Serverless Cloud Framework 云函数组件支持通过 invoke 命令触发云函数进行调试。对于scf deploy部署成功的云函数,进入对应函数的项目目录下,执行函数调用命令,即可完成云上函数资源的远程调试,调试结果会在命令行进行输出:
scf invoke --inputs function=functionName clientContext='{"weights":{"2":0.1}}'
invoke命令必须在该函数部署的 serverless.yml 文件同目录下执行。
clientContext为触发函数时传递的 json 字符串。可以根据 触发事件模板 的 json 字符串格式模拟不同触发事件。

常见问题

如您的环境配置了代理,可能会出现以下问题:
问题 1:输入 serverless 时没有默认弹出中文引导。 解决方案: 请确认您的 IP 在中国大陆区域,并在 .env 文件中增加配置 SERVERLESS_PLATFORM_VENDOR=tencent 即可。
问题 2:输入 scf deploy 后部署报网络错误。 解决方案:在 .env 文件中增加以下代理配置。
HTTP_PROXY=http://127.0.0.1:12345 #请将'12345'替换为您的代理端口
HTTPS_PROXY=http://127.0.0.1:12345 #请将'12345'替换为您的代理端口