DEV Community

Cover image for Using Amazon CloudWatch alarms to monitor AWS Lambda
Daniel Bayerlein for AWS Community Builders

Posted on

Using Amazon CloudWatch alarms to monitor AWS Lambda

You want to receive a notification when your AWS Lambda function does not perform as expected?

In this blog post, I'll show you how to get a notification when your Lambda function hasn't been invoked at least once within a day. You can find the complete AWS CloudFormation template at the end of the post.

Let's start

Besides your Lambda function, you need two other AWS services: Amazon CloudWatch und Amazon SNS.

SNS

Amazon Simple Notification Service is a managed service that provides message delivery from publishers to subscribers.

Since we want an email notification, we set the Protocol property to email and put the recipient email address in the Endpoint property.

Type: AWS::SNS::Topic Properties: Subscription: - Endpoint: "add valid email address" Protocol: email 
Enter fullscreen mode Exit fullscreen mode

📖 Documentation

CloudWatch

Amazon CloudWatch is a monitoring and observability service. You can also add alarms to CloudWatch - let's look at it in detail:

With the AlarmActions property you create the connection to the previously created SNS topic. The Namespace property of the metric associated with the alarm must be set to AWS/Lambda and the Dimensions to the Lambda function. Other properties allow you to specify when the alarm should be triggered.

In this example, the alarm is triggered if the Lambda function has not been invoked once within one day.

Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: Invocation alarm for my AWS Lambda AlarmActions: - !Ref InvocationAlarmSNSTopic Namespace: AWS/Lambda MetricName: Invocations Dimensions: - Name: FunctionName Value: !Ref LambdaFunction Statistic: Sum ComparisonOperator: LessThanThreshold Threshold: 1 EvaluationPeriods: 1 Period: 86400 TreatMissingData: breaching 
Enter fullscreen mode Exit fullscreen mode

📖 Documentation

CloudFormation template

Here you can find the complete AWS CloudFormation template. Update the CloudWatch Dimensions and the SNS Subscription - and you're ready to go.

AWSTemplateFormatVersion: '2010-09-09' Resources: InvocationAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: Invocation alarm for my AWS Lambda AlarmActions: - !Ref InvocationAlarmSNSTopic Namespace: AWS/Lambda MetricName: Invocations Dimensions: - Name: FunctionName Value: !Ref LambdaFunction Statistic: Sum ComparisonOperator: LessThanThreshold Threshold: 1 EvaluationPeriods: 1 Period: 86400 TreatMissingData: breaching InvocationAlarmSNSTopic: Type: AWS::SNS::Topic Properties: Subscription: - Endpoint: "add valid email address" Protocol: email 
Enter fullscreen mode Exit fullscreen mode

If you have any kind of feedback, suggestions or ideas - feel free to comment this post!

Top comments (0)