What is AWS Lambda?
AWS Lambda is a compute service that lets you run code without provisioning or managing servers. Lambda runs your code on a high-availability compute infrastructure and performs all of the administration of the compute resources, including server and operating system maintenance, capacity provisioning and automatic scaling, and logging. With Lambda, you can run code for virtually any type of application or backend service. All you need to do is supply your code in one of the languages that Lambda supports.
You organize your code into Lambda functions. Lambda runs your function only when needed and scales automatically,
from a few requests per day to thousands per second. You pay only for the compute time that you consume—there is no charge when your code is not running. For more information,
see AWS Lambda Pricing
Lambda is a highly available service. For more information, see the AWS Lambda Service Level Agreement
In the AWS Lambda Developer Guide, we assume that you have experience with coding, compiling, and deploying programs using one of the languages that Lambda supports.
When to use Lambda
Lambda is an ideal compute service for many application scenarios, as long as you can run your application code using the Lambda standard runtime environment and within the resources that Lambda provides. For example, you can use Lambda for:
-
File processing: Use Amazon Simple Storage Service (Amazon S3) to trigger Lambda data processing in real time after an upload.
-
Stream processing: Use Lambda and Amazon Kinesis to process real-time streaming data for application activity tracking, transaction order processing, clickstream analysis, data cleansing, log filtering, indexing, social media analysis, Internet of Things (IoT) device data telemetry, and metering.
-
Web applications: Combine Lambda with other AWS services to build powerful web applications that automatically scale up and down and run in a highly available configuration across multiple data centers.
-
IoT backends: Build serverless backends using Lambda to handle web, mobile, IoT, and third-party API requests.
-
Mobile backends: Build backends using Lambda and Amazon API Gateway to authenticate and process API requests. Use AWS Amplify to easily integrate your backend with your iOS, Android, Web, and React Native frontends.
When using Lambda, you are responsible only for your code. Lambda manages the compute fleet that offers a balance of memory, CPU, network, and other resources to run your code. Because Lambda manages these resources, you cannot log in to compute instances or customize the operating system on provided runtimes. Lambda performs operational and administrative activities on your behalf, including managing capacity, monitoring, and logging your Lambda functions.
If you need to manage your own compute resources, AWS has other compute services to meet your needs. For example:
-
Amazon Elastic Compute Cloud (Amazon EC2) offers a wide range of EC2 instance types to choose from. It lets you customize operating systems, network and security settings, and the entire software stack. You are responsible for provisioning capacity, monitoring fleet health and performance, and using Availability Zones for fault tolerance.
-
AWS Elastic Beanstalk enables you to deploy and scale applications onto Amazon EC2. You retain ownership and full control over the underlying EC2 instances.
Lambda features
The following key features help you develop Lambda applications that are scalable, secure, and easily extensible:
- Concurrency and scaling controls
-
Concurrency and scaling controls such as concurrency limits and provisioned concurrency give you fine-grained control over the scaling and responsiveness of your production applications.
- Functions defined as container images
-
Use your preferred container image tooling, workflows, and dependencies to build, test, and deploy your Lambda functions.
- Code signing
-
Code signing for Lambda provides trust and integrity controls that let you verify that only unaltered code that approved developers have published is deployed in your Lambda functions.
- Lambda extensions
-
You can use Lambda extensions to augment your Lambda functions. For example, use extensions to more easily integrate Lambda with your favorite tools for monitoring, observability, security, and governance.
- Function blueprints
-
A function blueprint provides sample code that shows how to use Lambda with other AWS services or third-party applications. Blueprints include sample code and function configuration presets for Node.js and Python runtimes.
- Database access
-
A database proxy manages a pool of database connections and relays queries from a function. This enables a function to reach high concurrency levels without exhausting database connections.
- File systems access
-
You can configure a function to mount an Amazon Elastic File System (Amazon EFS) file system to a local directory. With Amazon EFS, your function code can access and modify shared resources safely and at high concurrency.
Getting started with Lambda
To work effectively with Lambda, you need coding experience and expertise in the following domains:
-
Linux OS and commands, as well as concepts such as processes, threads, and file permissions.
-
Familiarity with security services and concepts: AWS Identity and Access Management (IAM) and access control principles, and AWS Key Management Service (AWS KMS) and public key infrastructure.
-
Cloud concepts and IP networking concepts (for public and private networks).
-
Distributed computing concepts such as queues, messaging, notifications, and concurrency.
If you are a first-time user of Lambda, we recommend that you read the Lambda product overview