AWS Lambda Environment Detector
is-lambda is a lightweight utility package designed to detect whether the current JavaScript execution environment is an AWS Lambda server. It achieves this by inspecting well-known AWS Lambda-specific environment variables such as `AWS_LAMBDA_FUNCTION_NAME`, `AWS_REGION`, and `LAMBDA_TASK_ROOT`. The current stable version is 1.0.1. Due to its focused and simple nature, its release cadence is typically very slow, with updates primarily occurring if AWS Lambda's environment signature changes or critical bug fixes are required. Its key differentiator is its minimalism, providing a single boolean value without additional overhead or complex configuration, making it suitable for quick environmental checks in serverless applications or conditional logic based on the deployment environment.
Common errors
-
TypeError: (0 , _isLambda.isLambda) is not a function
cause Attempting to import `is-lambda` as a named export in an ESM context, but the package directly exports a boolean.fixChange your import statement to `import isLambda from 'is-lambda';`. -
TypeError: Cannot read properties of undefined (reading 'isLambda')
cause Incorrectly trying to access `isLambda` as a property of an object when using `require`, or other incorrect CommonJS patterns.fixEnsure you are assigning the result of `require('is-lambda')` directly to a variable: `const isLambda = require('is-lambda');`.
Warnings
- gotcha The detection relies on specific AWS Lambda environment variables (e.g., `AWS_LAMBDA_FUNCTION_NAME`, `AWS_REGION`). While these are stable, changes in future AWS Lambda runtime environments could potentially affect detection accuracy, though this is rare.
- gotcha Local serverless emulation tools (e.g., `serverless-offline`, `SAM CLI local`) might not perfectly replicate all AWS Lambda environment variables, leading to `is-lambda` incorrectly returning `false` in a local 'Lambda-like' environment. This means tests might pass locally but fail when deployed.
- gotcha The package directly exports a boolean value. Attempting to destructure it as a named export (`import { isLambda } from 'is-lambda';`) or use it in other ways expecting an object will result in errors.
Install
-
npm install is-lambda -
yarn add is-lambda -
pnpm add is-lambda
Imports
- isLambda
const isLambda = require('is-lambda'); - isLambda
import { isLambda } from 'is-lambda';import isLambda from 'is-lambda';
Quickstart
const isLambda = require('is-lambda');
function main() {
if (isLambda) {
console.log('The code is running on an AWS Lambda function.');
// Example: Accessing Lambda-specific environment variables
console.log('Function Name:', process.env.AWS_LAMBDA_FUNCTION_NAME ?? 'N/A');
console.log('AWS Region:', process.env.AWS_REGION ?? 'N/A');
} else {
console.log('The code is NOT running on an AWS Lambda function.');
console.log('Simulating local environment...');
// Example of local behavior
const message = 'Hello from local environment!';
console.log(message);
}
}
// To demonstrate local behavior when running outside Lambda:
// Temporarily clear AWS Lambda specific environment variables
const originalLambdaEnv = process.env.AWS_LAMBDA_FUNCTION_NAME;
delete process.env.AWS_LAMBDA_FUNCTION_NAME;
main();
process.env.AWS_LAMBDA_FUNCTION_NAME = originalLambdaEnv; // Restore if needed
// To demonstrate Lambda behavior (if run on Lambda, or mock locally):
// process.env.AWS_LAMBDA_FUNCTION_NAME = 'my-test-function';
// process.env.AWS_REGION = 'us-east-1';
// main();