DEV Community

Cover image for Building and Triggering an AWS Lambda Function for Beginners!
Arankarl
Arankarl

Posted on

Building and Triggering an AWS Lambda Function for Beginners!

Image description

What is AWS Lambda?

Lambda allows us to run our code on a high-availability compute infrastructure without provisioning or managing servers. It is a serverless compute service that is highly scalable, cost-efficient and ideal for event-driven architecture

Asynchronous Function

Lambda can be used in many things

  1. Data Processing
  • Process real-time streaming data from services like Amazon Kinesis or Amazon SQS.
  • Transform and store data in databases or data lakes.

2 Web Applications

  • Build and deploy RESTful APIs with AWS API Gateway.
  • Serve as backend logic for lightweight web apps.

3 Event-Driven Tasks

  • Trigger tasks such as image resizing, sending notifications, or cleaning logs when files are uploaded to S3

In this guide, we'll explore AWS Lambda, create a basic function, test it, and finally implement a useful notification simulation.

Now we're going to test the AWS Lambda and to do this we need to set up a few things. Follow these steps:

Step 1: Create a Lambda Function

  1. Log in to the AWS Management Console
    Go to aws.amazon.com to sign up if you don't have an account

  2. Navigate to the AWS Lambda service.

Note: You can easily navigate it by searching it on the search bar [Alt + S]
3 Click 'Create a Function'

Use cases

4 In the Basic Information pane let's name it 'myLambdaFunction'
Note: You can name it the way you want

5 For Runtime, choose either Node.js 22.x or Python 3.13.
In this case I'll be using Node.js

After setting up that should look like this
Image description

6 Click 'Create Function'
After doing so it should look like this

Image description

Step 2: Create a simple testing code

This snippet came from the documentation as a way to test waters but later, I will show some application

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;
  }
};
Enter fullscreen mode Exit fullscreen mode
  • Deploy the code by clicking Deploy

Image description

  • The function is named handler with two arguments event and context
  • An event in Lambda is JSON (JavaScript Object Notation) that bears our data
  • In this case we'll create an event in the console by entering a JSON formatted document with two key-value pairs. 'length' and 'width'
  • The second argument we take is context which contains information about the function invocation and execution environment. In this sample it uses the '.logGroupName' to output the name of its CloudWatch

Step 3: Create a Test Event

  1. In the Test Event section you can choose Create test event

Image description

2 After clicking that you should see this.

Image description

3 Lets name it 'myTestEvent'
4 In the event JSON section, replace the default JSON with the following:

{
  "length": 6,
  "width": 7
}
Enter fullscreen mode Exit fullscreen mode

So as you can see it's all coming together right since this is what we're chaining in the event argument

  1. Choose Save

To test this code just click the run icon

Image description

and voila you have tested your first lambda function!

Now for the last part we're going to create something useful but still faithful to this structure

Now let's change the code with this:

export const handler = async (event, context) => {

  const { email, password } = event;

  if (!email || !password) {
      return {
          statusCode: 400,
          body: JSON.stringify({ message: "Email and password are required." }),
      };
  }

  const notiMessage = `Notification sent to: ${email}`;
  console.log(notiMessage);
  console.log('CloudWatch log group: ', context.logGroupName);
  return {
      statusCode: 200,
      body: JSON.stringify({
          message: "Notification triggered successfully.",
          details: notiMessage,
      }),
  };
}

Enter fullscreen mode Exit fullscreen mode

Here's what this function does.

  • So first instead of repeatedly typing the event we declared right away all the things we're expecting to come 'email' & 'password'
  • Then create a simple if validation to check if the 'email' or 'password' has a value
  • We still use the CloudWatch to monitor the logs
  • And if all goes as planned the body would return a success message that has a binded value of static string and the the details with the binded value of the const notiMessage

Now for the test event lets just change the keys and values

{
  "email": "bastianlacap55@gmail.com",
  "password": "7hi$isAT3stSimUl5t0n"
}
Enter fullscreen mode Exit fullscreen mode

Then we run it and it should ouput something like this:

Image description

If you want to advance you can use Nodemailer and to actually send an actual email message as well as implementation of asynchronous programming. For documentations just follow the links here:

Top comments (0)