Class: AWSCDK::CloudWatch::Alarm

Inherits:
AlarmBase
  • Object
show all
Defined in:
cloud_watch/alarm.rb

Overview

An alarm on a CloudWatch metric.

Direct Known Subclasses

AnomalyDetectionAlarm

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(scope, id, props) ⇒ Alarm

Returns a new instance of Alarm.

Parameters:



11
12
13
14
15
16
17
# File 'cloud_watch/alarm.rb', line 11

def initialize(scope, id, props)
  props = props.is_a?(Hash) ? ::AWSCDK::CloudWatch::AlarmProps.new(**props.transform_keys(&:to_sym)) : props
  Jsii::Type.check_type(scope, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJjb25zdHJ1Y3RzLkNvbnN0cnVjdCJ9")), "scope")
  Jsii::Type.check_type(id, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "id")
  Jsii::Type.check_type(props, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfY2xvdWR3YXRjaC5BbGFybVByb3BzIn0=")), "props")
  Jsii::Object.instance_method(:initialize).bind(self).call(scope, id, props)
end

Class Method Details

.ANOMALY_DETECTION_NO_THRESHOLDNumeric

Conventional value for the threshold property when creating anomaly detection alarms.

Anomaly detection alarms don't have numbered threshold. Instead, they have a dynamically calculated threshold based on the metric math expression that contains a metric expression.

The threshold property is required, but the value is ignored. This constant has the value 0, and has a symbolic name to indicate why the threshold is 0. You can use new AnomalyDetectionAlarm() to avoid having to pass the threshold property at all.

Returns:

  • (Numeric)


178
179
180
# File 'cloud_watch/alarm.rb', line 178

def self.ANOMALY_DETECTION_NO_THRESHOLD()
  Jsii::Kernel.instance.get_static("aws-cdk-lib.aws_cloudwatch.Alarm", "ANOMALY_DETECTION_NO_THRESHOLD")
end

.from_alarm_arn(scope, id, alarm_arn) ⇒ AWSCDK::CloudWatch::IAlarm

Import an existing CloudWatch alarm provided an ARN.

Parameters:

  • scope (Constructs::Construct)

    The parent creating construct (usually this).

  • id (String)

    The construct's name.

  • alarm_arn (String)

    Alarm ARN (i.e. arn:aws:cloudwatch:::alarm:Foo).

Returns:



53
54
55
56
57
58
# File 'cloud_watch/alarm.rb', line 53

def self.from_alarm_arn(scope, id, alarm_arn)
  Jsii::Type.check_type(scope, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJjb25zdHJ1Y3RzLkNvbnN0cnVjdCJ9")), "scope")
  Jsii::Type.check_type(id, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "id")
  Jsii::Type.check_type(alarm_arn, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "alarmArn")
  Jsii::Kernel.instance.call_static("aws-cdk-lib.aws_cloudwatch.Alarm", "fromAlarmArn", [scope, id, alarm_arn])
end

.from_alarm_name(scope, id, alarm_name) ⇒ AWSCDK::CloudWatch::IAlarm

Import an existing CloudWatch alarm provided an Name.

Parameters:

  • scope (Constructs::Construct)

    The parent creating construct (usually this).

  • id (String)

    The construct's name.

  • alarm_name (String)

    Alarm Name.

Returns:



66
67
68
69
70
71
# File 'cloud_watch/alarm.rb', line 66

def self.from_alarm_name(scope, id, alarm_name)
  Jsii::Type.check_type(scope, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJjb25zdHJ1Y3RzLkNvbnN0cnVjdCJ9")), "scope")
  Jsii::Type.check_type(id, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "id")
  Jsii::Type.check_type(alarm_name, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "alarmName")
  Jsii::Kernel.instance.call_static("aws-cdk-lib.aws_cloudwatch.Alarm", "fromAlarmName", [scope, id, alarm_name])
end

.jsii_overridable_methodsObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'cloud_watch/alarm.rb', line 19

def self.jsii_overridable_methods
  {
    :node => { kind: :property, name: "node", is_optional: false },
    :env => { kind: :property, name: "env", is_optional: false },
    :physical_name => { kind: :property, name: "physicalName", is_optional: false },
    :stack => { kind: :property, name: "stack", is_optional: false },
    :alarm_arn => { kind: :property, name: "alarmArn", is_optional: false },
    :alarm_name => { kind: :property, name: "alarmName", is_optional: false },
    :alarm_ref => { kind: :property, name: "alarmRef", is_optional: false },
    :alarm_action_arns => { kind: :property, name: "alarmActionArns", is_optional: true },
    :insufficient_data_action_arns => { kind: :property, name: "insufficientDataActionArns", is_optional: true },
    :ok_action_arns => { kind: :property, name: "okActionArns", is_optional: true },
    :metric => { kind: :property, name: "metric", is_optional: false },
    :to_string => { kind: :method, name: "toString", is_optional: false },
    :with => { kind: :method, name: "with", is_optional: false },
    :apply_cross_stack_reference_strength => { kind: :method, name: "applyCrossStackReferenceStrength", is_optional: false },
    :apply_removal_policy => { kind: :method, name: "applyRemovalPolicy", is_optional: false },
    :generate_physical_name => { kind: :method, name: "generatePhysicalName", is_optional: false },
    :get_resource_arn_attribute => { kind: :method, name: "getResourceArnAttribute", is_optional: false },
    :get_resource_name_attribute => { kind: :method, name: "getResourceNameAttribute", is_optional: false },
    :add_alarm_action => { kind: :method, name: "addAlarmAction", is_optional: false },
    :add_insufficient_data_action => { kind: :method, name: "addInsufficientDataAction", is_optional: false },
    :add_ok_action => { kind: :method, name: "addOkAction", is_optional: false },
    :render_alarm_rule => { kind: :method, name: "renderAlarmRule", is_optional: false },
    :to_annotation => { kind: :method, name: "toAnnotation", is_optional: false },
  }
end

.PROPERTY_INJECTION_IDString

Uniquely identifies this class.

Returns:

  • (String)


185
186
187
# File 'cloud_watch/alarm.rb', line 185

def self.PROPERTY_INJECTION_ID()
  Jsii::Kernel.instance.get_static("aws-cdk-lib.aws_cloudwatch.Alarm", "PROPERTY_INJECTION_ID")
end

Instance Method Details

#add_alarm_action(*actions) ⇒ void

This method returns an undefined value.

Trigger this action if the alarm fires.

Typically SnsAction or AutoScalingAction.

Parameters:



292
293
294
295
296
297
# File 'cloud_watch/alarm.rb', line 292

def add_alarm_action(*actions)
  actions.each_with_index do |item, index|
    Jsii::Type.check_type(item, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfY2xvdWR3YXRjaC5JQWxhcm1BY3Rpb24ifQ==")), "actions[#{index}]")
  end
  jsii_call_method("addAlarmAction", [*actions])
end

#add_insufficient_data_action(*actions) ⇒ void

This method returns an undefined value.

Trigger this action if there is insufficient data to evaluate the alarm.

Typically SnsAction or AutoScalingAction.

Parameters:



305
306
307
308
309
310
# File 'cloud_watch/alarm.rb', line 305

def add_insufficient_data_action(*actions)
  actions.each_with_index do |item, index|
    Jsii::Type.check_type(item, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfY2xvdWR3YXRjaC5JQWxhcm1BY3Rpb24ifQ==")), "actions[#{index}]")
  end
  jsii_call_method("addInsufficientDataAction", [*actions])
end

#add_ok_action(*actions) ⇒ void

This method returns an undefined value.

Trigger this action if the alarm returns from breaching state into ok state.

Typically SnsAction or AutoScalingAction.

Parameters:



318
319
320
321
322
323
# File 'cloud_watch/alarm.rb', line 318

def add_ok_action(*actions)
  actions.each_with_index do |item, index|
    Jsii::Type.check_type(item, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfY2xvdWR3YXRjaC5JQWxhcm1BY3Rpb24ifQ==")), "actions[#{index}]")
  end
  jsii_call_method("addOkAction", [*actions])
end

#alarm_action_arnsArray<String>?

Returns:

  • (Array<String>, nil)


138
139
140
# File 'cloud_watch/alarm.rb', line 138

def alarm_action_arns()
  jsii_get_property("alarmActionArns")
end

#alarm_action_arns=(value) ⇒ Object



142
143
144
145
# File 'cloud_watch/alarm.rb', line 142

def alarm_action_arns=(value)
  Jsii::Type.check_type(value, JSON.parse(Base64.strict_decode64("eyJjb2xsZWN0aW9uIjp7ImVsZW1lbnR0eXBlIjp7InByaW1pdGl2ZSI6InN0cmluZyJ9LCJraW5kIjoiYXJyYXkifX0=")), "alarmActionArns") unless value.nil?
  jsii_set_property("alarmActionArns", value)
end

#alarm_arnString

ARN of this alarm.

Returns:

  • (String)


119
120
121
# File 'cloud_watch/alarm.rb', line 119

def alarm_arn()
  jsii_get_property("alarmArn")
end

#alarm_nameString

Name of this alarm.

Returns:

  • (String)


126
127
128
# File 'cloud_watch/alarm.rb', line 126

def alarm_name()
  jsii_get_property("alarmName")
end

#alarm_refAWSCDK::Interfaces::AWSCloudwatch::AlarmReference

A reference to a Alarm resource.



133
134
135
# File 'cloud_watch/alarm.rb', line 133

def alarm_ref()
  jsii_get_property("alarmRef")
end

#apply_cross_stack_reference_strength(strength) ⇒ void

This method returns an undefined value.

Override the cross-stack reference strength for this resource.

When set, any cross-stack reference to this resource will use the specified mechanism instead of the global default determined by the @aws-cdk/core:defaultCrossStackReferences context key. This is useful for selectively weakening specific references to avoid the "deadly embrace" problem without changing the app-wide default.

Parameters:



229
230
231
232
# File 'cloud_watch/alarm.rb', line 229

def apply_cross_stack_reference_strength(strength)
  Jsii::Type.check_type(strength, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5SZWZlcmVuY2VTdHJlbmd0aCJ9")), "strength")
  jsii_call_method("applyCrossStackReferenceStrength", [strength])
end

#apply_removal_policy(policy) ⇒ void

This method returns an undefined value.

Apply the given removal policy to this resource.

The Removal Policy controls what happens to this resource when it stops being managed by CloudFormation, either because you've removed it from the CDK application or because you've made a change that requires the resource to be replaced.

The resource can be deleted (RemovalPolicy.DESTROY), or left in your AWS account for data recovery and cleanup later (RemovalPolicy.RETAIN).

Parameters:



246
247
248
249
# File 'cloud_watch/alarm.rb', line 246

def apply_removal_policy(policy)
  Jsii::Type.check_type(policy, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5SZW1vdmFsUG9saWN5In0=")), "policy")
  jsii_call_method("applyRemovalPolicy", [policy])
end

#envAWSCDK::Interfaces::ResourceEnvironment

The environment this resource belongs to.

For resources that are created and managed in a Stack (those created by creating new class instances like new Role(), new Bucket(), etc.), this is always the same as the environment of the stack they belong to.

For referenced resources (those obtained from referencing methods like Role.fromRoleArn(), Bucket.fromBucketName(), etc.), they might be different than the stack they were imported into.



91
92
93
# File 'cloud_watch/alarm.rb', line 91

def env()
  jsii_get_property("env")
end

#generate_physical_nameString

Returns:

  • (String)


252
253
254
# File 'cloud_watch/alarm.rb', line 252

def generate_physical_name()
  jsii_call_method("generatePhysicalName", [])
end

#get_resource_arn_attribute(arn_attr, arn_components) ⇒ String

Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. bucket.bucketArn).

Normally, this token will resolve to arn_attr, but if the resource is referenced across environments, arn_components will be used to synthesize a concrete ARN with the resource's physical name. Make sure to reference this.physicalName in arn_components.

Parameters:

  • arn_attr (String)

    The CFN attribute which resolves to the ARN of the resource.

  • arn_components (AWSCDK::ARNComponents)

    The format of the ARN of this resource.

Returns:

  • (String)


266
267
268
269
270
271
# File 'cloud_watch/alarm.rb', line 266

def get_resource_arn_attribute(arn_attr, arn_components)
  Jsii::Type.check_type(arn_attr, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "arnAttr")
  arn_components = arn_components.is_a?(Hash) ? ::AWSCDK::ARNComponents.new(**arn_components.transform_keys(&:to_sym)) : arn_components
  Jsii::Type.check_type(arn_components, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5Bcm5Db21wb25lbnRzIn0=")), "arnComponents")
  jsii_call_method("getResourceArnAttribute", [arn_attr, arn_components])
end

#get_resource_name_attribute(name_attr) ⇒ String

Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. bucket.bucketName).

Normally, this token will resolve to name_attr, but if the resource is referenced across environments, it will be resolved to this.physicalName, which will be a concrete name.

Parameters:

  • name_attr (String)

    The CFN attribute which resolves to the resource's name.

Returns:

  • (String)


281
282
283
284
# File 'cloud_watch/alarm.rb', line 281

def get_resource_name_attribute(name_attr)
  Jsii::Type.check_type(name_attr, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "nameAttr")
  jsii_call_method("getResourceNameAttribute", [name_attr])
end

#insufficient_data_action_arnsArray<String>?

Returns:

  • (Array<String>, nil)


148
149
150
# File 'cloud_watch/alarm.rb', line 148

def insufficient_data_action_arns()
  jsii_get_property("insufficientDataActionArns")
end

#insufficient_data_action_arns=(value) ⇒ Object



152
153
154
155
# File 'cloud_watch/alarm.rb', line 152

def insufficient_data_action_arns=(value)
  Jsii::Type.check_type(value, JSON.parse(Base64.strict_decode64("eyJjb2xsZWN0aW9uIjp7ImVsZW1lbnR0eXBlIjp7InByaW1pdGl2ZSI6InN0cmluZyJ9LCJraW5kIjoiYXJyYXkifX0=")), "insufficientDataActionArns") unless value.nil?
  jsii_set_property("insufficientDataActionArns", value)
end

#metricAWSCDK::CloudWatch::IMetric

The metric object this alarm was based on.



192
193
194
# File 'cloud_watch/alarm.rb', line 192

def metric()
  jsii_get_property("metric")
end

#nodeConstructs::Node

The tree node.

Returns:

  • (Constructs::Node)


76
77
78
# File 'cloud_watch/alarm.rb', line 76

def node()
  jsii_get_property("node")
end

#ok_action_arnsArray<String>?

Returns:

  • (Array<String>, nil)


158
159
160
# File 'cloud_watch/alarm.rb', line 158

def ok_action_arns()
  jsii_get_property("okActionArns")
end

#ok_action_arns=(value) ⇒ Object



162
163
164
165
# File 'cloud_watch/alarm.rb', line 162

def ok_action_arns=(value)
  Jsii::Type.check_type(value, JSON.parse(Base64.strict_decode64("eyJjb2xsZWN0aW9uIjp7ImVsZW1lbnR0eXBlIjp7InByaW1pdGl2ZSI6InN0cmluZyJ9LCJraW5kIjoiYXJyYXkifX0=")), "okActionArns") unless value.nil?
  jsii_set_property("okActionArns", value)
end

#physical_nameString

Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.

This value will resolve to one of the following:

  • a concrete value (e.g. "my-awesome-bucket")
  • undefined, when a name should be generated by CloudFormation
  • a concrete name generated automatically during synthesis, in cross-environment scenarios.

Returns:

  • (String)


105
106
107
# File 'cloud_watch/alarm.rb', line 105

def physical_name()
  jsii_get_property("physicalName")
end

#render_alarm_ruleString

AlarmRule indicating ALARM state for Alarm.

Returns:

  • (String)


328
329
330
# File 'cloud_watch/alarm.rb', line 328

def render_alarm_rule()
  jsii_call_method("renderAlarmRule", [])
end

#stackAWSCDK::Stack

The stack in which this resource is defined.

Returns:



112
113
114
# File 'cloud_watch/alarm.rb', line 112

def stack()
  jsii_get_property("stack")
end

#to_annotationAWSCDK::CloudWatch::HorizontalAnnotation

Turn this alarm into a horizontal annotation.

This is useful if you want to represent an Alarm in a non-AlarmWidget. An AlarmWidget can directly show an alarm, but it can only show a single alarm and no other metrics. Instead, you can convert the alarm to a HorizontalAnnotation and add it as an annotation to another graph.

This might be useful if:

  • You want to show multiple alarms inside a single graph, for example if you have both a "small margin/long period" alarm as well as a "large margin/short period" alarm.
  • You want to show an Alarm line in a graph with multiple metrics in it.


347
348
349
# File 'cloud_watch/alarm.rb', line 347

def to_annotation()
  jsii_call_method("toAnnotation", [])
end

#to_stringString

Returns a string representation of this construct.

Returns:

  • (String)


199
200
201
# File 'cloud_watch/alarm.rb', line 199

def to_string()
  jsii_call_method("toString", [])
end

#with(*mixins) ⇒ Constructs::IConstruct

Applies one or more mixins to this construct.

Mixins are applied in order. The list of constructs is captured at the start of the call, so constructs added by a mixin will not be visited. Use multiple with() calls if subsequent mixins should apply to added constructs.

Parameters:

  • mixins (Array<Constructs::IMixin>)

Returns:

  • (Constructs::IConstruct)


212
213
214
215
216
217
# File 'cloud_watch/alarm.rb', line 212

def with(*mixins)
  mixins.each_with_index do |item, index|
    Jsii::Type.check_type(item, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJjb25zdHJ1Y3RzLklNaXhpbiJ9")), "mixins[#{index}]")
  end
  jsii_call_method("with", [*mixins])
end