5.0.0 ā€¢ Published 4 months ago

@studio/lambda v5.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
4 months ago

Studio Lambda

šŸš€ A custom AWS Lambda execution environment for local testing. Runs each Lambda function in it's own process. Integrates with Studio Gateway. Defaults are tailored for apex.

Usage

const Lambda = require('@studio/lambda');

const lambda = Lambda.create();
lambda.invoke('some-lambda', { some: 'event' }, callback);

API

  • lambda = Lambda.create([options]): Returns a new Lambda controller for the given options.
    • base_dir: The base directory to use. Defaults to the current working directory.
    • lambda_path: The path to the Lambda function. Replaces ${LAMBDA_NAME} with the Lambda name. Defaults to functions/${LAMBDA_NAME}/.
    • env: An object with environment variables to use. Defaults to an empty object.
    • config_file: A JSON file with additional environment and timeout properties. Defaults to functions/${LAMBDA_NAME}/function.${AWS_PROFILE}.json. Placeholders in the form of ${ENV_VAR} are replaced with the corresponding environment variable.
    • timeout: The default Lambda timeout to use in milliseconds. Defaults to 5 seconds.
    • max_idle: The idle timeout to use in milliseconds. If a function is not invoked for this time, the process gets destroyed. Defaults to 1 hour.
  • lambda.invoke(lambda_name, event[, options][, callback]): Invokes the named Lambda handle function. If no callback is given, a promise is returned. These options are supported:
    • awsRequestId: The AWS request ID to use in the Lambda context. If a context is given, but one of the above properties is missing, they are added to the context.
  • lambda.shutdown([options]): Shut down all processes. These options may be given:
    • graceful: Wait for running instances before closing processes. If this is not set to true, all processes are killed immediately.
  • lambda.stats(): Returns stats for this lambda instance. Returns an object where the keys are the Lambda function names and each value is an object with these properties:
    • instances: The total number of instances running.
    • active: The number of instances currently handling requests.
    • requests: The total number of requests received.

Lambda context

Lambda function are invoked with (event, context[, callback]) where the context has this interface:

  • functionName: The name of the Lambda function.
  • invokedFunctionArn: The function ARN, build from the AWS_REGION (defaulting to us-east-1), STUDIO_AWS_ACCOUNT (defaulting to 000000000000) and the Lambda function name.
  • memoryLimitInMB: The configured memory limit. This is currently not enforced.
  • awsRequestId: The AWS request ID, either from options or generated.
  • getRemainingTimeInMillis(): Returns the remaining time until the Lambda function times out.

If callback is not defined (the lambda handler function has an arity < 3), the function is expected to return a promise.

Debugging Lambda functions

If the environment variable STUDIO_LAMBDA_INSPECT is set to the name of a Lambda function, the node process for that function will be called with --inspect and the timeout value is ignored. This prints a Chrome debugger URL to the console. With this setup in place, you can add debugger statements to place breakpoints.

5.0.0

4 months ago

4.0.1

4 months ago

4.0.0

1 year ago

3.0.2

3 years ago

3.0.1

3 years ago

3.0.0

3 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.14.1

6 years ago

1.14.0

6 years ago

1.13.0

6 years ago

1.12.0

7 years ago

1.11.1

7 years ago

1.11.0

7 years ago

1.10.1

7 years ago

1.10.0

7 years ago

1.9.1

7 years ago

1.9.0

7 years ago

1.8.2

7 years ago

1.8.1

7 years ago

1.8.0

7 years ago

1.7.0

7 years ago

1.6.2

7 years ago

1.6.1

7 years ago

1.6.0

7 years ago

1.5.0

7 years ago

1.4.0

7 years ago

1.3.3

7 years ago

1.3.2

7 years ago

1.3.1

7 years ago

1.3.0

7 years ago

1.2.2

7 years ago

1.2.1

8 years ago

1.2.0

8 years ago

1.1.2

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.0

8 years ago