aws.cloudwatch-metric-alarm resource¶
Description¶
MetricAlarm is a CloudWatch metric alarm, modeling AWS::CloudWatch::Alarm. A single PutMetricAlarm upsert reconciles every writable property for both create and update; the alarm name is fixed at creation and is the identity, so a change to it replaces the alarm, while every other property is rewritten in place. The alarm watches either a single metric (metric-name with a namespace, statistic or extended-statistic, dimensions, period, and unit) or the result of a metric-math expression (the metric-query array); the two forms are mutually exclusive. Tags are reconciled separately by ARN.
Several rules cannot be expressed as constraints and are checked in code: alarm-name is 1-255 and alarm-description 0-1024 characters (the length function counts bytes, not characters); a namespace is 1-255 characters and cannot contain a colon; an extended-statistic and a metric-query stat must match a percentile or statistic pattern; a period is 10, 20, or 30 seconds or a multiple of 60 (a metric-query period also allows 1 and 5); and an action ARN must be an ordinary ARN or an EC2-automate ARN.
Source: internal/service/cloudwatch/metric_alarm_rsrc.go:78
Example usage:
imports: {
aws: 'github.com/cloudboss/unobin-library-aws'
}
resources: {
example: aws.cloudwatch-metric-alarm {
# Set input fields here.
}
}
Inputs¶
alarm-name
string
actions-enabled
optional(boolean)
alarm-actions
list(string)
ok-actions
list(string)
insufficient-data-actions
list(string)
alarm-description
optional(string)
comparison-operator
optional(string)
datapoints-to-alarm
optional(integer)
dimensions
map(string)
evaluate-low-sample-count-percentile
optional(string)
evaluation-periods
optional(integer)
extended-statistic
optional(string)
metric-name
optional(string)
metric-query
list(object)
list(
object({
id: string
account-id: optional(string)
expression: optional(string)
label: optional(string)
metric: optional(
object({
metric-name: optional(string)
namespace: optional(string)
dimensions: optional(map(string))
stat: optional(string)
period: optional(integer)
unit: optional(string)
})
)
period: optional(integer)
return-data: optional(boolean)
})
)
namespace
optional(string)
period
optional(integer)
statistic
optional(string)
threshold
optional(number)
threshold-metric-id
optional(string)
treat-missing-data
optional(string)
unit
optional(string)
tags
map(string)
Input Constraints¶
Field combinations
Exactly one of metric-name or metric-query.
Forbidden together: metric-query, namespace, dimensions, period, unit, statistic, and extended-statistic.
At most one of statistic or extended-statistic.
Exactly one of threshold or threshold-metric-id.
Metric name rules
comparison-operator and evaluation-periods are required when metric-name is set.
Rule logic
- When
input.metric-name != null- Require
input.comparison-operator != null
&& input.evaluation-periods != null
exactly one of statistic or extended-statistic is required when metric-name is set.
Rule logic
- When
input.metric-name != null- Require
((input.statistic != null) && (input.extended-statistic == null))
|| ((input.statistic == null) && (input.extended-statistic != null))
Metric query rules
comparison-operator and evaluation-periods are required when metric-query is set.
Rule logic
- When
input.metric-query != null
&& @core.length(input.metric-query) >= 1- Require
input.comparison-operator != null
&& input.evaluation-periods != null
At most one of metric-query[*].expression or metric-query[*].metric.
Comparison operator rules
comparison-operator must be a valid CloudWatch comparison operator.
Rule logic
- When
input.comparison-operator != null- Require
input.comparison-operator == 'GreaterThanOrEqualToThreshold'
|| input.comparison-operator == 'GreaterThanThreshold'
|| input.comparison-operator == 'LessThanThreshold'
|| input.comparison-operator == 'LessThanOrEqualToThreshold'
|| input.comparison-operator == 'LessThanLowerOrGreaterThanUpperThreshold'
|| input.comparison-operator == 'LessThanLowerThreshold'
|| input.comparison-operator == 'GreaterThanUpperThreshold'
Statistic rules
statistic must be SampleCount, Average, Sum, Minimum, or Maximum.
Rule logic
- When
input.statistic != null- Require
input.statistic == 'SampleCount'
|| input.statistic == 'Average'
|| input.statistic == 'Sum'
|| input.statistic == 'Minimum'
|| input.statistic == 'Maximum'
Unit rules
unit must be a valid CloudWatch standard unit.
Rule logic
- When
input.unit != null- Require
input.unit == 'Seconds'
|| input.unit == 'Microseconds'
|| input.unit == 'Milliseconds'
|| input.unit == 'Bytes'
|| input.unit == 'Kilobytes'
|| input.unit == 'Megabytes'
|| input.unit == 'Gigabytes'
|| input.unit == 'Terabytes'
|| input.unit == 'Bits'
|| input.unit == 'Kilobits'
|| input.unit == 'Megabits'
|| input.unit == 'Gigabits'
|| input.unit == 'Terabits'
|| input.unit == 'Percent'
|| input.unit == 'Count'
|| input.unit == 'Bytes/Second'
|| input.unit == 'Kilobytes/Second'
|| input.unit == 'Megabytes/Second'
|| input.unit == 'Gigabytes/Second'
|| input.unit == 'Terabytes/Second'
|| input.unit == 'Bits/Second'
|| input.unit == 'Kilobits/Second'
|| input.unit == 'Megabits/Second'
|| input.unit == 'Gigabits/Second'
|| input.unit == 'Terabits/Second'
|| input.unit == 'Count/Second'
|| input.unit == 'None'
Treat missing data rules
treat-missing-data must be breaching, notBreaching, ignore, or missing.
Rule logic
- When
input.treat-missing-data != null- Require
input.treat-missing-data == 'breaching'
|| input.treat-missing-data == 'notBreaching'
|| input.treat-missing-data == 'ignore'
|| input.treat-missing-data == 'missing'
Evaluate low sample count percentile rules
evaluate-low-sample-count-percentile must be evaluate or ignore.
Rule logic
- When
input.evaluate-low-sample-count-percentile != null- Require
input.evaluate-low-sample-count-percentile == 'evaluate'
|| input.evaluate-low-sample-count-percentile == 'ignore'
Datapoints to alarm rules
datapoints-to-alarm must be at least 1.
Rule logic
- When
input.datapoints-to-alarm != null- Require
input.datapoints-to-alarm == null
|| input.datapoints-to-alarm >= 1
Evaluation periods rules
evaluation-periods must be at least 1.
Rule logic
- When
input.evaluation-periods != null- Require
input.evaluation-periods == null
|| input.evaluation-periods >= 1
Ok actions rules
ok-actions allows at most 5 actions.
Rule logic
- When
input.ok-actions != null
&& @core.length(input.ok-actions) >= 1- Require
input.ok-actions == null
|| @core.length(input.ok-actions) <= 5
Insufficient data actions rules
insufficient-data-actions allows at most 5 actions.
Rule logic
- When
input.insufficient-data-actions != null
&& @core.length(input.insufficient-data-actions) >= 1- Require
input.insufficient-data-actions == null
|| @core.length(input.insufficient-data-actions) <= 5
Outputs¶
arn
string
alarm-name
string
evaluate-low-sample-count-percentile
string