https://github.com/awslabs/aws-lambda-web-adapter

Run web applications on AWS Lambda

https://github.com/awslabs/aws-lambda-web-adapter

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    1 of 39 committers (2.6%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.7%) to scientific vocabulary

Keywords

aws-lambda lambda

Keywords from Contributors

cloud-infrastructure infrastructure-as-code generic agents transformers packaging projection embedded simulations archival
Last synced: 5 months ago · JSON representation

Repository

Run web applications on AWS Lambda

Basic Info
  • Host: GitHub
  • Owner: awslabs
  • License: apache-2.0
  • Language: Rust
  • Default Branch: main
  • Homepage:
  • Size: 36.4 MB
Statistics
  • Stars: 2,418
  • Watchers: 29
  • Forks: 140
  • Open Issues: 31
  • Releases: 27
Topics
aws-lambda lambda
Created over 4 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Codeowners

README.md

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.

Lambda Web Adapter

Features

  • Run web applications on AWS Lambda
  • Supports Amazon API Gateway Rest API and Http API endpoints, Lambda Function URLs, and Application Load Balancer
  • Supports Lambda managed runtimes, custom runtimes and docker OCI images
  • Supports any web frameworks and languages, no new code dependency to include
  • Automatic encode binary response
  • Enables graceful shutdown
  • Supports response payload compression
  • Supports response streaming
  • Supports non-http event triggers

Usage

AWS Lambda Web Adapter work with Lambda functions packaged as both docker images and Zip packages.

Lambda functions packaged as Docker Images or OCI Images

To use Lambda Web Adapter with docker images, package your web app (http api) in a Dockerfile, and add one line to copy Lambda Web Adapter binary to /opt/extensions inside your container:

dockerfile COPY --from=public.ecr.aws/awsguru/aws-lambda-adapter:0.9.1 /lambda-adapter /opt/extensions/lambda-adapter

Non-AWS base images may be used since the Runtime Interface Client ships with the Lambda Web Adapter.

By default, Lambda Web Adapter assumes the web app is listening on port 8080. If not, you can specify the port via configuration.

Pre-compiled Lambda Web Adapter binaries are provided in ECR public repo: public.ecr.aws/awsguru/aws-lambda-adapter. Multi-arch images are also provided in this repo. It works on both x86_64 and arm64 CPU architecture.

Below is a Dockerfile for an example nodejs application.

dockerfile FROM public.ecr.aws/docker/library/node:20-slim COPY --from=public.ecr.aws/awsguru/aws-lambda-adapter:0.9.1 /lambda-adapter /opt/extensions/lambda-adapter ENV PORT=7000 WORKDIR "/var/task" ADD src/package.json /var/task/package.json ADD src/package-lock.json /var/task/package-lock.json RUN npm install --omit=dev ADD src/ /var/task CMD ["node", "index.js"]

This works with any base images except AWS managed base images. To use AWS managed base images, you need to override the ENTRYPOINT to start your web app.

Lambda functions packaged as Zip package for AWS managed runtimes

AWS Lambda Web Adapter also works with AWS managed Lambda runtimes. You need to do three things:

  1. attach Lambda Web Adapter layer to your function.

    AWS Commercial Regions

    1. x86_64: arn:aws:lambda:${AWS::Region}:753240598075:layer:LambdaAdapterLayerX86:25
    2. arm64: arn:aws:lambda:${AWS::Region}:753240598075:layer:LambdaAdapterLayerArm64:25

#### AWS China Regions

  1. cn-north-1 (Beijing)
    • x86_64: arn:aws-cn:lambda:cn-north-1:041581134020:layer:LambdaAdapterLayerX86:25
  2. cn-northwest-1 (Ningxia)

    • x86_64: arn:aws-cn:lambda:cn-northwest-1:069767869989:layer:LambdaAdapterLayerX86:25
      1. configure Lambda environment variable AWS_LAMBDA_EXEC_WRAPPER to /opt/bootstrap.
      2. set function handler to your web application start up script. e.g. run.sh.

For details, please check out the example Node.js application.

Readiness Check

When a new Lambda Execution Environment starts up, Lambda Web Adapter will boot up as a Lambda Extension, followed by the web application.

By default, Lambda Web Adapter will send HTTP GET requests to the web application at http://127.0.0.1:8080/. The port and path can be customized with two environment variables: AWS_LWA_READINESS_CHECK_PORT and AWS_LWA_READINESS_CHECK_PATH.

Lambda Web Adapter will retry this request every 10 milliseconds until the web application returns an HTTP response (status code >= 100 and < 500) or the function times out.

In addition, you can configure the adapter to preform readiness check with TCP connect, by setting AWS_LWA_READINESS_CHECK_PROTOCOL to tcp.

After passing readiness check, Lambda Web Adapter will start Lambda Runtime and forward the invokes to the web application.

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 | |--------------------------------------------------------------|--------------------------------------------------------------------------------------|------------| | AWSLWAPORT / PORT* | traffic port | "8080" | | AWSLWAREADINESSCHECKPORT / READINESSCHECKPORT* | readiness check port, default to the traffic port | PORT | | AWSLWAREADINESSCHECKPATH / READINESSCHECKPATH* | readiness check path | "/" | | AWSLWAREADINESSCHECKPROTOCOL / READINESSCHECKPROTOCOL* | readiness check protocol: "http" or "tcp", default is "http" | "http" | | AWSLWAREADINESSCHECKMINUNHEALTHYSTATUS | The minimum HTTP status code that is considered unhealthy | "500" | | AWSLWAASYNCINIT / ASYNCINIT* | enable asynchronous initialization for long initialization functions | "false" | | AWSLWAREMOVEBASEPATH / REMOVEBASEPATH* | the base path to be removed from request path | None | | AWSLWAENABLECOMPRESSION | enable gzip compression for response body | "false" | | AWSLWAINVOKEMODE | Lambda function invoke mode: "buffered" or "responsestream", default is "buffered" | "buffered" | | AWSLWAPASSTHROUGHPATH | the path for receiving event payloads that are passed through from non-http triggers | "/events" | | AWSLWAAUTHORIZATIONSOURCE | a header name to be replaced to Authorization | None | | AWSLWAERRORSTATUSCODES | comma-separated list of HTTP status codes that will cause Lambda invocations to fail (e.g. "500,502-504,422") | None | | AWSLWALAMBDARUNTIMEAPIPROXY | overwrites `AWSLAMBDARUNTIMEAPI` to allow proxying request (not affecting registration) | None |

Note: We use "AWSLWA" prefix to namespacing all environment variables used by Lambda Web Adapter. The original ones will be supported until we reach version 1.0.

AWSLWAPORT / PORT - Lambda Web Adapter will send traffic to this port. This is the port your web application listening on. Inside Lambda execution environment, the web application runs as a non-root user, and not allowed to listen on ports lower than 1024. Please also avoid port 9001 and 3000. Lambda Runtime API is on port 9001. CloudWatch Lambda Insight extension uses port 3000.

AWSLWAASYNCINIT / ASYNCINIT - Lambda managed runtimes offer up to 10 seconds for function initialization. During this period of time, Lambda functions have burst of CPU to accelerate initialization, and it is free. If a lambda function couldn't complete the initialization within 10 seconds, Lambda will restart the function, and bill for the initialization. To help functions to use this 10 seconds free initialization time and avoid the restart, Lambda Web Adapter supports asynchronous initialization. When this feature is enabled, Lambda Web Adapter performs readiness check up to 9.8 seconds. If the web app is not ready by then, Lambda Web Adapter signals to Lambda service that the init is completed, and continues readiness check in the handler. This feature is disabled by default. Enable it by setting environment variable AWS_LWA_ASYNC_INIT to true.

AWSLWAREMOVEBASEPATH / REMOVEBASEPATH - The value of this environment variable tells the adapter whether the application is running under a base path. For example, you could have configured your API Gateway to have a /orders/{proxy+} and a /catalog/{proxy+} resource. Each resource is handled by a separate Lambda functions. For this reason, the application inside Lambda may not be aware of the fact that the /orders path exists. Use REMOVEBASEPATH to remove the /orders prefix when routing requests to the application. Defaults to empty string. Checkout SpringBoot example.

AWSLWAENABLE_COMPRESSION - Lambda Web Adapter supports gzip compression for response body. This feature is disabled by default. Enable it by setting environment variable AWS_LWA_ENABLE_COMPRESSION to true. When enabled, this will compress responses unless it's an image as determined by the content-type starting with image or the response is less than 32 bytes. This will also compress HTTP/1.1 chunked streaming response.

AWSLWAINVOKE_MODE - Lambda function invoke mode, this should match Function Url invoke mode. The default is "buffered". When configured as "response_stream", Lambda Web Adapter will stream response to Lambda service blog. Please check out FastAPI with Response Streaming example.

AWSLWAREADINESSCHECKMINUNHEALTHYSTATUS - allows you to customize which HTTP status codes are considered healthy and which ones are not

AWSLWAPASSTHROUGHPATH - Path to receive events payloads passed through from non-http event triggers. The default is "/events".

AWSLWAAUTHORIZATION_SOURCE - When set, Lambda Web Adapter replaces the specified header name to Authorization before proxying a request. This is useful when you use Lambda function URL with IAM auth type, which reserves Authorization header for IAM authentication, but you want to still use Authorization header for your backend apps. This feature is disabled by default.

AWSLWAERRORSTATUSCODES - A comma-separated list of HTTP status codes that will cause Lambda invocations to fail. Supports individual codes and ranges (e.g. "500,502-504,422"). When the web application returns any of these status codes, the Lambda invocation will fail and trigger error handling behaviors like retries or DLQ processing. This is useful for treating certain HTTP errors as Lambda execution failures. This feature is disabled by default.

Request Context

Request Context is metadata API Gateway sends to Lambda for a request. It usually contains requestId, requestTime, apiId, identity, and authorizer. Identity and authorizer are useful to get client identity for authorization. API Gateway Developer Guide contains more details here.

Lambda Web Adapter forwards this information to the web application in a Http Header named "x-amzn-request-context". In the web application, you can retrieve the value of this http header and deserialize it into a JSON object. Check out Express.js in Zip on how to use it.

Lambda Context

Lambda Context is an object that Lambda passes to the function handler. This object provides information about the invocation, function, and execution environment. You can find a full list of properties accessible through the Lambda Context here

Lambda Web Adapter forwards this information to the web application in a Http Header named "x-amzn-lambda-context". In the web application, you can retrieve the value of this http header and deserialize it into a JSON object. Check out Express.js in Zip on how to use it.

Graceful Shutdown

For a function with Lambda Extensions registered, Lambda enables shutdown phase for the function. When Lambda service is about to shut down a Lambda execution environment, it sends a SIGTERM signal to the runtime and then a SHUTDOWN event to each registered external extensions. Developers could catch the SIGTERM signal in the lambda functions and perform graceful shutdown tasks. The Express.js gives a simple example. More details in this repo.

Local Debugging

Lambda Web Adapter allows developers to develop web applications locally with familiar tools and debuggers: just run the web app locally and test it. If you want to simulate Lambda Runtime environment locally, you can use AWS SAM CLI. The following command starts a local api gateway endpoint and simulate the Lambda runtime execution environment.

bash sam local start-api

Please note that sam local starts a Lambda Runtime Interface Emulator on port 8080. So your web application should avoid port 8080 if you plan to use sam local.

Non-HTTP Event Triggers

The Lambda Web Adapter also supports all non-HTTP event triggers, such as SQS, SNS, S3, DynamoDB, Kinesis, Kafka, EventBridge, and Bedrock Agents. The adapter forwards the event payload to the web application via http post to a path defined by the AWS_LWA_PASS_THROUGH_PATH environment variable. By default, this path is set to /events. Upon receiving the event payload from the request body, the web application should processes it and returns the results as a JSON response. Please checkout SQS Express.js and Bedrock Agent FastAPI in Zip examples.

Intercepting request and response

The AWS_LWA_LAMBDA_RUNTIME_API_PROXY environment varible makes the Lambda Web Adapter redirect the requests to a custom proxy URL. The proxy can then intercept the requests of the Lambda runtime API, and apply arbitrary operations such as inspection or modification. Possible applications are tracing, payload capturing, obfuscation of sensitive data, headers modification. Note that the payload of the request received by the web application is wrapped inside the GET response body. This proxy does not affect the extension registering API and is meant to be used only to interact with the data received and sent by the web application

Examples

Acknowledgement

This project was inspired by several community projects.

Similar Projects

Several projects also provide similar capabilities as language specific packages/frameworks.

Security

See CONTRIBUTING for more information.

License

This project is licensed under the Apache-2.0 License.

Owner

  • Name: Amazon Web Services - Labs
  • Login: awslabs
  • Kind: organization
  • Location: Seattle, WA

AWS Labs

GitHub Events

Total
  • Create event: 36
  • Release event: 2
  • Issues event: 29
  • Watch event: 481
  • Delete event: 24
  • Issue comment event: 78
  • Push event: 45
  • Pull request review event: 46
  • Pull request review comment event: 20
  • Pull request event: 86
  • Fork event: 31
Last Year
  • Create event: 36
  • Release event: 2
  • Issues event: 29
  • Watch event: 481
  • Delete event: 24
  • Issue comment event: 78
  • Push event: 45
  • Pull request review event: 46
  • Pull request review comment event: 20
  • Pull request event: 86
  • Fork event: 31

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 431
  • Total Committers: 39
  • Avg Commits per committer: 11.051
  • Development Distribution Score (DDS): 0.399
Past Year
  • Commits: 61
  • Committers: 11
  • Avg Commits per committer: 5.545
  • Development Distribution Score (DDS): 0.443
Top Committers
Name Email Commits
Harold Sun s****a@a****m 259
dependabot[bot] 4****] 98
mbfreder 1****r 10
Elon Niu e****u@q****m 9
max funk m****l 7
Xue Jiaqing b****r@g****m 6
David Calavera d****a@g****m 6
マルコメ a****o@b****p 3
David Calavera d****r@a****m 2
moritalous m****s 2
Serkan ÖZAL s****n@t****o 1
jlonge4 9****4 1
joe-king-sh a****8@g****m 1
renjiexu-amzn 1****n 1
Julian Bonilla j****a 1
Jonathan Tuliani 8****i 1
Jeff Schwartz j****f@s****m 1
James Eastham d****v@j****k 1
Harold Hunt h****d@p****m 1
Amazon GitHub Automation 5****o 1
jeffmercerVG 1****G 1
alexgallotta 5****a 1
X. Sun 1****t 1
Thitat Auareesuksakul t****t@f****i 1
Summer Phillips 3****g 1
Stephen s****2@g****m 1
Souyama s****h@g****m 1
Shawn Zhang 3****n 1
Renato Valenzuela 3****a 1
Oguzhan Ozdemir a****r@l****m 1
and 9 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 113
  • Total pull requests: 485
  • Average time to close issues: 27 days
  • Average time to close pull requests: 5 days
  • Total issue authors: 84
  • Total pull request authors: 38
  • Average comments per issue: 2.87
  • Average comments per pull request: 0.34
  • Merged pull requests: 365
  • Bot issues: 9
  • Bot pull requests: 219
Past Year
  • Issues: 31
  • Pull requests: 128
  • Average time to close issues: 15 days
  • Average time to close pull requests: 6 days
  • Issue authors: 24
  • Pull request authors: 15
  • Average comments per issue: 0.61
  • Average comments per pull request: 0.33
  • Merged pull requests: 76
  • Bot issues: 9
  • Bot pull requests: 71
Top Authors
Issue Authors
  • github-actions[bot] (6)
  • huntharo (5)
  • KentonParton (3)
  • tmokmss (3)
  • dependabot[bot] (3)
  • munkim (2)
  • mkdynamic (2)
  • jeffmercerVG (2)
  • SinnoSong (2)
  • jplock (2)
  • sidekick-eimantas (2)
  • InspectorGadget (2)
  • CGarces (2)
  • bgonzalezfractal (2)
  • four43 (2)
Pull Request Authors
  • dependabot[bot] (219)
  • bnusunny (153)
  • elonniu (19)
  • mxfactorial (13)
  • mbfreder (9)
  • alexgallotta (7)
  • Marukome0743 (6)
  • xjiaqing (6)
  • DiscreteTom (4)
  • moritalous (4)
  • kappaexpress (2)
  • jtuliani (2)
  • ma2shita (2)
  • tmokmss (2)
  • jlonge4 (2)
Top Labels
Issue Labels
dependencies (3) enhancement (2) ruby (1) python (1) javascript (1)
Pull Request Labels
dependencies (219) python (96) javascript (73) go (20) rust (16) ruby (10) github_actions (2)

Packages

  • Total packages: 2
  • Total downloads:
    • cargo 13,962 total
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 37
  • Total maintainers: 2
proxy.golang.org: github.com/awslabs/aws-lambda-web-adapter
  • Versions: 27
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 6.5%
Average: 6.7%
Dependent repos count: 7.0%
Last synced: 6 months ago
crates.io: lambda_web_adapter

Run web applications on AWS Lambda

  • Versions: 10
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 13,962 Total
Rankings
Stargazers count: 10.2%
Forks count: 12.2%
Dependent repos count: 29.3%
Average: 31.7%
Dependent packages count: 33.8%
Downloads: 73.1%
Maintainers (2)
Last synced: 6 months ago

Dependencies

Cargo.lock cargo
  • 120 dependencies
Cargo.toml cargo
  • env_logger 0.8.3
  • http 0.2.4
  • lambda-extension 0.5.0
  • log 0.4.14
  • reqwest 0.11
  • tokio 1.0
  • tokio-retry 0.3
examples/expressjs/app/src/package-lock.json npm
  • accepts 1.3.7
  • array-flatten 1.1.1
  • body-parser 1.19.0
  • bytes 3.1.0
  • content-disposition 0.5.3
  • content-type 1.0.4
  • cookie 0.4.0
  • cookie-signature 1.0.6
  • debug 2.6.9
  • depd 1.1.2
  • destroy 1.0.4
  • ee-first 1.1.1
  • encodeurl 1.0.2
  • escape-html 1.0.3
  • etag 1.8.1
  • express 4.17.1
  • finalhandler 1.1.2
  • forwarded 0.1.2
  • fresh 0.5.2
  • http-errors 1.7.2
  • iconv-lite 0.4.24
  • inherits 2.0.3
  • ipaddr.js 1.9.1
  • media-typer 0.3.0
  • merge-descriptors 1.0.1
  • methods 1.1.2
  • mime 1.6.0
  • mime-db 1.47.0
  • mime-types 2.1.30
  • ms 2.0.0
  • ms 2.1.1
  • negotiator 0.6.2
  • on-finished 2.3.0
  • parseurl 1.3.3
  • path-to-regexp 0.1.7
  • proxy-addr 2.0.6
  • qs 6.7.0
  • range-parser 1.2.1
  • raw-body 2.4.0
  • safe-buffer 5.1.2
  • safer-buffer 2.1.2
  • send 0.17.1
  • serve-static 1.14.1
  • setprototypeof 1.1.1
  • statuses 1.5.0
  • toidentifier 1.0.0
  • type-is 1.6.18
  • unpipe 1.0.0
  • utils-merge 1.0.1
  • vary 1.1.2
examples/expressjs/app/src/package.json npm
  • express ^4.17.1
examples/expressjs-zip/hello-world/package.json npm
  • chai ^4.2.0 development
  • mocha ^8.2.1 development
  • express ^4.17.1
examples/flask/app/requirements.txt pypi
  • Flask ==2.0.1
  • Jinja2 ==3.0.1
  • MarkupSafe ==2.0.1
  • Werkzeug ==2.0.1
  • click ==8.0.1
  • gunicorn ==20.1.0
  • itsdangerous ==2.0.1
.github/workflows/pipeline.yaml actions
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • aws-actions/configure-aws-credentials v1-node16 composite
  • aws-actions/setup-sam v2 composite
  • dkershner6/aws-ssm-getparameters-action v1 composite
  • dtolnay/rust-toolchain master composite
  • runforesight/foresight-test-kit-action v1 composite
  • runforesight/foresight-workflow-kit-action v1 composite
  • taiki-e/install-action nextest composite
Dockerfile docker
  • public.ecr.aws/awsguru/rust-builder latest build
  • scratch latest build
examples/expressjs/app/Dockerfile docker
  • public.ecr.aws/docker/library/node 16.13.2-stretch-slim build
examples/fastapi/app/Dockerfile docker
  • public.ecr.aws/docker/library/python 3.8.12-slim-buster build
examples/flask/app/Dockerfile docker
  • public.ecr.aws/docker/library/python 3.8.12-slim-buster build
examples/gin/app/Dockerfile docker
  • alpine 3.9 build
  • golang 1.18-alpine build
examples/nextjs/app/Dockerfile docker
  • public.ecr.aws/docker/library/node 16.16.0-slim build
examples/gin/app/go.mod go
  • github.com/gin-contrib/sse v0.1.0
  • github.com/gin-gonic/gin v1.8.1
  • github.com/go-playground/locales v0.14.0
  • github.com/go-playground/universal-translator v0.18.0
  • github.com/go-playground/validator/v10 v10.11.1
  • github.com/goccy/go-json v0.9.11
  • github.com/json-iterator/go v1.1.12
  • github.com/leodido/go-urn v1.2.1
  • github.com/mattn/go-isatty v0.0.16
  • github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
  • github.com/modern-go/reflect2 v1.0.2
  • github.com/pelletier/go-toml/v2 v2.0.5
  • github.com/ugorji/go/codec v1.2.7
  • golang.org/x/crypto v0.0.0-20220924013350-4ba4fb4dd9e7
  • golang.org/x/net v0.0.0-20220923203811-8be639271d50
  • golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8
  • golang.org/x/text v0.3.7
  • google.golang.org/protobuf v1.28.1
  • gopkg.in/yaml.v2 v2.4.0
examples/gin/app/go.sum go
  • github.com/creack/pty v1.1.9
  • github.com/davecgh/go-spew v1.1.0
  • github.com/davecgh/go-spew v1.1.1
  • github.com/gin-contrib/sse v0.1.0
  • github.com/gin-gonic/gin v1.8.1
  • github.com/go-playground/assert/v2 v2.0.1
  • github.com/go-playground/locales v0.14.0
  • github.com/go-playground/universal-translator v0.18.0
  • github.com/go-playground/validator/v10 v10.11.1
  • github.com/goccy/go-json v0.9.11
  • github.com/golang/protobuf v1.5.0
  • github.com/google/go-cmp v0.5.5
  • github.com/google/gofuzz v1.0.0
  • github.com/json-iterator/go v1.1.12
  • github.com/kr/pretty v0.1.0
  • github.com/kr/pretty v0.2.1
  • github.com/kr/pretty v0.3.0
  • github.com/kr/pty v1.1.1
  • github.com/kr/text v0.1.0
  • github.com/kr/text v0.2.0
  • github.com/leodido/go-urn v1.2.1
  • github.com/mattn/go-isatty v0.0.16
  • github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421
  • github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
  • github.com/modern-go/reflect2 v1.0.2
  • github.com/pelletier/go-toml/v2 v2.0.5
  • github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e
  • github.com/pmezard/go-difflib v1.0.0
  • github.com/rogpeppe/go-internal v1.6.1
  • github.com/rogpeppe/go-internal v1.8.0
  • github.com/stretchr/objx v0.1.0
  • github.com/stretchr/objx v0.4.0
  • github.com/stretchr/testify v1.3.0
  • github.com/stretchr/testify v1.6.1
  • github.com/stretchr/testify v1.7.0
  • github.com/stretchr/testify v1.7.1
  • github.com/stretchr/testify v1.8.0
  • github.com/ugorji/go v1.2.7
  • github.com/ugorji/go/codec v1.2.7
  • golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3
  • golang.org/x/crypto v0.0.0-20220924013350-4ba4fb4dd9e7
  • golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2
  • golang.org/x/net v0.0.0-20220923203811-8be639271d50
  • golang.org/x/sys v0.0.0-20201119102817-f84b799fce68
  • golang.org/x/sys v0.0.0-20210423082822-04245dca01da
  • golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1
  • golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069
  • golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab
  • golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8
  • golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1
  • golang.org/x/text v0.3.6
  • golang.org/x/text v0.3.7
  • golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e
  • golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
  • google.golang.org/protobuf v1.26.0-rc.1
  • google.golang.org/protobuf v1.28.1
  • gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
  • gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127
  • gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
  • gopkg.in/errgo.v2 v2.1.0
  • gopkg.in/yaml.v2 v2.4.0
  • gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c
  • gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
  • gopkg.in/yaml.v3 v3.0.1
examples/gin-zip/app/go.mod go
  • github.com/gin-contrib/sse v0.1.0
  • github.com/gin-gonic/gin v1.8.1
  • github.com/go-playground/locales v0.14.0
  • github.com/go-playground/universal-translator v0.18.0
  • github.com/go-playground/validator/v10 v10.11.1
  • github.com/goccy/go-json v0.9.11
  • github.com/json-iterator/go v1.1.12
  • github.com/leodido/go-urn v1.2.1
  • github.com/mattn/go-isatty v0.0.16
  • github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
  • github.com/modern-go/reflect2 v1.0.2
  • github.com/pelletier/go-toml/v2 v2.0.5
  • github.com/ugorji/go/codec v1.2.7
  • golang.org/x/crypto v0.0.0-20220924013350-4ba4fb4dd9e7
  • golang.org/x/net v0.0.0-20220923203811-8be639271d50
  • golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8
  • golang.org/x/text v0.3.7
  • google.golang.org/protobuf v1.28.1
  • gopkg.in/yaml.v2 v2.4.0
examples/gin-zip/app/go.sum go
  • github.com/creack/pty v1.1.9
  • github.com/davecgh/go-spew v1.1.0
  • github.com/davecgh/go-spew v1.1.1
  • github.com/gin-contrib/sse v0.1.0
  • github.com/gin-gonic/gin v1.8.1
  • github.com/go-playground/assert/v2 v2.0.1
  • github.com/go-playground/locales v0.14.0
  • github.com/go-playground/universal-translator v0.18.0
  • github.com/go-playground/validator/v10 v10.11.1
  • github.com/goccy/go-json v0.9.11
  • github.com/golang/protobuf v1.5.0
  • github.com/google/go-cmp v0.5.5
  • github.com/google/gofuzz v1.0.0
  • github.com/json-iterator/go v1.1.12
  • github.com/kr/pretty v0.1.0
  • github.com/kr/pretty v0.2.1
  • github.com/kr/pretty v0.3.0
  • github.com/kr/pty v1.1.1
  • github.com/kr/text v0.1.0
  • github.com/kr/text v0.2.0
  • github.com/leodido/go-urn v1.2.1
  • github.com/mattn/go-isatty v0.0.16
  • github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421
  • github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
  • github.com/modern-go/reflect2 v1.0.2
  • github.com/pelletier/go-toml/v2 v2.0.5
  • github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e
  • github.com/pmezard/go-difflib v1.0.0
  • github.com/rogpeppe/go-internal v1.6.1
  • github.com/rogpeppe/go-internal v1.8.0
  • github.com/stretchr/objx v0.1.0
  • github.com/stretchr/objx v0.4.0
  • github.com/stretchr/testify v1.3.0
  • github.com/stretchr/testify v1.6.1
  • github.com/stretchr/testify v1.7.0
  • github.com/stretchr/testify v1.7.1
  • github.com/stretchr/testify v1.8.0
  • github.com/ugorji/go v1.2.7
  • github.com/ugorji/go/codec v1.2.7
  • golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3
  • golang.org/x/crypto v0.0.0-20220924013350-4ba4fb4dd9e7
  • golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2
  • golang.org/x/net v0.0.0-20220923203811-8be639271d50
  • golang.org/x/sys v0.0.0-20201119102817-f84b799fce68
  • golang.org/x/sys v0.0.0-20210423082822-04245dca01da
  • golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1
  • golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069
  • golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab
  • golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8
  • golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1
  • golang.org/x/text v0.3.6
  • golang.org/x/text v0.3.7
  • golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e
  • golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
  • google.golang.org/protobuf v1.26.0-rc.1
  • google.golang.org/protobuf v1.28.1
  • gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
  • gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127
  • gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
  • gopkg.in/errgo.v2 v2.1.0
  • gopkg.in/yaml.v2 v2.4.0
  • gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c
  • gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
  • gopkg.in/yaml.v3 v3.0.1
examples/nextjs/app/package-lock.json npm
  • 235 dependencies
examples/nextjs/app/package.json npm
  • eslint 8.20.0 development
  • eslint-config-next 12.2.3 development
  • next 12.2.4
  • react 18.2.0
  • react-dom 18.2.0
examples/nextjs-zip/app/package-lock.json npm
  • 237 dependencies
examples/nextjs-zip/app/package.json npm
  • eslint 8.23.0 development
  • eslint-config-next 12.2.5 development
  • next 12.2.5
  • react 18.2.0
  • react-dom 18.2.0
examples/fastapi/app/requirements.txt pypi
  • anyio ==3.6.2
  • click ==8.1.3
  • fastapi ==0.92.0
  • h11 ==0.14.0
  • idna ==3.4
  • importlib-metadata ==6.0.0
  • pydantic ==1.10.5
  • sniffio ==1.3.0
  • starlette ==0.25.0
  • typing_extensions ==4.5.0
  • uvicorn ==0.20.0
  • zipp ==3.13.0
examples/fastapi-zip/app/requirements.txt pypi
  • anyio ==3.6.2
  • click ==8.1.3
  • fastapi ==0.92.0
  • h11 ==0.14.0
  • idna ==3.4
  • importlib-metadata ==6.0.0
  • pydantic ==1.10.5
  • sniffio ==1.3.0
  • starlette ==0.25.0
  • typing_extensions ==4.5.0
  • uvicorn ==0.20.0
  • zipp ==3.13.0
examples/fastapi-zip/tests/requirements.txt pypi
  • boto3 * test
  • pytest * test
  • requests * test
examples/flask-zip/app/requirements.txt pypi
  • Flask ==2.2.3
  • Jinja2 ==3.1.2
  • MarkupSafe ==2.1.2
  • Werkzeug ==2.2.3
  • click ==8.1.3
  • gunicorn ==20.1.0
  • importlib-metadata ==6.0.0
  • itsdangerous ==2.1.2
  • typing_extensions ==4.5.0
  • zipp ==3.13.0
examples/rust-actix-web-zip/rust_app/Cargo.lock cargo
  • 125 dependencies
examples/rust-actix-web-zip/rust_app/Cargo.toml cargo
examples/rust-axum-https-zip/rust_app/Cargo.lock cargo
  • 108 dependencies
examples/rust-axum-https-zip/rust_app/Cargo.toml cargo
examples/rust-axum-zip/rust_app/Cargo.lock cargo
  • async-trait 0.1.56
  • autocfg 1.1.0
  • axum 0.5.16
  • axum-core 0.2.8
  • bitflags 1.3.2
  • bytes 1.2.0
  • cfg-if 1.0.0
  • fnv 1.0.7
  • form_urlencoded 1.0.1
  • futures-channel 0.3.21
  • futures-core 0.3.21
  • futures-task 0.3.21
  • futures-util 0.3.21
  • hermit-abi 0.1.19
  • http 0.2.8
  • http-body 0.4.5
  • http-range-header 0.3.0
  • httparse 1.7.1
  • httpdate 1.0.2
  • hyper 0.14.20
  • itoa 1.0.2
  • libc 0.2.126
  • lock_api 0.4.7
  • log 0.4.17
  • matches 0.1.9
  • matchit 0.5.0
  • memchr 2.5.0
  • mime 0.3.16
  • mio 0.8.4
  • num_cpus 1.13.1
  • once_cell 1.13.0
  • parking_lot 0.12.1
  • parking_lot_core 0.9.3
  • percent-encoding 2.1.0
  • pin-project 1.0.11
  • pin-project-internal 1.0.11
  • pin-project-lite 0.2.9
  • pin-utils 0.1.0
  • proc-macro2 1.0.42
  • quote 1.0.20
  • redox_syscall 0.2.16
  • ryu 1.0.10
  • scopeguard 1.1.0
  • serde 1.0.140
  • serde_json 1.0.82
  • serde_urlencoded 0.7.1
  • signal-hook-registry 1.4.0
  • smallvec 1.9.0
  • socket2 0.4.4
  • syn 1.0.98
  • sync_wrapper 0.1.1
  • tokio 1.20.4
  • tokio-macros 1.8.0
  • tower 0.4.13
  • tower-http 0.3.4
  • tower-layer 0.3.1
  • tower-service 0.3.2
  • tracing 0.1.35
  • tracing-core 0.1.28
  • try-lock 0.2.3
  • unicode-ident 1.0.2
  • want 0.3.0
  • wasi 0.11.0+wasi-snapshot-preview1
  • winapi 0.3.9
  • winapi-i686-pc-windows-gnu 0.4.0
  • winapi-x86_64-pc-windows-gnu 0.4.0
  • windows-sys 0.36.1
  • windows_aarch64_msvc 0.36.1
  • windows_i686_gnu 0.36.1
  • windows_i686_msvc 0.36.1
  • windows_x86_64_gnu 0.36.1
  • windows_x86_64_msvc 0.36.1
examples/rust-axum-zip/rust_app/Cargo.toml cargo
examples/aspnet-mvc/src/Dockerfile docker
  • base latest build
  • build latest build
  • mcr.microsoft.com/dotnet/aspnet 8.0-preview build
  • mcr.microsoft.com/dotnet/sdk 8.0-preview build
examples/fastapi-https/app/Dockerfile docker
  • public.ecr.aws/docker/library/python 3.8.12-slim-buster build
examples/nextjs-response-streaming/Dockerfile docker
  • public.ecr.aws/lambda/nodejs 16 build
examples/nginx/Dockerfile docker
  • public.ecr.aws/awsguru/nginx 1.23.2023.3.11.1 build
examples/nginx/docker-compose.yml docker
examples/php/Dockerfile docker
  • public.ecr.aws/awsguru/php 82.2023.3.11.1 build
examples/springboot-response-streaming-zip/app/pom.xml maven
  • org.springframework.boot:spring-boot-starter-web
  • org.springframework.boot:spring-boot-starter-test test
examples/nextjs-response-streaming/package-lock.json npm
  • 427 dependencies
examples/nextjs-response-streaming/package.json npm
  • @tailwindcss/typography 0.5.9 development
  • @types/ms 0.7.31 development
  • @types/node 18.15.11 development
  • @types/react 18.0.33 development
  • @types/react-dom 18.0.11 development
  • @vercel/git-hooks 1.0.0 development
  • autoprefixer 10.4.13 development
  • eslint 8.30.0 development
  • eslint-config-next 13.1.0 development
  • lint-staged 13.1.0 development
  • postcss 8.4.20 development
  • prettier 2.8.1 development
  • prettier-plugin-tailwindcss 0.2.1 development
  • tailwindcss 3.3.1 development
  • typescript 5.0.3 development
  • @heroicons/react 1.0.6
  • @tailwindcss/forms 0.5.3
  • @tailwindcss/line-clamp 0.4.2
  • @types/node 18.15.11
  • @types/react 18.0.33
  • @types/react-dom 18.0.11
  • autoprefixer 10.4.14
  • clsx 1.2.1
  • date-fns 2.29.3
  • dinero.js 2.0.0-alpha.8
  • eslint 8.37.0
  • eslint-config-next 13.3.0
  • ms 3.0.0-canary.1
  • next 13.3.0
  • postcss 8.4.21
  • react 18.2.0
  • react-dom 18.2.0
  • sharp ^0.32.0
  • tailwindcss 3.3.1
  • typescript 5.0.3
examples/aspnet-mvc/src/AspNetLambdaWebAdapter.csproj nuget
examples/aspnet-mvc-zip/src/AspNetLambdaZipWebAdapter.csproj nuget
examples/aspnet-webapi-zip/src/AspNetWebApi.csproj nuget
  • Amazon.Lambda.APIGatewayEvents 2.6.0
examples/php/app/composer.json packagist
  • php ^8.0.2
examples/php/app/composer.lock packagist
examples/php-zip/app/composer.json packagist
  • php ^8.0.2
examples/php-zip/app/composer.lock packagist
examples/fastapi-https/app/requirements.txt pypi
  • anyio ==3.6.2
  • click ==8.1.3
  • fastapi ==0.95.2
  • h11 ==0.14.0
  • idna ==3.4
  • importlib-metadata ==6.0.0
  • pydantic ==1.10.5
  • sniffio ==1.3.0
  • starlette ==0.27.0
  • typing_extensions ==4.5.0
  • uvicorn ==0.20.0
  • zipp ==3.13.0
examples/fastapi-response-streaming/app/requirements.txt pypi
  • anyio ==3.6.2
  • click ==8.1.3
  • fastapi ==0.95.2
  • h11 ==0.14.0
  • idna ==3.4
  • importlib-metadata ==6.0.0
  • pydantic ==1.10.5
  • sniffio ==1.3.0
  • starlette ==0.27.0
  • typing_extensions ==4.5.0
  • uvicorn ==0.20.0
  • zipp ==3.13.0