putCompositeAlarm method

Future<void> putCompositeAlarm({
  1. required String alarmName,
  2. required String alarmRule,
  3. bool? actionsEnabled,
  4. String? actionsSuppressor,
  5. int? actionsSuppressorExtensionPeriod,
  6. int? actionsSuppressorWaitPeriod,
  7. List<String>? alarmActions,
  8. String? alarmDescription,
  9. List<String>? insufficientDataActions,
  10. List<String>? oKActions,
  11. List<Tag>? tags,
})

Creates or updates a composite alarm. When you create a composite alarm, you specify a rule expression for the alarm that takes into account the alarm states of other alarms that you have created. The composite alarm goes into ALARM state only if all conditions of the rule are met.

The alarms specified in a composite alarm's rule expression can include metric alarms and other composite alarms. The rule expression of a composite alarm can include as many as 100 underlying alarms. Any single alarm can be included in the rule expressions of as many as 150 composite alarms.

Using composite alarms can reduce alarm noise. You can create multiple metric alarms, and also create a composite alarm and set up alerts only for the composite alarm. For example, you could create a composite alarm that goes into ALARM state only when more than one of the underlying metric alarms are in ALARM state.

Composite alarms can take the following actions:

  • Notify Amazon SNS topics.
  • Invoke Lambda functions.
  • Create OpsItems in Systems Manager Ops Center.
  • Create incidents in Systems Manager Incident Manager.

Implementation

Future<void> putCompositeAlarm({
  required String alarmName,
  required String alarmRule,
  bool? actionsEnabled,
  String? actionsSuppressor,
  int? actionsSuppressorExtensionPeriod,
  int? actionsSuppressorWaitPeriod,
  List<String>? alarmActions,
  String? alarmDescription,
  List<String>? insufficientDataActions,
  List<String>? oKActions,
  List<Tag>? tags,
}) async {
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.0',
    'X-Amz-Target': 'GraniteServiceVersion20100801.PutCompositeAlarm'
  };
  await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'AlarmName': alarmName,
      'AlarmRule': alarmRule,
      if (actionsEnabled != null) 'ActionsEnabled': actionsEnabled,
      if (actionsSuppressor != null) 'ActionsSuppressor': actionsSuppressor,
      if (actionsSuppressorExtensionPeriod != null)
        'ActionsSuppressorExtensionPeriod': actionsSuppressorExtensionPeriod,
      if (actionsSuppressorWaitPeriod != null)
        'ActionsSuppressorWaitPeriod': actionsSuppressorWaitPeriod,
      if (alarmActions != null) 'AlarmActions': alarmActions,
      if (alarmDescription != null) 'AlarmDescription': alarmDescription,
      if (insufficientDataActions != null)
        'InsufficientDataActions': insufficientDataActions,
      if (oKActions != null) 'OKActions': oKActions,
      if (tags != null) 'Tags': tags,
    },
  );
}