MerLoc CLI Setup & Usage
MerLoc CLI is a client side CLI tool to run AWS Lambda functions on your local. It communicates with MerLoc GateKeeper in AWS Lambda function over MerLoc Broker for receiving invocations, executing function locally and then returning response to AWS Lambda service.
- Node.js 14+
- Docker (installed and running)
npm install -g merloc-cli
After install, check whether it is installed successfully:
merloc --version
By this command, you should see the installed version number if everything is installed properly.
MerLoc CLI (
merloc
command) must be run in your serverless project root directory, so it can use the integrated tool (AWS SAM
, Serverless Framework
, ...) to run function locally.-c <name>
(or--connection-name <name>
): Configures name of the connection to the MerLoc Broker This configuration is OPTIONAL. The default value isdefault
. Connection with namedefault
matches with all MerLoc GateKeeper connections if there is no another local connection with the function name (or connection name set byMERLOC_BROKER_CONNECTION_NAME
at MerLoc GateKeeper) specifically. For example:merloc -c my-connection-a <key>
(or--api-key <key>
): Configures API key for authorization while connecting to MerLoc Broker. For example:merloc -a 1234-5678-90-i <name>
(or--invoker <name>
): This configuration is OPTIONAL (but it is highly recommended to be set according to integrated tool). The default value isauto
. Valid values are:auto
: Automatically decides invoker to be used (sam-local
orserverless-local
). Decision is taken based on project structure:- If there is
template.yml
in the project root directory,sam-local
invoker is used. - If there is
serverless.yml
in the project root directory,serverless-local
invoker is used. - Otherwise, terminates MerLoc CLI with error as invoker to be used couldn't be determined.
sam-local
: Uses AWS SAM local to run and debug function locally. To use this option, the project must be a valid AWS SAM project.serverless-local
: Uses Serverless local to run and debug function locally. To use this option, the project must be a valid Serverless framework project. For example:
merloc -i sam-local-d
(or--debug
): Enables breakpoint debugging (if supported for the function runtime by MerLoc). By default breakpoint debugging is disabled. For example:merloc -d
-r
(or--reload
): Enables hot-reloading (if supported for the function runtime by MerLoc). This configuration is OPTIONAL. By default, hot-reloading is disabled. For example:merloc -rNote: Hot-reload can also be triggered manually by pressingCtrl+R
.
-w <paths...>
(or--watch <paths...>
): Configures paths to files, directories or glob patterns to be watched for changes to trigger hot-reload automatically. Enabling hot-reload (by-r
or--reload
as mentioned above) is required to use this option. This configuration is OPTIONAL. By default, current directory is watched. For example:merloc -r -w '**/*.ts' '**/*.js'Note: The following file patterns are ignored from being watched:'**/.idea/**'
**/.vscode/**'
**/.github/**'
**/.serverless/**'
**/.aws-sam/**'
**/.build/**'
**/.*'
**/*.json'
**/*.yml'
**/*.md'
**/*.txt'
**/LICENSE'
-rc <mode>
(or--runtime-concurrency <mode>
): Configures concurrency level at runtime level globally. This configuration is OPTIONAL. The default value isreject
. Valid values are:reject
: Rejects any invocation from any function if local runtime is busy executing other invocation. In this case, MerLoc GateKeeper is informed by local runtime with the rejection and then GateKeeper forwards the request to the original user handler.wait
: Waits any invocation from any function until runtime is available if local runtime is busy executing another invocation.per-function
: Disables global lock between functions and runtime lock is handled at per function basis according to-fc <mode>
(or--function-concurrency <mode>
) configuration mentioned below. For example,
merloc -rc per-function-fc <mode>
(or--function-concurrency <mode>
): Configures concurrency level at function level so executing a function doesn't block executing another function. This configuration is OPTIONAL. The default value isreject
. Valid values are:reject
: Rejects an invocation from a function if local runtime is busy executing other invocation of that function. In this case, MerLoc GateKeeper is informed by local runtime with the rejection and then GateKeeper forwards the request to the original user handler.wait
: Waits an invocation from a function until runtime is available if local runtime is busy executing another invocation of that function.
For example,merloc -fc wait-v
(or--verbose
): Enables verbose mode to print internal logs of the MerLoc CLI. For example:merloc -v-version
: Prints version of the currently installed MerLoc CLI. For example:merloc --version-h
(--help
): Displays help for MerLoc CLI. For example:merloc -h
MerLoc CLI (
merloc
command) must be run in your AWS SAM project root directory where template.yml
file is located.Go to AWS SAM page for the details.
MerLoc CLI (
merloc
command) must be run in your Serverless Framework project root directory where serverless.yml
file is located.Serverless Framework page for the details.
- If you see the following error messageERROR - <index> Unable to connect to broker: Error: Unexpected server response: 403while connecting broker, this means that,
- either your broker requires an API key (for ex, you are using Thundra hosted broker) and you didn't provide an API key by
-a <api-key>
option - or the API key you provided is invalid
Last modified 4mo ago