%% WARNING: DO NOT EDIT, AUTO-GENERATED CODE! %% See https://github.com/aws-beam/aws-codegen for more details. %% @doc With Application Auto Scaling, you can configure automatic scaling %% for the following %% resources: %% %% Amazon AppStream 2.0 fleets %% %% Amazon Aurora Replicas %% %% Amazon Comprehend document classification and entity recognizer endpoints %% %% Amazon DynamoDB tables and global secondary indexes throughput capacity %% %% Amazon ECS services %% %% Amazon ElastiCache replication groups (Redis OSS and Valkey) and Memcached %% clusters %% %% Amazon EMR clusters %% %% Amazon Keyspaces (for Apache Cassandra) tables %% %% Lambda function provisioned concurrency %% %% Amazon Managed Streaming for Apache Kafka broker storage %% %% Amazon Neptune clusters %% %% Amazon SageMaker endpoint variants %% %% Amazon SageMaker inference components %% %% Amazon SageMaker serverless endpoint provisioned concurrency %% %% Spot Fleets (Amazon EC2) %% %% Pool of WorkSpaces %% %% Custom resources provided by your own applications or services %% %% To learn more about Application Auto Scaling, see the Application Auto %% Scaling User %% Guide: %% https://docs.aws.amazon.com/autoscaling/application/userguide/what-is-application-auto-scaling.html. %% %% API Summary %% %% The Application Auto Scaling service API includes three key sets of %% actions: %% %% Register and manage scalable targets - Register Amazon Web Services or %% custom resources as scalable %% targets (a resource that Application Auto Scaling can scale), set minimum %% and maximum capacity limits, and %% retrieve information on existing scalable targets. %% %% Configure and manage automatic scaling - Define scaling policies to %% dynamically scale %% your resources in response to CloudWatch alarms, schedule one-time or %% recurring scaling actions, %% and retrieve your recent scaling activity history. %% %% Suspend and resume scaling - Temporarily suspend and later resume %% automatic scaling by %% calling the RegisterScalableTarget: %% https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html %% API action for any Application Auto Scaling scalable target. You can %% suspend and resume (individually or in combination) scale-out activities %% that are %% triggered by a scaling policy, scale-in activities that are triggered by a %% scaling policy, %% and scheduled scaling. -module(aws_application_auto_scaling). -export([delete_scaling_policy/2, delete_scaling_policy/3, delete_scheduled_action/2, delete_scheduled_action/3, deregister_scalable_target/2, deregister_scalable_target/3, describe_scalable_targets/2, describe_scalable_targets/3, describe_scaling_activities/2, describe_scaling_activities/3, describe_scaling_policies/2, describe_scaling_policies/3, describe_scheduled_actions/2, describe_scheduled_actions/3, get_predictive_scaling_forecast/2, get_predictive_scaling_forecast/3, list_tags_for_resource/2, list_tags_for_resource/3, put_scaling_policy/2, put_scaling_policy/3, put_scheduled_action/2, put_scheduled_action/3, register_scalable_target/2, register_scalable_target/3, tag_resource/2, tag_resource/3, untag_resource/2, untag_resource/3]). -include_lib("hackney/include/hackney_lib.hrl"). %% Example: %% step_adjustment() :: #{ %% <<"MetricIntervalLowerBound">> => float(), %% <<"MetricIntervalUpperBound">> => float(), %% <<"ScalingAdjustment">> => integer() %% } -type step_adjustment() :: #{binary() => any()}. %% Example: %% predictive_scaling_metric_specification() :: #{ %% <<"CustomizedCapacityMetricSpecification">> => predictive_scaling_customized_metric_specification(), %% <<"CustomizedLoadMetricSpecification">> => predictive_scaling_customized_metric_specification(), %% <<"CustomizedScalingMetricSpecification">> => predictive_scaling_customized_metric_specification(), %% <<"PredefinedLoadMetricSpecification">> => predictive_scaling_predefined_load_metric_specification(), %% <<"PredefinedMetricPairSpecification">> => predictive_scaling_predefined_metric_pair_specification(), %% <<"PredefinedScalingMetricSpecification">> => predictive_scaling_predefined_scaling_metric_specification(), %% <<"TargetValue">> => float() %% } -type predictive_scaling_metric_specification() :: #{binary() => any()}. %% Example: %% tag_resource_request() :: #{ %% <<"ResourceARN">> := string(), %% <<"Tags">> := map() %% } -type tag_resource_request() :: #{binary() => any()}. %% Example: %% get_predictive_scaling_forecast_request() :: #{ %% <<"EndTime">> := non_neg_integer(), %% <<"PolicyName">> := string(), %% <<"ResourceId">> := string(), %% <<"ScalableDimension">> := list(any()), %% <<"ServiceNamespace">> := list(any()), %% <<"StartTime">> := non_neg_integer() %% } -type get_predictive_scaling_forecast_request() :: #{binary() => any()}. %% Example: %% describe_scaling_policies_request() :: #{ %% <<"MaxResults">> => integer(), %% <<"NextToken">> => string(), %% <<"PolicyNames">> => list(string()), %% <<"ResourceId">> => string(), %% <<"ScalableDimension">> => list(any()), %% <<"ServiceNamespace">> := list(any()) %% } -type describe_scaling_policies_request() :: #{binary() => any()}. %% Example: %% predictive_scaling_metric_dimension() :: #{ %% <<"Name">> => string(), %% <<"Value">> => string() %% } -type predictive_scaling_metric_dimension() :: #{binary() => any()}. %% Example: %% delete_scheduled_action_response() :: #{ %% } -type delete_scheduled_action_response() :: #{binary() => any()}. %% Example: %% untag_resource_response() :: #{ %% } -type untag_resource_response() :: #{binary() => any()}. %% Example: %% predictive_scaling_predefined_scaling_metric_specification() :: #{ %% <<"PredefinedMetricType">> => string(), %% <<"ResourceLabel">> => string() %% } -type predictive_scaling_predefined_scaling_metric_specification() :: #{binary() => any()}. %% Example: %% alarm() :: #{ %% <<"AlarmARN">> => string(), %% <<"AlarmName">> => string() %% } -type alarm() :: #{binary() => any()}. %% Example: %% target_tracking_scaling_policy_configuration() :: #{ %% <<"CustomizedMetricSpecification">> => customized_metric_specification(), %% <<"DisableScaleIn">> => boolean(), %% <<"PredefinedMetricSpecification">> => predefined_metric_specification(), %% <<"ScaleInCooldown">> => integer(), %% <<"ScaleOutCooldown">> => integer(), %% <<"TargetValue">> => float() %% } -type target_tracking_scaling_policy_configuration() :: #{binary() => any()}. %% Example: %% get_predictive_scaling_forecast_response() :: #{ %% <<"CapacityForecast">> => capacity_forecast(), %% <<"LoadForecast">> => list(load_forecast()), %% <<"UpdateTime">> => non_neg_integer() %% } -type get_predictive_scaling_forecast_response() :: #{binary() => any()}. %% Example: %% deregister_scalable_target_request() :: #{ %% <<"ResourceId">> := string(), %% <<"ScalableDimension">> := list(any()), %% <<"ServiceNamespace">> := list(any()) %% } -type deregister_scalable_target_request() :: #{binary() => any()}. %% Example: %% scaling_policy() :: #{ %% <<"Alarms">> => list(alarm()), %% <<"CreationTime">> => non_neg_integer(), %% <<"PolicyARN">> => string(), %% <<"PolicyName">> => string(), %% <<"PolicyType">> => list(any()), %% <<"PredictiveScalingPolicyConfiguration">> => predictive_scaling_policy_configuration(), %% <<"ResourceId">> => string(), %% <<"ScalableDimension">> => list(any()), %% <<"ServiceNamespace">> => list(any()), %% <<"StepScalingPolicyConfiguration">> => step_scaling_policy_configuration(), %% <<"TargetTrackingScalingPolicyConfiguration">> => target_tracking_scaling_policy_configuration() %% } -type scaling_policy() :: #{binary() => any()}. %% Example: %% internal_service_exception() :: #{ %% <<"Message">> => string() %% } -type internal_service_exception() :: #{binary() => any()}. %% Example: %% describe_scheduled_actions_response() :: #{ %% <<"NextToken">> => string(), %% <<"ScheduledActions">> => list(scheduled_action()) %% } -type describe_scheduled_actions_response() :: #{binary() => any()}. %% Example: %% describe_scheduled_actions_request() :: #{ %% <<"MaxResults">> => integer(), %% <<"NextToken">> => string(), %% <<"ResourceId">> => string(), %% <<"ScalableDimension">> => list(any()), %% <<"ScheduledActionNames">> => list(string()), %% <<"ServiceNamespace">> := list(any()) %% } -type describe_scheduled_actions_request() :: #{binary() => any()}. %% Example: %% untag_resource_request() :: #{ %% <<"ResourceARN">> := string(), %% <<"TagKeys">> := list(string()) %% } -type untag_resource_request() :: #{binary() => any()}. %% Example: %% predictive_scaling_predefined_load_metric_specification() :: #{ %% <<"PredefinedMetricType">> => string(), %% <<"ResourceLabel">> => string() %% } -type predictive_scaling_predefined_load_metric_specification() :: #{binary() => any()}. %% Example: %% customized_metric_specification() :: #{ %% <<"Dimensions">> => list(metric_dimension()), %% <<"MetricName">> => string(), %% <<"Metrics">> => list(target_tracking_metric_data_query()), %% <<"Namespace">> => string(), %% <<"Statistic">> => list(any()), %% <<"Unit">> => string() %% } -type customized_metric_specification() :: #{binary() => any()}. %% Example: %% describe_scaling_activities_response() :: #{ %% <<"NextToken">> => string(), %% <<"ScalingActivities">> => list(scaling_activity()) %% } -type describe_scaling_activities_response() :: #{binary() => any()}. %% Example: %% suspended_state() :: #{ %% <<"DynamicScalingInSuspended">> => boolean(), %% <<"DynamicScalingOutSuspended">> => boolean(), %% <<"ScheduledScalingSuspended">> => boolean() %% } -type suspended_state() :: #{binary() => any()}. %% Example: %% resource_not_found_exception() :: #{ %% <<"Message">> => string(), %% <<"ResourceName">> => string() %% } -type resource_not_found_exception() :: #{binary() => any()}. %% Example: %% load_forecast() :: #{ %% <<"MetricSpecification">> => predictive_scaling_metric_specification(), %% <<"Timestamps">> => list(non_neg_integer()), %% <<"Values">> => list(float()) %% } -type load_forecast() :: #{binary() => any()}. %% Example: %% invalid_next_token_exception() :: #{ %% <<"Message">> => string() %% } -type invalid_next_token_exception() :: #{binary() => any()}. %% Example: %% target_tracking_metric_stat() :: #{ %% <<"Metric">> => target_tracking_metric(), %% <<"Stat">> => string(), %% <<"Unit">> => string() %% } -type target_tracking_metric_stat() :: #{binary() => any()}. %% Example: %% scheduled_action() :: #{ %% <<"CreationTime">> => non_neg_integer(), %% <<"EndTime">> => non_neg_integer(), %% <<"ResourceId">> => string(), %% <<"ScalableDimension">> => list(any()), %% <<"ScalableTargetAction">> => scalable_target_action(), %% <<"Schedule">> => string(), %% <<"ScheduledActionARN">> => string(), %% <<"ScheduledActionName">> => string(), %% <<"ServiceNamespace">> => list(any()), %% <<"StartTime">> => non_neg_integer(), %% <<"Timezone">> => string() %% } -type scheduled_action() :: #{binary() => any()}. %% Example: %% predictive_scaling_predefined_metric_pair_specification() :: #{ %% <<"PredefinedMetricType">> => string(), %% <<"ResourceLabel">> => string() %% } -type predictive_scaling_predefined_metric_pair_specification() :: #{binary() => any()}. %% Example: %% scaling_activity() :: #{ %% <<"ActivityId">> => string(), %% <<"Cause">> => string(), %% <<"Description">> => string(), %% <<"Details">> => string(), %% <<"EndTime">> => non_neg_integer(), %% <<"NotScaledReasons">> => list(not_scaled_reason()), %% <<"ResourceId">> => string(), %% <<"ScalableDimension">> => list(any()), %% <<"ServiceNamespace">> => list(any()), %% <<"StartTime">> => non_neg_integer(), %% <<"StatusCode">> => list(any()), %% <<"StatusMessage">> => string() %% } -type scaling_activity() :: #{binary() => any()}. %% Example: %% list_tags_for_resource_response() :: #{ %% <<"Tags">> => map() %% } -type list_tags_for_resource_response() :: #{binary() => any()}. %% Example: %% register_scalable_target_request() :: #{ %% <<"MaxCapacity">> => integer(), %% <<"MinCapacity">> => integer(), %% <<"ResourceId">> := string(), %% <<"RoleARN">> => string(), %% <<"ScalableDimension">> := list(any()), %% <<"ServiceNamespace">> := list(any()), %% <<"SuspendedState">> => suspended_state(), %% <<"Tags">> => map() %% } -type register_scalable_target_request() :: #{binary() => any()}. %% Example: %% step_scaling_policy_configuration() :: #{ %% <<"AdjustmentType">> => list(any()), %% <<"Cooldown">> => integer(), %% <<"MetricAggregationType">> => list(any()), %% <<"MinAdjustmentMagnitude">> => integer(), %% <<"StepAdjustments">> => list(step_adjustment()) %% } -type step_scaling_policy_configuration() :: #{binary() => any()}. %% Example: %% describe_scaling_activities_request() :: #{ %% <<"IncludeNotScaledActivities">> => boolean(), %% <<"MaxResults">> => integer(), %% <<"NextToken">> => string(), %% <<"ResourceId">> => string(), %% <<"ScalableDimension">> => list(any()), %% <<"ServiceNamespace">> := list(any()) %% } -type describe_scaling_activities_request() :: #{binary() => any()}. %% Example: %% target_tracking_metric() :: #{ %% <<"Dimensions">> => list(target_tracking_metric_dimension()), %% <<"MetricName">> => string(), %% <<"Namespace">> => string() %% } -type target_tracking_metric() :: #{binary() => any()}. %% Example: %% metric_dimension() :: #{ %% <<"Name">> => string(), %% <<"Value">> => string() %% } -type metric_dimension() :: #{binary() => any()}. %% Example: %% predictive_scaling_customized_metric_specification() :: #{ %% <<"MetricDataQueries">> => list(predictive_scaling_metric_data_query()) %% } -type predictive_scaling_customized_metric_specification() :: #{binary() => any()}. %% Example: %% put_scaling_policy_response() :: #{ %% <<"Alarms">> => list(alarm()), %% <<"PolicyARN">> => string() %% } -type put_scaling_policy_response() :: #{binary() => any()}. %% Example: %% predictive_scaling_metric_data_query() :: #{ %% <<"Expression">> => string(), %% <<"Id">> => string(), %% <<"Label">> => string(), %% <<"MetricStat">> => predictive_scaling_metric_stat(), %% <<"ReturnData">> => boolean() %% } -type predictive_scaling_metric_data_query() :: #{binary() => any()}. %% Example: %% scalable_target_action() :: #{ %% <<"MaxCapacity">> => integer(), %% <<"MinCapacity">> => integer() %% } -type scalable_target_action() :: #{binary() => any()}. %% Example: %% describe_scalable_targets_request() :: #{ %% <<"MaxResults">> => integer(), %% <<"NextToken">> => string(), %% <<"ResourceIds">> => list(string()), %% <<"ScalableDimension">> => list(any()), %% <<"ServiceNamespace">> := list(any()) %% } -type describe_scalable_targets_request() :: #{binary() => any()}. %% Example: %% describe_scaling_policies_response() :: #{ %% <<"NextToken">> => string(), %% <<"ScalingPolicies">> => list(scaling_policy()) %% } -type describe_scaling_policies_response() :: #{binary() => any()}. %% Example: %% delete_scaling_policy_request() :: #{ %% <<"PolicyName">> := string(), %% <<"ResourceId">> := string(), %% <<"ScalableDimension">> := list(any()), %% <<"ServiceNamespace">> := list(any()) %% } -type delete_scaling_policy_request() :: #{binary() => any()}. %% Example: %% put_scheduled_action_request() :: #{ %% <<"EndTime">> => non_neg_integer(), %% <<"ResourceId">> := string(), %% <<"ScalableDimension">> := list(any()), %% <<"ScalableTargetAction">> => scalable_target_action(), %% <<"Schedule">> => string(), %% <<"ScheduledActionName">> := string(), %% <<"ServiceNamespace">> := list(any()), %% <<"StartTime">> => non_neg_integer(), %% <<"Timezone">> => string() %% } -type put_scheduled_action_request() :: #{binary() => any()}. %% Example: %% object_not_found_exception() :: #{ %% <<"Message">> => string() %% } -type object_not_found_exception() :: #{binary() => any()}. %% Example: %% put_scheduled_action_response() :: #{ %% } -type put_scheduled_action_response() :: #{binary() => any()}. %% Example: %% predefined_metric_specification() :: #{ %% <<"PredefinedMetricType">> => list(any()), %% <<"ResourceLabel">> => string() %% } -type predefined_metric_specification() :: #{binary() => any()}. %% Example: %% scalable_target() :: #{ %% <<"CreationTime">> => non_neg_integer(), %% <<"MaxCapacity">> => integer(), %% <<"MinCapacity">> => integer(), %% <<"PredictedCapacity">> => integer(), %% <<"ResourceId">> => string(), %% <<"RoleARN">> => string(), %% <<"ScalableDimension">> => list(any()), %% <<"ScalableTargetARN">> => string(), %% <<"ServiceNamespace">> => list(any()), %% <<"SuspendedState">> => suspended_state() %% } -type scalable_target() :: #{binary() => any()}. %% Example: %% tag_resource_response() :: #{ %% } -type tag_resource_response() :: #{binary() => any()}. %% Example: %% predictive_scaling_policy_configuration() :: #{ %% <<"MaxCapacityBreachBehavior">> => list(any()), %% <<"MaxCapacityBuffer">> => integer(), %% <<"MetricSpecifications">> => list(predictive_scaling_metric_specification()), %% <<"Mode">> => list(any()), %% <<"SchedulingBufferTime">> => integer() %% } -type predictive_scaling_policy_configuration() :: #{binary() => any()}. %% Example: %% concurrent_update_exception() :: #{ %% <<"Message">> => string() %% } -type concurrent_update_exception() :: #{binary() => any()}. %% Example: %% validation_exception() :: #{ %% <<"Message">> => string() %% } -type validation_exception() :: #{binary() => any()}. %% Example: %% list_tags_for_resource_request() :: #{ %% <<"ResourceARN">> := string() %% } -type list_tags_for_resource_request() :: #{binary() => any()}. %% Example: %% put_scaling_policy_request() :: #{ %% <<"PolicyName">> := string(), %% <<"PolicyType">> => list(any()), %% <<"PredictiveScalingPolicyConfiguration">> => predictive_scaling_policy_configuration(), %% <<"ResourceId">> := string(), %% <<"ScalableDimension">> := list(any()), %% <<"ServiceNamespace">> := list(any()), %% <<"StepScalingPolicyConfiguration">> => step_scaling_policy_configuration(), %% <<"TargetTrackingScalingPolicyConfiguration">> => target_tracking_scaling_policy_configuration() %% } -type put_scaling_policy_request() :: #{binary() => any()}. %% Example: %% delete_scaling_policy_response() :: #{ %% } -type delete_scaling_policy_response() :: #{binary() => any()}. %% Example: %% limit_exceeded_exception() :: #{ %% <<"Message">> => string() %% } -type limit_exceeded_exception() :: #{binary() => any()}. %% Example: %% delete_scheduled_action_request() :: #{ %% <<"ResourceId">> := string(), %% <<"ScalableDimension">> := list(any()), %% <<"ScheduledActionName">> := string(), %% <<"ServiceNamespace">> := list(any()) %% } -type delete_scheduled_action_request() :: #{binary() => any()}. %% Example: %% target_tracking_metric_dimension() :: #{ %% <<"Name">> => string(), %% <<"Value">> => string() %% } -type target_tracking_metric_dimension() :: #{binary() => any()}. %% Example: %% predictive_scaling_metric_stat() :: #{ %% <<"Metric">> => predictive_scaling_metric(), %% <<"Stat">> => string(), %% <<"Unit">> => string() %% } -type predictive_scaling_metric_stat() :: #{binary() => any()}. %% Example: %% describe_scalable_targets_response() :: #{ %% <<"NextToken">> => string(), %% <<"ScalableTargets">> => list(scalable_target()) %% } -type describe_scalable_targets_response() :: #{binary() => any()}. %% Example: %% target_tracking_metric_data_query() :: #{ %% <<"Expression">> => string(), %% <<"Id">> => string(), %% <<"Label">> => string(), %% <<"MetricStat">> => target_tracking_metric_stat(), %% <<"ReturnData">> => boolean() %% } -type target_tracking_metric_data_query() :: #{binary() => any()}. %% Example: %% capacity_forecast() :: #{ %% <<"Timestamps">> => list(non_neg_integer()), %% <<"Values">> => list(float()) %% } -type capacity_forecast() :: #{binary() => any()}. %% Example: %% not_scaled_reason() :: #{ %% <<"Code">> => string(), %% <<"CurrentCapacity">> => integer(), %% <<"MaxCapacity">> => integer(), %% <<"MinCapacity">> => integer() %% } -type not_scaled_reason() :: #{binary() => any()}. %% Example: %% predictive_scaling_metric() :: #{ %% <<"Dimensions">> => list(predictive_scaling_metric_dimension()), %% <<"MetricName">> => string(), %% <<"Namespace">> => string() %% } -type predictive_scaling_metric() :: #{binary() => any()}. %% Example: %% deregister_scalable_target_response() :: #{ %% } -type deregister_scalable_target_response() :: #{binary() => any()}. %% Example: %% too_many_tags_exception() :: #{ %% <<"Message">> => string(), %% <<"ResourceName">> => string() %% } -type too_many_tags_exception() :: #{binary() => any()}. %% Example: %% failed_resource_access_exception() :: #{ %% <<"Message">> => string() %% } -type failed_resource_access_exception() :: #{binary() => any()}. %% Example: %% register_scalable_target_response() :: #{ %% <<"ScalableTargetARN">> => string() %% } -type register_scalable_target_response() :: #{binary() => any()}. -type delete_scaling_policy_errors() :: validation_exception() | concurrent_update_exception() | object_not_found_exception() | internal_service_exception(). -type delete_scheduled_action_errors() :: validation_exception() | concurrent_update_exception() | object_not_found_exception() | internal_service_exception(). -type deregister_scalable_target_errors() :: validation_exception() | concurrent_update_exception() | object_not_found_exception() | internal_service_exception(). -type describe_scalable_targets_errors() :: validation_exception() | concurrent_update_exception() | invalid_next_token_exception() | internal_service_exception(). -type describe_scaling_activities_errors() :: validation_exception() | concurrent_update_exception() | invalid_next_token_exception() | internal_service_exception(). -type describe_scaling_policies_errors() :: failed_resource_access_exception() | validation_exception() | concurrent_update_exception() | invalid_next_token_exception() | internal_service_exception(). -type describe_scheduled_actions_errors() :: validation_exception() | concurrent_update_exception() | invalid_next_token_exception() | internal_service_exception(). -type get_predictive_scaling_forecast_errors() :: validation_exception() | internal_service_exception(). -type list_tags_for_resource_errors() :: resource_not_found_exception(). -type put_scaling_policy_errors() :: failed_resource_access_exception() | limit_exceeded_exception() | validation_exception() | concurrent_update_exception() | object_not_found_exception() | internal_service_exception(). -type put_scheduled_action_errors() :: limit_exceeded_exception() | validation_exception() | concurrent_update_exception() | object_not_found_exception() | internal_service_exception(). -type register_scalable_target_errors() :: limit_exceeded_exception() | validation_exception() | concurrent_update_exception() | internal_service_exception(). -type tag_resource_errors() :: too_many_tags_exception() | validation_exception() | resource_not_found_exception(). -type untag_resource_errors() :: validation_exception() | resource_not_found_exception(). %%==================================================================== %% API %%==================================================================== %% @doc Deletes the specified scaling policy for an Application Auto Scaling %% scalable target. %% %% Deleting a step scaling policy deletes the underlying alarm action, but %% does not delete %% the CloudWatch alarm associated with the scaling policy, even if it no %% longer has an associated %% action. %% %% For more information, see Delete a step scaling policy: %% https://docs.aws.amazon.com/autoscaling/application/userguide/create-step-scaling-policy-cli.html#delete-step-scaling-policy %% and Delete a target tracking scaling policy: %% https://docs.aws.amazon.com/autoscaling/application/userguide/create-target-tracking-policy-cli.html#delete-target-tracking-policy %% in the %% Application Auto Scaling User Guide. -spec delete_scaling_policy(aws_client:aws_client(), delete_scaling_policy_request()) -> {ok, delete_scaling_policy_response(), tuple()} | {error, any()} | {error, delete_scaling_policy_errors(), tuple()}. delete_scaling_policy(Client, Input) when is_map(Client), is_map(Input) -> delete_scaling_policy(Client, Input, []). -spec delete_scaling_policy(aws_client:aws_client(), delete_scaling_policy_request(), proplists:proplist()) -> {ok, delete_scaling_policy_response(), tuple()} | {error, any()} | {error, delete_scaling_policy_errors(), tuple()}. delete_scaling_policy(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteScalingPolicy">>, Input, Options). %% @doc Deletes the specified scheduled action for an Application Auto %% Scaling scalable target. %% %% For more information, see Delete a scheduled action: %% https://docs.aws.amazon.com/autoscaling/application/userguide/scheduled-scaling-additional-cli-commands.html#delete-scheduled-action %% in the Application Auto Scaling User Guide. -spec delete_scheduled_action(aws_client:aws_client(), delete_scheduled_action_request()) -> {ok, delete_scheduled_action_response(), tuple()} | {error, any()} | {error, delete_scheduled_action_errors(), tuple()}. delete_scheduled_action(Client, Input) when is_map(Client), is_map(Input) -> delete_scheduled_action(Client, Input, []). -spec delete_scheduled_action(aws_client:aws_client(), delete_scheduled_action_request(), proplists:proplist()) -> {ok, delete_scheduled_action_response(), tuple()} | {error, any()} | {error, delete_scheduled_action_errors(), tuple()}. delete_scheduled_action(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeleteScheduledAction">>, Input, Options). %% @doc Deregisters an Application Auto Scaling scalable target when you have %% finished using it. %% %% To see which %% resources have been registered, use DescribeScalableTargets: %% https://docs.aws.amazon.com/autoscaling/application/APIReference/API_DescribeScalableTargets.html. %% %% Deregistering a scalable target deletes the scaling policies and the %% scheduled %% actions that are associated with it. -spec deregister_scalable_target(aws_client:aws_client(), deregister_scalable_target_request()) -> {ok, deregister_scalable_target_response(), tuple()} | {error, any()} | {error, deregister_scalable_target_errors(), tuple()}. deregister_scalable_target(Client, Input) when is_map(Client), is_map(Input) -> deregister_scalable_target(Client, Input, []). -spec deregister_scalable_target(aws_client:aws_client(), deregister_scalable_target_request(), proplists:proplist()) -> {ok, deregister_scalable_target_response(), tuple()} | {error, any()} | {error, deregister_scalable_target_errors(), tuple()}. deregister_scalable_target(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DeregisterScalableTarget">>, Input, Options). %% @doc Gets information about the scalable targets in the specified %% namespace. %% %% You can filter the results using `ResourceIds' and %% `ScalableDimension'. -spec describe_scalable_targets(aws_client:aws_client(), describe_scalable_targets_request()) -> {ok, describe_scalable_targets_response(), tuple()} | {error, any()} | {error, describe_scalable_targets_errors(), tuple()}. describe_scalable_targets(Client, Input) when is_map(Client), is_map(Input) -> describe_scalable_targets(Client, Input, []). -spec describe_scalable_targets(aws_client:aws_client(), describe_scalable_targets_request(), proplists:proplist()) -> {ok, describe_scalable_targets_response(), tuple()} | {error, any()} | {error, describe_scalable_targets_errors(), tuple()}. describe_scalable_targets(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeScalableTargets">>, Input, Options). %% @doc Provides descriptive information about the scaling activities in the %% specified namespace %% from the previous six weeks. %% %% You can filter the results using `ResourceId' and %% `ScalableDimension'. %% %% For information about viewing scaling activities using the Amazon Web %% Services CLI, see Scaling activities for Application Auto Scaling: %% https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scaling-activities.html. -spec describe_scaling_activities(aws_client:aws_client(), describe_scaling_activities_request()) -> {ok, describe_scaling_activities_response(), tuple()} | {error, any()} | {error, describe_scaling_activities_errors(), tuple()}. describe_scaling_activities(Client, Input) when is_map(Client), is_map(Input) -> describe_scaling_activities(Client, Input, []). -spec describe_scaling_activities(aws_client:aws_client(), describe_scaling_activities_request(), proplists:proplist()) -> {ok, describe_scaling_activities_response(), tuple()} | {error, any()} | {error, describe_scaling_activities_errors(), tuple()}. describe_scaling_activities(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeScalingActivities">>, Input, Options). %% @doc Describes the Application Auto Scaling scaling policies for the %% specified service namespace. %% %% You can filter the results using `ResourceId', %% `ScalableDimension', and `PolicyNames'. %% %% For more information, see Target tracking scaling policies: %% https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html %% and Step scaling policies: %% https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html %% in the Application Auto Scaling User Guide. -spec describe_scaling_policies(aws_client:aws_client(), describe_scaling_policies_request()) -> {ok, describe_scaling_policies_response(), tuple()} | {error, any()} | {error, describe_scaling_policies_errors(), tuple()}. describe_scaling_policies(Client, Input) when is_map(Client), is_map(Input) -> describe_scaling_policies(Client, Input, []). -spec describe_scaling_policies(aws_client:aws_client(), describe_scaling_policies_request(), proplists:proplist()) -> {ok, describe_scaling_policies_response(), tuple()} | {error, any()} | {error, describe_scaling_policies_errors(), tuple()}. describe_scaling_policies(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeScalingPolicies">>, Input, Options). %% @doc Describes the Application Auto Scaling scheduled actions for the %% specified service namespace. %% %% You can filter the results using the `ResourceId', %% `ScalableDimension', and `ScheduledActionNames' parameters. %% %% For more information, see Scheduled scaling: %% https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html %% in the Application Auto Scaling User Guide. -spec describe_scheduled_actions(aws_client:aws_client(), describe_scheduled_actions_request()) -> {ok, describe_scheduled_actions_response(), tuple()} | {error, any()} | {error, describe_scheduled_actions_errors(), tuple()}. describe_scheduled_actions(Client, Input) when is_map(Client), is_map(Input) -> describe_scheduled_actions(Client, Input, []). -spec describe_scheduled_actions(aws_client:aws_client(), describe_scheduled_actions_request(), proplists:proplist()) -> {ok, describe_scheduled_actions_response(), tuple()} | {error, any()} | {error, describe_scheduled_actions_errors(), tuple()}. describe_scheduled_actions(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeScheduledActions">>, Input, Options). %% @doc Retrieves the forecast data for a predictive scaling policy. %% %% Load forecasts are predictions of the hourly load values using historical %% load data %% from CloudWatch and an analysis of historical trends. Capacity forecasts %% are represented as %% predicted values for the minimum capacity that is needed on an hourly %% basis, based on %% the hourly load forecast. %% %% A minimum of 24 hours of data is required to create the initial forecasts. %% However, %% having a full 14 days of historical data results in more accurate %% forecasts. -spec get_predictive_scaling_forecast(aws_client:aws_client(), get_predictive_scaling_forecast_request()) -> {ok, get_predictive_scaling_forecast_response(), tuple()} | {error, any()} | {error, get_predictive_scaling_forecast_errors(), tuple()}. get_predictive_scaling_forecast(Client, Input) when is_map(Client), is_map(Input) -> get_predictive_scaling_forecast(Client, Input, []). -spec get_predictive_scaling_forecast(aws_client:aws_client(), get_predictive_scaling_forecast_request(), proplists:proplist()) -> {ok, get_predictive_scaling_forecast_response(), tuple()} | {error, any()} | {error, get_predictive_scaling_forecast_errors(), tuple()}. get_predictive_scaling_forecast(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"GetPredictiveScalingForecast">>, Input, Options). %% @doc Returns all the tags on the specified Application Auto Scaling %% scalable target. %% %% For general information about tags, including the format and syntax, see %% Tagging your Amazon Web Services %% resources: https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html %% in the Amazon Web Services General Reference. -spec list_tags_for_resource(aws_client:aws_client(), list_tags_for_resource_request()) -> {ok, list_tags_for_resource_response(), 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_request(), proplists:proplist()) -> {ok, list_tags_for_resource_response(), 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 or updates a scaling policy for an Application Auto Scaling %% scalable target. %% %% Each scalable target is identified by a service namespace, resource ID, %% and scalable %% dimension. A scaling policy applies to the scalable target identified by %% those three %% attributes. You cannot create a scaling policy until you have registered %% the resource as a %% scalable target. %% %% Multiple scaling policies can be in force at the same time for the same %% scalable target. %% You can have one or more target tracking scaling policies, one or more %% step scaling %% policies, or both. However, there is a chance that multiple policies could %% conflict, %% instructing the scalable target to scale out or in at the same time. %% Application Auto Scaling gives %% precedence to the policy that provides the largest capacity for both scale %% out and scale %% in. For example, if one policy increases capacity by 3, another policy %% increases capacity %% by 200 percent, and the current capacity is 10, Application Auto Scaling %% uses the policy with the highest %% calculated capacity (200% of 10 = 20) and scales out to 30. %% %% We recommend caution, however, when using target tracking scaling policies %% with step %% scaling policies because conflicts between these policies can cause %% undesirable behavior. %% For example, if the step scaling policy initiates a scale-in activity %% before the target %% tracking policy is ready to scale in, the scale-in activity will not be %% blocked. After the %% scale-in activity completes, the target tracking policy could instruct the %% scalable target %% to scale out again. %% %% For more information, see Target tracking scaling policies: %% https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html, %% Step scaling policies: %% https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html, %% and Predictive scaling policies: %% https://docs.aws.amazon.com/autoscaling/application/userguide/aas-create-predictive-scaling-policy.html %% in the Application Auto Scaling User Guide. %% %% If a scalable target is deregistered, the scalable target is no longer %% available to %% use scaling policies. Any scaling policies that were specified for the %% scalable target %% are deleted. -spec put_scaling_policy(aws_client:aws_client(), put_scaling_policy_request()) -> {ok, put_scaling_policy_response(), tuple()} | {error, any()} | {error, put_scaling_policy_errors(), tuple()}. put_scaling_policy(Client, Input) when is_map(Client), is_map(Input) -> put_scaling_policy(Client, Input, []). -spec put_scaling_policy(aws_client:aws_client(), put_scaling_policy_request(), proplists:proplist()) -> {ok, put_scaling_policy_response(), tuple()} | {error, any()} | {error, put_scaling_policy_errors(), tuple()}. put_scaling_policy(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"PutScalingPolicy">>, Input, Options). %% @doc Creates or updates a scheduled action for an Application Auto Scaling %% scalable target. %% %% Each scalable target is identified by a service namespace, resource ID, %% and scalable %% dimension. A scheduled action applies to the scalable target identified by %% those three %% attributes. You cannot create a scheduled action until you have registered %% the resource as %% a scalable target. %% %% When you specify start and end times with a recurring schedule using a %% cron expression %% or rates, they form the boundaries for when the recurring action starts %% and stops. %% %% To update a scheduled action, specify the parameters that you want to %% change. If you %% don't specify start and end times, the old values are deleted. %% %% For more information, see Scheduled scaling: %% https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html %% in the Application Auto Scaling User Guide. %% %% If a scalable target is deregistered, the scalable target is no longer %% available to %% run scheduled actions. Any scheduled actions that were specified for the %% scalable target %% are deleted. -spec put_scheduled_action(aws_client:aws_client(), put_scheduled_action_request()) -> {ok, put_scheduled_action_response(), tuple()} | {error, any()} | {error, put_scheduled_action_errors(), tuple()}. put_scheduled_action(Client, Input) when is_map(Client), is_map(Input) -> put_scheduled_action(Client, Input, []). -spec put_scheduled_action(aws_client:aws_client(), put_scheduled_action_request(), proplists:proplist()) -> {ok, put_scheduled_action_response(), tuple()} | {error, any()} | {error, put_scheduled_action_errors(), tuple()}. put_scheduled_action(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"PutScheduledAction">>, Input, Options). %% @doc Registers or updates a scalable target, which is the resource that %% you want to %% scale. %% %% Scalable targets are uniquely identified by the combination of resource %% ID, scalable %% dimension, and namespace, which represents some capacity dimension of the %% underlying %% service. %% %% When you register a new scalable target, you must specify values for the %% minimum and %% maximum capacity. If the specified resource is not active in the target %% service, this %% operation does not change the resource's current capacity. Otherwise, %% it changes the %% resource's current capacity to a value that is inside of this range. %% %% If you add a scaling policy, current capacity is adjustable within the %% specified range %% when scaling starts. Application Auto Scaling scaling policies will not %% scale capacity to values that are %% outside of the minimum and maximum range. %% %% After you register a scalable target, you do not need to register it again %% to use other %% Application Auto Scaling operations. To see which resources have been %% registered, use DescribeScalableTargets: %% https://docs.aws.amazon.com/autoscaling/application/APIReference/API_DescribeScalableTargets.html. %% You can also view the scaling policies for a service %% namespace by using DescribeScalableTargets: %% https://docs.aws.amazon.com/autoscaling/application/APIReference/API_DescribeScalableTargets.html. %% If you no longer need a scalable target, you can %% deregister it by using DeregisterScalableTarget: %% https://docs.aws.amazon.com/autoscaling/application/APIReference/API_DeregisterScalableTarget.html. %% %% To update a scalable target, specify the parameters that you want to %% change. Include the %% parameters that identify the scalable target: resource ID, scalable %% dimension, and %% namespace. Any parameters that you don't specify are not changed by %% this update request. %% %% If you call the `RegisterScalableTarget' API operation to create a %% scalable target, there might be a brief delay until the operation achieves %% eventual %% consistency: https://en.wikipedia.org/wiki/Eventual_consistency. You might %% become aware of this brief delay if you get unexpected %% errors when performing sequential operations. The typical strategy is to %% retry the %% request, and some Amazon Web Services SDKs include automatic backoff and %% retry logic. %% %% If you call the `RegisterScalableTarget' API operation to update an %% existing scalable target, Application Auto Scaling retrieves the current %% capacity of the resource. If %% it's below the minimum capacity or above the maximum capacity, %% Application Auto Scaling adjusts the %% capacity of the scalable target to place it within these bounds, even if %% you don't %% include the `MinCapacity' or `MaxCapacity' request %% parameters. -spec register_scalable_target(aws_client:aws_client(), register_scalable_target_request()) -> {ok, register_scalable_target_response(), tuple()} | {error, any()} | {error, register_scalable_target_errors(), tuple()}. register_scalable_target(Client, Input) when is_map(Client), is_map(Input) -> register_scalable_target(Client, Input, []). -spec register_scalable_target(aws_client:aws_client(), register_scalable_target_request(), proplists:proplist()) -> {ok, register_scalable_target_response(), tuple()} | {error, any()} | {error, register_scalable_target_errors(), tuple()}. register_scalable_target(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RegisterScalableTarget">>, Input, Options). %% @doc Adds or edits tags on an Application Auto Scaling scalable target. %% %% Each tag consists of a tag key and a tag value, which are both %% case-sensitive strings. %% To add a tag, specify a new tag key and a tag value. To edit a tag, %% specify an existing tag %% key and a new tag value. %% %% You can use this operation to tag an Application Auto Scaling scalable %% target, but you cannot tag a %% scaling policy or scheduled action. %% %% You can also add tags to an Application Auto Scaling scalable target while %% creating it %% (`RegisterScalableTarget'). %% %% For general information about tags, including the format and syntax, see %% Tagging your Amazon Web Services %% resources: https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html %% in the Amazon Web Services General Reference. %% %% Use tags to control access to a scalable target. For more information, see %% Tagging support %% for Application Auto Scaling: %% https://docs.aws.amazon.com/autoscaling/application/userguide/resource-tagging-support.html %% in the Application Auto Scaling User Guide. -spec tag_resource(aws_client:aws_client(), tag_resource_request()) -> {ok, tag_resource_response(), 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_request(), proplists:proplist()) -> {ok, tag_resource_response(), 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 Deletes tags from an Application Auto Scaling scalable target. %% %% To delete a tag, specify the tag key and %% the Application Auto Scaling scalable target. -spec untag_resource(aws_client:aws_client(), untag_resource_request()) -> {ok, untag_resource_response(), 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_request(), proplists:proplist()) -> {ok, untag_resource_response(), 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 => <<"application-autoscaling">>}, Host = build_host(<<"application-autoscaling">>, Client1), URL = build_url(Host, Client1), Headers = [ {<<"Host">>, Host}, {<<"Content-Type">>, <<"application/x-amz-json-1.1">>}, {<<"X-Amz-Target">>, <<"AnyScaleFrontendService.", Action/binary>>} ], Input = Input0, Payload = jsx:encode(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 = jsx:decode(Body), {ok, Result, {200, ResponseHeaders, Client}} end; handle_response({ok, StatusCode, ResponseHeaders, Client}) -> {ok, Body} = hackney:body(Client), Error = jsx:decode(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, <<"/">>], <<"">>).