Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions,
see Getting Started with Amazon Web Services in China
(PDF).
Getting started with Lambda
To get started with Lambda, use the Lambda console to create a function. In a few minutes, you can create and deploy a
function and test it in the console.
As you carry out the tutorial, you'll learn some fundamental Lambda concepts, like how to pass arguments to
your function using the Lambda event object. You'll also learn how to return log outputs from your function, and how to
view your function's invocation logs in CloudWatch Logs.
To keep things simple, you create your function using either the Python or Node.js runtime. With these interpreted languages, you can edit
function code directly in the console's built-in code editor. With compiled languages like Java and C#, you need to create a deployment package on
your local build machine and upload it to Lambda. To learn about deploying functions to Lambda using other runtimes, see the links in the
Additional resources and next steps section.
Prerequisites
If you do not have an Amazon Web Services account, use the following procedure to create one.
Amazon sends you a confirmation email after the sign-up process is
complete. At any time, you can view your current account activity and manage your account by
going to http://www.amazonaws.cn/ and choosing My
Account.
After you sign up for an Amazon Web Services account, safeguard your administrative user by turning on multi-factor authentication (MFA). For
instructions, see Enable a
virtual MFA device for an IAM user (console) in the IAM User Guide.
To give other users access to your Amazon Web Services account resources, create IAM users. To secure your IAM users, turn on MFA and only give the IAM users the permissions needed to perform their tasks.
For more information about creating and securing IAM users, see the following topics in the IAM User Guide:
Create a Lambda function with the console
In this example, your function takes a JSON object containing two integer values labeled "length"
and "width"
.
The function multiplies these values to calculate an area and returns this as a JSON string.
Your function also prints the calculated area, along with the name of its CloudWatch log group. Later in the tutorial, you’ll learn to use CloudWatch Logs
to view records of your functions’ invocation.
To create your function, you first use the console to create a basic Hello world function. In the following step, you then add your own
function code.
To create a Hello world Lambda function with the console
Open the Functions page of the Lambda console.
-
Choose Create function.
-
Select Author from scratch.
-
In the Basic information pane, for Function name enter
myLambdaFunction
.
-
For Runtime, choose either Node.js 20.x or Python 3.12
-
Leave architecture set to x86_64 and choose Create function.
Lambda creates a function that returns the message Hello from Lambda!
Lambda also creates an execution role
for your function. An execution role is an Amazon Identity and Access Management (IAM) role that grants a Lambda function
permission to access Amazon Web Services and resources. For your function, the role that Lambda creates grants basic permissions to write to CloudWatch Logs.
You now use the console's built-in code editor to replace the Hello world code that Lambda created with your own function code.
- Node.js
-
To modify the code in the console
-
Choose the Code tab.
In the console's built-in code editor, you should see the function code that Lambda
created. If you don't see the index.mjs tab in the code editor, select index.mjs in the
file explorer as shown on the following diagram.
-
Paste the following code into the index.mjs tab, replacing the code that Lambda created.
export const handler = async (event, context) => {
const length = event.length;
const width = event.width;
let area = calculateArea(length, width);
console.log(`The area is ${area}`);
console.log('CloudWatch log group: ', context.logGroupName);
let data = {
"area": area,
};
return JSON.stringify(data);
function calculateArea(length, width) {
return length * width;
}
};
-
Select Deploy to update your function's code. When Lambda has deployed the changes, the console displays
a banner letting you know that it's successfully updated your function.
Understanding your function code
Before you move to the next step, let's take a moment to look at the function code and understand some key Lambda concepts.
-
The Lambda handler:
Your Lambda function contains a Node.js function named handler
. A Lambda function in Node.js can contain more
than one Node.js function, but the handler function is always the entry point to your code. When your function is
invoked, Lambda runs this method.
When you created your Hello world function using the console, Lambda automatically set the name of the handler method for your
function to handler
. Be sure not to edit the name of this Node.js function. If you do, Lambda won’t be able to run your code
when you invoke your function.
To learn more about the Lambda handler in Node.js, see Amazon Lambda function handler in Node.js.
-
The Lambda event object:
The function handler
takes two arguments, event
and context
. An event
in Lambda is a JSON formatted document that contains data for your function to process.
If your function is invoked by another Amazon Web Service, the event object contains information about the event that caused the
invocation. For example, if an Amazon Simple Storage Service (Amazon S3) bucket invokes your function when an object is uploaded, the event will contain the
name of the Amazon S3 bucket and the object key.
In this example, you’ll create an event in the console by entering a JSON formatted document with two key-value pairs.
-
The Lambda context object:
The second argument your function takes is context
. Lambda passes the context object to your
function automatically. The context object contains information about the function invocation and execution environment.
You can use the context object to output information about your function's invocation for monitoring purposes. In this example,
your function uses the logGroupName
parameter to output the name of its CloudWatch log group.
To learn more about the Lambda context object in Node.js, see Amazon Lambda context object in Node.js.
-
Logging in Lambda:
With Node.js, you can use console methods like console.log
and console.error
to send information to your
function's log. The example code uses console.log
statements to output the calculated area and the name of the
function's CloudWatch Logs group. You can also use any logging library that writes to stdout
or stderr
.
To learn more, see Amazon Lambda function logging in Node.js. To learn about logging in other runtimes, see the 'Building with' pages
for the runtimes you're interested in.
- Python
-
To modify the code in the console
-
Choose the Code tab.
In the console's built-in code editor, you should see the function code that Lambda
created. If you don't see the lambda_function.py tab in the code editor, select lambda_function.py
in the file explorer as shown on the following diagram.
-
Paste the following code into the lambda_function.py tab, replacing the code that Lambda created.
import json
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
# Get the length and width parameters from the event object. The
# runtime converts the event object to a Python dictionary
length=event['length']
width=event['width']
area = calculate_area(length, width)
print(f"The area is {area}")
logger.info(f"CloudWatch logs group: {context.log_group_name}")
# return the calculated area as a JSON string
data = {"area": area}
return json.dumps(data)
def calculate_area(length, width):
return length*width
-
Select Deploy to update your function's code. When Lambda has deployed the changes, the console displays
a banner letting you know that it's successfully updated your function.
Understanding your function code
Before you move to the next step, let's take a moment to look at the function code and understand some key Lambda concepts.
-
The Lambda handler:
Your Lambda function contains a Python function named lambda_handler
. A Lambda function in Python can contain more
than one Python function, but the handler function is always the entry point to your code. When your function is
invoked, Lambda runs this method.
When you created your Hello world function using the console, Lambda automatically set the name of the handler method for your
function to lambda_handler
. Be sure not to edit the name of this Python function. If you do, Lambda won’t be able to run your code
when you invoke your function.
To learn more about the Lambda handler in Python, see Lambda function handler in Python.
-
The Lambda event object:
The function lambda_handler
takes two arguments, event
and context
. An event
in Lambda is a JSON formatted document that contains data for your function to process.
If your function is invoked by another Amazon Web Service, the event object contains information about the event that caused the
invocation. For example, if an Amazon Simple Storage Service (Amazon S3) bucket invokes your function when an object is uploaded, the event will contain the
name of the Amazon S3 bucket and the object key.
In this example, you’ll create an event in the console by entering a JSON formatted document with two key-value pairs.
-
The Lambda context object:
The second argument your function takes is context
. Lambda passes the context object to your
function automatically. The context object contains information about the function invocation and execution environment.
You can use the context object to output information about your function's invocation for monitoring purposes. In this example,
your function uses the log_group_name
parameter to output the name of its CloudWatch log group.
To learn more about the Lambda context object in Python, see Amazon Lambda context object in Python.
-
Logging in Lambda:
With Python, you can use either a print
statement or a Python logging library to send information to your function's
log. To illustrate the difference in what's captured, the example code uses both methods. In a production application, we recommend
that you use a logging library.
To learn more, see Amazon Lambda function logging in Python. To learn about logging in other runtimes, see the
'Building with' pages for the runtimes you're interested in.
Invoke the Lambda function using the console
To invoke your function using the Lambda console, you first create a test event to send to your function. The event is a JSON formatted
document containing two key-value pairs with the keys "length"
and "width"
.
To create the test event
-
In the Code source pane, choose Test.
-
Select Create new event.
-
For Event name enter myTestEvent
.
-
In the Event JSON panel, replace the default values by pasting in the following:
{
"length": 6,
"width": 7
}
-
Choose Save.
You now test your function and use the Lambda console and CloudWatch Logs to view records of your function’s invocation.
To test your function and view invocation records in the console
-
In the Code source pane, choose Test. When your function finishes running, you’ll see
the response and function logs displayed in the Execution results tab. You should see results similar to the
following.
- Node.js
-
Test Event Name
myTestEvent
Response
"{\"area\":42}"
Function Logs
START RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a Version: $LATEST
2023-08-31T23:39:45.313Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42
2023-08-31T23:39:45.331Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO CloudWatch log group: /aws/lambda/myLambdaFunction
END RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a
REPORT RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a Duration: 20.67 ms Billed Duration: 21 ms Memory Size: 128 MB Max Memory Used: 66 MB Init Duration: 163.87 ms
Request ID
5c012b0a-18f7-4805-b2f6-40912935034a
- Python
-
Test Event Name
myTestEvent
Response
"{\"area\": 42}"
Function Logs
START RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b Version: $LATEST
The area is 42
[INFO] 2023-08-31T23:43:26.428Z 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b CloudWatch logs group: /aws/lambda/myLambdaFunction
END RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b
REPORT RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b Duration: 1.42 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 39 MB Init Duration: 123.74 ms
Request ID
2d0b1579-46fb-4bf7-a6e1-8e08840eae5b
In this example, you invoked your code using the console's test feature. This means that you can view your function's execution
results directly in the console. When your function is invoked outside the console, you need to use CloudWatch Logs.
To view your function's invocation records in CloudWatch Logs
-
Open the Log groups page of the CloudWatch console.
-
Choose the log group for your function (/aws/lambda/myLambdaFunction
). This is the log group name that your
function printed to the console.
-
In the Log streams tab, choose the log stream for your function's invocation.
You should see output similar to the following:
- Node.js
-
INIT_START Runtime Version: nodejs:20.v13 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:e3aaabf6b92ef8755eaae2f4bfdcb7eb8c4536a5e044900570a42bdba7b869d9
START RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Version: $LATEST
2023-08-23T22:04:15.809Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42
2023-08-23T22:04:15.810Z aba6c0fc-cf99-49d7-a77d-26d805dacd20 INFO CloudWatch log group: /aws/lambda/myLambdaFunction
END RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20
REPORT RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Duration: 17.77 ms Billed Duration: 18 ms Memory Size: 128 MB Max Memory Used: 67 MB Init Duration: 178.85 ms
- Python
-
INIT_START Runtime Version: python:3.12.v16 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:ca202755c87b9ec2b58856efb7374b4f7b655a0ea3deb1d5acc9aee9e297b072
START RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e Version: $LATEST
The area is 42
[INFO] 2023-09-01T00:05:22.464Z 9315ab6b-354a-486e-884a-2fb2972b7d84 CloudWatch logs group: /aws/lambda/myLambdaFunction
END RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e
REPORT RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e Duration: 1.15 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 40 MB
Clean up
When you're finished working with the example function, delete it. You can also delete the log group that stores
the function's logs, and the execution role that the console created.
To delete a Lambda function
Open the Functions page of the Lambda console.
-
Choose a function.
-
Choose Actions, Delete.
-
In the Delete function dialog box, enter delete, and then choose Delete.
To delete the log group
-
Open the Log groups page of the CloudWatch
console.
-
Select the function's log group (/aws/lambda/my-function
).
-
Choose Actions, Delete log group(s).
-
In the Delete log group(s) dialog box, choose Delete.
To delete the execution role
-
Open the Roles page of the Amazon Identity and Access Management (IAM)
console.
-
Select the function's execution role (for example, myLambdaFunction-role-31exxmpl
).
-
Choose Delete.
-
In the Delete role dialog box, enter the role name and then choose Delete.
You can automate the creation and cleanup of functions, log groups, and roles with Amazon CloudFormation and the Amazon Command Line Interface
(Amazon CLI).
Additional resources and next steps
Now you’ve created and tested a simple Lambda function using the console, take these next steps: