/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace AutoScalingPlans { namespace Model { /** *

Describes a scaling instruction for a scalable resource in a scaling plan. * Each scaling instruction applies to one resource.

AWS Auto Scaling * creates target tracking scaling policies based on the scaling instructions. * Target tracking scaling policies adjust the capacity of your scalable resource * as required to maintain resource utilization at the target value that you * specified.

AWS Auto Scaling also configures predictive scaling for your * Amazon EC2 Auto Scaling groups using a subset of parameters, including the load * metric, the scaling metric, the target value for the scaling metric, the * predictive scaling mode (forecast and scale or forecast only), and the desired * behavior when the forecast capacity exceeds the maximum capacity of the * resource. With predictive scaling, AWS Auto Scaling generates forecasts with * traffic predictions for the two days ahead and schedules scaling actions that * proactively add and remove resource capacity to match the forecast.

*

We recommend waiting a minimum of 24 hours after creating an Auto * Scaling group to configure predictive scaling. At minimum, there must be 24 * hours of historical data to generate a forecast. For more information, see Best * Practices for AWS Auto Scaling in the AWS Auto Scaling User * Guide.

See Also:

AWS * API Reference

*/ class ScalingInstruction { public: AWS_AUTOSCALINGPLANS_API ScalingInstruction(); AWS_AUTOSCALINGPLANS_API ScalingInstruction(Aws::Utils::Json::JsonView jsonValue); AWS_AUTOSCALINGPLANS_API ScalingInstruction& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_AUTOSCALINGPLANS_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The namespace of the AWS service.

*/ inline const ServiceNamespace& GetServiceNamespace() const{ return m_serviceNamespace; } /** *

The namespace of the AWS service.

*/ inline bool ServiceNamespaceHasBeenSet() const { return m_serviceNamespaceHasBeenSet; } /** *

The namespace of the AWS service.

*/ inline void SetServiceNamespace(const ServiceNamespace& value) { m_serviceNamespaceHasBeenSet = true; m_serviceNamespace = value; } /** *

The namespace of the AWS service.

*/ inline void SetServiceNamespace(ServiceNamespace&& value) { m_serviceNamespaceHasBeenSet = true; m_serviceNamespace = std::move(value); } /** *

The namespace of the AWS service.

*/ inline ScalingInstruction& WithServiceNamespace(const ServiceNamespace& value) { SetServiceNamespace(value); return *this;} /** *

The namespace of the AWS service.

*/ inline ScalingInstruction& WithServiceNamespace(ServiceNamespace&& value) { SetServiceNamespace(std::move(value)); return *this;} /** *

The ID of the resource. This string consists of the resource type and unique * identifier.

  • Auto Scaling group - The resource type is * autoScalingGroup and the unique identifier is the name of the Auto * Scaling group. Example: autoScalingGroup/my-asg.

  • *

    ECS service - The resource type is service and the unique * identifier is the cluster name and service name. Example: * service/default/sample-webapp.

  • Spot Fleet request * - The resource type is spot-fleet-request and the unique identifier * is the Spot Fleet request ID. Example: * spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE.

    *
  • DynamoDB table - The resource type is table and the * unique identifier is the resource ID. Example: table/my-table.

    *
  • DynamoDB global secondary index - The resource type is * index and the unique identifier is the resource ID. Example: * table/my-table/index/my-table-index.

  • Aurora DB * cluster - The resource type is cluster and the unique identifier is * the cluster name. Example: cluster:my-db-cluster.

*/ inline const Aws::String& GetResourceId() const{ return m_resourceId; } /** *

The ID of the resource. This string consists of the resource type and unique * identifier.

  • Auto Scaling group - The resource type is * autoScalingGroup and the unique identifier is the name of the Auto * Scaling group. Example: autoScalingGroup/my-asg.

  • *

    ECS service - The resource type is service and the unique * identifier is the cluster name and service name. Example: * service/default/sample-webapp.

  • Spot Fleet request * - The resource type is spot-fleet-request and the unique identifier * is the Spot Fleet request ID. Example: * spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE.

    *
  • DynamoDB table - The resource type is table and the * unique identifier is the resource ID. Example: table/my-table.

    *
  • DynamoDB global secondary index - The resource type is * index and the unique identifier is the resource ID. Example: * table/my-table/index/my-table-index.

  • Aurora DB * cluster - The resource type is cluster and the unique identifier is * the cluster name. Example: cluster:my-db-cluster.

*/ inline bool ResourceIdHasBeenSet() const { return m_resourceIdHasBeenSet; } /** *

The ID of the resource. This string consists of the resource type and unique * identifier.

  • Auto Scaling group - The resource type is * autoScalingGroup and the unique identifier is the name of the Auto * Scaling group. Example: autoScalingGroup/my-asg.

  • *

    ECS service - The resource type is service and the unique * identifier is the cluster name and service name. Example: * service/default/sample-webapp.

  • Spot Fleet request * - The resource type is spot-fleet-request and the unique identifier * is the Spot Fleet request ID. Example: * spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE.

    *
  • DynamoDB table - The resource type is table and the * unique identifier is the resource ID. Example: table/my-table.

    *
  • DynamoDB global secondary index - The resource type is * index and the unique identifier is the resource ID. Example: * table/my-table/index/my-table-index.

  • Aurora DB * cluster - The resource type is cluster and the unique identifier is * the cluster name. Example: cluster:my-db-cluster.

*/ inline void SetResourceId(const Aws::String& value) { m_resourceIdHasBeenSet = true; m_resourceId = value; } /** *

The ID of the resource. This string consists of the resource type and unique * identifier.

  • Auto Scaling group - The resource type is * autoScalingGroup and the unique identifier is the name of the Auto * Scaling group. Example: autoScalingGroup/my-asg.

  • *

    ECS service - The resource type is service and the unique * identifier is the cluster name and service name. Example: * service/default/sample-webapp.

  • Spot Fleet request * - The resource type is spot-fleet-request and the unique identifier * is the Spot Fleet request ID. Example: * spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE.

    *
  • DynamoDB table - The resource type is table and the * unique identifier is the resource ID. Example: table/my-table.

    *
  • DynamoDB global secondary index - The resource type is * index and the unique identifier is the resource ID. Example: * table/my-table/index/my-table-index.

  • Aurora DB * cluster - The resource type is cluster and the unique identifier is * the cluster name. Example: cluster:my-db-cluster.

*/ inline void SetResourceId(Aws::String&& value) { m_resourceIdHasBeenSet = true; m_resourceId = std::move(value); } /** *

The ID of the resource. This string consists of the resource type and unique * identifier.

  • Auto Scaling group - The resource type is * autoScalingGroup and the unique identifier is the name of the Auto * Scaling group. Example: autoScalingGroup/my-asg.

  • *

    ECS service - The resource type is service and the unique * identifier is the cluster name and service name. Example: * service/default/sample-webapp.

  • Spot Fleet request * - The resource type is spot-fleet-request and the unique identifier * is the Spot Fleet request ID. Example: * spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE.

    *
  • DynamoDB table - The resource type is table and the * unique identifier is the resource ID. Example: table/my-table.

    *
  • DynamoDB global secondary index - The resource type is * index and the unique identifier is the resource ID. Example: * table/my-table/index/my-table-index.

  • Aurora DB * cluster - The resource type is cluster and the unique identifier is * the cluster name. Example: cluster:my-db-cluster.

*/ inline void SetResourceId(const char* value) { m_resourceIdHasBeenSet = true; m_resourceId.assign(value); } /** *

The ID of the resource. This string consists of the resource type and unique * identifier.

  • Auto Scaling group - The resource type is * autoScalingGroup and the unique identifier is the name of the Auto * Scaling group. Example: autoScalingGroup/my-asg.

  • *

    ECS service - The resource type is service and the unique * identifier is the cluster name and service name. Example: * service/default/sample-webapp.

  • Spot Fleet request * - The resource type is spot-fleet-request and the unique identifier * is the Spot Fleet request ID. Example: * spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE.

    *
  • DynamoDB table - The resource type is table and the * unique identifier is the resource ID. Example: table/my-table.

    *
  • DynamoDB global secondary index - The resource type is * index and the unique identifier is the resource ID. Example: * table/my-table/index/my-table-index.

  • Aurora DB * cluster - The resource type is cluster and the unique identifier is * the cluster name. Example: cluster:my-db-cluster.

*/ inline ScalingInstruction& WithResourceId(const Aws::String& value) { SetResourceId(value); return *this;} /** *

The ID of the resource. This string consists of the resource type and unique * identifier.

  • Auto Scaling group - The resource type is * autoScalingGroup and the unique identifier is the name of the Auto * Scaling group. Example: autoScalingGroup/my-asg.

  • *

    ECS service - The resource type is service and the unique * identifier is the cluster name and service name. Example: * service/default/sample-webapp.

  • Spot Fleet request * - The resource type is spot-fleet-request and the unique identifier * is the Spot Fleet request ID. Example: * spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE.

    *
  • DynamoDB table - The resource type is table and the * unique identifier is the resource ID. Example: table/my-table.

    *
  • DynamoDB global secondary index - The resource type is * index and the unique identifier is the resource ID. Example: * table/my-table/index/my-table-index.

  • Aurora DB * cluster - The resource type is cluster and the unique identifier is * the cluster name. Example: cluster:my-db-cluster.

*/ inline ScalingInstruction& WithResourceId(Aws::String&& value) { SetResourceId(std::move(value)); return *this;} /** *

The ID of the resource. This string consists of the resource type and unique * identifier.

  • Auto Scaling group - The resource type is * autoScalingGroup and the unique identifier is the name of the Auto * Scaling group. Example: autoScalingGroup/my-asg.

  • *

    ECS service - The resource type is service and the unique * identifier is the cluster name and service name. Example: * service/default/sample-webapp.

  • Spot Fleet request * - The resource type is spot-fleet-request and the unique identifier * is the Spot Fleet request ID. Example: * spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE.

    *
  • DynamoDB table - The resource type is table and the * unique identifier is the resource ID. Example: table/my-table.

    *
  • DynamoDB global secondary index - The resource type is * index and the unique identifier is the resource ID. Example: * table/my-table/index/my-table-index.

  • Aurora DB * cluster - The resource type is cluster and the unique identifier is * the cluster name. Example: cluster:my-db-cluster.

*/ inline ScalingInstruction& WithResourceId(const char* value) { SetResourceId(value); return *this;} /** *

The scalable dimension associated with the resource.

  • * autoscaling:autoScalingGroup:DesiredCapacity - The desired capacity * of an Auto Scaling group.

  • * ecs:service:DesiredCount - The desired task count of an ECS * service.

  • ec2:spot-fleet-request:TargetCapacity - * The target capacity of a Spot Fleet request.

  • * dynamodb:table:ReadCapacityUnits - The provisioned read capacity * for a DynamoDB table.

  • * dynamodb:table:WriteCapacityUnits - The provisioned write capacity * for a DynamoDB table.

  • * dynamodb:index:ReadCapacityUnits - The provisioned read capacity * for a DynamoDB global secondary index.

  • * dynamodb:index:WriteCapacityUnits - The provisioned write capacity * for a DynamoDB global secondary index.

  • * rds:cluster:ReadReplicaCount - The count of Aurora Replicas in an * Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora * PostgreSQL-compatible edition.

*/ inline const ScalableDimension& GetScalableDimension() const{ return m_scalableDimension; } /** *

The scalable dimension associated with the resource.

  • * autoscaling:autoScalingGroup:DesiredCapacity - The desired capacity * of an Auto Scaling group.

  • * ecs:service:DesiredCount - The desired task count of an ECS * service.

  • ec2:spot-fleet-request:TargetCapacity - * The target capacity of a Spot Fleet request.

  • * dynamodb:table:ReadCapacityUnits - The provisioned read capacity * for a DynamoDB table.

  • * dynamodb:table:WriteCapacityUnits - The provisioned write capacity * for a DynamoDB table.

  • * dynamodb:index:ReadCapacityUnits - The provisioned read capacity * for a DynamoDB global secondary index.

  • * dynamodb:index:WriteCapacityUnits - The provisioned write capacity * for a DynamoDB global secondary index.

  • * rds:cluster:ReadReplicaCount - The count of Aurora Replicas in an * Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora * PostgreSQL-compatible edition.

*/ inline bool ScalableDimensionHasBeenSet() const { return m_scalableDimensionHasBeenSet; } /** *

The scalable dimension associated with the resource.

  • * autoscaling:autoScalingGroup:DesiredCapacity - The desired capacity * of an Auto Scaling group.

  • * ecs:service:DesiredCount - The desired task count of an ECS * service.

  • ec2:spot-fleet-request:TargetCapacity - * The target capacity of a Spot Fleet request.

  • * dynamodb:table:ReadCapacityUnits - The provisioned read capacity * for a DynamoDB table.

  • * dynamodb:table:WriteCapacityUnits - The provisioned write capacity * for a DynamoDB table.

  • * dynamodb:index:ReadCapacityUnits - The provisioned read capacity * for a DynamoDB global secondary index.

  • * dynamodb:index:WriteCapacityUnits - The provisioned write capacity * for a DynamoDB global secondary index.

  • * rds:cluster:ReadReplicaCount - The count of Aurora Replicas in an * Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora * PostgreSQL-compatible edition.

*/ inline void SetScalableDimension(const ScalableDimension& value) { m_scalableDimensionHasBeenSet = true; m_scalableDimension = value; } /** *

The scalable dimension associated with the resource.

  • * autoscaling:autoScalingGroup:DesiredCapacity - The desired capacity * of an Auto Scaling group.

  • * ecs:service:DesiredCount - The desired task count of an ECS * service.

  • ec2:spot-fleet-request:TargetCapacity - * The target capacity of a Spot Fleet request.

  • * dynamodb:table:ReadCapacityUnits - The provisioned read capacity * for a DynamoDB table.

  • * dynamodb:table:WriteCapacityUnits - The provisioned write capacity * for a DynamoDB table.

  • * dynamodb:index:ReadCapacityUnits - The provisioned read capacity * for a DynamoDB global secondary index.

  • * dynamodb:index:WriteCapacityUnits - The provisioned write capacity * for a DynamoDB global secondary index.

  • * rds:cluster:ReadReplicaCount - The count of Aurora Replicas in an * Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora * PostgreSQL-compatible edition.

*/ inline void SetScalableDimension(ScalableDimension&& value) { m_scalableDimensionHasBeenSet = true; m_scalableDimension = std::move(value); } /** *

The scalable dimension associated with the resource.

  • * autoscaling:autoScalingGroup:DesiredCapacity - The desired capacity * of an Auto Scaling group.

  • * ecs:service:DesiredCount - The desired task count of an ECS * service.

  • ec2:spot-fleet-request:TargetCapacity - * The target capacity of a Spot Fleet request.

  • * dynamodb:table:ReadCapacityUnits - The provisioned read capacity * for a DynamoDB table.

  • * dynamodb:table:WriteCapacityUnits - The provisioned write capacity * for a DynamoDB table.

  • * dynamodb:index:ReadCapacityUnits - The provisioned read capacity * for a DynamoDB global secondary index.

  • * dynamodb:index:WriteCapacityUnits - The provisioned write capacity * for a DynamoDB global secondary index.

  • * rds:cluster:ReadReplicaCount - The count of Aurora Replicas in an * Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora * PostgreSQL-compatible edition.

*/ inline ScalingInstruction& WithScalableDimension(const ScalableDimension& value) { SetScalableDimension(value); return *this;} /** *

The scalable dimension associated with the resource.

  • * autoscaling:autoScalingGroup:DesiredCapacity - The desired capacity * of an Auto Scaling group.

  • * ecs:service:DesiredCount - The desired task count of an ECS * service.

  • ec2:spot-fleet-request:TargetCapacity - * The target capacity of a Spot Fleet request.

  • * dynamodb:table:ReadCapacityUnits - The provisioned read capacity * for a DynamoDB table.

  • * dynamodb:table:WriteCapacityUnits - The provisioned write capacity * for a DynamoDB table.

  • * dynamodb:index:ReadCapacityUnits - The provisioned read capacity * for a DynamoDB global secondary index.

  • * dynamodb:index:WriteCapacityUnits - The provisioned write capacity * for a DynamoDB global secondary index.

  • * rds:cluster:ReadReplicaCount - The count of Aurora Replicas in an * Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora * PostgreSQL-compatible edition.

*/ inline ScalingInstruction& WithScalableDimension(ScalableDimension&& value) { SetScalableDimension(std::move(value)); return *this;} /** *

The minimum capacity of the resource.

*/ inline int GetMinCapacity() const{ return m_minCapacity; } /** *

The minimum capacity of the resource.

*/ inline bool MinCapacityHasBeenSet() const { return m_minCapacityHasBeenSet; } /** *

The minimum capacity of the resource.

*/ inline void SetMinCapacity(int value) { m_minCapacityHasBeenSet = true; m_minCapacity = value; } /** *

The minimum capacity of the resource.

*/ inline ScalingInstruction& WithMinCapacity(int value) { SetMinCapacity(value); return *this;} /** *

The maximum capacity of the resource. The exception to this upper limit is if * you specify a non-default setting for * PredictiveScalingMaxCapacityBehavior.

*/ inline int GetMaxCapacity() const{ return m_maxCapacity; } /** *

The maximum capacity of the resource. The exception to this upper limit is if * you specify a non-default setting for * PredictiveScalingMaxCapacityBehavior.

*/ inline bool MaxCapacityHasBeenSet() const { return m_maxCapacityHasBeenSet; } /** *

The maximum capacity of the resource. The exception to this upper limit is if * you specify a non-default setting for * PredictiveScalingMaxCapacityBehavior.

*/ inline void SetMaxCapacity(int value) { m_maxCapacityHasBeenSet = true; m_maxCapacity = value; } /** *

The maximum capacity of the resource. The exception to this upper limit is if * you specify a non-default setting for * PredictiveScalingMaxCapacityBehavior.

*/ inline ScalingInstruction& WithMaxCapacity(int value) { SetMaxCapacity(value); return *this;} /** *

The target tracking configurations (up to 10). Each of these structures must * specify a unique scaling metric and a target value for the metric.

*/ inline const Aws::Vector& GetTargetTrackingConfigurations() const{ return m_targetTrackingConfigurations; } /** *

The target tracking configurations (up to 10). Each of these structures must * specify a unique scaling metric and a target value for the metric.

*/ inline bool TargetTrackingConfigurationsHasBeenSet() const { return m_targetTrackingConfigurationsHasBeenSet; } /** *

The target tracking configurations (up to 10). Each of these structures must * specify a unique scaling metric and a target value for the metric.

*/ inline void SetTargetTrackingConfigurations(const Aws::Vector& value) { m_targetTrackingConfigurationsHasBeenSet = true; m_targetTrackingConfigurations = value; } /** *

The target tracking configurations (up to 10). Each of these structures must * specify a unique scaling metric and a target value for the metric.

*/ inline void SetTargetTrackingConfigurations(Aws::Vector&& value) { m_targetTrackingConfigurationsHasBeenSet = true; m_targetTrackingConfigurations = std::move(value); } /** *

The target tracking configurations (up to 10). Each of these structures must * specify a unique scaling metric and a target value for the metric.

*/ inline ScalingInstruction& WithTargetTrackingConfigurations(const Aws::Vector& value) { SetTargetTrackingConfigurations(value); return *this;} /** *

The target tracking configurations (up to 10). Each of these structures must * specify a unique scaling metric and a target value for the metric.

*/ inline ScalingInstruction& WithTargetTrackingConfigurations(Aws::Vector&& value) { SetTargetTrackingConfigurations(std::move(value)); return *this;} /** *

The target tracking configurations (up to 10). Each of these structures must * specify a unique scaling metric and a target value for the metric.

*/ inline ScalingInstruction& AddTargetTrackingConfigurations(const TargetTrackingConfiguration& value) { m_targetTrackingConfigurationsHasBeenSet = true; m_targetTrackingConfigurations.push_back(value); return *this; } /** *

The target tracking configurations (up to 10). Each of these structures must * specify a unique scaling metric and a target value for the metric.

*/ inline ScalingInstruction& AddTargetTrackingConfigurations(TargetTrackingConfiguration&& value) { m_targetTrackingConfigurationsHasBeenSet = true; m_targetTrackingConfigurations.push_back(std::move(value)); return *this; } /** *

The predefined load metric to use for predictive scaling. This parameter or a * CustomizedLoadMetricSpecification is required when configuring predictive * scaling, and cannot be used otherwise.

*/ inline const PredefinedLoadMetricSpecification& GetPredefinedLoadMetricSpecification() const{ return m_predefinedLoadMetricSpecification; } /** *

The predefined load metric to use for predictive scaling. This parameter or a * CustomizedLoadMetricSpecification is required when configuring predictive * scaling, and cannot be used otherwise.

*/ inline bool PredefinedLoadMetricSpecificationHasBeenSet() const { return m_predefinedLoadMetricSpecificationHasBeenSet; } /** *

The predefined load metric to use for predictive scaling. This parameter or a * CustomizedLoadMetricSpecification is required when configuring predictive * scaling, and cannot be used otherwise.

*/ inline void SetPredefinedLoadMetricSpecification(const PredefinedLoadMetricSpecification& value) { m_predefinedLoadMetricSpecificationHasBeenSet = true; m_predefinedLoadMetricSpecification = value; } /** *

The predefined load metric to use for predictive scaling. This parameter or a * CustomizedLoadMetricSpecification is required when configuring predictive * scaling, and cannot be used otherwise.

*/ inline void SetPredefinedLoadMetricSpecification(PredefinedLoadMetricSpecification&& value) { m_predefinedLoadMetricSpecificationHasBeenSet = true; m_predefinedLoadMetricSpecification = std::move(value); } /** *

The predefined load metric to use for predictive scaling. This parameter or a * CustomizedLoadMetricSpecification is required when configuring predictive * scaling, and cannot be used otherwise.

*/ inline ScalingInstruction& WithPredefinedLoadMetricSpecification(const PredefinedLoadMetricSpecification& value) { SetPredefinedLoadMetricSpecification(value); return *this;} /** *

The predefined load metric to use for predictive scaling. This parameter or a * CustomizedLoadMetricSpecification is required when configuring predictive * scaling, and cannot be used otherwise.

*/ inline ScalingInstruction& WithPredefinedLoadMetricSpecification(PredefinedLoadMetricSpecification&& value) { SetPredefinedLoadMetricSpecification(std::move(value)); return *this;} /** *

The customized load metric to use for predictive scaling. This parameter or a * PredefinedLoadMetricSpecification is required when configuring predictive * scaling, and cannot be used otherwise.

*/ inline const CustomizedLoadMetricSpecification& GetCustomizedLoadMetricSpecification() const{ return m_customizedLoadMetricSpecification; } /** *

The customized load metric to use for predictive scaling. This parameter or a * PredefinedLoadMetricSpecification is required when configuring predictive * scaling, and cannot be used otherwise.

*/ inline bool CustomizedLoadMetricSpecificationHasBeenSet() const { return m_customizedLoadMetricSpecificationHasBeenSet; } /** *

The customized load metric to use for predictive scaling. This parameter or a * PredefinedLoadMetricSpecification is required when configuring predictive * scaling, and cannot be used otherwise.

*/ inline void SetCustomizedLoadMetricSpecification(const CustomizedLoadMetricSpecification& value) { m_customizedLoadMetricSpecificationHasBeenSet = true; m_customizedLoadMetricSpecification = value; } /** *

The customized load metric to use for predictive scaling. This parameter or a * PredefinedLoadMetricSpecification is required when configuring predictive * scaling, and cannot be used otherwise.

*/ inline void SetCustomizedLoadMetricSpecification(CustomizedLoadMetricSpecification&& value) { m_customizedLoadMetricSpecificationHasBeenSet = true; m_customizedLoadMetricSpecification = std::move(value); } /** *

The customized load metric to use for predictive scaling. This parameter or a * PredefinedLoadMetricSpecification is required when configuring predictive * scaling, and cannot be used otherwise.

*/ inline ScalingInstruction& WithCustomizedLoadMetricSpecification(const CustomizedLoadMetricSpecification& value) { SetCustomizedLoadMetricSpecification(value); return *this;} /** *

The customized load metric to use for predictive scaling. This parameter or a * PredefinedLoadMetricSpecification is required when configuring predictive * scaling, and cannot be used otherwise.

*/ inline ScalingInstruction& WithCustomizedLoadMetricSpecification(CustomizedLoadMetricSpecification&& value) { SetCustomizedLoadMetricSpecification(std::move(value)); return *this;} /** *

The amount of time, in seconds, to buffer the run time of scheduled scaling * actions when scaling out. For example, if the forecast says to add capacity at * 10:00 AM, and the buffer time is 5 minutes, then the run time of the * corresponding scheduled scaling action will be 9:55 AM. The intention is to give * resources time to be provisioned. For example, it can take a few minutes to * launch an EC2 instance. The actual amount of time required depends on several * factors, such as the size of the instance and whether there are startup scripts * to complete.

The value must be less than the forecast interval duration * of 3600 seconds (60 minutes). The default is 300 seconds.

Only valid * when configuring predictive scaling.

*/ inline int GetScheduledActionBufferTime() const{ return m_scheduledActionBufferTime; } /** *

The amount of time, in seconds, to buffer the run time of scheduled scaling * actions when scaling out. For example, if the forecast says to add capacity at * 10:00 AM, and the buffer time is 5 minutes, then the run time of the * corresponding scheduled scaling action will be 9:55 AM. The intention is to give * resources time to be provisioned. For example, it can take a few minutes to * launch an EC2 instance. The actual amount of time required depends on several * factors, such as the size of the instance and whether there are startup scripts * to complete.

The value must be less than the forecast interval duration * of 3600 seconds (60 minutes). The default is 300 seconds.

Only valid * when configuring predictive scaling.

*/ inline bool ScheduledActionBufferTimeHasBeenSet() const { return m_scheduledActionBufferTimeHasBeenSet; } /** *

The amount of time, in seconds, to buffer the run time of scheduled scaling * actions when scaling out. For example, if the forecast says to add capacity at * 10:00 AM, and the buffer time is 5 minutes, then the run time of the * corresponding scheduled scaling action will be 9:55 AM. The intention is to give * resources time to be provisioned. For example, it can take a few minutes to * launch an EC2 instance. The actual amount of time required depends on several * factors, such as the size of the instance and whether there are startup scripts * to complete.

The value must be less than the forecast interval duration * of 3600 seconds (60 minutes). The default is 300 seconds.

Only valid * when configuring predictive scaling.

*/ inline void SetScheduledActionBufferTime(int value) { m_scheduledActionBufferTimeHasBeenSet = true; m_scheduledActionBufferTime = value; } /** *

The amount of time, in seconds, to buffer the run time of scheduled scaling * actions when scaling out. For example, if the forecast says to add capacity at * 10:00 AM, and the buffer time is 5 minutes, then the run time of the * corresponding scheduled scaling action will be 9:55 AM. The intention is to give * resources time to be provisioned. For example, it can take a few minutes to * launch an EC2 instance. The actual amount of time required depends on several * factors, such as the size of the instance and whether there are startup scripts * to complete.

The value must be less than the forecast interval duration * of 3600 seconds (60 minutes). The default is 300 seconds.

Only valid * when configuring predictive scaling.

*/ inline ScalingInstruction& WithScheduledActionBufferTime(int value) { SetScheduledActionBufferTime(value); return *this;} /** *

Defines the behavior that should be applied if the forecast capacity * approaches or exceeds the maximum capacity specified for the resource. The * default value is SetForecastCapacityToMaxCapacity.

The * following are possible values:

  • * SetForecastCapacityToMaxCapacity - AWS Auto Scaling cannot scale * resource capacity higher than the maximum capacity. The maximum capacity is * enforced as a hard limit.

  • * SetMaxCapacityToForecastCapacity - AWS Auto Scaling may scale * resource capacity higher than the maximum capacity to equal but not exceed * forecast capacity.

  • * SetMaxCapacityAboveForecastCapacity - AWS Auto Scaling may scale * resource capacity higher than the maximum capacity by a specified buffer value. * The intention is to give the target tracking scaling policy extra capacity if * unexpected traffic occurs.

Only valid when configuring * predictive scaling.

*/ inline const PredictiveScalingMaxCapacityBehavior& GetPredictiveScalingMaxCapacityBehavior() const{ return m_predictiveScalingMaxCapacityBehavior; } /** *

Defines the behavior that should be applied if the forecast capacity * approaches or exceeds the maximum capacity specified for the resource. The * default value is SetForecastCapacityToMaxCapacity.

The * following are possible values:

  • * SetForecastCapacityToMaxCapacity - AWS Auto Scaling cannot scale * resource capacity higher than the maximum capacity. The maximum capacity is * enforced as a hard limit.

  • * SetMaxCapacityToForecastCapacity - AWS Auto Scaling may scale * resource capacity higher than the maximum capacity to equal but not exceed * forecast capacity.

  • * SetMaxCapacityAboveForecastCapacity - AWS Auto Scaling may scale * resource capacity higher than the maximum capacity by a specified buffer value. * The intention is to give the target tracking scaling policy extra capacity if * unexpected traffic occurs.

Only valid when configuring * predictive scaling.

*/ inline bool PredictiveScalingMaxCapacityBehaviorHasBeenSet() const { return m_predictiveScalingMaxCapacityBehaviorHasBeenSet; } /** *

Defines the behavior that should be applied if the forecast capacity * approaches or exceeds the maximum capacity specified for the resource. The * default value is SetForecastCapacityToMaxCapacity.

The * following are possible values:

  • * SetForecastCapacityToMaxCapacity - AWS Auto Scaling cannot scale * resource capacity higher than the maximum capacity. The maximum capacity is * enforced as a hard limit.

  • * SetMaxCapacityToForecastCapacity - AWS Auto Scaling may scale * resource capacity higher than the maximum capacity to equal but not exceed * forecast capacity.

  • * SetMaxCapacityAboveForecastCapacity - AWS Auto Scaling may scale * resource capacity higher than the maximum capacity by a specified buffer value. * The intention is to give the target tracking scaling policy extra capacity if * unexpected traffic occurs.

Only valid when configuring * predictive scaling.

*/ inline void SetPredictiveScalingMaxCapacityBehavior(const PredictiveScalingMaxCapacityBehavior& value) { m_predictiveScalingMaxCapacityBehaviorHasBeenSet = true; m_predictiveScalingMaxCapacityBehavior = value; } /** *

Defines the behavior that should be applied if the forecast capacity * approaches or exceeds the maximum capacity specified for the resource. The * default value is SetForecastCapacityToMaxCapacity.

The * following are possible values:

  • * SetForecastCapacityToMaxCapacity - AWS Auto Scaling cannot scale * resource capacity higher than the maximum capacity. The maximum capacity is * enforced as a hard limit.

  • * SetMaxCapacityToForecastCapacity - AWS Auto Scaling may scale * resource capacity higher than the maximum capacity to equal but not exceed * forecast capacity.

  • * SetMaxCapacityAboveForecastCapacity - AWS Auto Scaling may scale * resource capacity higher than the maximum capacity by a specified buffer value. * The intention is to give the target tracking scaling policy extra capacity if * unexpected traffic occurs.

Only valid when configuring * predictive scaling.

*/ inline void SetPredictiveScalingMaxCapacityBehavior(PredictiveScalingMaxCapacityBehavior&& value) { m_predictiveScalingMaxCapacityBehaviorHasBeenSet = true; m_predictiveScalingMaxCapacityBehavior = std::move(value); } /** *

Defines the behavior that should be applied if the forecast capacity * approaches or exceeds the maximum capacity specified for the resource. The * default value is SetForecastCapacityToMaxCapacity.

The * following are possible values:

  • * SetForecastCapacityToMaxCapacity - AWS Auto Scaling cannot scale * resource capacity higher than the maximum capacity. The maximum capacity is * enforced as a hard limit.

  • * SetMaxCapacityToForecastCapacity - AWS Auto Scaling may scale * resource capacity higher than the maximum capacity to equal but not exceed * forecast capacity.

  • * SetMaxCapacityAboveForecastCapacity - AWS Auto Scaling may scale * resource capacity higher than the maximum capacity by a specified buffer value. * The intention is to give the target tracking scaling policy extra capacity if * unexpected traffic occurs.

Only valid when configuring * predictive scaling.

*/ inline ScalingInstruction& WithPredictiveScalingMaxCapacityBehavior(const PredictiveScalingMaxCapacityBehavior& value) { SetPredictiveScalingMaxCapacityBehavior(value); return *this;} /** *

Defines the behavior that should be applied if the forecast capacity * approaches or exceeds the maximum capacity specified for the resource. The * default value is SetForecastCapacityToMaxCapacity.

The * following are possible values:

  • * SetForecastCapacityToMaxCapacity - AWS Auto Scaling cannot scale * resource capacity higher than the maximum capacity. The maximum capacity is * enforced as a hard limit.

  • * SetMaxCapacityToForecastCapacity - AWS Auto Scaling may scale * resource capacity higher than the maximum capacity to equal but not exceed * forecast capacity.

  • * SetMaxCapacityAboveForecastCapacity - AWS Auto Scaling may scale * resource capacity higher than the maximum capacity by a specified buffer value. * The intention is to give the target tracking scaling policy extra capacity if * unexpected traffic occurs.

Only valid when configuring * predictive scaling.

*/ inline ScalingInstruction& WithPredictiveScalingMaxCapacityBehavior(PredictiveScalingMaxCapacityBehavior&& value) { SetPredictiveScalingMaxCapacityBehavior(std::move(value)); return *this;} /** *

The size of the capacity buffer to use when the forecast capacity is close to * or exceeds the maximum capacity. The value is specified as a percentage relative * to the forecast capacity. For example, if the buffer is 10, this means a 10 * percent buffer, such that if the forecast capacity is 50, and the maximum * capacity is 40, then the effective maximum capacity is 55.

Only valid * when configuring predictive scaling. Required if the * PredictiveScalingMaxCapacityBehavior is set to * SetMaxCapacityAboveForecastCapacity, and cannot be used * otherwise.

The range is 1-100.

*/ inline int GetPredictiveScalingMaxCapacityBuffer() const{ return m_predictiveScalingMaxCapacityBuffer; } /** *

The size of the capacity buffer to use when the forecast capacity is close to * or exceeds the maximum capacity. The value is specified as a percentage relative * to the forecast capacity. For example, if the buffer is 10, this means a 10 * percent buffer, such that if the forecast capacity is 50, and the maximum * capacity is 40, then the effective maximum capacity is 55.

Only valid * when configuring predictive scaling. Required if the * PredictiveScalingMaxCapacityBehavior is set to * SetMaxCapacityAboveForecastCapacity, and cannot be used * otherwise.

The range is 1-100.

*/ inline bool PredictiveScalingMaxCapacityBufferHasBeenSet() const { return m_predictiveScalingMaxCapacityBufferHasBeenSet; } /** *

The size of the capacity buffer to use when the forecast capacity is close to * or exceeds the maximum capacity. The value is specified as a percentage relative * to the forecast capacity. For example, if the buffer is 10, this means a 10 * percent buffer, such that if the forecast capacity is 50, and the maximum * capacity is 40, then the effective maximum capacity is 55.

Only valid * when configuring predictive scaling. Required if the * PredictiveScalingMaxCapacityBehavior is set to * SetMaxCapacityAboveForecastCapacity, and cannot be used * otherwise.

The range is 1-100.

*/ inline void SetPredictiveScalingMaxCapacityBuffer(int value) { m_predictiveScalingMaxCapacityBufferHasBeenSet = true; m_predictiveScalingMaxCapacityBuffer = value; } /** *

The size of the capacity buffer to use when the forecast capacity is close to * or exceeds the maximum capacity. The value is specified as a percentage relative * to the forecast capacity. For example, if the buffer is 10, this means a 10 * percent buffer, such that if the forecast capacity is 50, and the maximum * capacity is 40, then the effective maximum capacity is 55.

Only valid * when configuring predictive scaling. Required if the * PredictiveScalingMaxCapacityBehavior is set to * SetMaxCapacityAboveForecastCapacity, and cannot be used * otherwise.

The range is 1-100.

*/ inline ScalingInstruction& WithPredictiveScalingMaxCapacityBuffer(int value) { SetPredictiveScalingMaxCapacityBuffer(value); return *this;} /** *

The predictive scaling mode. The default value is * ForecastAndScale. Otherwise, AWS Auto Scaling forecasts capacity * but does not create any scheduled scaling actions based on the capacity * forecast.

*/ inline const PredictiveScalingMode& GetPredictiveScalingMode() const{ return m_predictiveScalingMode; } /** *

The predictive scaling mode. The default value is * ForecastAndScale. Otherwise, AWS Auto Scaling forecasts capacity * but does not create any scheduled scaling actions based on the capacity * forecast.

*/ inline bool PredictiveScalingModeHasBeenSet() const { return m_predictiveScalingModeHasBeenSet; } /** *

The predictive scaling mode. The default value is * ForecastAndScale. Otherwise, AWS Auto Scaling forecasts capacity * but does not create any scheduled scaling actions based on the capacity * forecast.

*/ inline void SetPredictiveScalingMode(const PredictiveScalingMode& value) { m_predictiveScalingModeHasBeenSet = true; m_predictiveScalingMode = value; } /** *

The predictive scaling mode. The default value is * ForecastAndScale. Otherwise, AWS Auto Scaling forecasts capacity * but does not create any scheduled scaling actions based on the capacity * forecast.

*/ inline void SetPredictiveScalingMode(PredictiveScalingMode&& value) { m_predictiveScalingModeHasBeenSet = true; m_predictiveScalingMode = std::move(value); } /** *

The predictive scaling mode. The default value is * ForecastAndScale. Otherwise, AWS Auto Scaling forecasts capacity * but does not create any scheduled scaling actions based on the capacity * forecast.

*/ inline ScalingInstruction& WithPredictiveScalingMode(const PredictiveScalingMode& value) { SetPredictiveScalingMode(value); return *this;} /** *

The predictive scaling mode. The default value is * ForecastAndScale. Otherwise, AWS Auto Scaling forecasts capacity * but does not create any scheduled scaling actions based on the capacity * forecast.

*/ inline ScalingInstruction& WithPredictiveScalingMode(PredictiveScalingMode&& value) { SetPredictiveScalingMode(std::move(value)); return *this;} /** *

Controls whether a resource's externally created scaling policies are kept or * replaced.

The default value is KeepExternalPolicies. If the * parameter is set to ReplaceExternalPolicies, any scaling policies * that are external to AWS Auto Scaling are deleted and new target tracking * scaling policies created.

Only valid when configuring dynamic scaling. *

Condition: The number of existing policies to be replaced must be less * than or equal to 50. If there are more than 50 policies to be replaced, AWS Auto * Scaling keeps all existing policies and does not create new ones.

*/ inline const ScalingPolicyUpdateBehavior& GetScalingPolicyUpdateBehavior() const{ return m_scalingPolicyUpdateBehavior; } /** *

Controls whether a resource's externally created scaling policies are kept or * replaced.

The default value is KeepExternalPolicies. If the * parameter is set to ReplaceExternalPolicies, any scaling policies * that are external to AWS Auto Scaling are deleted and new target tracking * scaling policies created.

Only valid when configuring dynamic scaling. *

Condition: The number of existing policies to be replaced must be less * than or equal to 50. If there are more than 50 policies to be replaced, AWS Auto * Scaling keeps all existing policies and does not create new ones.

*/ inline bool ScalingPolicyUpdateBehaviorHasBeenSet() const { return m_scalingPolicyUpdateBehaviorHasBeenSet; } /** *

Controls whether a resource's externally created scaling policies are kept or * replaced.

The default value is KeepExternalPolicies. If the * parameter is set to ReplaceExternalPolicies, any scaling policies * that are external to AWS Auto Scaling are deleted and new target tracking * scaling policies created.

Only valid when configuring dynamic scaling. *

Condition: The number of existing policies to be replaced must be less * than or equal to 50. If there are more than 50 policies to be replaced, AWS Auto * Scaling keeps all existing policies and does not create new ones.

*/ inline void SetScalingPolicyUpdateBehavior(const ScalingPolicyUpdateBehavior& value) { m_scalingPolicyUpdateBehaviorHasBeenSet = true; m_scalingPolicyUpdateBehavior = value; } /** *

Controls whether a resource's externally created scaling policies are kept or * replaced.

The default value is KeepExternalPolicies. If the * parameter is set to ReplaceExternalPolicies, any scaling policies * that are external to AWS Auto Scaling are deleted and new target tracking * scaling policies created.

Only valid when configuring dynamic scaling. *

Condition: The number of existing policies to be replaced must be less * than or equal to 50. If there are more than 50 policies to be replaced, AWS Auto * Scaling keeps all existing policies and does not create new ones.

*/ inline void SetScalingPolicyUpdateBehavior(ScalingPolicyUpdateBehavior&& value) { m_scalingPolicyUpdateBehaviorHasBeenSet = true; m_scalingPolicyUpdateBehavior = std::move(value); } /** *

Controls whether a resource's externally created scaling policies are kept or * replaced.

The default value is KeepExternalPolicies. If the * parameter is set to ReplaceExternalPolicies, any scaling policies * that are external to AWS Auto Scaling are deleted and new target tracking * scaling policies created.

Only valid when configuring dynamic scaling. *

Condition: The number of existing policies to be replaced must be less * than or equal to 50. If there are more than 50 policies to be replaced, AWS Auto * Scaling keeps all existing policies and does not create new ones.

*/ inline ScalingInstruction& WithScalingPolicyUpdateBehavior(const ScalingPolicyUpdateBehavior& value) { SetScalingPolicyUpdateBehavior(value); return *this;} /** *

Controls whether a resource's externally created scaling policies are kept or * replaced.

The default value is KeepExternalPolicies. If the * parameter is set to ReplaceExternalPolicies, any scaling policies * that are external to AWS Auto Scaling are deleted and new target tracking * scaling policies created.

Only valid when configuring dynamic scaling. *

Condition: The number of existing policies to be replaced must be less * than or equal to 50. If there are more than 50 policies to be replaced, AWS Auto * Scaling keeps all existing policies and does not create new ones.

*/ inline ScalingInstruction& WithScalingPolicyUpdateBehavior(ScalingPolicyUpdateBehavior&& value) { SetScalingPolicyUpdateBehavior(std::move(value)); return *this;} /** *

Controls whether dynamic scaling by AWS Auto Scaling is disabled. When * dynamic scaling is enabled, AWS Auto Scaling creates target tracking scaling * policies based on the specified target tracking configurations.

The * default is enabled (false).

*/ inline bool GetDisableDynamicScaling() const{ return m_disableDynamicScaling; } /** *

Controls whether dynamic scaling by AWS Auto Scaling is disabled. When * dynamic scaling is enabled, AWS Auto Scaling creates target tracking scaling * policies based on the specified target tracking configurations.

The * default is enabled (false).

*/ inline bool DisableDynamicScalingHasBeenSet() const { return m_disableDynamicScalingHasBeenSet; } /** *

Controls whether dynamic scaling by AWS Auto Scaling is disabled. When * dynamic scaling is enabled, AWS Auto Scaling creates target tracking scaling * policies based on the specified target tracking configurations.

The * default is enabled (false).

*/ inline void SetDisableDynamicScaling(bool value) { m_disableDynamicScalingHasBeenSet = true; m_disableDynamicScaling = value; } /** *

Controls whether dynamic scaling by AWS Auto Scaling is disabled. When * dynamic scaling is enabled, AWS Auto Scaling creates target tracking scaling * policies based on the specified target tracking configurations.

The * default is enabled (false).

*/ inline ScalingInstruction& WithDisableDynamicScaling(bool value) { SetDisableDynamicScaling(value); return *this;} private: ServiceNamespace m_serviceNamespace; bool m_serviceNamespaceHasBeenSet = false; Aws::String m_resourceId; bool m_resourceIdHasBeenSet = false; ScalableDimension m_scalableDimension; bool m_scalableDimensionHasBeenSet = false; int m_minCapacity; bool m_minCapacityHasBeenSet = false; int m_maxCapacity; bool m_maxCapacityHasBeenSet = false; Aws::Vector m_targetTrackingConfigurations; bool m_targetTrackingConfigurationsHasBeenSet = false; PredefinedLoadMetricSpecification m_predefinedLoadMetricSpecification; bool m_predefinedLoadMetricSpecificationHasBeenSet = false; CustomizedLoadMetricSpecification m_customizedLoadMetricSpecification; bool m_customizedLoadMetricSpecificationHasBeenSet = false; int m_scheduledActionBufferTime; bool m_scheduledActionBufferTimeHasBeenSet = false; PredictiveScalingMaxCapacityBehavior m_predictiveScalingMaxCapacityBehavior; bool m_predictiveScalingMaxCapacityBehaviorHasBeenSet = false; int m_predictiveScalingMaxCapacityBuffer; bool m_predictiveScalingMaxCapacityBufferHasBeenSet = false; PredictiveScalingMode m_predictiveScalingMode; bool m_predictiveScalingModeHasBeenSet = false; ScalingPolicyUpdateBehavior m_scalingPolicyUpdateBehavior; bool m_scalingPolicyUpdateBehaviorHasBeenSet = false; bool m_disableDynamicScaling; bool m_disableDynamicScalingHasBeenSet = false; }; } // namespace Model } // namespace AutoScalingPlans } // namespace Aws