AWS Lambda
This article contains promotional content. (October 2018) |
Developer(s) | Amazon.com |
---|---|
Initial release | November 2014 |
Operating system | Cross-platform |
Available in | English |
Website | aws |
AWS Lambda is an event-driven, serverless computing platform provided by Amazon as a part of Amazon Web Services. It is a computing service that runs code in response to events and automatically manages the computing resources required by that code. It was introduced in November 2014.[1]
Node.js, Python, Java, Go,[2] Ruby,[3] and C# (through .NET Core) are all officially supported as of 2018[update]. In late 2018, custom runtime support[4] was added to AWS Lambda.
AWS Lambda supports running native Linux executables via calling out from a supported runtime such as Node.js.[5] For example, Haskell code can be run on Lambda.[6]
AWS Lambda was designed for use cases such as image or object uploads to Amazon S3, updates to DynamoDB tables, responding to website clicks or reacting to sensor readings from an IoT connected device. AWS Lambda can also be used to automatically provision back-end services triggered by custom HTTP requests, and "spin down" such services when not in use, to save resources. These custom HTTP requests are configured in AWS API Gateway, which can also handle authentication and authorization in conjunction with AWS Cognito.
Unlike Amazon EC2, which is priced by the hour but metered by the second, AWS Lambda is metered in increments of 100 milliseconds.
In 2019, at AWS' annual cloud computing conference (AWS re:Invent), the AWS Lambda team announced "Provisioned Concurrency", a feature that "keeps functions initialized and hyper-ready to respond in double-digit milliseconds."[7] The Lambda team described Provisioned Concurrency as "ideal for implementing interactive services, such as web and mobile backends, latency-sensitive microservices, or synchronous APIs."[8]
Specification
Each AWS Lambda instance is a container created from Amazon Linux AMIs (a Linux distribution related to RHEL) with 128–3008 MB of RAM (in 64 MB increments), up to 10 GB of ephemeral storage,[9] and a configurable execution time from 1 to 900 seconds. Ephemeral storage remains locally available only for the duration of the instance and is discarded after all tasks running on the instance complete.
The instances are neither started nor controlled directly. Instead, a package containing the required tasks has to be created and uploaded (usually) to an S3 bucket and AWS is instructed (via Amazon Kinesis, DynamoDB or SQS) to run it when an event is triggered. Each such execution is run in a new environment so access to the execution context of previous and subsequent runs is not possible. This essentially makes the instances stateless, all the incoming and outgoing data needs to be stored by external means (usually via S3 or DynamoDB, inbound connections to the instances is disabled). The maximum compressed size of a Lambda package is 50 MB with the maximum uncompressed size being 250 MB.
See also
- Event-driven architecture
- Serverless Framework
- Serverless computing
- Function as a service
- Lambda function, the concept of an anonymous computing function, not bound to an identity, which gives Amazon Lambda its name
- Oracle Cloud Platform
- Google Cloud Functions
- Azure Functions
References
- ^ Handy, Alex (November 14, 2014). "Amazon introduces Lambda, Containers at AWS re:Invent". SD Times. Retrieved December 10, 2019.
- ^ Munns, Chris (January 15, 2018). "Announcing Go Support for AWS Lambda". Amazon Web Services. Retrieved December 10, 2019.
- ^ Munns, Chris (November 29, 2018). "Announcing Ruby Support for AWS Lambda". Amazon Web Services. Retrieved December 10, 2019.
- ^ "AWS Lambda Now Supports Custom Runtimes and Enables Sharing Common Code Between Functions". Amazon Web Services. November 29, 2018. Retrieved December 10, 2019.
- ^ Wagner, Tim (April 15, 2015). "Running Arbitrary Executables in AWS Lambda". AWS Compute Blog. Retrieved December 10, 2019.
- ^ Bailly, Arnaud. "abailly/aws-lambda-haskell: Running Haskell code on AWS Lambda". GitHub. Retrieved December 10, 2019.
- ^ "New – Provisioned Concurrency for Lambda Functions". aws.amazon.com. Retrieved 2020-10-12.
- ^ "New – Provisioned Concurrency for Lambda Functions". Amazon Web Services. 2019-12-03. Retrieved 2020-02-03.
- ^ "AWS Lambda now supports up to 10 GB of memory and 6 vCPU cores for Lambda Functions". About AWS. December 1, 2021. Retrieved January 29, 2021.