Skip to main content

Lambda Function with Scheduled Events

 Scheduled events are suppose to happen at regular intervals based on a rule set. Scheduled events are used to execute Lambda function after an interval which is defined in cloudwatch services. They are best used for working on cron jobs along with AWS Lambda. This chapter will explain with simple example how to send mail after every 5 minutes using scheduled events and AWS Lambda.

Requisites

The requirements for using Lambda function with Scheduled events are as follows −

  • Verify email id using AWS SES
  • Create Role to use AWS SES, Cloudwatch and AWS Lambda
  • Create Lambda Function to send email
  • Add rule for scheduled events from AWS CloudWatch
Example

The example that we are going to consider will add CloudWatch event to the AWS Lambda function. Cloudwatch will trigger AWS Lambda based on the time pattern attached to it. For Example, in the example below we have used 5 minutes as the trigger. It means for every 5 minutes, AWS Lambda will be triggered and AWS Lambda will send mail whenever triggered.

The basic block diagram for the same is shown below −

Basic Block Diagram
Verify Email ID using AWS SES

Log in to AWS and go to AWS SES service as shown below −

Customer Engagement

Now, click Simple Email Service as shown −

Simple Email

Click Email Addresses on left side as shown −

Email Address

It displays a button Verify a New Email Address. Click it.

Verify Email Address

Enter Email Address you want to verify. Click Verify This Email Address button. You will receive mail from AWS on that email id with email subject: Amazon Web Services – Email Address Verification Request in region US East (N. Virginia)

Click the link given in the mail to verify email address. Once verified, it will display the email id as follows −

Display Email
Create Role to use AWS SES, Cloudwatch and AWS Lambda

You can also create a role which gives permission to use the services. For this, go to IAM and select Role. Add the required policies and create the role. Observe that the role created here is events with lambda.

Event With Lambda
Create Lambda Function to Send Email

You will have to follow the steps to create Lambda function using runtime as nodejs.

Lambda Event Emails

Now, add trigger to Lambda as shown −

Add Triggers Lambda

Add details to CloudWatch Events Trigger as shown below −

Cloudwatch Events

Note that the event will be triggered after every 5 minutes as per the rule trigger created.

The Lambda code for sending an email is given below −

var aws = require('aws-sdk');
var ses = new aws.SES({
region
: 'us-east-1'
});
exports
.handler = function(event, context, callback) {
var eParams = {
Destination: {
ToAddresses: ["xxxxxxxt12@gmail.com"]
},
Message: {
Body: {
Text: {
Data: "this mail comes from aws lambda event scheduling"
}
},
Subject: {
Data: "Event scheduling from aws lambda"
}
},
Source: "coxxxxxx@gmail.com"
};
console
.log('===SENDING EMAIL===');
var email = ses.sendEmail(eParams, function(err, data) {
if (err) console.log(err);
else {
console
.log("===EMAIL SENT===");
console
.log("EMAIL CODE END");
console
.log('EMAIL: ', email);
context
.succeed(event);
callback
(null, "email is send");
}
});
};

Now, we need the AWS SES service. You can add this using the code shown as follows −

var aws = require('aws-sdk');
var ses = new aws.SES({
region: 'us-east-1'
});

To send mail from nodejs, we have created eParams object which has details like the example mail, to mail id and the body with message as follows −

var eParams = {
Destination: {
ToAddresses: ["xxxxxxxx12@gmail.com"]
},
Message: {
Body: {
Text: {
Data: "this mail comes from aws lambda event scheduling"
}
},
Subject: {
Data: "Event scheduling from aws lambda"
}
},
Source: "coxxxxxx@gmail.com"
};

The Lambda code to send email is as follows −

var email = ses.sendEmail(eParams, function(err, data) {
if (err) console.log(err);
else {
console.log("===EMAIL SENT===");
console.log("EMAIL CODE END");
console.log('EMAIL: ', email);
context.succeed(event);
callback(null, "email is send");
}
});

Now, let us save this Lambda function and check the email id for mails. The screenshot shown below shows that the mail is sent from AWS Lambda after every 5 minutes.

Event Scheduling

Comments

Popular posts from this blog

C++ How to use Date and Time

The C++ standard library does not provide a proper date type. C++ inherits the structs and functions for date and time manipulation from C. To access date and time related functions and structures, you would need to include <ctime> header file in your C++ program. There are four time-related types: clock_t, time_t, size_t , and tm . The types clock_t, size_t and time_t are capable of representing the system time and date as some sort of integer. The structure type tm holds the date and time in the form of a C structure having the following elements: struct tm { int tm_sec ; // seconds of minutes from 0 to 61 int tm_min ; // minutes of hour from 0 to 59 int tm_hour ; // hours of day from 0 to 24 int tm_mday ; // day of month from 1 to 31 int tm_mon ; // month of year from 0 to 11 int tm_year ; // year since 1900 int tm_wday ; // days since sunday int tm_yday ; // days since January 1st int tm_isdst ; // hours of daylight savin...

PHP Error and Exception Handling

Error handling is the process of catching errors raised by your program and then taking appropriate action. If you would handle errors properly then it may lead to many unforeseen consequences. Its very simple in PHP to handle an errors. Using die() function: While wirting your PHP program you should check all possible error condition before going ahead and take appropriate action when required. Try following example without having /tmp/test.xt file and with this file. <?php if(!file_exists("/tmp/test.txt")) { die("File not found"); } else { $file=fopen("/tmp/test.txt","r"); print "Opend file sucessfully"; } // Test of the code here. ?> This way you can write an efficient code. Using abive technique you can stop your program whenever it errors out and display more meaningful and user friendly meassage. Defining Custom Error Handling Function: You can write your own function to handling any error. PHP provides y...

PERL Some good framework

1. Catalyst is the most popular agile Perl MVC web framework that encourages rapid development and clean design without getting in your way. Catalyst | Perl MVC web application framework 2. Mojolicious is a next generation web framework for the Perl programming language. Back in the early days of the web, many people learned Perl because of a wonderful Perl   ... Mojolicious - Perl real-time web framework 3. Documents for Perl  The Perl Archive Network, the gateway to all things Perl. The canonical location for Perl code and modules. The Comprehensive Perl Archive Network - www. cpan .org