Working with Amazon CloudWatch Alarms

An Amazon CloudWatch alarm watches a single metric over a time period you specify, and performs one or more actions based on the value of the metric relative to a given threshold over a number of time periods.

The examples below show how to:

All the example code for the AWS SDK for PHP is available here on GitHub.

Credentials

Before running the example code, configure your AWS credentials, as described in Credentials.

Describe Alarms

require 'vendor/autoload.php';
use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;

$client = new CloudWatchClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-08-01'
]);
try {
    $result = $client->describeAlarms([
    ]);
    foreach ($result['MetricAlarms'] as $alarm) {
        echo $alarm['AlarmName'] . "\n";
    }
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}

Create an Alarm

require 'vendor/autoload.php';
use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;

$client = new CloudWatchClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-08-01'
]);
try {
    $result = $client->putMetricAlarm(array(
        // AlarmName is required
        'AlarmName' => 'string',
        // MetricName is required
        'MetricName' => 'string',
        // Namespace is required
        'Namespace' => 'string',
        // Statistic is required
        //string: SampleCount | Average | Sum | Minimum | Maximum
        'Statistic' => 'string',
        // Period is required
        'Period' => integer,
        'Unit' => 'Count/Second',
        // EvaluationPeriods is required
        'EvaluationPeriods' => integer,
        // Threshold is required
        'Threshold' => interger,
        // ComparisonOperator is required
        // string: GreaterThanOrEqualToThreshold | GreaterThanThreshold | LessThanThreshold | LessThanOrEqualToThreshold
        'ComparisonOperator' => 'string',
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}

Delete Alarms

require 'vendor/autoload.php';
use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;

$alarmName = "<ALARM_NAME>";
$client = new CloudWatchClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-08-01'
]);
try {
    $result = $client->deleteAlarms([
        'AlarmNames' => [$alarmName] // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}