For Lambda:
MyNewAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmName: "AlarmNameGoesHere"
AlarmDescription: "Alarm if lambda errors out too many times"
Namespace: "AWS/Lambda"
MetricName: "Errors"
Dimensions:
- Name: "FunctionName"
Value: "NameOfYourLambdaFunction"
Statistic: "Sum"
ComparisonOperator: "GreaterThanThreshold"
Threshold: 0
EvaluationPeriods: 5
Period: 60
TreatMissingData: "breaching"
LambdaCriticalErrorAlarm:
Type: 'AWS::CloudWatch::Alarm'
Properties:
ActionsEnabled: true
AlarmDescription: !Sub 'Lambda Critical Error Alarm for ${FunctionName}'
AlarmName: !Sub '${FunctionName}-Lambda-Critical-Error-Alarm'
AlarmActions:
- !Sub 'arn:aws:sns:${AWS::Region}:${AWS::AccountId}:${CriticalSnsTopicName}'
ComparisonOperator: GreaterThanOrEqualToThreshold
EvaluationPeriods: 1
Threshold: 0.25
DatapointsToAlarm: 1
Metrics:
- Id: !Sub "errorPercentage_${FunctionName}"
Expression: !Sub "errors_${FunctionName} / requests_${FunctionName} * 100"
Label: !Sub "${FunctionName}-ErrorPercentage"
ReturnData: true
- Id: !Sub "errors_${FunctionName}"
MetricStat:
Metric:
Namespace: "AWS/Lambda"
MetricName: "Errors"
Dimensions:
- Name: FunctionName
Value: !Sub '${FunctionName}'
- Name: Resource
Value: !Sub '${FunctionName}'
Period: 300
Stat: Sum
ReturnData: false
- Id: !Sub "requests_${FunctionName}"
MetricStat:
Metric:
Namespace: "AWS/Lambda"
MetricName: "Invocations"
Dimensions:
- Name: FunctionName
Value: !Sub '${FunctionName}'
Period: 300
Stat: Sum
ReturnData: false
TreatMissingData: missing
Resources:
testAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmName: test-alarm
AlarmDescription: "I'm taking too long!"
ComparisonOperator: GreaterThanThreshold
EvaluationPeriods: 1
DatapointsToAlarm: 1
MetricName: Duration
Namespace: AWS/Lambda
Period: 60
Statistic: Maximum
Threshold: 0
Dimensions:
- Name: 'FunctionName'
Value: 'hello world'
TreatMissingData: notBreaching