%% WARNING: DO NOT EDIT, AUTO-GENERATED CODE! %% See https://github.com/aws-beam/aws-codegen for more details. %% @doc Amazon CloudWatch monitors your Amazon Web Services (Amazon Web %% Services) resources and the %% applications you run on Amazon Web Services in real time. %% %% You can use CloudWatch to collect and track %% metrics, which are the variables you want to measure for your resources %% and %% applications. %% %% CloudWatch alarms send notifications or automatically change the resources %% you are monitoring based on rules %% that you define. For example, you can monitor the CPU usage and disk reads %% and writes of your Amazon EC2 %% instances. Then, use this data to determine whether you should launch %% additional instances to handle increased load. You can also use this data %% to stop %% under-used instances to save %% money. %% %% In addition to monitoring the built-in metrics that come with Amazon Web %% Services, you can monitor %% your own custom metrics. With CloudWatch, you gain system-wide visibility %% into resource %% utilization, application performance, and operational health. -module(aws_cloudwatch). -export([delete_alarms/2, delete_alarms/3, delete_anomaly_detector/2, delete_anomaly_detector/3, delete_dashboards/2, delete_dashboards/3, delete_insight_rules/2, delete_insight_rules/3, delete_metric_stream/2, delete_metric_stream/3, describe_alarm_history/2, describe_alarm_history/3, describe_alarms/2, describe_alarms/3, describe_alarms_for_metric/2, describe_alarms_for_metric/3, describe_anomaly_detectors/2, describe_anomaly_detectors/3, describe_insight_rules/2, describe_insight_rules/3, disable_alarm_actions/2, disable_alarm_actions/3, disable_insight_rules/2, disable_insight_rules/3, enable_alarm_actions/2, enable_alarm_actions/3, enable_insight_rules/2, enable_insight_rules/3, get_dashboard/2, get_dashboard/3, get_insight_rule_report/2, get_insight_rule_report/3, get_metric_data/2, get_metric_data/3, get_metric_statistics/2, get_metric_statistics/3, get_metric_stream/2, get_metric_stream/3, get_metric_widget_image/2, get_metric_widget_image/3, list_dashboards/2, list_dashboards/3, list_managed_insight_rules/2, list_managed_insight_rules/3, list_metric_streams/2, list_metric_streams/3, list_metrics/2, list_metrics/3, list_tags_for_resource/2, list_tags_for_resource/3, put_anomaly_detector/2, put_anomaly_detector/3, put_composite_alarm/2, put_composite_alarm/3, put_dashboard/2, put_dashboard/3, put_insight_rule/2, put_insight_rule/3, put_managed_insight_rules/2, put_managed_insight_rules/3, put_metric_alarm/2, put_metric_alarm/3, put_metric_data/2, put_metric_data/3, put_metric_stream/2, put_metric_stream/3, set_alarm_state/2, set_alarm_state/3, start_metric_streams/2, start_metric_streams/3, stop_metric_streams/2, stop_metric_streams/3, tag_resource/2, tag_resource/3, untag_resource/2, untag_resource/3]). -include_lib("hackney/include/hackney_lib.hrl"). %% Example: %% enable_insight_rules_input() :: #{ %% <<"RuleNames">> := list(string()()) %% } -type enable_insight_rules_input() :: #{binary() => any()}. %% Example: %% delete_dashboards_output() :: #{ %% } -type delete_dashboards_output() :: #{binary() => any()}. %% Example: %% metric_stream_filter() :: #{ %% <<"MetricNames">> => list(string()()), %% <<"Namespace">> => string() %% } -type metric_stream_filter() :: #{binary() => any()}. %% Example: %% resource_not_found() :: #{ %% <<"message">> => string() %% } -type resource_not_found() :: #{binary() => any()}. %% Example: %% range() :: #{ %% <<"EndTime">> => non_neg_integer(), %% <<"StartTime">> => non_neg_integer() %% } -type range() :: #{binary() => any()}. %% Example: %% managed_rule() :: #{ %% <<"ResourceARN">> => string(), %% <<"Tags">> => list(tag()()), %% <<"TemplateName">> => string() %% } -type managed_rule() :: #{binary() => any()}. %% Example: %% start_metric_streams_input() :: #{ %% <<"Names">> := list(string()()) %% } -type start_metric_streams_input() :: #{binary() => any()}. %% Example: %% label_options() :: #{ %% <<"Timezone">> => string() %% } -type label_options() :: #{binary() => any()}. %% Example: %% dashboard_not_found_error() :: #{ %% <<"message">> => string() %% } -type dashboard_not_found_error() :: #{binary() => any()}. %% Example: %% put_insight_rule_input() :: #{ %% <<"RuleDefinition">> := string(), %% <<"RuleName">> := string(), %% <<"RuleState">> => string(), %% <<"Tags">> => list(tag()()) %% } -type put_insight_rule_input() :: #{binary() => any()}. %% Example: %% put_composite_alarm_input() :: #{ %% <<"ActionsEnabled">> => boolean(), %% <<"ActionsSuppressor">> => string(), %% <<"ActionsSuppressorExtensionPeriod">> => integer(), %% <<"ActionsSuppressorWaitPeriod">> => integer(), %% <<"AlarmActions">> => list(string()()), %% <<"AlarmDescription">> => string(), %% <<"AlarmName">> := string(), %% <<"AlarmRule">> := string(), %% <<"InsufficientDataActions">> => list(string()()), %% <<"OKActions">> => list(string()()), %% <<"Tags">> => list(tag()()) %% } -type put_composite_alarm_input() :: #{binary() => any()}. %% Example: %% delete_anomaly_detector_input() :: #{ %% <<"Dimensions">> => list(dimension()()), %% <<"MetricMathAnomalyDetector">> => metric_math_anomaly_detector(), %% <<"MetricName">> => string(), %% <<"Namespace">> => string(), %% <<"SingleMetricAnomalyDetector">> => single_metric_anomaly_detector(), %% <<"Stat">> => string() %% } -type delete_anomaly_detector_input() :: #{binary() => any()}. %% Example: %% get_insight_rule_report_output() :: #{ %% <<"AggregateValue">> => float(), %% <<"AggregationStatistic">> => string(), %% <<"ApproximateUniqueCount">> => float(), %% <<"Contributors">> => list(insight_rule_contributor()()), %% <<"KeyLabels">> => list(string()()), %% <<"MetricDatapoints">> => list(insight_rule_metric_datapoint()()) %% } -type get_insight_rule_report_output() :: #{binary() => any()}. %% Example: %% alarm_history_item() :: #{ %% <<"AlarmName">> => string(), %% <<"AlarmType">> => list(any()), %% <<"HistoryData">> => string(), %% <<"HistoryItemType">> => list(any()), %% <<"HistorySummary">> => string(), %% <<"Timestamp">> => non_neg_integer() %% } -type alarm_history_item() :: #{binary() => any()}. %% Example: %% delete_dashboards_input() :: #{ %% <<"DashboardNames">> := list(string()()) %% } -type delete_dashboards_input() :: #{binary() => any()}. %% Example: %% enable_insight_rules_output() :: #{ %% <<"Failures">> => list(partial_failure()()) %% } -type enable_insight_rules_output() :: #{binary() => any()}. %% Example: %% get_insight_rule_report_input() :: #{ %% <<"EndTime">> := non_neg_integer(), %% <<"MaxContributorCount">> => integer(), %% <<"Metrics">> => list(string()()), %% <<"OrderBy">> => string(), %% <<"Period">> := integer(), %% <<"RuleName">> := string(), %% <<"StartTime">> := non_neg_integer() %% } -type get_insight_rule_report_input() :: #{binary() => any()}. %% Example: %% metric() :: #{ %% <<"Dimensions">> => list(dimension()()), %% <<"MetricName">> => string(), %% <<"Namespace">> => string() %% } -type metric() :: #{binary() => any()}. %% Example: %% anomaly_detector_configuration() :: #{ %% <<"ExcludedTimeRanges">> => list(range()()), %% <<"MetricTimezone">> => string() %% } -type anomaly_detector_configuration() :: #{binary() => any()}. %% Example: %% delete_metric_stream_input() :: #{ %% <<"Name">> := string() %% } -type delete_metric_stream_input() :: #{binary() => any()}. %% Example: %% put_metric_stream_output() :: #{ %% <<"Arn">> => string() %% } -type put_metric_stream_output() :: #{binary() => any()}. %% Example: %% limit_exceeded_fault() :: #{ %% <<"message">> => string() %% } -type limit_exceeded_fault() :: #{binary() => any()}. %% Example: %% disable_alarm_actions_input() :: #{ %% <<"AlarmNames">> := list(string()()) %% } -type disable_alarm_actions_input() :: #{binary() => any()}. %% Example: %% missing_required_parameter_exception() :: #{ %% <<"message">> => string() %% } -type missing_required_parameter_exception() :: #{binary() => any()}. %% Example: %% list_managed_insight_rules_output() :: #{ %% <<"ManagedRules">> => list(managed_rule_description()()), %% <<"NextToken">> => string() %% } -type list_managed_insight_rules_output() :: #{binary() => any()}. %% Example: %% list_metrics_input() :: #{ %% <<"Dimensions">> => list(dimension_filter()()), %% <<"IncludeLinkedAccounts">> => boolean(), %% <<"MetricName">> => string(), %% <<"Namespace">> => string(), %% <<"NextToken">> => string(), %% <<"OwningAccount">> => string(), %% <<"RecentlyActive">> => list(any()) %% } -type list_metrics_input() :: #{binary() => any()}. %% Example: %% get_metric_widget_image_output() :: #{ %% <<"MetricWidgetImage">> => binary() %% } -type get_metric_widget_image_output() :: #{binary() => any()}. %% Example: %% get_metric_widget_image_input() :: #{ %% <<"MetricWidget">> := string(), %% <<"OutputFormat">> => string() %% } -type get_metric_widget_image_input() :: #{binary() => any()}. %% Example: %% managed_rule_state() :: #{ %% <<"RuleName">> => string(), %% <<"State">> => string() %% } -type managed_rule_state() :: #{binary() => any()}. %% Example: %% metric_stream_entry() :: #{ %% <<"Arn">> => string(), %% <<"CreationDate">> => non_neg_integer(), %% <<"FirehoseArn">> => string(), %% <<"LastUpdateDate">> => non_neg_integer(), %% <<"Name">> => string(), %% <<"OutputFormat">> => list(any()), %% <<"State">> => string() %% } -type metric_stream_entry() :: #{binary() => any()}. %% Example: %% metric_stream_statistics_configuration() :: #{ %% <<"AdditionalStatistics">> => list(string()()), %% <<"IncludeMetrics">> => list(metric_stream_statistics_metric()()) %% } -type metric_stream_statistics_configuration() :: #{binary() => any()}. %% Example: %% put_managed_insight_rules_input() :: #{ %% <<"ManagedRules">> := list(managed_rule()()) %% } -type put_managed_insight_rules_input() :: #{binary() => any()}. %% Example: %% put_managed_insight_rules_output() :: #{ %% <<"Failures">> => list(partial_failure()()) %% } -type put_managed_insight_rules_output() :: #{binary() => any()}. %% Example: %% list_dashboards_input() :: #{ %% <<"DashboardNamePrefix">> => string(), %% <<"NextToken">> => string() %% } -type list_dashboards_input() :: #{binary() => any()}. %% Example: %% list_tags_for_resource_output() :: #{ %% <<"Tags">> => list(tag()()) %% } -type list_tags_for_resource_output() :: #{binary() => any()}. %% Example: %% describe_alarms_input() :: #{ %% <<"ActionPrefix">> => string(), %% <<"AlarmNamePrefix">> => string(), %% <<"AlarmNames">> => list(string()()), %% <<"AlarmTypes">> => list(list(any())()), %% <<"ChildrenOfAlarmName">> => string(), %% <<"MaxRecords">> => integer(), %% <<"NextToken">> => string(), %% <<"ParentsOfAlarmName">> => string(), %% <<"StateValue">> => list(any()) %% } -type describe_alarms_input() :: #{binary() => any()}. %% Example: %% describe_alarms_output() :: #{ %% <<"CompositeAlarms">> => list(composite_alarm()()), %% <<"MetricAlarms">> => list(metric_alarm()()), %% <<"NextToken">> => string() %% } -type describe_alarms_output() :: #{binary() => any()}. %% Example: %% invalid_parameter_combination_exception() :: #{ %% <<"message">> => string() %% } -type invalid_parameter_combination_exception() :: #{binary() => any()}. %% Example: %% describe_alarm_history_input() :: #{ %% <<"AlarmName">> => string(), %% <<"AlarmTypes">> => list(list(any())()), %% <<"EndDate">> => non_neg_integer(), %% <<"HistoryItemType">> => list(any()), %% <<"MaxRecords">> => integer(), %% <<"NextToken">> => string(), %% <<"ScanBy">> => list(any()), %% <<"StartDate">> => non_neg_integer() %% } -type describe_alarm_history_input() :: #{binary() => any()}. %% Example: %% put_insight_rule_output() :: #{ %% } -type put_insight_rule_output() :: #{binary() => any()}. %% Example: %% put_anomaly_detector_input() :: #{ %% <<"Configuration">> => anomaly_detector_configuration(), %% <<"Dimensions">> => list(dimension()()), %% <<"MetricMathAnomalyDetector">> => metric_math_anomaly_detector(), %% <<"MetricName">> => string(), %% <<"Namespace">> => string(), %% <<"SingleMetricAnomalyDetector">> => single_metric_anomaly_detector(), %% <<"Stat">> => string() %% } -type put_anomaly_detector_input() :: #{binary() => any()}. %% Example: %% disable_insight_rules_output() :: #{ %% <<"Failures">> => list(partial_failure()()) %% } -type disable_insight_rules_output() :: #{binary() => any()}. %% Example: %% metric_stream_statistics_metric() :: #{ %% <<"MetricName">> => string(), %% <<"Namespace">> => string() %% } -type metric_stream_statistics_metric() :: #{binary() => any()}. %% Example: %% message_data() :: #{ %% <<"Code">> => string(), %% <<"Value">> => string() %% } -type message_data() :: #{binary() => any()}. %% Example: %% stop_metric_streams_output() :: #{ %% } -type stop_metric_streams_output() :: #{binary() => any()}. %% Example: %% dashboard_invalid_input_error() :: #{ %% <<"dashboardValidationMessages">> => list(dashboard_validation_message()()), %% <<"message">> => string() %% } -type dashboard_invalid_input_error() :: #{binary() => any()}. %% Example: %% set_alarm_state_input() :: #{ %% <<"AlarmName">> := string(), %% <<"StateReason">> := string(), %% <<"StateReasonData">> => string(), %% <<"StateValue">> := list(any()) %% } -type set_alarm_state_input() :: #{binary() => any()}. %% Example: %% disable_insight_rules_input() :: #{ %% <<"RuleNames">> := list(string()()) %% } -type disable_insight_rules_input() :: #{binary() => any()}. %% Example: %% metric_datum() :: #{ %% <<"Counts">> => list(float()()), %% <<"Dimensions">> => list(dimension()()), %% <<"MetricName">> => string(), %% <<"StatisticValues">> => statistic_set(), %% <<"StorageResolution">> => integer(), %% <<"Timestamp">> => non_neg_integer(), %% <<"Unit">> => list(any()), %% <<"Value">> => float(), %% <<"Values">> => list(float()()) %% } -type metric_datum() :: #{binary() => any()}. %% Example: %% resource_not_found_exception() :: #{ %% <<"Message">> => string(), %% <<"ResourceId">> => string(), %% <<"ResourceType">> => string() %% } -type resource_not_found_exception() :: #{binary() => any()}. %% Example: %% put_metric_alarm_input() :: #{ %% <<"ActionsEnabled">> => boolean(), %% <<"AlarmActions">> => list(string()()), %% <<"AlarmDescription">> => string(), %% <<"AlarmName">> := string(), %% <<"ComparisonOperator">> := list(any()), %% <<"DatapointsToAlarm">> => integer(), %% <<"Dimensions">> => list(dimension()()), %% <<"EvaluateLowSampleCountPercentile">> => string(), %% <<"EvaluationPeriods">> := integer(), %% <<"ExtendedStatistic">> => string(), %% <<"InsufficientDataActions">> => list(string()()), %% <<"MetricName">> => string(), %% <<"Metrics">> => list(metric_data_query()()), %% <<"Namespace">> => string(), %% <<"OKActions">> => list(string()()), %% <<"Period">> => integer(), %% <<"Statistic">> => list(any()), %% <<"Tags">> => list(tag()()), %% <<"Threshold">> => float(), %% <<"ThresholdMetricId">> => string(), %% <<"TreatMissingData">> => string(), %% <<"Unit">> => list(any()) %% } -type put_metric_alarm_input() :: #{binary() => any()}. %% Example: %% tag() :: #{ %% <<"Key">> => string(), %% <<"Value">> => string() %% } -type tag() :: #{binary() => any()}. %% Example: %% insight_rule_metric_datapoint() :: #{ %% <<"Average">> => float(), %% <<"MaxContributorValue">> => float(), %% <<"Maximum">> => float(), %% <<"Minimum">> => float(), %% <<"SampleCount">> => float(), %% <<"Sum">> => float(), %% <<"Timestamp">> => non_neg_integer(), %% <<"UniqueContributors">> => float() %% } -type insight_rule_metric_datapoint() :: #{binary() => any()}. %% Example: %% datapoint() :: #{ %% <<"Average">> => float(), %% <<"ExtendedStatistics">> => map(), %% <<"Maximum">> => float(), %% <<"Minimum">> => float(), %% <<"SampleCount">> => float(), %% <<"Sum">> => float(), %% <<"Timestamp">> => non_neg_integer(), %% <<"Unit">> => list(any()) %% } -type datapoint() :: #{binary() => any()}. %% Example: %% metric_data_query() :: #{ %% <<"AccountId">> => string(), %% <<"Expression">> => string(), %% <<"Id">> => string(), %% <<"Label">> => string(), %% <<"MetricStat">> => metric_stat(), %% <<"Period">> => integer(), %% <<"ReturnData">> => boolean() %% } -type metric_data_query() :: #{binary() => any()}. %% Example: %% dashboard_entry() :: #{ %% <<"DashboardArn">> => string(), %% <<"DashboardName">> => string(), %% <<"LastModified">> => non_neg_integer(), %% <<"Size">> => float() %% } -type dashboard_entry() :: #{binary() => any()}. %% Example: %% invalid_parameter_value_exception() :: #{ %% <<"message">> => string() %% } -type invalid_parameter_value_exception() :: #{binary() => any()}. %% Example: %% single_metric_anomaly_detector() :: #{ %% <<"Dimensions">> => list(dimension()()), %% <<"MetricName">> => string(), %% <<"Namespace">> => string(), %% <<"Stat">> => string() %% } -type single_metric_anomaly_detector() :: #{binary() => any()}. %% Example: %% describe_anomaly_detectors_output() :: #{ %% <<"AnomalyDetectors">> => list(anomaly_detector()()), %% <<"NextToken">> => string() %% } -type describe_anomaly_detectors_output() :: #{binary() => any()}. %% Example: %% insight_rule_contributor_datapoint() :: #{ %% <<"ApproximateValue">> => float(), %% <<"Timestamp">> => non_neg_integer() %% } -type insight_rule_contributor_datapoint() :: #{binary() => any()}. %% Example: %% describe_anomaly_detectors_input() :: #{ %% <<"AnomalyDetectorTypes">> => list(list(any())()), %% <<"Dimensions">> => list(dimension()()), %% <<"MaxResults">> => integer(), %% <<"MetricName">> => string(), %% <<"Namespace">> => string(), %% <<"NextToken">> => string() %% } -type describe_anomaly_detectors_input() :: #{binary() => any()}. %% Example: %% enable_alarm_actions_input() :: #{ %% <<"AlarmNames">> := list(string()()) %% } -type enable_alarm_actions_input() :: #{binary() => any()}. %% Example: %% invalid_format_fault() :: #{ %% <<"message">> => string() %% } -type invalid_format_fault() :: #{binary() => any()}. %% Example: %% insight_rule_contributor() :: #{ %% <<"ApproximateAggregateValue">> => float(), %% <<"Datapoints">> => list(insight_rule_contributor_datapoint()()), %% <<"Keys">> => list(string()()) %% } -type insight_rule_contributor() :: #{binary() => any()}. %% Example: %% metric_math_anomaly_detector() :: #{ %% <<"MetricDataQueries">> => list(metric_data_query()()) %% } -type metric_math_anomaly_detector() :: #{binary() => any()}. %% Example: %% get_metric_data_output() :: #{ %% <<"Messages">> => list(message_data()()), %% <<"MetricDataResults">> => list(metric_data_result()()), %% <<"NextToken">> => string() %% } -type get_metric_data_output() :: #{binary() => any()}. %% Example: %% tag_resource_input() :: #{ %% <<"ResourceARN">> := string(), %% <<"Tags">> := list(tag()()) %% } -type tag_resource_input() :: #{binary() => any()}. %% Example: %% list_metrics_output() :: #{ %% <<"Metrics">> => list(metric()()), %% <<"NextToken">> => string(), %% <<"OwningAccounts">> => list(string()()) %% } -type list_metrics_output() :: #{binary() => any()}. %% Example: %% put_metric_data_input() :: #{ %% <<"MetricData">> := list(metric_datum()()), %% <<"Namespace">> := string() %% } -type put_metric_data_input() :: #{binary() => any()}. %% Example: %% tag_resource_output() :: #{ %% } -type tag_resource_output() :: #{binary() => any()}. %% Example: %% get_metric_stream_input() :: #{ %% <<"Name">> := string() %% } -type get_metric_stream_input() :: #{binary() => any()}. %% Example: %% list_metric_streams_output() :: #{ %% <<"Entries">> => list(metric_stream_entry()()), %% <<"NextToken">> => string() %% } -type list_metric_streams_output() :: #{binary() => any()}. %% Example: %% get_metric_stream_output() :: #{ %% <<"Arn">> => string(), %% <<"CreationDate">> => non_neg_integer(), %% <<"ExcludeFilters">> => list(metric_stream_filter()()), %% <<"FirehoseArn">> => string(), %% <<"IncludeFilters">> => list(metric_stream_filter()()), %% <<"IncludeLinkedAccountsMetrics">> => boolean(), %% <<"LastUpdateDate">> => non_neg_integer(), %% <<"Name">> => string(), %% <<"OutputFormat">> => list(any()), %% <<"RoleArn">> => string(), %% <<"State">> => string(), %% <<"StatisticsConfigurations">> => list(metric_stream_statistics_configuration()()) %% } -type get_metric_stream_output() :: #{binary() => any()}. %% Example: %% describe_alarms_for_metric_input() :: #{ %% <<"Dimensions">> => list(dimension()()), %% <<"ExtendedStatistic">> => string(), %% <<"MetricName">> := string(), %% <<"Namespace">> := string(), %% <<"Period">> => integer(), %% <<"Statistic">> => list(any()), %% <<"Unit">> => list(any()) %% } -type describe_alarms_for_metric_input() :: #{binary() => any()}. %% Example: %% delete_alarms_input() :: #{ %% <<"AlarmNames">> := list(string()()) %% } -type delete_alarms_input() :: #{binary() => any()}. %% Example: %% put_metric_stream_input() :: #{ %% <<"ExcludeFilters">> => list(metric_stream_filter()()), %% <<"FirehoseArn">> := string(), %% <<"IncludeFilters">> => list(metric_stream_filter()()), %% <<"IncludeLinkedAccountsMetrics">> => boolean(), %% <<"Name">> := string(), %% <<"OutputFormat">> := list(any()), %% <<"RoleArn">> := string(), %% <<"StatisticsConfigurations">> => list(metric_stream_statistics_configuration()()), %% <<"Tags">> => list(tag()()) %% } -type put_metric_stream_input() :: #{binary() => any()}. %% Example: %% put_dashboard_output() :: #{ %% <<"DashboardValidationMessages">> => list(dashboard_validation_message()()) %% } -type put_dashboard_output() :: #{binary() => any()}. %% Example: %% start_metric_streams_output() :: #{ %% } -type start_metric_streams_output() :: #{binary() => any()}. %% Example: %% dashboard_validation_message() :: #{ %% <<"DataPath">> => string(), %% <<"Message">> => string() %% } -type dashboard_validation_message() :: #{binary() => any()}. %% Example: %% delete_anomaly_detector_output() :: #{ %% } -type delete_anomaly_detector_output() :: #{binary() => any()}. %% Example: %% managed_rule_description() :: #{ %% <<"ResourceARN">> => string(), %% <<"RuleState">> => managed_rule_state(), %% <<"TemplateName">> => string() %% } -type managed_rule_description() :: #{binary() => any()}. %% Example: %% get_metric_statistics_output() :: #{ %% <<"Datapoints">> => list(datapoint()()), %% <<"Label">> => string() %% } -type get_metric_statistics_output() :: #{binary() => any()}. %% Example: %% list_metric_streams_input() :: #{ %% <<"MaxResults">> => integer(), %% <<"NextToken">> => string() %% } -type list_metric_streams_input() :: #{binary() => any()}. %% Example: %% delete_insight_rules_input() :: #{ %% <<"RuleNames">> := list(string()()) %% } -type delete_insight_rules_input() :: #{binary() => any()}. %% Example: %% delete_metric_stream_output() :: #{ %% } -type delete_metric_stream_output() :: #{binary() => any()}. %% Example: %% metric_stat() :: #{ %% <<"Metric">> => metric(), %% <<"Period">> => integer(), %% <<"Stat">> => string(), %% <<"Unit">> => list(any()) %% } -type metric_stat() :: #{binary() => any()}. %% Example: %% untag_resource_input() :: #{ %% <<"ResourceARN">> := string(), %% <<"TagKeys">> := list(string()()) %% } -type untag_resource_input() :: #{binary() => any()}. %% Example: %% insight_rule() :: #{ %% <<"Definition">> => string(), %% <<"ManagedRule">> => boolean(), %% <<"Name">> => string(), %% <<"Schema">> => string(), %% <<"State">> => string() %% } -type insight_rule() :: #{binary() => any()}. %% Example: %% list_dashboards_output() :: #{ %% <<"DashboardEntries">> => list(dashboard_entry()()), %% <<"NextToken">> => string() %% } -type list_dashboards_output() :: #{binary() => any()}. %% Example: %% concurrent_modification_exception() :: #{ %% <<"Message">> => string() %% } -type concurrent_modification_exception() :: #{binary() => any()}. %% Example: %% list_tags_for_resource_input() :: #{ %% <<"ResourceARN">> := string() %% } -type list_tags_for_resource_input() :: #{binary() => any()}. %% Example: %% untag_resource_output() :: #{ %% } -type untag_resource_output() :: #{binary() => any()}. %% Example: %% get_metric_data_input() :: #{ %% <<"EndTime">> := non_neg_integer(), %% <<"LabelOptions">> => label_options(), %% <<"MaxDatapoints">> => integer(), %% <<"MetricDataQueries">> := list(metric_data_query()()), %% <<"NextToken">> => string(), %% <<"ScanBy">> => list(any()), %% <<"StartTime">> := non_neg_integer() %% } -type get_metric_data_input() :: #{binary() => any()}. %% Example: %% describe_alarm_history_output() :: #{ %% <<"AlarmHistoryItems">> => list(alarm_history_item()()), %% <<"NextToken">> => string() %% } -type describe_alarm_history_output() :: #{binary() => any()}. %% Example: %% composite_alarm() :: #{ %% <<"ActionsEnabled">> => boolean(), %% <<"ActionsSuppressedBy">> => list(any()), %% <<"ActionsSuppressedReason">> => string(), %% <<"ActionsSuppressor">> => string(), %% <<"ActionsSuppressorExtensionPeriod">> => integer(), %% <<"ActionsSuppressorWaitPeriod">> => integer(), %% <<"AlarmActions">> => list(string()()), %% <<"AlarmArn">> => string(), %% <<"AlarmConfigurationUpdatedTimestamp">> => non_neg_integer(), %% <<"AlarmDescription">> => string(), %% <<"AlarmName">> => string(), %% <<"AlarmRule">> => string(), %% <<"InsufficientDataActions">> => list(string()()), %% <<"OKActions">> => list(string()()), %% <<"StateReason">> => string(), %% <<"StateReasonData">> => string(), %% <<"StateTransitionedTimestamp">> => non_neg_integer(), %% <<"StateUpdatedTimestamp">> => non_neg_integer(), %% <<"StateValue">> => list(any()) %% } -type composite_alarm() :: #{binary() => any()}. %% Example: %% get_dashboard_output() :: #{ %% <<"DashboardArn">> => string(), %% <<"DashboardBody">> => string(), %% <<"DashboardName">> => string() %% } -type get_dashboard_output() :: #{binary() => any()}. %% Example: %% metric_alarm() :: #{ %% <<"ActionsEnabled">> => boolean(), %% <<"AlarmActions">> => list(string()()), %% <<"AlarmArn">> => string(), %% <<"AlarmConfigurationUpdatedTimestamp">> => non_neg_integer(), %% <<"AlarmDescription">> => string(), %% <<"AlarmName">> => string(), %% <<"ComparisonOperator">> => list(any()), %% <<"DatapointsToAlarm">> => integer(), %% <<"Dimensions">> => list(dimension()()), %% <<"EvaluateLowSampleCountPercentile">> => string(), %% <<"EvaluationPeriods">> => integer(), %% <<"EvaluationState">> => list(any()), %% <<"ExtendedStatistic">> => string(), %% <<"InsufficientDataActions">> => list(string()()), %% <<"MetricName">> => string(), %% <<"Metrics">> => list(metric_data_query()()), %% <<"Namespace">> => string(), %% <<"OKActions">> => list(string()()), %% <<"Period">> => integer(), %% <<"StateReason">> => string(), %% <<"StateReasonData">> => string(), %% <<"StateTransitionedTimestamp">> => non_neg_integer(), %% <<"StateUpdatedTimestamp">> => non_neg_integer(), %% <<"StateValue">> => list(any()), %% <<"Statistic">> => list(any()), %% <<"Threshold">> => float(), %% <<"ThresholdMetricId">> => string(), %% <<"TreatMissingData">> => string(), %% <<"Unit">> => list(any()) %% } -type metric_alarm() :: #{binary() => any()}. %% Example: %% limit_exceeded_exception() :: #{ %% <<"Message">> => string() %% } -type limit_exceeded_exception() :: #{binary() => any()}. %% Example: %% dimension() :: #{ %% <<"Name">> => string(), %% <<"Value">> => string() %% } -type dimension() :: #{binary() => any()}. %% Example: %% internal_service_fault() :: #{ %% <<"Message">> => string() %% } -type internal_service_fault() :: #{binary() => any()}. %% Example: %% anomaly_detector() :: #{ %% <<"Configuration">> => anomaly_detector_configuration(), %% <<"Dimensions">> => list(dimension()()), %% <<"MetricMathAnomalyDetector">> => metric_math_anomaly_detector(), %% <<"MetricName">> => string(), %% <<"Namespace">> => string(), %% <<"SingleMetricAnomalyDetector">> => single_metric_anomaly_detector(), %% <<"Stat">> => string(), %% <<"StateValue">> => list(any()) %% } -type anomaly_detector() :: #{binary() => any()}. %% Example: %% put_anomaly_detector_output() :: #{ %% } -type put_anomaly_detector_output() :: #{binary() => any()}. %% Example: %% describe_alarms_for_metric_output() :: #{ %% <<"MetricAlarms">> => list(metric_alarm()()) %% } -type describe_alarms_for_metric_output() :: #{binary() => any()}. %% Example: %% dimension_filter() :: #{ %% <<"Name">> => string(), %% <<"Value">> => string() %% } -type dimension_filter() :: #{binary() => any()}. %% Example: %% list_managed_insight_rules_input() :: #{ %% <<"MaxResults">> => integer(), %% <<"NextToken">> => string(), %% <<"ResourceARN">> := string() %% } -type list_managed_insight_rules_input() :: #{binary() => any()}. %% Example: %% put_dashboard_input() :: #{ %% <<"DashboardBody">> := string(), %% <<"DashboardName">> := string() %% } -type put_dashboard_input() :: #{binary() => any()}. %% Example: %% describe_insight_rules_output() :: #{ %% <<"InsightRules">> => list(insight_rule()()), %% <<"NextToken">> => string() %% } -type describe_insight_rules_output() :: #{binary() => any()}. %% Example: %% stop_metric_streams_input() :: #{ %% <<"Names">> := list(string()()) %% } -type stop_metric_streams_input() :: #{binary() => any()}. %% Example: %% invalid_next_token() :: #{ %% <<"message">> => string() %% } -type invalid_next_token() :: #{binary() => any()}. %% Example: %% metric_data_result() :: #{ %% <<"Id">> => string(), %% <<"Label">> => string(), %% <<"Messages">> => list(message_data()()), %% <<"StatusCode">> => list(any()), %% <<"Timestamps">> => list(non_neg_integer()()), %% <<"Values">> => list(float()()) %% } -type metric_data_result() :: #{binary() => any()}. %% Example: %% partial_failure() :: #{ %% <<"ExceptionType">> => string(), %% <<"FailureCode">> => string(), %% <<"FailureDescription">> => string(), %% <<"FailureResource">> => string() %% } -type partial_failure() :: #{binary() => any()}. %% Example: %% describe_insight_rules_input() :: #{ %% <<"MaxResults">> => integer(), %% <<"NextToken">> => string() %% } -type describe_insight_rules_input() :: #{binary() => any()}. %% Example: %% get_dashboard_input() :: #{ %% <<"DashboardName">> := string() %% } -type get_dashboard_input() :: #{binary() => any()}. %% Example: %% statistic_set() :: #{ %% <<"Maximum">> => float(), %% <<"Minimum">> => float(), %% <<"SampleCount">> => float(), %% <<"Sum">> => float() %% } -type statistic_set() :: #{binary() => any()}. %% Example: %% get_metric_statistics_input() :: #{ %% <<"Dimensions">> => list(dimension()()), %% <<"EndTime">> := non_neg_integer(), %% <<"ExtendedStatistics">> => list(string()()), %% <<"MetricName">> := string(), %% <<"Namespace">> := string(), %% <<"Period">> := integer(), %% <<"StartTime">> := non_neg_integer(), %% <<"Statistics">> => list(list(any())()), %% <<"Unit">> => list(any()) %% } -type get_metric_statistics_input() :: #{binary() => any()}. %% Example: %% delete_insight_rules_output() :: #{ %% <<"Failures">> => list(partial_failure()()) %% } -type delete_insight_rules_output() :: #{binary() => any()}. -type delete_alarms_errors() :: resource_not_found(). -type delete_anomaly_detector_errors() :: internal_service_fault() | invalid_parameter_value_exception() | resource_not_found_exception() | invalid_parameter_combination_exception() | missing_required_parameter_exception(). -type delete_dashboards_errors() :: internal_service_fault() | invalid_parameter_value_exception() | dashboard_not_found_error(). -type delete_insight_rules_errors() :: invalid_parameter_value_exception() | missing_required_parameter_exception(). -type delete_metric_stream_errors() :: internal_service_fault() | invalid_parameter_value_exception() | missing_required_parameter_exception(). -type describe_alarm_history_errors() :: invalid_next_token(). -type describe_alarms_errors() :: invalid_next_token(). -type describe_anomaly_detectors_errors() :: invalid_next_token() | internal_service_fault() | invalid_parameter_value_exception() | invalid_parameter_combination_exception(). -type describe_insight_rules_errors() :: invalid_next_token(). -type disable_insight_rules_errors() :: invalid_parameter_value_exception() | missing_required_parameter_exception(). -type enable_insight_rules_errors() :: limit_exceeded_exception() | invalid_parameter_value_exception() | missing_required_parameter_exception(). -type get_dashboard_errors() :: internal_service_fault() | invalid_parameter_value_exception() | dashboard_not_found_error(). -type get_insight_rule_report_errors() :: invalid_parameter_value_exception() | resource_not_found_exception() | missing_required_parameter_exception(). -type get_metric_data_errors() :: invalid_next_token(). -type get_metric_statistics_errors() :: internal_service_fault() | invalid_parameter_value_exception() | invalid_parameter_combination_exception() | missing_required_parameter_exception(). -type get_metric_stream_errors() :: internal_service_fault() | invalid_parameter_value_exception() | resource_not_found_exception() | invalid_parameter_combination_exception() | missing_required_parameter_exception(). -type list_dashboards_errors() :: internal_service_fault() | invalid_parameter_value_exception(). -type list_managed_insight_rules_errors() :: invalid_next_token() | invalid_parameter_value_exception() | missing_required_parameter_exception(). -type list_metric_streams_errors() :: invalid_next_token() | internal_service_fault() | invalid_parameter_value_exception() | missing_required_parameter_exception(). -type list_metrics_errors() :: internal_service_fault() | invalid_parameter_value_exception(). -type list_tags_for_resource_errors() :: internal_service_fault() | invalid_parameter_value_exception() | resource_not_found_exception(). -type put_anomaly_detector_errors() :: internal_service_fault() | limit_exceeded_exception() | invalid_parameter_value_exception() | invalid_parameter_combination_exception() | missing_required_parameter_exception(). -type put_composite_alarm_errors() :: limit_exceeded_fault(). -type put_dashboard_errors() :: internal_service_fault() | dashboard_invalid_input_error(). -type put_insight_rule_errors() :: limit_exceeded_exception() | invalid_parameter_value_exception() | missing_required_parameter_exception(). -type put_managed_insight_rules_errors() :: invalid_parameter_value_exception() | missing_required_parameter_exception(). -type put_metric_alarm_errors() :: limit_exceeded_fault(). -type put_metric_data_errors() :: internal_service_fault() | invalid_parameter_value_exception() | invalid_parameter_combination_exception() | missing_required_parameter_exception(). -type put_metric_stream_errors() :: internal_service_fault() | concurrent_modification_exception() | invalid_parameter_value_exception() | invalid_parameter_combination_exception() | missing_required_parameter_exception(). -type set_alarm_state_errors() :: invalid_format_fault() | resource_not_found(). -type start_metric_streams_errors() :: internal_service_fault() | invalid_parameter_value_exception() | missing_required_parameter_exception(). -type stop_metric_streams_errors() :: internal_service_fault() | invalid_parameter_value_exception() | missing_required_parameter_exception(). -type tag_resource_errors() :: internal_service_fault() | concurrent_modification_exception() | invalid_parameter_value_exception() | resource_not_found_exception(). -type untag_resource_errors() :: internal_service_fault() | concurrent_modification_exception() | invalid_parameter_value_exception() | resource_not_found_exception(). %%==================================================================== %% API %%==================================================================== %% @doc Deletes the specified alarms. %% %% You can delete up to 100 alarms in one operation. However, this total can %% include no more %% than one composite alarm. For example, you could delete 99 metric alarms %% and one composite alarms with one operation, but you can't %% delete two composite alarms with one operation. %% %% If you specify an incorrect alarm name or make any other error in the %% operation, no alarms are %% deleted. To confirm that alarms were deleted successfully, you can use %% the DescribeAlarms: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DescribeAlarms.html %% operation after using %% `DeleteAlarms'. %% %% It is possible to create a loop or cycle of composite alarms, where %% composite alarm A depends on composite alarm B, and %% composite alarm B also depends on composite alarm A. In this scenario, you %% can't delete any composite alarm that is part of the cycle %% because there is always still a composite alarm that depends on that alarm %% that you want to delete. %% %% To get out of such a situation, you must %% break the cycle by changing the rule of one of the composite alarms in the %% cycle to remove a dependency that creates the cycle. The simplest %% change to make to break a cycle is to change the `AlarmRule' of one of %% the alarms to `false'. %% %% Additionally, the evaluation of composite alarms stops if CloudWatch %% detects a cycle in the evaluation path. -spec delete_alarms(aws_client:aws_client(), delete_alarms_input()) -> {ok, undefined, tuple()} | {error, any()} | {error, delete_alarms_errors(), tuple()}. delete_alarms(Client, Input) when is_map(Client), is_map(Input) -> delete_alarms(Client, Input, []). -spec delete_alarms(aws_client:aws_client(), delete_alarms_input(), proplists:proplist()) -> {ok, undefined, tuple()} | {error, any()} | {error, delete_alarms_errors(), tuple()}. delete_alarms(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteAlarms">>, Input, Options). %% @doc %% Deletes the specified anomaly detection model %% from your account. %% %% For more information %% about %% how to delete an anomaly detection model, %% see Deleting an anomaly detection model: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create_Anomaly_Detection_Alarm.html#Delete_Anomaly_Detection_Model %% in the CloudWatch User Guide. -spec delete_anomaly_detector(aws_client:aws_client(), delete_anomaly_detector_input()) -> {ok, delete_anomaly_detector_output(), tuple()} | {error, any()} | {error, delete_anomaly_detector_errors(), tuple()}. delete_anomaly_detector(Client, Input) when is_map(Client), is_map(Input) -> delete_anomaly_detector(Client, Input, []). -spec delete_anomaly_detector(aws_client:aws_client(), delete_anomaly_detector_input(), proplists:proplist()) -> {ok, delete_anomaly_detector_output(), tuple()} | {error, any()} | {error, delete_anomaly_detector_errors(), tuple()}. delete_anomaly_detector(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteAnomalyDetector">>, Input, Options). %% @doc Deletes all dashboards that you specify. %% %% You %% can specify up to 100 dashboards to delete. If there is an error during %% this call, no dashboards are %% deleted. -spec delete_dashboards(aws_client:aws_client(), delete_dashboards_input()) -> {ok, delete_dashboards_output(), tuple()} | {error, any()} | {error, delete_dashboards_errors(), tuple()}. delete_dashboards(Client, Input) when is_map(Client), is_map(Input) -> delete_dashboards(Client, Input, []). -spec delete_dashboards(aws_client:aws_client(), delete_dashboards_input(), proplists:proplist()) -> {ok, delete_dashboards_output(), tuple()} | {error, any()} | {error, delete_dashboards_errors(), tuple()}. delete_dashboards(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteDashboards">>, Input, Options). %% @doc Permanently deletes the specified Contributor Insights rules. %% %% If you create a rule, delete it, and then re-create it with the same name, %% historical data from the first time %% the rule was created might %% not be available. -spec delete_insight_rules(aws_client:aws_client(), delete_insight_rules_input()) -> {ok, delete_insight_rules_output(), tuple()} | {error, any()} | {error, delete_insight_rules_errors(), tuple()}. delete_insight_rules(Client, Input) when is_map(Client), is_map(Input) -> delete_insight_rules(Client, Input, []). -spec delete_insight_rules(aws_client:aws_client(), delete_insight_rules_input(), proplists:proplist()) -> {ok, delete_insight_rules_output(), tuple()} | {error, any()} | {error, delete_insight_rules_errors(), tuple()}. delete_insight_rules(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteInsightRules">>, Input, Options). %% @doc Permanently deletes the metric stream that you specify. -spec delete_metric_stream(aws_client:aws_client(), delete_metric_stream_input()) -> {ok, delete_metric_stream_output(), tuple()} | {error, any()} | {error, delete_metric_stream_errors(), tuple()}. delete_metric_stream(Client, Input) when is_map(Client), is_map(Input) -> delete_metric_stream(Client, Input, []). -spec delete_metric_stream(aws_client:aws_client(), delete_metric_stream_input(), proplists:proplist()) -> {ok, delete_metric_stream_output(), tuple()} | {error, any()} | {error, delete_metric_stream_errors(), tuple()}. delete_metric_stream(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteMetricStream">>, Input, Options). %% @doc Retrieves the history for the specified alarm. %% %% You can filter the results by date range or item type. %% If an alarm name is not specified, the histories for either all metric %% alarms or all composite alarms are returned. %% %% CloudWatch retains the history of an alarm even if you delete the alarm. %% %% To use this operation and return information about a composite alarm, you %% must be signed on with %% the `cloudwatch:DescribeAlarmHistory' permission that is scoped to %% `*'. You can't return information %% about composite alarms if your `cloudwatch:DescribeAlarmHistory' %% permission has a narrower scope. -spec describe_alarm_history(aws_client:aws_client(), describe_alarm_history_input()) -> {ok, describe_alarm_history_output(), tuple()} | {error, any()} | {error, describe_alarm_history_errors(), tuple()}. describe_alarm_history(Client, Input) when is_map(Client), is_map(Input) -> describe_alarm_history(Client, Input, []). -spec describe_alarm_history(aws_client:aws_client(), describe_alarm_history_input(), proplists:proplist()) -> {ok, describe_alarm_history_output(), tuple()} | {error, any()} | {error, describe_alarm_history_errors(), tuple()}. describe_alarm_history(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeAlarmHistory">>, Input, Options). %% @doc Retrieves the specified alarms. %% %% You can filter the results by specifying a prefix for the alarm %% name, the alarm state, or a prefix for any action. %% %% To use this operation and return information about composite alarms, you %% must be signed on with %% the `cloudwatch:DescribeAlarms' permission that is scoped to `*'. %% You can't return information %% about composite alarms if your `cloudwatch:DescribeAlarms' permission %% has a narrower scope. -spec describe_alarms(aws_client:aws_client(), describe_alarms_input()) -> {ok, describe_alarms_output(), tuple()} | {error, any()} | {error, describe_alarms_errors(), tuple()}. describe_alarms(Client, Input) when is_map(Client), is_map(Input) -> describe_alarms(Client, Input, []). -spec describe_alarms(aws_client:aws_client(), describe_alarms_input(), proplists:proplist()) -> {ok, describe_alarms_output(), tuple()} | {error, any()} | {error, describe_alarms_errors(), tuple()}. describe_alarms(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeAlarms">>, Input, Options). %% @doc Retrieves the alarms for the specified metric. %% %% To %% filter the results, specify a statistic, period, or unit. %% %% This operation retrieves only standard alarms that are based on %% the specified metric. It does not return alarms based on math expressions %% that %% use the specified metric, or composite alarms that use the specified %% metric. -spec describe_alarms_for_metric(aws_client:aws_client(), describe_alarms_for_metric_input()) -> {ok, describe_alarms_for_metric_output(), tuple()} | {error, any()}. describe_alarms_for_metric(Client, Input) when is_map(Client), is_map(Input) -> describe_alarms_for_metric(Client, Input, []). -spec describe_alarms_for_metric(aws_client:aws_client(), describe_alarms_for_metric_input(), proplists:proplist()) -> {ok, describe_alarms_for_metric_output(), tuple()} | {error, any()}. describe_alarms_for_metric(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeAlarmsForMetric">>, Input, Options). %% @doc Lists the anomaly detection models that you have created in your %% account. %% %% For single metric anomaly detectors, %% you can list all of the models in your account or filter the results %% to only the models that are related to a certain namespace, metric name, %% or metric dimension. %% For metric math anomaly detectors, %% you can list them by adding `METRIC_MATH' to the %% `AnomalyDetectorTypes' array. %% This will return all metric math anomaly detectors in your account. -spec describe_anomaly_detectors(aws_client:aws_client(), describe_anomaly_detectors_input()) -> {ok, describe_anomaly_detectors_output(), tuple()} | {error, any()} | {error, describe_anomaly_detectors_errors(), tuple()}. describe_anomaly_detectors(Client, Input) when is_map(Client), is_map(Input) -> describe_anomaly_detectors(Client, Input, []). -spec describe_anomaly_detectors(aws_client:aws_client(), describe_anomaly_detectors_input(), proplists:proplist()) -> {ok, describe_anomaly_detectors_output(), tuple()} | {error, any()} | {error, describe_anomaly_detectors_errors(), tuple()}. describe_anomaly_detectors(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeAnomalyDetectors">>, Input, Options). %% @doc Returns a list of all the Contributor Insights rules in your account. %% %% For more information about Contributor Insights, see %% Using Contributor Insights to Analyze High-Cardinality Data: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContributorInsights.html. -spec describe_insight_rules(aws_client:aws_client(), describe_insight_rules_input()) -> {ok, describe_insight_rules_output(), tuple()} | {error, any()} | {error, describe_insight_rules_errors(), tuple()}. describe_insight_rules(Client, Input) when is_map(Client), is_map(Input) -> describe_insight_rules(Client, Input, []). -spec describe_insight_rules(aws_client:aws_client(), describe_insight_rules_input(), proplists:proplist()) -> {ok, describe_insight_rules_output(), tuple()} | {error, any()} | {error, describe_insight_rules_errors(), tuple()}. describe_insight_rules(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeInsightRules">>, Input, Options). %% @doc Disables the actions for the specified alarms. %% %% When an alarm's actions are disabled, the %% alarm actions do not execute when the alarm state changes. -spec disable_alarm_actions(aws_client:aws_client(), disable_alarm_actions_input()) -> {ok, undefined, tuple()} | {error, any()}. disable_alarm_actions(Client, Input) when is_map(Client), is_map(Input) -> disable_alarm_actions(Client, Input, []). -spec disable_alarm_actions(aws_client:aws_client(), disable_alarm_actions_input(), proplists:proplist()) -> {ok, undefined, tuple()} | {error, any()}. disable_alarm_actions(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DisableAlarmActions">>, Input, Options). %% @doc Disables the specified Contributor Insights rules. %% %% When rules are disabled, they do not analyze log groups and do %% not incur costs. -spec disable_insight_rules(aws_client:aws_client(), disable_insight_rules_input()) -> {ok, disable_insight_rules_output(), tuple()} | {error, any()} | {error, disable_insight_rules_errors(), tuple()}. disable_insight_rules(Client, Input) when is_map(Client), is_map(Input) -> disable_insight_rules(Client, Input, []). -spec disable_insight_rules(aws_client:aws_client(), disable_insight_rules_input(), proplists:proplist()) -> {ok, disable_insight_rules_output(), tuple()} | {error, any()} | {error, disable_insight_rules_errors(), tuple()}. disable_insight_rules(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DisableInsightRules">>, Input, Options). %% @doc Enables the actions for the specified alarms. -spec enable_alarm_actions(aws_client:aws_client(), enable_alarm_actions_input()) -> {ok, undefined, tuple()} | {error, any()}. enable_alarm_actions(Client, Input) when is_map(Client), is_map(Input) -> enable_alarm_actions(Client, Input, []). -spec enable_alarm_actions(aws_client:aws_client(), enable_alarm_actions_input(), proplists:proplist()) -> {ok, undefined, tuple()} | {error, any()}. enable_alarm_actions(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"EnableAlarmActions">>, Input, Options). %% @doc Enables the specified Contributor Insights rules. %% %% When rules are enabled, they immediately begin analyzing log data. -spec enable_insight_rules(aws_client:aws_client(), enable_insight_rules_input()) -> {ok, enable_insight_rules_output(), tuple()} | {error, any()} | {error, enable_insight_rules_errors(), tuple()}. enable_insight_rules(Client, Input) when is_map(Client), is_map(Input) -> enable_insight_rules(Client, Input, []). -spec enable_insight_rules(aws_client:aws_client(), enable_insight_rules_input(), proplists:proplist()) -> {ok, enable_insight_rules_output(), tuple()} | {error, any()} | {error, enable_insight_rules_errors(), tuple()}. enable_insight_rules(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"EnableInsightRules">>, Input, Options). %% @doc Displays the details of the dashboard that you specify. %% %% To copy an existing dashboard, use `GetDashboard', and then use the %% data returned %% within `DashboardBody' as the template for the new dashboard when you %% call `PutDashboard' to create %% the copy. -spec get_dashboard(aws_client:aws_client(), get_dashboard_input()) -> {ok, get_dashboard_output(), tuple()} | {error, any()} | {error, get_dashboard_errors(), tuple()}. get_dashboard(Client, Input) when is_map(Client), is_map(Input) -> get_dashboard(Client, Input, []). -spec get_dashboard(aws_client:aws_client(), get_dashboard_input(), proplists:proplist()) -> {ok, get_dashboard_output(), tuple()} | {error, any()} | {error, get_dashboard_errors(), tuple()}. get_dashboard(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"GetDashboard">>, Input, Options). %% @doc This operation returns the time series data collected by a %% Contributor Insights rule. %% %% The data includes the identity and number of %% contributors to the log group. %% %% You can also optionally return one or more statistics about each data %% point in the time series. These statistics can include the following: %% %% `UniqueContributors' -- the number of unique contributors for each %% data point. %% %% `MaxContributorValue' -- the value of the top contributor for each %% data point. The identity of the %% contributor might change for each data point in the graph. %% %% If this rule aggregates by COUNT, the top contributor for each data point %% is the contributor with the %% most occurrences in that period. If the rule aggregates by SUM, the top %% contributor is the contributor with the highest sum in the log field %% specified %% by the rule's `Value', during that period. %% %% `SampleCount' -- the number of data points matched by the rule. %% %% `Sum' -- the sum of the values from all contributors during the time %% period represented by that data point. %% %% `Minimum' -- the minimum value from a single observation during the %% time period represented by that data point. %% %% `Maximum' -- the maximum value from a single observation during the %% time period represented by that data point. %% %% `Average' -- the average value from all contributors during the time %% period represented by that data point. -spec get_insight_rule_report(aws_client:aws_client(), get_insight_rule_report_input()) -> {ok, get_insight_rule_report_output(), tuple()} | {error, any()} | {error, get_insight_rule_report_errors(), tuple()}. get_insight_rule_report(Client, Input) when is_map(Client), is_map(Input) -> get_insight_rule_report(Client, Input, []). -spec get_insight_rule_report(aws_client:aws_client(), get_insight_rule_report_input(), proplists:proplist()) -> {ok, get_insight_rule_report_output(), tuple()} | {error, any()} | {error, get_insight_rule_report_errors(), tuple()}. get_insight_rule_report(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"GetInsightRuleReport">>, Input, Options). %% @doc You can use the `GetMetricData' API to retrieve CloudWatch metric %% values. %% %% The operation %% can also include a CloudWatch Metrics Insights query, and one or more %% metric math functions. %% %% A `GetMetricData' operation that does not include a query can retrieve %% as many as 500 different %% metrics in a single request, with a total of as many as 100,800 data %% points. You can also %% optionally perform metric math expressions on the values of the returned %% statistics, to create %% new time series that represent new insights into your data. For example, %% using Lambda %% metrics, you could divide the Errors metric by the Invocations metric to %% get an error %% rate time series. For more information about metric math expressions, see %% Metric Math Syntax and Functions: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax %% in the Amazon CloudWatch User %% Guide. %% %% If you include a Metrics Insights query, each `GetMetricData' %% operation can include only one %% query. But the same `GetMetricData' operation can also retrieve other %% metrics. Metrics Insights queries %% can query only the most recent three hours of metric data. For more %% information about Metrics Insights, %% see Query your metrics with CloudWatch Metrics Insights: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/query_with_cloudwatch-metrics-insights.html. %% %% Calls to the `GetMetricData' API have a different pricing structure %% than %% calls to `GetMetricStatistics'. For more information about pricing, %% see %% Amazon CloudWatch Pricing: https://aws.amazon.com/cloudwatch/pricing/. %% %% Amazon CloudWatch retains metric data as follows: %% %% Data points with a period of less than 60 seconds are available for 3 %% hours. These data points are high-resolution %% metrics and are available only for custom metrics that have been defined %% with a `StorageResolution' of 1. %% %% Data points with a period of 60 seconds (1-minute) are available for 15 %% days. %% %% Data points with a period of 300 seconds (5-minute) are available for 63 %% days. %% %% Data points with a period of 3600 seconds (1 hour) are available for 455 %% days (15 months). %% %% Data points that are initially published with a shorter period are %% aggregated together for long-term storage. For example, if you collect %% data using a period of 1 minute, the data remains available for 15 days %% with 1-minute resolution. After 15 days, this data is still available, %% but is aggregated and retrievable only with a resolution of 5 minutes. %% After 63 days, the data is further aggregated and is available with %% a resolution of 1 hour. %% %% If you omit `Unit' in your request, all data that was collected with %% any unit is returned, along with the corresponding units that were %% specified %% when the data was reported to CloudWatch. If you specify a unit, the %% operation returns only data that was collected with that unit specified. %% If you specify a unit that does not match the data collected, the results %% of the operation are null. CloudWatch does not perform unit conversions. %% %% Using Metrics Insights queries with metric math %% %% You can't mix a Metric Insights query and metric math syntax in the %% same expression, but %% you can reference results from a Metrics Insights query within other %% Metric math expressions. A Metrics Insights %% query without a GROUP BY clause returns a single time-series (TS), %% and can be used as input for a metric math expression that expects a %% single time series. A Metrics Insights %% query with a GROUP BY clause returns an array of time-series (TS[]), %% and can be used as input for a metric math expression that expects an %% array of time series. -spec get_metric_data(aws_client:aws_client(), get_metric_data_input()) -> {ok, get_metric_data_output(), tuple()} | {error, any()} | {error, get_metric_data_errors(), tuple()}. get_metric_data(Client, Input) when is_map(Client), is_map(Input) -> get_metric_data(Client, Input, []). -spec get_metric_data(aws_client:aws_client(), get_metric_data_input(), proplists:proplist()) -> {ok, get_metric_data_output(), tuple()} | {error, any()} | {error, get_metric_data_errors(), tuple()}. get_metric_data(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"GetMetricData">>, Input, Options). %% @doc Gets statistics for the specified metric. %% %% The maximum number of data points returned from a single call is 1,440. If %% you request more than 1,440 data points, CloudWatch returns an error. %% To reduce the number of data points, you can narrow the specified time %% range and make %% multiple requests across adjacent time ranges, or you can increase the %% specified period. %% Data points are not returned in chronological order. %% %% CloudWatch aggregates data points based on the length of the period %% that you specify. For example, if you request statistics with a one-hour %% period, %% CloudWatch aggregates all data points with time stamps that fall within %% each %% one-hour period. Therefore, the number of values aggregated by CloudWatch %% is larger than %% the number of data points returned. %% %% CloudWatch needs raw data points to calculate percentile statistics. If %% you publish %% data using a statistic set instead, you can only retrieve %% percentile statistics for this data if one of the following conditions is %% true: %% %% The SampleCount value of the statistic set is 1. %% %% The Min and the Max values of the statistic set are equal. %% %% Percentile statistics are not available for metrics when any of the metric %% values are negative numbers. %% %% Amazon CloudWatch retains metric data as follows: %% %% Data points with a period of less than 60 seconds are available for 3 %% hours. These data points are high-resolution %% metrics and are available only for custom metrics that have been defined %% with a `StorageResolution' of 1. %% %% Data points with a period of 60 seconds (1-minute) are available for 15 %% days. %% %% Data points with a period of 300 seconds (5-minute) are available for 63 %% days. %% %% Data points with a period of 3600 seconds (1 hour) are available for 455 %% days (15 months). %% %% Data points that are initially published with a shorter period are %% aggregated together for long-term storage. For example, if you collect %% data using a period of 1 minute, the data remains available for 15 days %% with 1-minute resolution. After 15 days, this data is still available, %% but is aggregated and retrievable only with a resolution of 5 minutes. %% After 63 days, the data is further aggregated and is available with %% a resolution of 1 hour. %% %% CloudWatch started retaining 5-minute and 1-hour metric data as of July 9, %% 2016. %% %% For information about metrics and dimensions supported by Amazon Web %% Services services, see the %% Amazon CloudWatch Metrics and Dimensions Reference: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CW_Support_For_AWS.html %% in the %% Amazon CloudWatch User Guide. -spec get_metric_statistics(aws_client:aws_client(), get_metric_statistics_input()) -> {ok, get_metric_statistics_output(), tuple()} | {error, any()} | {error, get_metric_statistics_errors(), tuple()}. get_metric_statistics(Client, Input) when is_map(Client), is_map(Input) -> get_metric_statistics(Client, Input, []). -spec get_metric_statistics(aws_client:aws_client(), get_metric_statistics_input(), proplists:proplist()) -> {ok, get_metric_statistics_output(), tuple()} | {error, any()} | {error, get_metric_statistics_errors(), tuple()}. get_metric_statistics(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"GetMetricStatistics">>, Input, Options). %% @doc Returns information about the metric stream that you specify. -spec get_metric_stream(aws_client:aws_client(), get_metric_stream_input()) -> {ok, get_metric_stream_output(), tuple()} | {error, any()} | {error, get_metric_stream_errors(), tuple()}. get_metric_stream(Client, Input) when is_map(Client), is_map(Input) -> get_metric_stream(Client, Input, []). -spec get_metric_stream(aws_client:aws_client(), get_metric_stream_input(), proplists:proplist()) -> {ok, get_metric_stream_output(), tuple()} | {error, any()} | {error, get_metric_stream_errors(), tuple()}. get_metric_stream(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"GetMetricStream">>, Input, Options). %% @doc You can use the `GetMetricWidgetImage' API to retrieve a snapshot %% graph of %% one or more Amazon CloudWatch metrics as a bitmap image. %% %% You can then embed this %% image into your services and products, such as wiki pages, reports, and %% documents. %% You could also retrieve images regularly, such as every minute, and create %% your own %% custom live dashboard. %% %% The graph you retrieve can include all CloudWatch metric graph features, %% including metric math %% and horizontal and vertical annotations. %% %% There is a limit of 20 transactions per second for this API. Each %% `GetMetricWidgetImage' action has the following limits: %% %% As many as 100 metrics in the graph. %% %% Up to 100 KB uncompressed payload. -spec get_metric_widget_image(aws_client:aws_client(), get_metric_widget_image_input()) -> {ok, get_metric_widget_image_output(), tuple()} | {error, any()}. get_metric_widget_image(Client, Input) when is_map(Client), is_map(Input) -> get_metric_widget_image(Client, Input, []). -spec get_metric_widget_image(aws_client:aws_client(), get_metric_widget_image_input(), proplists:proplist()) -> {ok, get_metric_widget_image_output(), tuple()} | {error, any()}. get_metric_widget_image(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"GetMetricWidgetImage">>, Input, Options). %% @doc Returns a list of the dashboards for your account. %% %% If you include `DashboardNamePrefix', only %% those dashboards with names starting with the prefix are listed. %% Otherwise, all dashboards in your account are %% listed. %% %% `ListDashboards' returns up to 1000 results on one page. If there %% are more than 1000 dashboards, you can call `ListDashboards' again and %% include the value you received for `NextToken' in the first call, to %% receive %% the next 1000 results. -spec list_dashboards(aws_client:aws_client(), list_dashboards_input()) -> {ok, list_dashboards_output(), tuple()} | {error, any()} | {error, list_dashboards_errors(), tuple()}. list_dashboards(Client, Input) when is_map(Client), is_map(Input) -> list_dashboards(Client, Input, []). -spec list_dashboards(aws_client:aws_client(), list_dashboards_input(), proplists:proplist()) -> {ok, list_dashboards_output(), tuple()} | {error, any()} | {error, list_dashboards_errors(), tuple()}. list_dashboards(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ListDashboards">>, Input, Options). %% @doc %% Returns a list %% that contains the number %% of managed Contributor Insights rules %% in your account. -spec list_managed_insight_rules(aws_client:aws_client(), list_managed_insight_rules_input()) -> {ok, list_managed_insight_rules_output(), tuple()} | {error, any()} | {error, list_managed_insight_rules_errors(), tuple()}. list_managed_insight_rules(Client, Input) when is_map(Client), is_map(Input) -> list_managed_insight_rules(Client, Input, []). -spec list_managed_insight_rules(aws_client:aws_client(), list_managed_insight_rules_input(), proplists:proplist()) -> {ok, list_managed_insight_rules_output(), tuple()} | {error, any()} | {error, list_managed_insight_rules_errors(), tuple()}. list_managed_insight_rules(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ListManagedInsightRules">>, Input, Options). %% @doc Returns a list of metric streams in this account. -spec list_metric_streams(aws_client:aws_client(), list_metric_streams_input()) -> {ok, list_metric_streams_output(), tuple()} | {error, any()} | {error, list_metric_streams_errors(), tuple()}. list_metric_streams(Client, Input) when is_map(Client), is_map(Input) -> list_metric_streams(Client, Input, []). -spec list_metric_streams(aws_client:aws_client(), list_metric_streams_input(), proplists:proplist()) -> {ok, list_metric_streams_output(), tuple()} | {error, any()} | {error, list_metric_streams_errors(), tuple()}. list_metric_streams(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ListMetricStreams">>, Input, Options). %% @doc List the specified metrics. %% %% You can use the returned metrics with GetMetricData: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html %% or GetMetricStatistics: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html %% to get statistical data. %% %% Up to 500 results are returned for any one call. To retrieve additional %% results, %% use the returned token with subsequent calls. %% %% After you create a metric, allow up to 15 minutes for the metric to %% appear. To see metric %% statistics sooner, use GetMetricData: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html %% or GetMetricStatistics: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html. %% %% If you are using CloudWatch cross-account observability, you can use this %% operation in a monitoring account and %% view metrics from the linked source accounts. For more information, see %% CloudWatch cross-account observability: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html. %% %% `ListMetrics' doesn't return information about metrics if those %% metrics haven't %% reported data in the past two weeks. To retrieve those metrics, use %% GetMetricData: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html %% or %% GetMetricStatistics: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html. -spec list_metrics(aws_client:aws_client(), list_metrics_input()) -> {ok, list_metrics_output(), tuple()} | {error, any()} | {error, list_metrics_errors(), tuple()}. list_metrics(Client, Input) when is_map(Client), is_map(Input) -> list_metrics(Client, Input, []). -spec list_metrics(aws_client:aws_client(), list_metrics_input(), proplists:proplist()) -> {ok, list_metrics_output(), tuple()} | {error, any()} | {error, list_metrics_errors(), tuple()}. list_metrics(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ListMetrics">>, Input, Options). %% @doc Displays the tags associated with a CloudWatch resource. %% %% Currently, alarms %% and Contributor Insights rules support tagging. -spec list_tags_for_resource(aws_client:aws_client(), list_tags_for_resource_input()) -> {ok, list_tags_for_resource_output(), tuple()} | {error, any()} | {error, list_tags_for_resource_errors(), tuple()}. list_tags_for_resource(Client, Input) when is_map(Client), is_map(Input) -> list_tags_for_resource(Client, Input, []). -spec list_tags_for_resource(aws_client:aws_client(), list_tags_for_resource_input(), proplists:proplist()) -> {ok, list_tags_for_resource_output(), tuple()} | {error, any()} | {error, list_tags_for_resource_errors(), tuple()}. list_tags_for_resource(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"ListTagsForResource">>, Input, Options). %% @doc Creates an anomaly detection model for a CloudWatch metric. %% %% You can use the model %% to display a band of expected normal values when the metric is graphed. %% %% For more information, see CloudWatch Anomaly Detection: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Anomaly_Detection.html. -spec put_anomaly_detector(aws_client:aws_client(), put_anomaly_detector_input()) -> {ok, put_anomaly_detector_output(), tuple()} | {error, any()} | {error, put_anomaly_detector_errors(), tuple()}. put_anomaly_detector(Client, Input) when is_map(Client), is_map(Input) -> put_anomaly_detector(Client, Input, []). -spec put_anomaly_detector(aws_client:aws_client(), put_anomaly_detector_input(), proplists:proplist()) -> {ok, put_anomaly_detector_output(), tuple()} | {error, any()} | {error, put_anomaly_detector_errors(), tuple()}. put_anomaly_detector(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"PutAnomalyDetector">>, Input, Options). %% @doc 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. %% %% Currently, the only alarm actions that can be taken by composite alarms %% are notifying %% SNS topics. %% %% It is possible to create a loop or cycle of composite alarms, where %% composite alarm A depends on composite alarm B, and %% composite alarm B also depends on composite alarm A. In this scenario, you %% can't delete any composite alarm that is part of the cycle %% because there is always still a composite alarm that depends on that alarm %% that you want to delete. %% %% To get out of such a situation, you must %% break the cycle by changing the rule of one of the composite alarms in the %% cycle to remove a dependency that creates the cycle. The simplest %% change to make to break a cycle is to change the `AlarmRule' of one of %% the alarms to `false'. %% %% Additionally, the evaluation of composite alarms stops if CloudWatch %% detects a cycle in the evaluation path. %% %% 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. For a %% composite alarm, this initial time after creation is the only time that %% the %% alarm can be in `INSUFFICIENT_DATA' state. %% %% When you update an existing alarm, its state is left unchanged, but the %% update %% completely overwrites the previous configuration of the alarm. %% %% To use this operation, you must be signed on with %% the `cloudwatch:PutCompositeAlarm' permission that is scoped to %% `*'. You can't create a %% composite alarms if your `cloudwatch:PutCompositeAlarm' permission has %% a narrower scope. %% %% If you are an IAM user, you must have `iam:CreateServiceLinkedRole' to %% create %% a composite alarm that has Systems Manager OpsItem actions. -spec put_composite_alarm(aws_client:aws_client(), put_composite_alarm_input()) -> {ok, undefined, tuple()} | {error, any()} | {error, put_composite_alarm_errors(), tuple()}. put_composite_alarm(Client, Input) when is_map(Client), is_map(Input) -> put_composite_alarm(Client, Input, []). -spec put_composite_alarm(aws_client:aws_client(), put_composite_alarm_input(), proplists:proplist()) -> {ok, undefined, tuple()} | {error, any()} | {error, put_composite_alarm_errors(), tuple()}. put_composite_alarm(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"PutCompositeAlarm">>, Input, Options). %% @doc Creates a dashboard if it does not already exist, or updates an %% existing dashboard. %% %% If you update a dashboard, %% the entire contents are replaced with what you specify here. %% %% All dashboards in your account are global, not region-specific. %% %% A simple way to create a dashboard using `PutDashboard' is to copy an %% existing dashboard. To copy an existing dashboard using the console, you %% can load the dashboard %% and then use the View/edit source command in the Actions menu to display %% the JSON block %% for that dashboard. Another way to copy a dashboard is to %% use `GetDashboard', and then use the data returned %% within `DashboardBody' as the template for the new dashboard when you %% call `PutDashboard'. %% %% When you create a dashboard with `PutDashboard', a good practice is to %% add a text widget at the top of the dashboard with a message that the %% dashboard was created by script and should %% not be changed in the console. This message could also point console users %% to the location %% of the `DashboardBody' script or the CloudFormation template used to %% create the %% dashboard. -spec put_dashboard(aws_client:aws_client(), put_dashboard_input()) -> {ok, put_dashboard_output(), tuple()} | {error, any()} | {error, put_dashboard_errors(), tuple()}. put_dashboard(Client, Input) when is_map(Client), is_map(Input) -> put_dashboard(Client, Input, []). -spec put_dashboard(aws_client:aws_client(), put_dashboard_input(), proplists:proplist()) -> {ok, put_dashboard_output(), tuple()} | {error, any()} | {error, put_dashboard_errors(), tuple()}. put_dashboard(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"PutDashboard">>, Input, Options). %% @doc Creates a Contributor Insights rule. %% %% Rules evaluate log events in a %% CloudWatch Logs log group, enabling you to find contributor data for the %% log events in that log group. For more information, %% see Using Contributor Insights to Analyze High-Cardinality Data: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContributorInsights.html. %% %% If you create a rule, delete it, and then re-create it with the same name, %% historical data from the first time %% the rule was created might not be available. -spec put_insight_rule(aws_client:aws_client(), put_insight_rule_input()) -> {ok, put_insight_rule_output(), tuple()} | {error, any()} | {error, put_insight_rule_errors(), tuple()}. put_insight_rule(Client, Input) when is_map(Client), is_map(Input) -> put_insight_rule(Client, Input, []). -spec put_insight_rule(aws_client:aws_client(), put_insight_rule_input(), proplists:proplist()) -> {ok, put_insight_rule_output(), tuple()} | {error, any()} | {error, put_insight_rule_errors(), tuple()}. put_insight_rule(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"PutInsightRule">>, Input, Options). %% @doc %% Creates a managed Contributor Insights rule %% for a specified Amazon Web Services resource. %% %% When you enable a managed rule, %% you create a Contributor Insights rule %% that collects data %% from Amazon Web Services services. %% You cannot edit these rules %% with `PutInsightRule'. %% The rules can be enabled, disabled, and deleted using %% `EnableInsightRules', `DisableInsightRules', and %% `DeleteInsightRules'. %% If a previously created managed rule is currently disabled, %% a subsequent call %% to this API will re-enable it. %% Use `ListManagedInsightRules' %% to describe all available rules. -spec put_managed_insight_rules(aws_client:aws_client(), put_managed_insight_rules_input()) -> {ok, put_managed_insight_rules_output(), tuple()} | {error, any()} | {error, put_managed_insight_rules_errors(), tuple()}. put_managed_insight_rules(Client, Input) when is_map(Client), is_map(Input) -> put_managed_insight_rules(Client, Input, []). -spec put_managed_insight_rules(aws_client:aws_client(), put_managed_insight_rules_input(), proplists:proplist()) -> {ok, put_managed_insight_rules_output(), tuple()} | {error, any()} | {error, put_managed_insight_rules_errors(), tuple()}. put_managed_insight_rules(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"PutManagedInsightRules">>, Input, Options). %% @doc 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: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create_Metrics_Insights_Alarm.html. %% %% 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 `iam:CreateServiceLinkedRole' permission for all alarms with EC2 %% actions %% %% The `iam:CreateServiceLinkedRole' permissions to create an alarm %% with Systems Manager OpsItem or response plan actions. %% %% 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: %% https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-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: %% %% The account where the metrics are located (the sharing account) must %% already have a sharing role named CloudWatch-CrossAccountSharingRole. If %% it does not already %% have this role, you must create it using the instructions in Set up a %% sharing account in %% Cross-account cross-Region CloudWatch console: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html#enable-cross-account-cross-Region. %% The policy for that %% role must grant access %% to the ID of the account where you are creating the alarm. %% %% The account where you are creating the alarm (the monitoring account) must %% already have a service-linked role named %% AWSServiceRoleForCloudWatchCrossAccount to allow %% CloudWatch to assume the sharing role in the sharing account. If it does %% not, you must create it following the directions in Set up a %% monitoring account in %% Cross-account cross-Region CloudWatch console: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html#enable-cross-account-cross-Region. -spec put_metric_alarm(aws_client:aws_client(), put_metric_alarm_input()) -> {ok, undefined, tuple()} | {error, any()} | {error, put_metric_alarm_errors(), tuple()}. put_metric_alarm(Client, Input) when is_map(Client), is_map(Input) -> put_metric_alarm(Client, Input, []). -spec put_metric_alarm(aws_client:aws_client(), put_metric_alarm_input(), proplists:proplist()) -> {ok, undefined, tuple()} | {error, any()} | {error, put_metric_alarm_errors(), tuple()}. put_metric_alarm(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"PutMetricAlarm">>, Input, Options). %% @doc Publishes metric data points to Amazon CloudWatch. %% %% CloudWatch associates %% the data points with the specified metric. If the specified metric does %% not exist, %% CloudWatch creates the metric. When CloudWatch creates a metric, it can %% take up to fifteen minutes for the metric to appear in calls to %% ListMetrics: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html. %% %% You can publish either individual data points in the `Value' field, or %% arrays of values and the number of times each value occurred during the %% period by using the %% `Values' and `Counts' fields in the `MetricDatum' structure. %% Using %% the `Values' and `Counts' method enables you to publish up to 150 %% values per metric %% with one `PutMetricData' request, and %% supports retrieving percentile statistics on this data. %% %% Each `PutMetricData' request is limited to 1 MB in size for HTTP POST %% requests. You can %% send a payload compressed by gzip. Each request %% is also limited to no more than 1000 different metrics. %% %% Although the `Value' parameter accepts numbers of type %% `Double', CloudWatch rejects values that are either too small %% or too large. Values must be in the range of -2^360 to 2^360. In addition, %% special values (for example, NaN, +Infinity, %% -Infinity) are not supported. %% %% You can use up to 30 dimensions per metric to further clarify what data %% the metric collects. Each dimension %% consists of a Name and Value pair. For more information about specifying %% dimensions, see Publishing Metrics: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html %% in the %% Amazon CloudWatch User Guide. %% %% You specify the time stamp to be associated with each data point. You can %% specify %% time stamps that are as much as two weeks before the current date, and as %% much as 2 hours after %% the current day and time. %% %% Data points with time stamps from 24 hours ago or longer can take at least %% 48 %% hours to become available for GetMetricData: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html %% or %% GetMetricStatistics: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html %% from the time they %% are submitted. Data points with time stamps between 3 and 24 hours ago can %% take as much as 2 hours to become available %% for for GetMetricData: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html %% or %% GetMetricStatistics: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html. %% %% CloudWatch needs raw data points to calculate percentile statistics. If %% you publish %% data using a statistic set instead, you can only retrieve %% percentile statistics for this data if one of the following conditions is %% true: %% %% The `SampleCount' value of the statistic set is 1 and `Min', %% `Max', and `Sum' are all equal. %% %% The `Min' and %% `Max' are equal, and `Sum' is equal to `Min' %% multiplied by `SampleCount'. -spec put_metric_data(aws_client:aws_client(), put_metric_data_input()) -> {ok, undefined, tuple()} | {error, any()} | {error, put_metric_data_errors(), tuple()}. put_metric_data(Client, Input) when is_map(Client), is_map(Input) -> put_metric_data(Client, Input, []). -spec put_metric_data(aws_client:aws_client(), put_metric_data_input(), proplists:proplist()) -> {ok, undefined, tuple()} | {error, any()} | {error, put_metric_data_errors(), tuple()}. put_metric_data(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"PutMetricData">>, Input, Options). %% @doc Creates or updates a metric stream. %% %% Metric streams can automatically stream CloudWatch %% metrics to Amazon Web Services destinations, including Amazon S3, and to %% many third-party %% solutions. %% %% For more information, see %% Using Metric Streams: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Metric-Streams.html. %% %% To create a metric stream, you must be signed in to an account that has %% the %% `iam:PassRole' permission and either the %% `CloudWatchFullAccess' policy or the %% `cloudwatch:PutMetricStream' permission. %% %% When you create or update a metric stream, you choose one of the %% following: %% %% Stream metrics from all metric namespaces in the account. %% %% Stream metrics from all metric namespaces in the account, except %% for the namespaces that you list in `ExcludeFilters'. %% %% Stream metrics from only the metric namespaces that you list in %% `IncludeFilters'. %% %% By default, a metric stream always sends the `MAX', `MIN', %% `SUM', and `SAMPLECOUNT' statistics for each metric that is %% streamed. You can use the `StatisticsConfigurations' parameter to have %% the %% metric stream send additional statistics in the stream. Streaming %% additional statistics %% incurs additional costs. For more information, see Amazon CloudWatch %% Pricing: https://aws.amazon.com/cloudwatch/pricing/. %% %% When you use `PutMetricStream' to create a new metric stream, the %% stream %% is created in the `running' state. If you use it to update an existing %% stream, %% the state of the stream is not changed. %% %% If you are using CloudWatch cross-account observability and you create a %% metric stream in a monitoring account, %% you can choose whether to include metrics from source accounts in the %% stream. For more information, see %% CloudWatch cross-account observability: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html. -spec put_metric_stream(aws_client:aws_client(), put_metric_stream_input()) -> {ok, put_metric_stream_output(), tuple()} | {error, any()} | {error, put_metric_stream_errors(), tuple()}. put_metric_stream(Client, Input) when is_map(Client), is_map(Input) -> put_metric_stream(Client, Input, []). -spec put_metric_stream(aws_client:aws_client(), put_metric_stream_input(), proplists:proplist()) -> {ok, put_metric_stream_output(), tuple()} | {error, any()} | {error, put_metric_stream_errors(), tuple()}. put_metric_stream(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"PutMetricStream">>, Input, Options). %% @doc Temporarily sets the state of an alarm for testing purposes. %% %% When the updated %% state differs from the previous value, the action configured for %% the appropriate state is invoked. For example, if your alarm is configured %% to send an %% Amazon SNS message when an alarm is triggered, temporarily changing the %% alarm state to %% `ALARM' sends an SNS message. %% %% Metric alarms %% returns to their actual state quickly, often within seconds. Because the %% metric alarm state change %% happens quickly, it is typically only visible in the alarm's History %% tab in the Amazon CloudWatch console or through %% DescribeAlarmHistory: %% https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DescribeAlarmHistory.html. %% %% If you use `SetAlarmState' on a composite alarm, the composite alarm %% is not guaranteed to return %% to its actual state. It %% returns to its actual state only once any of its children alarms change %% state. It is also %% reevaluated if you update its %% configuration. %% %% If an alarm triggers EC2 Auto Scaling policies or application Auto Scaling %% policies, you must include %% information in the `StateReasonData' parameter to enable the policy to %% take the correct action. -spec set_alarm_state(aws_client:aws_client(), set_alarm_state_input()) -> {ok, undefined, tuple()} | {error, any()} | {error, set_alarm_state_errors(), tuple()}. set_alarm_state(Client, Input) when is_map(Client), is_map(Input) -> set_alarm_state(Client, Input, []). -spec set_alarm_state(aws_client:aws_client(), set_alarm_state_input(), proplists:proplist()) -> {ok, undefined, tuple()} | {error, any()} | {error, set_alarm_state_errors(), tuple()}. set_alarm_state(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"SetAlarmState">>, Input, Options). %% @doc Starts the streaming of metrics for one or more of your metric %% streams. -spec start_metric_streams(aws_client:aws_client(), start_metric_streams_input()) -> {ok, start_metric_streams_output(), tuple()} | {error, any()} | {error, start_metric_streams_errors(), tuple()}. start_metric_streams(Client, Input) when is_map(Client), is_map(Input) -> start_metric_streams(Client, Input, []). -spec start_metric_streams(aws_client:aws_client(), start_metric_streams_input(), proplists:proplist()) -> {ok, start_metric_streams_output(), tuple()} | {error, any()} | {error, start_metric_streams_errors(), tuple()}. start_metric_streams(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"StartMetricStreams">>, Input, Options). %% @doc Stops the streaming of metrics for one or more of your metric %% streams. -spec stop_metric_streams(aws_client:aws_client(), stop_metric_streams_input()) -> {ok, stop_metric_streams_output(), tuple()} | {error, any()} | {error, stop_metric_streams_errors(), tuple()}. stop_metric_streams(Client, Input) when is_map(Client), is_map(Input) -> stop_metric_streams(Client, Input, []). -spec stop_metric_streams(aws_client:aws_client(), stop_metric_streams_input(), proplists:proplist()) -> {ok, stop_metric_streams_output(), tuple()} | {error, any()} | {error, stop_metric_streams_errors(), tuple()}. stop_metric_streams(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"StopMetricStreams">>, Input, Options). %% @doc Assigns one or more tags (key-value pairs) to the specified %% CloudWatch resource. %% %% Currently, the only CloudWatch resources that %% can be tagged are alarms and Contributor Insights rules. %% %% 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. %% %% Tags don't have any semantic meaning to Amazon Web Services and are %% interpreted strictly as strings of characters. %% %% You can use the `TagResource' action with an alarm that already has %% tags. If you specify a new tag key for the alarm, %% this tag is appended to the list of tags associated %% with the alarm. If you specify a tag key that is already associated with %% the alarm, the new tag value that you specify replaces %% the previous value for that tag. %% %% You can associate as many as 50 tags with a CloudWatch resource. -spec tag_resource(aws_client:aws_client(), tag_resource_input()) -> {ok, tag_resource_output(), tuple()} | {error, any()} | {error, tag_resource_errors(), tuple()}. tag_resource(Client, Input) when is_map(Client), is_map(Input) -> tag_resource(Client, Input, []). -spec tag_resource(aws_client:aws_client(), tag_resource_input(), proplists:proplist()) -> {ok, tag_resource_output(), tuple()} | {error, any()} | {error, tag_resource_errors(), tuple()}. tag_resource(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"TagResource">>, Input, Options). %% @doc Removes one or more tags from the specified resource. -spec untag_resource(aws_client:aws_client(), untag_resource_input()) -> {ok, untag_resource_output(), tuple()} | {error, any()} | {error, untag_resource_errors(), tuple()}. untag_resource(Client, Input) when is_map(Client), is_map(Input) -> untag_resource(Client, Input, []). -spec untag_resource(aws_client:aws_client(), untag_resource_input(), proplists:proplist()) -> {ok, untag_resource_output(), tuple()} | {error, any()} | {error, untag_resource_errors(), tuple()}. untag_resource(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"UntagResource">>, Input, Options). %%==================================================================== %% Internal functions %%==================================================================== -spec request(aws_client:aws_client(), binary(), map(), list()) -> {ok, Result, {integer(), list(), hackney:client()}} | {error, Error, {integer(), list(), hackney:client()}} | {error, term()} when Result :: map() | undefined, Error :: map(). request(Client, Action, Input, Options) -> RequestFun = fun() -> do_request(Client, Action, Input, Options) end, aws_request:request(RequestFun, Options). do_request(Client, Action, Input0, Options) -> Client1 = Client#{service => <<"monitoring">>}, Host = build_host(<<"monitoring">>, Client1), URL = build_url(Host, Client1), Headers = [ {<<"Host">>, Host}, {<<"Content-Type">>, <<"application/x-www-form-urlencoded">>} ], Input = Input0#{ <<"Action">> => Action , <<"Version">> => <<"2010-08-01">> }, Payload = aws_util:encode_query(Input), SignedHeaders = aws_request:sign_request(Client1, <<"POST">>, URL, Headers, Payload), Response = hackney:request(post, URL, SignedHeaders, Payload, Options), handle_response(Response). handle_response({ok, 200, ResponseHeaders, Client}) -> case hackney:body(Client) of {ok, <<>>} -> {ok, undefined, {200, ResponseHeaders, Client}}; {ok, Body} -> Result = aws_util:decode_xml(Body), {ok, Result, {200, ResponseHeaders, Client}} end; handle_response({ok, StatusCode, ResponseHeaders, Client}) -> {ok, Body} = hackney:body(Client), Error = aws_util:decode_xml(Body), {error, Error, {StatusCode, ResponseHeaders, Client}}; handle_response({error, Reason}) -> {error, Reason}. build_host(_EndpointPrefix, #{region := <<"local">>, endpoint := Endpoint}) -> Endpoint; build_host(_EndpointPrefix, #{region := <<"local">>}) -> <<"localhost">>; build_host(EndpointPrefix, #{region := Region, endpoint := Endpoint}) -> aws_util:binary_join([EndpointPrefix, Region, Endpoint], <<".">>). build_url(Host, Client) -> Proto = aws_client:proto(Client), Port = aws_client:port(Client), aws_util:binary_join([Proto, <<"://">>, Host, <<":">>, Port, <<"/">>], <<"">>).