AWS SDK Version 2 for .NET
API Reference

AWS services or capabilities described in AWS Documentation may vary by region/location. Click Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

.NET Framework 3.5
Creates or updates an alarm and associates it with the specified Amazon CloudWatch metric. Optionally, this operation can associate one or more Amazon Simple Notification Service resources with the alarm.

When this operation creates an alarm, the alarm state is immediately set to INSUFFICIENT_DATA. The alarm is evaluated and its StateValue is set appropriately. Any actions associated with the StateValue is then executed.

When updating an existing alarm, its StateValue is left unchanged. If you are using an AWS Identity and Access Management (IAM) account to create or modify an alarm, you must have the following Amazon EC2 permissions:
  • ec2:DescribeInstanceStatus and ec2:DescribeInstances for all alarms on Amazon EC2 instance status metrics.
  • ec2:StopInstances for alarms with stop actions.
  • ec2:TerminateInstances for alarms with terminate actions.
  • ec2:DescribeInstanceRecoveryAttribute, and ec2:RecoverInstances for alarms with recover actions.

If you have read/write permissions for Amazon CloudWatch but not for Amazon EC2, you can still create an alarm but the stop or terminate actions won't be performed on the Amazon EC2 instance. However, if you are later granted permission to use the associated Amazon EC2 APIs, the alarm actions you created earlier will be performed. For more information about IAM permissions, see Permissions and Policies in Using IAM.

If you are using an IAM role (e.g., an Amazon EC2 instance profile), you cannot stop or terminate the instance using alarm actions. However, you can still see the alarm state and perform any other actions such as Amazon SNS notifications or Auto Scaling policies.

If you are using temporary security credentials granted using the AWS Security Token Service (AWS STS), you cannot stop or terminate an Amazon EC2 instance using alarm actions.

Namespace: Amazon.CloudWatch
Assembly: AWSSDK.dll
Version: (assembly version)


public abstract PutMetricAlarmResponse PutMetricAlarm(
         PutMetricAlarmRequest request


Type: Amazon.CloudWatch.Model.PutMetricAlarmRequest

Container for the necessary parameters to execute the PutMetricAlarm service method.

Return Value
Type: Amazon.CloudWatch.Model.PutMetricAlarmResponse
The response from the PutMetricAlarm service method, as returned by CloudWatch.


LimitExceededException The quota for alarms for this customer has already been reached.


This example shows how to create an alarm for a metric.

Create metric alarm example

var client = new AmazonCloudWatchClient();

var dimension = new Dimension
  Name = "Desktop Machine Metrics",
  Value = "Virtual Desktop Machine Usage"

var request = new PutMetricAlarmRequest
  ActionsEnabled = true,
  AlarmActions = new List<string>() 
    { "arn:aws:sns:us-east-1:80398EXAMPLE:CodingTestResults" },
  AlarmDescription = "Too many instances offline",
  AlarmName = "Offline Instances",
  ComparisonOperator = ComparisonOperator.GreaterThanOrEqualToThreshold,
  Dimensions = new List<Dimension>() { dimension },
  EvaluationPeriods = 1,
  MetricName = "Desktop Machines Offline",
  Namespace = " Custom Metrics",
  Period = (int)TimeSpan.FromMinutes(5).TotalSeconds,
  Statistic = new Statistic("Maximum"),
  Threshold = 5,
  Unit = StandardUnit.Count


Version Information

.NET Framework:
Supported in: 4.5, 4.0, 3.5