Current section

Files

Jump to
aws_erlang src aws_cloudwatch.erl
Raw

src/aws_cloudwatch.erl

%% 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, <<"/">>], <<"">>).