AWS Lambda Web Adapter allows developers to build web apps (http api) with familiar frameworks (e.g. Express.js, Next.js, Flask, SpringBoot, ASP.NET and Laravel, anything speaks HTTP 1.1/1.0) and run it on AWS Lambda.
The same docker image can run on AWS Lambda, Amazon EC2, AWS Fargate, and local computers.
Set environment variable AWS_LAMBDA_EXEC_WRAPPER to /opt/bootstrap
Set function handler to your startup script, e.g. run.sh
👉 Zip Packages guide (includes AWS China region ARNs and Windows caveats)
Configurations
The readiness check port/path and traffic port can be configured using environment variables. These environment variables can be defined either within docker file or as Lambda function configuration.
Environment Variable
Description
Default
AWS_LWA_PORT
traffic port (falls back to PORT)
“8080”
AWS_LWA_READINESS_CHECK_PORT
readiness check port
AWS_LWA_PORT
AWS_LWA_READINESS_CHECK_PATH
readiness check path
“/“
AWS_LWA_READINESS_CHECK_PROTOCOL
readiness check protocol: “http” or “tcp”
“http”
AWS_LWA_READINESS_CHECK_HEALTHY_STATUS
HTTP status codes considered healthy (e.g., “200-399”)
“100-499”
AWS_LWA_ASYNC_INIT
enable asynchronous initialization for long initialization functions
“false”
AWS_LWA_REMOVE_BASE_PATH
the base path to be removed from request path
None
AWS_LWA_ENABLE_COMPRESSION
enable gzip/br compression for response body (buffered mode only)
“false”
AWS_LWA_INVOKE_MODE
Lambda function invoke mode: “buffered” or “response_stream”
“buffered”
AWS_LWA_PASS_THROUGH_PATH
the path for receiving event payloads from non-http triggers
“/events”
AWS_LWA_AUTHORIZATION_SOURCE
a header name to be replaced to Authorization
None
AWS_LWA_ERROR_STATUS_CODES
HTTP status codes that will cause Lambda invocations to fail (e.g. “500,502-504”)
None
AWS_LWA_LAMBDA_RUNTIME_API_PROXY
overwrites AWS_LAMBDA_RUNTIME_API to allow proxying request
None
Deprecation Notice: The following non-namespaced environment variables are deprecated and will be removed in version 2.0:
HOST, READINESS_CHECK_PORT, READINESS_CHECK_PATH, READINESS_CHECK_PROTOCOL, REMOVE_BASE_PATH, ASYNC_INIT.
Please migrate to the AWS_LWA_ prefixed versions. Note: PORT is not deprecated and remains a supported fallback for AWS_LWA_PORT.
Additionally, AWS_LWA_READINESS_CHECK_MIN_UNHEALTHY_STATUS has been removed in 1.0. Use AWS_LWA_READINESS_CHECK_HEALTHY_STATUS instead.
All environment variables now use the AWS_LWA_ prefix. The old non-prefixed names still work but are deprecated and will be removed in version 2.0.
Old (Deprecated)
New
READINESS_CHECK_PORT
AWS_LWA_READINESS_CHECK_PORT
READINESS_CHECK_PATH
AWS_LWA_READINESS_CHECK_PATH
READINESS_CHECK_PROTOCOL
AWS_LWA_READINESS_CHECK_PROTOCOL
REMOVE_BASE_PATH
AWS_LWA_REMOVE_BASE_PATH
ASYNC_INIT
AWS_LWA_ASYNC_INIT
Note:PORT is not deprecated and remains a supported fallback for AWS_LWA_PORT.
Readiness Check Health Status
AWS_LWA_READINESS_CHECK_MIN_UNHEALTHY_STATUS has been removed. Use AWS_LWA_READINESS_CHECK_HEALTHY_STATUS instead, which accepts comma-separated codes and ranges:
# Old
AWS_LWA_READINESS_CHECK_MIN_UNHEALTHY_STATUS=400
# New (equivalent)
AWS_LWA_READINESS_CHECK_HEALTHY_STATUS=100-399
Similar Projects
Several projects also provide similar capabilities as language specific packages/frameworks.
AWS Lambda Web Adapter
A tool to run web applications on AWS Lambda
AWS Lambda Web Adapter allows developers to build web apps (http api) with familiar frameworks (e.g. Express.js, Next.js, Flask, SpringBoot, ASP.NET and Laravel, anything speaks HTTP 1.1/1.0) and run it on AWS Lambda. The same docker image can run on AWS Lambda, Amazon EC2, AWS Fargate, and local computers.
📖 Read the full User Guide
Features
Quick Start
Docker Images
Add one line to your Dockerfile:
Pre-compiled multi-arch images (x86_64 and arm64) are available at public.ecr.aws/awsguru/aws-lambda-adapter. Non-AWS base images may be used since the Runtime Interface Client ships with the Lambda Web Adapter.
👉 Docker Images guide
Zip Packages
arn:aws:lambda:${AWS::Region}:753240598075:layer:LambdaAdapterLayerX86:27arn:aws:lambda:${AWS::Region}:753240598075:layer:LambdaAdapterLayerArm64:27AWS_LAMBDA_EXEC_WRAPPERto/opt/bootstraprun.sh👉 Zip Packages guide (includes AWS China region ARNs and Windows caveats)
Configurations
The readiness check port/path and traffic port can be configured using environment variables. These environment variables can be defined either within docker file or as Lambda function configuration.
PORT)AuthorizationAWS_LAMBDA_RUNTIME_APIto allow proxying request👉 Detailed configuration docs
Examples
👉 Examples organized by language
Acknowledgement
This project was inspired by several community projects.
Migrating from 0.x to 1.0
Environment Variables
All environment variables now use the
AWS_LWA_prefix. The old non-prefixed names still work but are deprecated and will be removed in version 2.0.READINESS_CHECK_PORTAWS_LWA_READINESS_CHECK_PORTREADINESS_CHECK_PATHAWS_LWA_READINESS_CHECK_PATHREADINESS_CHECK_PROTOCOLAWS_LWA_READINESS_CHECK_PROTOCOLREMOVE_BASE_PATHAWS_LWA_REMOVE_BASE_PATHASYNC_INITAWS_LWA_ASYNC_INITReadiness Check Health Status
AWS_LWA_READINESS_CHECK_MIN_UNHEALTHY_STATUShas been removed. UseAWS_LWA_READINESS_CHECK_HEALTHY_STATUSinstead, which accepts comma-separated codes and ranges:Similar Projects
Several projects also provide similar capabilities as language specific packages/frameworks.
Security
See SECURITY for vulnerability reporting and CONTRIBUTING for more information.
License
This project is licensed under the Apache-2.0 License.