通过 Serverless Framework 的本地调试能力,您可以在本地的模拟环境中运行代码,发送模拟测试事件,并获取到函数代码的运行日志等信息。
系统中已安装好 Node.js 环境。
注意:
- 当前命令仅支持 Node.js 和 Python runtime。为保证部署云端和本地运行的结果一致,建议本地安装的 runtime 版本和云端版本保持一致。例如,在云端使用 Node.js 12.x,则本地建议也安装 Node.js 12.x 版本。
- 目前只有 SCF 组件支持本地调试。
- 本地调试仅支持事件类型函数,Web 类型函数请参照 云端测试 进行测试。
通过 sls invoke local
命令完成本地触发运行。Serverless Framework 命令行工具将依据指定的函数模板配置文件,在本地的指定目录中运行相应代码,并通过指定的触发事件,实现在本地云函数模拟环境中运行。
相关命令如下:
invoke local .................. 调用本地函数
--function / -f ............函数名称(只能指定统一目录下 yml 里配置的函数名称)
--data / -d ................要传递给调用函数的序列化Event数据(String)
--path / -p ................要传递给调用函数 Event 的 json 文件所在路径
--context ..................要传递给调用函数的序列化 Context 数据(String)
--contextPath / -x .........要传递给调用函数 Context 的 json 文件所在路径
--env / -e .................覆盖环境变量信息,例如 --env VAR1=val1 --env VAR2=val2
--config / -c ..............Path to serverless config file
下文以 Node.js 为例,指导您如何进行本地调试:
执行以下命令,初始化示例代码。
sls init scf-nodejs && cd scf-nodejs
在目录下创建测试事件模板 test.json
。示例如下:
{
"value": "test",
"text": "Hello World事件模板",
"context": {
"key1": "test value 1",
"key2": "test value 2"
}
}
.env
文件,输入您的永久密钥。示例如下:# .env
TENCENT_SECRET_ID=xxxxxxxxxx #您账号的 SecretId
TENCENT_SECRET_KEY=xxxxxxxx #您账号的 SecretKey
说明:您也可以通过扫码部署,获取临时密钥自动生成配置文件。
4. 执行以下命令,在本地查看调用结果。
sls invoke local -p xxxx.json
# sls invoke local -p test.json
Hello World
{
value: 'test',
text: 'Hello World事件模板',
context: { key1: 'test value 1', key2: 'test value 2' }
}
undefined
{}
---------------------------------------------
Serverless: 调用成功
{
value: "test",
text: "Hello World事件模板",
context: {
key1: "test value 1",
key2: "test value 2"
}
}
本页内容是否解决了您的问题?