Using Alarm Actions in CloudWatch
Using CloudWatch alarm actions, you can create alarms that perform actions such as automatically stopping, terminating, rebooting, or recovering Amazon EC2 instances.
Alarm actions can be added to an alarm by using the PutMetricAlarmRequestSetAlarmActions
function when creating an alarm.
Prerequisites
Before you begin, we recommend you read Getting started using the AWS SDK for C++.
Download the example code and build the solution as described in Get started on code examples.
To run the examples, the user profile your code uses to make the requests must have proper permissions in AWS (for the service and the action). For more information, see Providing AWS credentials.
Enable Alarm Actions
To enable alarm actions for a CloudWatch alarm, call the CloudWatchClient’s EnableAlarmActions
with a EnableAlarmActionsRequest
Includes
#include <aws/core/Aws.h>
#include <aws/monitoring/CloudWatchClient.h>
#include <aws/monitoring/model/EnableAlarmActionsRequest.h>
#include <aws/monitoring/model/PutMetricAlarmRequest.h>
#include <iostream>
Code
Aws::CloudWatch::CloudWatchClient cw;
Aws::CloudWatch::Model::PutMetricAlarmRequest request;
request.SetAlarmName(alarm_name);
request.SetComparisonOperator(
Aws::CloudWatch::Model::ComparisonOperator::GreaterThanThreshold);
request.SetEvaluationPeriods(1);
request.SetMetricName("CPUUtilization");
request.SetNamespace("AWS/EC2");
request.SetPeriod(60);
request.SetStatistic(Aws::CloudWatch::Model::Statistic::Average);
request.SetThreshold(70.0);
request.SetActionsEnabled(false);
request.SetAlarmDescription("Alarm when server CPU exceeds 70%");
request.SetUnit(Aws::CloudWatch::Model::StandardUnit::Seconds);
request.AddAlarmActions(actionArn);
Aws::CloudWatch::Model::Dimension dimension;
dimension.SetName("InstanceId");
dimension.SetValue(instanceId);
request.AddDimensions(dimension);
auto outcome = cw.PutMetricAlarm(request);
if (!outcome.IsSuccess())
{
std::cout << "Failed to create CloudWatch alarm:" <<
outcome.GetError().GetMessage() << std::endl;
return;
}
Aws::CloudWatch::Model::EnableAlarmActionsRequest enable_request;
enable_request.AddAlarmNames(alarm_name);
auto enable_outcome = cw.EnableAlarmActions(enable_request);
if (!enable_outcome.IsSuccess())
{
std::cout << "Failed to enable alarm actions:" <<
enable_outcome.GetError().GetMessage() << std::endl;
return;
}
std::cout << "Successfully created alarm " << alarm_name <<
" and enabled actions on it." << std::endl;
See the complete example
Disable Alarm Actions
To disable alarm actions for a CloudWatch alarm, call the CloudWatchClient’s DisableAlarmActions
with a DisableAlarmActionsRequest
Includes
#include <aws/core/Aws.h>
#include <aws/monitoring/CloudWatchClient.h>
#include <aws/monitoring/model/DisableAlarmActionsRequest.h>
#include <iostream>
Code
Aws::CloudWatch::CloudWatchClient cw;
Aws::CloudWatch::Model::DisableAlarmActionsRequest disableAlarmActionsRequest;
disableAlarmActionsRequest.AddAlarmNames(alarm_name);
auto disableAlarmActionsOutcome = cw.DisableAlarmActions(disableAlarmActionsRequest);
if (!disableAlarmActionsOutcome.IsSuccess())
{
std::cout << "Failed to disable actions for alarm " << alarm_name <<
": " << disableAlarmActionsOutcome.GetError().GetMessage() <<
std::endl;
}
else
{
std::cout << "Successfully disabled actions for alarm " <<
alarm_name << std::endl;
}
See the complete example
More Information
-
Create Alarms to Stop, Terminate, Reboot, or Recover an Instance in the Amazon CloudWatch User Guide
-
PutMetricAlarm in the Amazon CloudWatch API Reference
-
EnableAlarmActions in the Amazon CloudWatch API Reference
-
DisableAlarmActions in the Amazon CloudWatch API Reference