AWS Lambda is an event driven, serverless computing platform provided by Amazon for Developers. It was introduced in 2014 and can run code in response to events and automatically manages the computing resources required to run the code and scales the code based on incoming requests. AWS targets to execute the Lambda code in milliseconds, with the developer not having to manage anything like the run time environment or any configuration to run specific code. Lambda currently supports Node.Js, Python, Ruby, Java, Go, C# through .NET Core programming platforms.
Lambda functions can be executed against an event triggered by another AWS service like Uploading of a file to an S3 bucket, pushing of a notification to SNS topic, DynamoDB table updates and insertion of rows, Incoming Data stream into Kinesis can all trigger a Lambda function and the event that triggered will passed as Input to the Lambda along with the contextual Data ( In case of S3 file upload, it would be S3 Object key and other meta data, In case of DynamoDB it would be table update / inserted row details on the given table). The Lambda function can then process such data or act upon it to perform a business logic based on requirement.
We can create Lambda functions and attach it to a custom API Endpoint created in AWS API Gateway. This will enable our API consumers to call the API Endpoint with a Request Body / Parameters which in turn will be passed to Lambda that gets triggered and the Function can then process such HTTP/S requests (with or without authentication protocols) and respond back which is then passed back to the consumer. Here, we don’t need to worry about the scalability of the API endpoint.
AWS manages all the infrastructure to run our code on a highly available, fault tolerant architecture (by distributing lambda compute across multiple Availability Zones) freeing us to focus on differentiated back-end services. With Lambda, we never have to update or patch the underlying OS whenever a new update is released or worry about adding new servers in response high incoming Load. It also provides built-in logging via Cloudwatch integration.
We can co-ordinate multiple Lambdas for executing complex workflows with AWS Step Functions. Step Functions help us in defining workflows that can trigger a collection of Lambdas using parallel, sequential, branching and error-handling steps.
With AWS Lambda you pay only for the requests served and the compute time required to run your code. Billing is metered in increments of 100 milliseconds, making it cost-effective and easy to scale automatically from a few requests per day to thousands per second.