[aws-cloudwatch] Missing ThresholdMetricId

See original GitHub issue

When creating Cloudwatch Alarm that makes use of anomaly detection the following error is raised at deploy time:

ComparisonOperators for ranges require ThresholdMetricId to be set (Service: AmazonCloudWatch; Status Code: 400; Error Code: ValidationError; Request ID: xxx; Proxy: null)

Reproduction Steps

aws_cloudwatch.Alarm(
     self,
    "my_alarm",
    evaluation_periods=1,
    metric=sqs_queue.metric_number_of_messages_sent(),
    threshold=2,
    statistic="Average",
    comparison_operator=aws_cloudwatch.ComparisonOperator.LESS_THAN_LOWER_OR_GREATER_THAN_UPPER_THRESHOLD,
)

The Alarm construct works great for any of the other ComparisonOperators that do not rely on anomaly detection i.e. GreaterThanThreshold.

Environment

  • CLI Version : 1.62.0
  • Framework Version: 1.64.0
  • Node.js Version: v12.14.1
  • OS : MacOS Catalina
  • Language (Version): Python 3.7

This is 🐛 Bug Report

Issue Analytics

  • State:open
  • Created 3 years ago
  • Reactions:4
  • Comments:10 (5 by maintainers)

github_iconTop GitHub Comments

6reactions
NetaNircommented, Nov 11, 2020

In the meantime, If you really need this feature you can configure it using escape hatch:

const anomalyDetectionExp = new cloudwatch.MathExpression({
  expression: 'ANOMALY_DETECTION_BAND(m1,2)',
  usingMetrics: {
    m1: metricA,
  },
  label: 'Anomaly detection',
  period: cdk.Duration.minutes(1),
});

const alarm = anomalyDetectionExp.createAlarm(this, 'MyAlarm', {
  evaluationPeriods: 1, 
  threshold: 5, // dummy value will be removed below 
  comparisonOperator: ComparisonOperator.LESS_THAN_LOWER_OR_GREATER_THAN_UPPER_THRESHOLD,
});

const cfnAlarm = alarm.node.defaultChild as CfnAlarm;
cfnAlarm.addPropertyDeletionOverride('Threshold');
(alarm.node.defaultChild as CfnAlarm).thresholdMetricId = 'expr_1'; // The id will always be 'expr_1' if there is one expression
5reactions
olavencommented, Dec 1, 2021

👋 A status update on this would be highly appreciated!

Read more comments on GitHub >

github_iconTop Results From Across the Web

MetricAlarm - Amazon CloudWatch - AWS Documentation
Sets how this alarm is to handle missing data points. The valid values are breaching , notBreaching , ignore , and missing ....
Read more >
class CfnAlarm (construct) · AWS CDK
Sets how this alarm is to handle missing data points. Valid values are breaching , notBreaching , ignore , and missing . For...
Read more >
Using Amazon CloudWatch alarms - AWS Documentation
When an AWS/DynamoDB metric has missing data, alarms that evaluate that metric remain in their current state. How alarm state is evaluated when...
Read more >
PutMetricAlarm - Amazon CloudWatch - AWS Documentation
Alarms that evaluate metrics in the AWS/DynamoDB namespace always ignore missing data even if you choose a different option for TreatMissingData . When...
Read more >
AWS::CloudWatch::Alarm - AWS CloudFormation
The AWS::CloudWatch::Alarm type specifies an alarm and associates it with the ... Double ThresholdMetricId: String TreatMissingData: String Unit: String ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found