本地调试

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

我的收藏

操作场景

通过 Serverless Cloud Framework 的本地调试能力,您可以在本地的模拟环境中运行代码,发送模拟测试事件,并获取到函数代码的运行日志等信息。

前提条件

系统中已安装好 Node.js 环境。
注意:
当前命令仅支持 Node.js 和 Python runtime。为保证部署云端和本地运行的结果一致,建议本地安装的 runtime 版本和云端版本保持一致。例如,在云端使用 Node.js 12.x,则本地建议也安装 Node.js 12.x 版本。
目前只有 SCF 组件支持本地调试。
本地调试仅支持事件类型函数,Web 类型函数请参照 云端测试 进行测试。

使用方式

通过 scf invoke local 命令完成本地触发运行。Serverless Cloud 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 为例,指导您如何进行本地调试:
1. 执行以下命令,初始化示例代码。
scf init scf-nodejs && cd scf-nodejs
2. 在目录下创建测试事件模板 test.json。示例如下:
{
"value": "test",
"text": "Hello World 事件模板",
"context": {
"key1": "test value 1",
"key2": "test value 2"
}
}
3. 创建 .env 文件,输入您的永久密钥。示例如下:
# .env
TENCENT_SECRET_ID=xxxxxxxxxx #您账号的 SecretId
TENCENT_SECRET_KEY=xxxxxxxx #您账号的 SecretKey
说明:
您也可以通过扫码部署,获取临时密钥自动生成配置文件。
4. 执行以下命令,在本地查看调用结果。
scf invoke local -d '{"key1":"test value 1","key2":"test value 2"}'
示例如下:
# scf 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"
}
}