Through the local debugging capability, SCF CLI can run the code in the local simulation environment, send simulation test events, and obtain the running log, time consumption, memory occupation and other information of the function code.
Local debugging of native does not need to rely on Docker, to ensure that the Node.js environment is installed on the system. The current native command only supports Node.js and Python runtime. To ensure that the results of the deployment cloud and the local operation are consistent, it is recommended that the locally installed version of runtime is the same as the cloud version. For example, if you use Node.js 6.10 in the cloud, it is recommended that you also install Node.js 6.x.
SCF CLI passed native invoke
The subcommand completes the local trigger run. The SCF command line tool will run the corresponding code in the specified Directory on the local machine according to the specified function template configuration file, and run the local cloud function simulation through the specified trigger event.
scf native invoke
The parameters supported by the command are as follows:
Parameters | Required | Description | Example |
---|---|---|---|
EVENT | No | The source of the file that simulates the test event, and the content of the file must be in JSON format. | Event.json |
Template | No | The path or file name of the project description profile, which defaults to template.yaml. | Template.yaml |
Env-vars | No | Function runtime environment variable configuration, you need to specify the environment variable configuration file, the content must be in JSON format. | Env.json |
Debug-port | No | The port of Open when the function is running. After the port is specified, the local runtime will specify the port in debug mode Launch and Open. | 3366 |
Debug-args | No | The debugger Launch parameter in this machine. After the parameter is specified, the debugger Launch will pass the specified parameter. | None |
The supporting options FUNCTION_IDENTIFIER are described as follows:
Parameters | Required | Description | Example |
---|---|---|---|
FUNCTION_IDENTIFIER | No | Indicates the identity and name of the function; if there are multiple function descriptions in the project description configuration file, you can specify the function to be debugged through this parameter. | Hello_world |
Simulated events used to trigger cloud functions locally can be passed through Linux's command pipeline or through files.
scf native invoke
The command supports receiving events from the command line pipeline.scf native generate-event
Command generates an event and passes it, forming, for example, scf native generate-event cos post | scf native invoke
Debug commands for.scf native invoke
Command, forming, for example echo '{"test":"value"}' | scf native invoke
Debug commands for.scf native invoke
Ordered --event
Parameter that specifies the file that contains the contents of the test simulation event. The contents of the file must be JSON data structures, such as scf native invoke --event event.json
Debug commands for.Passing through scf init
The sample project obtained by initialization contains the prepared code file and template configuration file. Take the example project as an example, assuming that the environment is Node.js 8.9, /Users/xxx/code/scf
Directory created a hello_world project.
We pass the simulation event of the cos post file through the command pipeline, triggering the function to run. The function code simply prints event and returns "hello world". Function code /Users/xxx/code/scf/testproject/hello_world/main.js
Example:
'use strict';
exports.main_handler = async (event, context, callback) => {
console.log("%j", event);
return "hello world"
};
scf native generate-event cos post | scf native invoke
Command, the Launch function runs locally.Enter a event: [0m
START RequestId: 3e3e71c9-dc56-1967-c0a3-3a454e2ce634
{"Records":[{"cos":{"cosSchemaVersion":"1.0","cosObject":{"url":"http://testpic-1253970026.cos.ap-guangzhou.myqcloud.com/testfile","meta":{"x-cos-request-id":"NWMxOWY4MGFfMjViMjU4NjRfMTUyMV8yNzhhZjM=","Content-Type":""},"vid":"","key":"/1253970026/testpic/testfile","size":1029},"cosBucket":{"region":"gz","name":"testpic","appid":"1253970026"},"cosNotificationId":"unkown"},"event":{"eventName":"cos:ObjectCreated:Post","eventVersion":"1.0","eventTime":1545205770,"eventSource":"qcs::cos","requestParameters":{"requestSourceIP":"xx.xx.xx.xxx","requestHeaders":{"Authorization":"q-sign-algorithm=sha1&q-ak=AKIDQm6iUh2NJ6jL41tVUis9KpY5Rgv49zyC&q-sign-time=1545205709;1545215769&q-key-time=1545205709;1545215769&q-header-list=host;x-cos-storage-class&q-url-param-list=&q-signature=098ac7dfe9cf21116f946c4b4c29001c2b449b14"}},"eventQueue":"qcs:0:lambda:cd:appid/1253970026:default.printevent.$LATEST","reservedInfo":"","reqid":179398952}}]}
END RequestId: 3e3e71c9-dc56-1967-c0a3-3a454e2ce634
REPORT RequestId: 3e3e71c9-dc56-1967-c0a3-3a454e2ce634 Duration: 1.91 ms
Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 20 MB
"hello world"
From the output, you can see that after the local operation of the function is completed, the printed log of the function and the content returned by the function are output.
2. Generate the following event.json test event file:
{
"key1":"value1",
"key2":"value2"
}
scf native invoke --event event.json
Command, the Launch function runs locally and outputs test events through the file.Enter a event: [0m
START RequestId: 6d06b0cf-4cc9-1f76-5f92-1f5871ff110a
{"key1":"value1","key2":"value2"}
END RequestId: 6d06b0cf-4cc9-1f76-5f92-1f5871ff110a
REPORT RequestId: 6d06b0cf-4cc9-1f76-5f92-1f5871ff110a Duration: 1.72 ms
Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 20 MB
"hello world"
As you can see from the output, the function code prints the test event and returns the specified content.
Was this page helpful?