tcb-ff
User Guide
tcb-ffis provided by
@cloudbase/functions-framework` and is used to start the cloud function service.
@cloudbase/functions-framework` is a function framework provided by CloudBase for running cloud functions in the cloud, as well as for local development and debugging of cloud functions.
Q: Under what circumstances is it necessary to install
tcb-ff
?A: When developing and debugging cloud functions locally, you need to install
tcb-ff
.
Installation of tcb-ff
Install globally
# Global Installation of tcb-ff
npm install -g @cloudbase/functions-framework
# Run tcb-ff
tcb-ff
Install in the project
# Local Installation of tcb-ff
npm install @cloudbase/functions-framework
# Run tcb-ff
npx tcb-ff
Using tcb-ff
to Start the Cloud Function Service
The following is a common example: it starts the cloud function and monitors file changes (based on nodemon
), restarting when files change. This command enables CORS capability, allowing browsers to access the service on the domains *.example.com
and www.another.com
.
tcb-ff -w --enableCors=true --allowedOrigins=*.example.com,www.another.com
Running tcb-ff
in the root directory of the function code starts the cloud function service.
tcb-ff
By default, tcb-ff
listens on port 3000
. To specify a port, use the --port
parameter.
tcb-ff --port=30000
tcb-ff -p=30000
The
tcb-fftool supports monitoring local file changes. To enable hot restart mode, use the
-w` parameter.
tcb-ff -w
If you access the cloud function service through a browser, you may encounter cross-origin issues. You can enable CORS by using the --enableCors
parameter.
tcb-ff --enableCors=true
The
--enableCorsparameter enables cross-origin access for
Originset to
localhost | 127.0.0.1by default. To configure other domains, use the
--allowedOrigins` parameter.
tcb-ff --enableCors=true --allowedOrigins=*.example.com,www.another.com
The
tcb-fftool supports enabling
Basic Authfor authentication. You can specify allowed accounts using the
--allowedAccounts` parameter.
tcb-ff --allowedAccounts=abc:123,efg:456
tcb-ff
Parameter Description
Description
Command-line parameter | Environment variable | Default value | Example | Description |
---|---|---|---|---|
-w, --watch | / | false | -w | Whether to enable hot restart mode. If enabled, the service will automatically restart when function code files change. |
--port | PORT | 3000 | --port=3000 | Listening port |
--extendedContextKey | EXTENDED_CONTEXT_KEY | '' | --extendedContextKey=X-Functions-Extended-Context | Specifies the header field for retrieving the extended context.extendedContext |
--enableCors | ENABLE_CORS | false | --enableCors=true | Whether to enable CORS. If enabled, you can configure allowed domains. By default, localhost and 127.0.0.1 are allowed. |
--allowedOrigins | ALLOWED_ORIGINS | localhost,127.0.0.1 | --allowedOrigins="example.com,*.abc.com" | Domains that need to be allowed for CORS. By default, localhost and 127.0.0.1 are allowed. Wildcards are supported, e.g., *.example.com can match www.example.com and auth.example.com . This configuration item takes effect only when enableCors is enabled. |
--allowedAccounts | ALLOWED_ACCOUNTS | None | --allowedAccounts=abc:123,efg:456 | Allowed accounts. Enables Basic Auth when configured. |
--gracefulShutdown | GRACEFUL_SHUTDOWN | Enabled when NODE_ENV is not production | --gracefulShutdown=false | Whether to enable graceful shutdown of the service |
--timeout | TIMEOUT | 0 | --timeout=5000 | Node.js Server timeout, see https://nodejs.org/api/http.html#servertimeout |
--keepAliveTimeout | KEEP_ALIVE_TIMEOUT | 65000 | --keepAliveTimeout=10000 | Node.js Server keep-alive timeout, see https://nodejs.org/api/http.html#server-keepalivetimeout |
--captureStack | CAPTURE_STACK | Enabled when NODE_ENV is not production | --captureStack=true | Whether to return the error stack when a request fails |
--concurrencyLimit | CONCURRENCY_LIMIT | 1000 | --concurrencyLimit=100 | Concurrent request limit. 0 means unlimited |
--noExit | NO_EXIT | false | --noExit=true | Whether to disable process.exit() to prevent accidental process exit |
--logHeaderBody | LOG_HEADER_BODY | false | --logHeaderBody=true | Whether to log request headers, request body, response headers, and response body in request logs. If enabled, the body size will be limited to 2KB. |
--logEventContext | LOG_EVENT_CONTEXT | true | --logEventContext=false | Whether to log the input parameters event and context in request logs |
--logDirname | LOG_DIRNAME | ./logs | --logDirname=/var/logs | Log file directory |
--maxLogFileSize | MAX_LOG_FILE_SIZE | 1024 * 1024 * 128 (128m) | --maxLogFileSize=2097152 | Maximum size of a single log file in bytes |
--maxLogFiles | MAX_LOG_FILES | 4 | --maxLogFiles=5 | Maximum number of concurrent log files |
--interceptOutput | INTERCEPT_OUTPUT | false | --interceptOutput=true | Whether to intercept standard output such as console.log . If intercepted, the content of standard output will be recorded in the log file. |
You can view all parameters by using tcb-ff -h
.
$ tcb-ff -h
[@cloudbase/functions-framework@1.6.0][pid:0]
Usage: tcb-ff [options]
Options:
-w, --watch Watch the source file for changes and restart the service. Default is false.
Example: -w
--port, -p Set the port to listen on. Default is 3000.
Example: --port=3000
Environment Variable: PORT
--target Set the target function name. Default is 'main'.
Example: --target=hello
Environment Variable: FUNCTION_TARGET
--source Set the target function filename. Default is 'index.js' (extension differs based on module type).
Example: --source=main.mjs
Environment Variable: FUNCTION_SOURCE
--loadAllFunctions Whether to load all functions in the 'functionsRoot' directory. Default: false.
Example: --loadAllFunctions=true
Environment Variable: LOAD_ALL_FUNCTIONS
--functionsRoot The root directory of the functions. only effective when 'loadAllFunctions' is true.
Example: --functionsRoot=path/to/functionsRoot
Environment Variable: FUNCTIONS_ROOT
--signatureType Set the function format. Currently only 'event' is supported.
Example: --signatureType=event
Environment Variable: SIGNATURE_TYPE
--gracefulShutdown Enable graceful shutdown of the service. Default true when 'NODE_ENV=production' otherwise false.
Example: --gracefulShutdown=false
Environment Variable: GRACEFUL_SHUTDOWN
--timeout Set the Node.js Server timeout. Default is 0.
Example: --timeout=5000
Environment Variable: TIMEOUT
--keepAliveTimeout Set the Node.js Server keep-alive timeout. Default is 65000.
Example: --keepAliveTimeout=10000
Environment Variable: KEEP_ALIVE_TIMEOUT
--captureStack Return error stack when a request fails. Enabled when 'NODE_ENV=production'.
Example: --captureStack=true
Environment Variable: CAPTURE_STACK
--concurrencyLimit Limit the number of concurrent requests. 0 means no limit. Default is 1000.
Example: --concurrencyLimit=100
Environment Variable: CONCURRENCY_LIMIT
--noExit Disable 'process.exit()' to prevent accidental process exit. Default is false.
Example: --noExit=true
Environment Variable: NO_EXIT
--interceptOutput If true, intercept console,process.stdout,process.stderr output. Default: false.
Example: --interceptOutput=true
Environment Variable: INTERCEPT_OUTPUT
--logHeaderBody Log request and response headers and bodies in the request log.
Default is false.
Example: --logHeaderBody=false
Environment Variable: LOG_HEADER_BODY
--logEventContext Log original event and context in the access log. Default is true.
Example: --logEventContext=false
Environment Variable: LOG_EVENT_CONTEXT
--extendedContextKey The key of headers to parse `context.extendedContext`.
`''` means that the feature is turned off.
Default is .
Example: --extendedContextKey=X-Functions-Extended-Context
Environment Variable: EXTENDED_CONTEXT_KEY
--extendedContext The value to parse `context.extendedContext`.
`''` means that the feature is turned off.
This parameter will be ignore when 'extendedContextKey' is specified.
Default is null.
Example: --extendedContext='{"a":1,"b":2}'
Environment Variable: EXTENDED_CONTEXT
--functionsConfigFile Set the multi-functions definition config file. Default is 'cloudbase-functions.json'.
Example: --functionsConfigFile=functions.json
Environment Variable: FUNCTIONS_CONFIG_FILE
--enableCors If true, enable CORS for configured origins. Default is false.
Example: --enableCors=true
Environment Variable: ENABLE_CORS
--allowedOrigins Set the allowed origins for CORS. Default allows localhost,127.0.0.1.
Origins should be domain names without protocol or port.
Wildcard origins are supported. e.g. ['*.example.com'].
Multiple origins should be separated by comma.
Example: --allowedOrigins=*.example.com,www.another.com
Environment Variable: ALLOWED_ORIGINS
--allowedAccounts Set the accounts allowed to access.
If specified, The 'username:password' of request will be verified.
Parameter Format: username1:password1,username1:password1,....
Example: --allowedAccounts=abc:123,efg:456
Access Example:
curl http://username:password@127.0.0.1:3000/
curl -H "Authorization: Basic base64encode(username:password)" http://127.0.0.1:3000/
Environment Variable: ALLOWED_ACCOUNTS
--dry-run Do not start the service, only validate that the code can be loaded. Default is false.
Example: --dry-run