/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the monitoring-2010-08-01.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.CloudWatch.Model { /// /// Container for the parameters to the PutMetricAlarm operation. /// Creates or updates an alarm and associates it with the specified metric, metric math /// expression, anomaly detection model, or Metrics Insights query. For more information /// about using a Metrics Insights query for an alarm, see Create /// alarms on Metrics Insights queries. /// /// /// /// Alarms based on anomaly detection models cannot have Auto Scaling actions. /// /// /// /// When this operation creates an alarm, the alarm state is immediately set to INSUFFICIENT_DATA. /// The alarm is then evaluated and its state is set appropriately. Any actions associated /// with the new state are then executed. /// /// /// /// When you update an existing alarm, its state is left unchanged, but the update completely /// overwrites the previous configuration of the alarm. /// /// /// /// If you are an IAM user, you must have Amazon EC2 permissions for some alarm operations: /// /// /// /// The first time you create an alarm in the Amazon Web Services Management Console, /// the CLI, or by using the PutMetricAlarm API, CloudWatch creates the necessary service-linked /// role for you. The service-linked roles are called AWSServiceRoleForCloudWatchEvents /// and AWSServiceRoleForCloudWatchAlarms_ActionSSM. For more information, /// see Amazon /// Web Services service-linked role. /// /// /// /// Each PutMetricAlarm action has a maximum uncompressed payload of 120 /// KB. /// /// /// /// Cross-account alarms /// /// /// /// You can set an alarm on metrics in the current account, or in another account. To /// create a cross-account alarm that watches a metric in a different account, you must /// have completed the following pre-requisites: /// /// /// public partial class PutMetricAlarmRequest : AmazonCloudWatchRequest { private bool? _actionsEnabled; private List _alarmActions = new List(); private string _alarmDescription; private string _alarmName; private ComparisonOperator _comparisonOperator; private int? _datapointsToAlarm; private List _dimensions = new List(); private string _evaluateLowSampleCountPercentile; private int? _evaluationPeriods; private string _extendedStatistic; private List _insufficientDataActions = new List(); private string _metricName; private List _metrics = new List(); private string _awsNamespace; private List _okActions = new List(); private int? _period; private Statistic _statistic; private List _tags = new List(); private double? _threshold; private string _thresholdMetricId; private string _treatMissingData; private StandardUnit _unit; /// /// Gets and sets the property ActionsEnabled. /// /// Indicates whether actions should be executed during any changes to the alarm state. /// The default is TRUE. /// /// public bool ActionsEnabled { get { return this._actionsEnabled.GetValueOrDefault(); } set { this._actionsEnabled = value; } } // Check to see if ActionsEnabled property is set internal bool IsSetActionsEnabled() { return this._actionsEnabled.HasValue; } /// /// Gets and sets the property AlarmActions. /// /// The actions to execute when this alarm transitions to the ALARM state /// from any other state. Each action is specified as an Amazon Resource Name (ARN). Valid /// values: /// /// /// /// EC2 actions: /// ///
  • /// /// arn:aws:automate:region:ec2:stop /// ///
  • /// /// arn:aws:automate:region:ec2:terminate /// ///
  • /// /// arn:aws:automate:region:ec2:reboot /// ///
  • /// /// arn:aws:automate:region:ec2:recover /// ///
  • /// /// arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 /// /// ///
  • /// /// arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 /// /// ///
  • /// /// arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 /// /// ///
  • /// /// arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Recover/1.0 /// /// ///
/// /// Autoscaling action: /// ///
  • /// /// arn:aws:autoscaling:region:account-id:scalingPolicy:policy-id:autoScalingGroupName/group-friendly-name:policyName/policy-friendly-name /// /// ///
/// /// SNS notification action: /// ///
  • /// /// arn:aws:sns:region:account-id:sns-topic-name:autoScalingGroupName/group-friendly-name:policyName/policy-friendly-name /// /// ///
/// /// SSM integration actions: /// ///
  • /// /// arn:aws:ssm:region:account-id:opsitem:severity#CATEGORY=category-name /// /// ///
  • /// /// arn:aws:ssm-incidents::account-id:responseplan/response-plan-name /// /// ///
///
[AWSProperty(Max=5)] public List AlarmActions { get { return this._alarmActions; } set { this._alarmActions = value; } } // Check to see if AlarmActions property is set internal bool IsSetAlarmActions() { return this._alarmActions != null && this._alarmActions.Count > 0; } /// /// Gets and sets the property AlarmDescription. /// /// The description for the alarm. /// /// [AWSProperty(Min=0, Max=1024)] public string AlarmDescription { get { return this._alarmDescription; } set { this._alarmDescription = value; } } // Check to see if AlarmDescription property is set internal bool IsSetAlarmDescription() { return this._alarmDescription != null; } /// /// Gets and sets the property AlarmName. /// /// The name for the alarm. This name must be unique within the Region. /// /// /// /// The name must contain only UTF-8 characters, and can't contain ASCII control characters /// /// [AWSProperty(Required=true, Min=1, Max=255)] public string AlarmName { get { return this._alarmName; } set { this._alarmName = value; } } // Check to see if AlarmName property is set internal bool IsSetAlarmName() { return this._alarmName != null; } /// /// Gets and sets the property ComparisonOperator. /// /// The arithmetic operation to use when comparing the specified statistic and threshold. /// The specified statistic value is used as the first operand. /// /// /// /// The values LessThanLowerOrGreaterThanUpperThreshold, LessThanLowerThreshold, /// and GreaterThanUpperThreshold are used only for alarms based on anomaly /// detection models. /// /// [AWSProperty(Required=true)] public ComparisonOperator ComparisonOperator { get { return this._comparisonOperator; } set { this._comparisonOperator = value; } } // Check to see if ComparisonOperator property is set internal bool IsSetComparisonOperator() { return this._comparisonOperator != null; } /// /// Gets and sets the property DatapointsToAlarm. /// /// The number of data points that must be breaching to trigger the alarm. This is used /// only if you are setting an "M out of N" alarm. In that case, this value is the M. /// For more information, see Evaluating /// an Alarm in the Amazon CloudWatch User Guide. /// /// [AWSProperty(Min=1)] public int DatapointsToAlarm { get { return this._datapointsToAlarm.GetValueOrDefault(); } set { this._datapointsToAlarm = value; } } // Check to see if DatapointsToAlarm property is set internal bool IsSetDatapointsToAlarm() { return this._datapointsToAlarm.HasValue; } /// /// Gets and sets the property Dimensions. /// /// The dimensions for the metric specified in MetricName. /// /// [AWSProperty(Max=30)] public List Dimensions { get { return this._dimensions; } set { this._dimensions = value; } } // Check to see if Dimensions property is set internal bool IsSetDimensions() { return this._dimensions != null && this._dimensions.Count > 0; } /// /// Gets and sets the property EvaluateLowSampleCountPercentile. /// /// Used only for alarms based on percentiles. If you specify ignore, the /// alarm state does not change during periods with too few data points to be statistically /// significant. If you specify evaluate or omit this parameter, the alarm /// is always evaluated and possibly changes state no matter how many data points are /// available. For more information, see Percentile-Based /// CloudWatch Alarms and Low Data Samples. /// /// /// /// Valid Values: evaluate | ignore /// /// [AWSProperty(Min=1, Max=255)] public string EvaluateLowSampleCountPercentile { get { return this._evaluateLowSampleCountPercentile; } set { this._evaluateLowSampleCountPercentile = value; } } // Check to see if EvaluateLowSampleCountPercentile property is set internal bool IsSetEvaluateLowSampleCountPercentile() { return this._evaluateLowSampleCountPercentile != null; } /// /// Gets and sets the property EvaluationPeriods. /// /// The number of periods over which data is compared to the specified threshold. If you /// are setting an alarm that requires that a number of consecutive data points be breaching /// to trigger the alarm, this value specifies that number. If you are setting an "M out /// of N" alarm, this value is the N. /// /// /// /// An alarm's total current evaluation period can be no longer than one day, so this /// number multiplied by Period cannot be more than 86,400 seconds. /// /// [AWSProperty(Required=true, Min=1)] public int EvaluationPeriods { get { return this._evaluationPeriods.GetValueOrDefault(); } set { this._evaluationPeriods = value; } } // Check to see if EvaluationPeriods property is set internal bool IsSetEvaluationPeriods() { return this._evaluationPeriods.HasValue; } /// /// Gets and sets the property ExtendedStatistic. /// /// The percentile statistic for the metric specified in MetricName. Specify /// a value between p0.0 and p100. When you call PutMetricAlarm and specify /// a MetricName, you must specify either Statistic or ExtendedStatistic, /// but not both. /// /// public string ExtendedStatistic { get { return this._extendedStatistic; } set { this._extendedStatistic = value; } } // Check to see if ExtendedStatistic property is set internal bool IsSetExtendedStatistic() { return this._extendedStatistic != null; } /// /// Gets and sets the property InsufficientDataActions. /// /// The actions to execute when this alarm transitions to the INSUFFICIENT_DATA /// state from any other state. Each action is specified as an Amazon Resource Name (ARN). /// Valid values: /// /// /// /// EC2 actions: /// ///
  • /// /// arn:aws:automate:region:ec2:stop /// ///
  • /// /// arn:aws:automate:region:ec2:terminate /// ///
  • /// /// arn:aws:automate:region:ec2:reboot /// ///
  • /// /// arn:aws:automate:region:ec2:recover /// ///
  • /// /// arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 /// /// ///
  • /// /// arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 /// /// ///
  • /// /// arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 /// /// ///
  • /// /// arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Recover/1.0 /// /// ///
/// /// Autoscaling action: /// ///
  • /// /// arn:aws:autoscaling:region:account-id:scalingPolicy:policy-id:autoScalingGroupName/group-friendly-name:policyName/policy-friendly-name /// /// ///
/// /// SNS notification action: /// ///
  • /// /// arn:aws:sns:region:account-id:sns-topic-name:autoScalingGroupName/group-friendly-name:policyName/policy-friendly-name /// /// ///
/// /// SSM integration actions: /// ///
  • /// /// arn:aws:ssm:region:account-id:opsitem:severity#CATEGORY=category-name /// /// ///
  • /// /// arn:aws:ssm-incidents::account-id:responseplan/response-plan-name /// /// ///
///
[AWSProperty(Max=5)] public List InsufficientDataActions { get { return this._insufficientDataActions; } set { this._insufficientDataActions = value; } } // Check to see if InsufficientDataActions property is set internal bool IsSetInsufficientDataActions() { return this._insufficientDataActions != null && this._insufficientDataActions.Count > 0; } /// /// Gets and sets the property MetricName. /// /// The name for the metric associated with the alarm. For each PutMetricAlarm /// operation, you must specify either MetricName or a Metrics /// array. /// /// /// /// If you are creating an alarm based on a math expression, you cannot specify this parameter, /// or any of the Dimensions, Period, Namespace, /// Statistic, or ExtendedStatistic parameters. Instead, you /// specify all this information in the Metrics array. /// /// [AWSProperty(Min=1, Max=255)] public string MetricName { get { return this._metricName; } set { this._metricName = value; } } // Check to see if MetricName property is set internal bool IsSetMetricName() { return this._metricName != null; } /// /// Gets and sets the property Metrics. /// /// An array of MetricDataQuery structures that enable you to create an alarm /// based on the result of a metric math expression. For each PutMetricAlarm /// operation, you must specify either MetricName or a Metrics /// array. /// /// /// /// Each item in the Metrics array either retrieves a metric or performs /// a math expression. /// /// /// /// One item in the Metrics array is the expression that the alarm watches. /// You designate this expression by setting ReturnData to true for this /// object in the array. For more information, see MetricDataQuery. /// /// /// /// If you use the Metrics parameter, you cannot include the MetricName, /// Dimensions, Period, Namespace, Statistic, /// or ExtendedStatistic parameters of PutMetricAlarm in the /// same operation. Instead, you retrieve the metrics you are using in your math expression /// as part of the Metrics array. /// /// public List Metrics { get { return this._metrics; } set { this._metrics = value; } } // Check to see if Metrics property is set internal bool IsSetMetrics() { return this._metrics != null && this._metrics.Count > 0; } /// /// Gets and sets the property Namespace. /// /// The namespace for the metric associated specified in MetricName. /// /// [AWSProperty(Min=1, Max=255)] public string Namespace { get { return this._awsNamespace; } set { this._awsNamespace = value; } } // Check to see if Namespace property is set internal bool IsSetNamespace() { return this._awsNamespace != null; } /// /// Gets and sets the property OKActions. /// /// The actions to execute when this alarm transitions to an OK state from /// any other state. Each action is specified as an Amazon Resource Name (ARN). Valid /// values: /// /// /// /// EC2 actions: /// ///
  • /// /// arn:aws:automate:region:ec2:stop /// ///
  • /// /// arn:aws:automate:region:ec2:terminate /// ///
  • /// /// arn:aws:automate:region:ec2:reboot /// ///
  • /// /// arn:aws:automate:region:ec2:recover /// ///
  • /// /// arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Stop/1.0 /// /// ///
  • /// /// arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Terminate/1.0 /// /// ///
  • /// /// arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Reboot/1.0 /// /// ///
  • /// /// arn:aws:swf:region:account-id:action/actions/AWS_EC2.InstanceId.Recover/1.0 /// /// ///
/// /// Autoscaling action: /// ///
  • /// /// arn:aws:autoscaling:region:account-id:scalingPolicy:policy-id:autoScalingGroupName/group-friendly-name:policyName/policy-friendly-name /// /// ///
/// /// SNS notification action: /// ///
  • /// /// arn:aws:sns:region:account-id:sns-topic-name:autoScalingGroupName/group-friendly-name:policyName/policy-friendly-name /// /// ///
/// /// SSM integration actions: /// ///
  • /// /// arn:aws:ssm:region:account-id:opsitem:severity#CATEGORY=category-name /// /// ///
  • /// /// arn:aws:ssm-incidents::account-id:responseplan/response-plan-name /// /// ///
///
[AWSProperty(Max=5)] public List OKActions { get { return this._okActions; } set { this._okActions = value; } } // Check to see if OKActions property is set internal bool IsSetOKActions() { return this._okActions != null && this._okActions.Count > 0; } /// /// Gets and sets the property Period. /// /// The length, in seconds, used each time the metric specified in MetricName /// is evaluated. Valid values are 10, 30, and any multiple of 60. /// /// /// /// Period is required for alarms based on static thresholds. If you are /// creating an alarm based on a metric math expression, you specify the period for each /// metric within the objects in the Metrics array. /// /// /// /// Be sure to specify 10 or 30 only for metrics that are stored by a PutMetricData /// call with a StorageResolution of 1. If you specify a period of 10 or /// 30 for a metric that does not have sub-minute resolution, the alarm still attempts /// to gather data at the period rate that you specify. In this case, it does not receive /// data for the attempts that do not correspond to a one-minute data resolution, and /// the alarm might often lapse into INSUFFICENT_DATA status. Specifying 10 or 30 also /// sets this alarm as a high-resolution alarm, which has a higher charge than other alarms. /// For more information about pricing, see Amazon /// CloudWatch Pricing. /// /// /// /// An alarm's total current evaluation period can be no longer than one day, so Period /// multiplied by EvaluationPeriods cannot be more than 86,400 seconds. /// /// [AWSProperty(Min=1)] public int Period { get { return this._period.GetValueOrDefault(); } set { this._period = value; } } // Check to see if Period property is set internal bool IsSetPeriod() { return this._period.HasValue; } /// /// Gets and sets the property Statistic. /// /// The statistic for the metric specified in MetricName, other than percentile. /// For percentile statistics, use ExtendedStatistic. When you call PutMetricAlarm /// and specify a MetricName, you must specify either Statistic /// or ExtendedStatistic, but not both. /// /// public Statistic Statistic { get { return this._statistic; } set { this._statistic = value; } } // Check to see if Statistic property is set internal bool IsSetStatistic() { return this._statistic != null; } /// /// Gets and sets the property Tags. /// /// A list of key-value pairs to associate with the alarm. You can associate as many as /// 50 tags with an alarm. /// /// /// /// Tags can help you organize and categorize your resources. You can also use them to /// scope user permissions by granting a user permission to access or change only resources /// with certain tag values. /// /// /// /// If you are using this operation to update an existing alarm, any tags you specify /// in this parameter are ignored. To change the tags of an existing alarm, use TagResource /// or UntagResource. /// /// public List Tags { get { return this._tags; } set { this._tags = value; } } // Check to see if Tags property is set internal bool IsSetTags() { return this._tags != null && this._tags.Count > 0; } /// /// Gets and sets the property Threshold. /// /// The value against which the specified statistic is compared. /// /// /// /// This parameter is required for alarms based on static thresholds, but should not be /// used for alarms based on anomaly detection models. /// /// public double Threshold { get { return this._threshold.GetValueOrDefault(); } set { this._threshold = value; } } // Check to see if Threshold property is set internal bool IsSetThreshold() { return this._threshold.HasValue; } /// /// Gets and sets the property ThresholdMetricId. /// /// If this is an alarm based on an anomaly detection model, make this value match the /// ID of the ANOMALY_DETECTION_BAND function. /// /// /// /// For an example of how to use this parameter, see the Anomaly Detection Model Alarm /// example on this page. /// /// /// /// If your alarm uses this parameter, it cannot have Auto Scaling actions. /// /// [AWSProperty(Min=1, Max=255)] public string ThresholdMetricId { get { return this._thresholdMetricId; } set { this._thresholdMetricId = value; } } // Check to see if ThresholdMetricId property is set internal bool IsSetThresholdMetricId() { return this._thresholdMetricId != null; } /// /// Gets and sets the property TreatMissingData. /// /// Sets how this alarm is to handle missing data points. If TreatMissingData /// is omitted, the default behavior of missing is used. For more information, /// see Configuring /// How CloudWatch Alarms Treats Missing Data. /// /// /// /// Valid Values: breaching | notBreaching | ignore | missing /// /// /// /// Alarms that evaluate metrics in the AWS/DynamoDB namespace always ignore /// missing data even if you choose a different option for TreatMissingData. /// When an AWS/DynamoDB metric has missing data, alarms that evaluate that /// metric remain in their current state. /// /// /// [AWSProperty(Min=1, Max=255)] public string TreatMissingData { get { return this._treatMissingData; } set { this._treatMissingData = value; } } // Check to see if TreatMissingData property is set internal bool IsSetTreatMissingData() { return this._treatMissingData != null; } /// /// Gets and sets the property Unit. /// /// The unit of measure for the statistic. For example, the units for the Amazon EC2 NetworkIn /// metric are Bytes because NetworkIn tracks the number of bytes that an instance receives /// on all network interfaces. You can also specify a unit when you create a custom metric. /// Units help provide conceptual meaning to your data. Metric data points that specify /// a unit of measure, such as Percent, are aggregated separately. /// /// /// /// If you don't specify Unit, CloudWatch retrieves all unit types that have /// been published for the metric and attempts to evaluate the alarm. Usually, metrics /// are published with only one unit, so the alarm works as intended. /// /// /// /// However, if the metric is published with multiple types of units and you don't specify /// a unit, the alarm's behavior is not defined and it behaves unpredictably. /// /// /// /// We recommend omitting Unit so that you don't inadvertently specify an /// incorrect unit that is not published for this metric. Doing so causes the alarm to /// be stuck in the INSUFFICIENT DATA state. /// /// public StandardUnit Unit { get { return this._unit; } set { this._unit = value; } } // Check to see if Unit property is set internal bool IsSetUnit() { return this._unit != null; } } }