Evaluate Weigh the pros and cons of technologies, products and projects you are considering.

Dive into AWS Lambda example code for S3 alerts

The functionality of AWS Lambda continues to grow as developers customize the service. Learn how to configure the service to send text messages for S3 changes.

Writing a Lambda function on AWS is easy, especially given the extensive blueprints available and the wide choice...

of supported languages. Lambda functions are fully integrated into the AWS ecosystem, allowing developers to create added value, such as monitoring AWS cloud services with a dozen or more lines of code. One such task that adds value is to have a Lambda function send a developer a text message to alert them when something happens.

Once the development team has configured a Lambda function on AWS, it can begin to customize it. And while there is a template to trigger Lambda when an Amazon Simple Notification Service (SNS) message arrives, there isn't one to actually send an SNS. Doing a quick search of StackOverFlow provides the necessary code (Figure 1). In this AWS Lambda example, we will set a function to send a text message for Amazon Simple Storage Service (S3) changes.

Code for the AWS Lambda example.
Figure 1: Code for the AWS Lambda example.

The first step in this AWS Lambda example is to include the aws-sdk -- line 3 of the code shown in Figure 1 -- and then create objects for S3 and SNS, so a developer can make a call against those services. Because we're operating within the Lambda system and have established an Amazon Machine Image role for the function, there's no need to authenticate within the function. This can lead to simpler code that strictly focuses on the actual logic you want to execute

Before the Lambda function can emit an SNS message, you need an SNS topic and a subscription to that topic. To set this up, go to the SNS console page and select Create Topic. Give the topic a name and a display name -- for simplicity, I use the same string for both. This creates a topic you can send requests to, but nothing will happen until you configure a subscription to that topic.

A subscription is an endpoint to send the notification to -- Web address, email, phone number, another lambda or an SQS endpoint. In this case, choose SNS and supply the cell phone number as the endpoint. Next, select Confirm Subscription to send a test message to the specified endpoint. You can then continue with the Lambda function.

The body of this AWS Lambda example function -- lines 12 to 25 -- is actually, itself a function. Many languages now support the creation of inline functions -- anonymous functions in Java parlance. In this AWS Lambda example, we call the publish function from SNS, which passes a JSON structure holding the SNS message and the topic's Amazon Resource Name -- in this case, "lambdatop."

The other parameter to the function is a callback that receives an error object and a data object. Because this is a callback, the entire method is asynchronous, which means we must instruct the Lambda system when the function is complete.

The call to sns.publish returns immediately; if you put the call to context.done() after the sns.publish call, line 26, then the Lambda function would terminate before the SNS publish occurred.

Keeping the call to context.done within the body of the function callback forces it to run until the publish completes or fails. However, extending this Lambda runtime also increases costs; Lambda execution is charged by the 100 milliseconds of execution.

Next, upload a file to S3 via the console. Within a second or two, you should receive a text message alert. If you upload multiple files you'll get multiple alerts. To take this AWS Lambda example a step further, add some logic to send different messages based on the type of file you upload or to send a message if the file meets a particular criteria (Figure 2).

 Text messages sent by the AWS Lambda function are displayed.
Figure 2: Text messages sent by the AWS Lambda function are displayed.

Next Steps

AWS customers are grateful for Lambda

Configure Amazon Echo with Lambda

Serverless apps benefit from AWS authentication

This was last published in January 2016

PRO+

Content

Find more PRO+ content and other member only offers, here.

Essential Guide

AWS Lambda architecture brings serverless to enterprise cloud

Join the conversation

2 comments

Send me notifications when other members comment.

By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Please create a username to comment.

How does your IT team monitor Lambda functions?
Cancel
An small mistake here. we establish an IAM role for Lambda function, not an AMI.
Cancel

-ADS BY GOOGLE

SearchCloudApplications

TheServerSide

SearchSoftwareQuality

SearchCloudComputing

Close