1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/autoscaling-plans/AutoScalingPlans_EXPORTS.h>
8 #include <aws/autoscaling-plans/model/ServiceNamespace.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/autoscaling-plans/model/ScalableDimension.h>
11 #include <aws/core/utils/memory/stl/AWSVector.h>
12 #include <aws/autoscaling-plans/model/PredefinedLoadMetricSpecification.h>
13 #include <aws/autoscaling-plans/model/CustomizedLoadMetricSpecification.h>
14 #include <aws/autoscaling-plans/model/PredictiveScalingMaxCapacityBehavior.h>
15 #include <aws/autoscaling-plans/model/PredictiveScalingMode.h>
16 #include <aws/autoscaling-plans/model/ScalingPolicyUpdateBehavior.h>
17 #include <aws/autoscaling-plans/model/TargetTrackingConfiguration.h>
18 #include <utility>
19 
20 namespace Aws
21 {
22 namespace Utils
23 {
24 namespace Json
25 {
26   class JsonValue;
27   class JsonView;
28 } // namespace Json
29 } // namespace Utils
30 namespace AutoScalingPlans
31 {
32 namespace Model
33 {
34 
35   /**
36    * <p>Describes a scaling instruction for a scalable resource in a scaling plan.
37    * Each scaling instruction applies to one resource.</p> <p>AWS Auto Scaling
38    * creates target tracking scaling policies based on the scaling instructions.
39    * Target tracking scaling policies adjust the capacity of your scalable resource
40    * as required to maintain resource utilization at the target value that you
41    * specified. </p> <p>AWS Auto Scaling also configures predictive scaling for your
42    * Amazon EC2 Auto Scaling groups using a subset of parameters, including the load
43    * metric, the scaling metric, the target value for the scaling metric, the
44    * predictive scaling mode (forecast and scale or forecast only), and the desired
45    * behavior when the forecast capacity exceeds the maximum capacity of the
46    * resource. With predictive scaling, AWS Auto Scaling generates forecasts with
47    * traffic predictions for the two days ahead and schedules scaling actions that
48    * proactively add and remove resource capacity to match the forecast. </p>
49    *  <p>We recommend waiting a minimum of 24 hours after creating an Auto
50    * Scaling group to configure predictive scaling. At minimum, there must be 24
51    * hours of historical data to generate a forecast. For more information, see <a
52    * href="https://docs.aws.amazon.com/autoscaling/plans/userguide/gs-best-practices.html">Best
53    * Practices for AWS Auto Scaling</a> in the <i>AWS Auto Scaling User
54    * Guide</i>.</p> <p><h3>See Also:</h3>   <a
55    * href="http://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/ScalingInstruction">AWS
56    * API Reference</a></p>
57    */
58   class AWS_AUTOSCALINGPLANS_API ScalingInstruction
59   {
60   public:
61     ScalingInstruction();
62     ScalingInstruction(Aws::Utils::Json::JsonView jsonValue);
63     ScalingInstruction& operator=(Aws::Utils::Json::JsonView jsonValue);
64     Aws::Utils::Json::JsonValue Jsonize() const;
65 
66 
67     /**
68      * <p>The namespace of the AWS service.</p>
69      */
GetServiceNamespace()70     inline const ServiceNamespace& GetServiceNamespace() const{ return m_serviceNamespace; }
71 
72     /**
73      * <p>The namespace of the AWS service.</p>
74      */
ServiceNamespaceHasBeenSet()75     inline bool ServiceNamespaceHasBeenSet() const { return m_serviceNamespaceHasBeenSet; }
76 
77     /**
78      * <p>The namespace of the AWS service.</p>
79      */
SetServiceNamespace(const ServiceNamespace & value)80     inline void SetServiceNamespace(const ServiceNamespace& value) { m_serviceNamespaceHasBeenSet = true; m_serviceNamespace = value; }
81 
82     /**
83      * <p>The namespace of the AWS service.</p>
84      */
SetServiceNamespace(ServiceNamespace && value)85     inline void SetServiceNamespace(ServiceNamespace&& value) { m_serviceNamespaceHasBeenSet = true; m_serviceNamespace = std::move(value); }
86 
87     /**
88      * <p>The namespace of the AWS service.</p>
89      */
WithServiceNamespace(const ServiceNamespace & value)90     inline ScalingInstruction& WithServiceNamespace(const ServiceNamespace& value) { SetServiceNamespace(value); return *this;}
91 
92     /**
93      * <p>The namespace of the AWS service.</p>
94      */
WithServiceNamespace(ServiceNamespace && value)95     inline ScalingInstruction& WithServiceNamespace(ServiceNamespace&& value) { SetServiceNamespace(std::move(value)); return *this;}
96 
97 
98     /**
99      * <p>The ID of the resource. This string consists of the resource type and unique
100      * identifier.</p> <ul> <li> <p>Auto Scaling group - The resource type is
101      * <code>autoScalingGroup</code> and the unique identifier is the name of the Auto
102      * Scaling group. Example: <code>autoScalingGroup/my-asg</code>.</p> </li> <li>
103      * <p>ECS service - The resource type is <code>service</code> and the unique
104      * identifier is the cluster name and service name. Example:
105      * <code>service/default/sample-webapp</code>.</p> </li> <li> <p>Spot Fleet request
106      * - The resource type is <code>spot-fleet-request</code> and the unique identifier
107      * is the Spot Fleet request ID. Example:
108      * <code>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</code>.</p>
109      * </li> <li> <p>DynamoDB table - The resource type is <code>table</code> and the
110      * unique identifier is the resource ID. Example: <code>table/my-table</code>.</p>
111      * </li> <li> <p>DynamoDB global secondary index - The resource type is
112      * <code>index</code> and the unique identifier is the resource ID. Example:
113      * <code>table/my-table/index/my-table-index</code>.</p> </li> <li> <p>Aurora DB
114      * cluster - The resource type is <code>cluster</code> and the unique identifier is
115      * the cluster name. Example: <code>cluster:my-db-cluster</code>.</p> </li> </ul>
116      */
GetResourceId()117     inline const Aws::String& GetResourceId() const{ return m_resourceId; }
118 
119     /**
120      * <p>The ID of the resource. This string consists of the resource type and unique
121      * identifier.</p> <ul> <li> <p>Auto Scaling group - The resource type is
122      * <code>autoScalingGroup</code> and the unique identifier is the name of the Auto
123      * Scaling group. Example: <code>autoScalingGroup/my-asg</code>.</p> </li> <li>
124      * <p>ECS service - The resource type is <code>service</code> and the unique
125      * identifier is the cluster name and service name. Example:
126      * <code>service/default/sample-webapp</code>.</p> </li> <li> <p>Spot Fleet request
127      * - The resource type is <code>spot-fleet-request</code> and the unique identifier
128      * is the Spot Fleet request ID. Example:
129      * <code>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</code>.</p>
130      * </li> <li> <p>DynamoDB table - The resource type is <code>table</code> and the
131      * unique identifier is the resource ID. Example: <code>table/my-table</code>.</p>
132      * </li> <li> <p>DynamoDB global secondary index - The resource type is
133      * <code>index</code> and the unique identifier is the resource ID. Example:
134      * <code>table/my-table/index/my-table-index</code>.</p> </li> <li> <p>Aurora DB
135      * cluster - The resource type is <code>cluster</code> and the unique identifier is
136      * the cluster name. Example: <code>cluster:my-db-cluster</code>.</p> </li> </ul>
137      */
ResourceIdHasBeenSet()138     inline bool ResourceIdHasBeenSet() const { return m_resourceIdHasBeenSet; }
139 
140     /**
141      * <p>The ID of the resource. This string consists of the resource type and unique
142      * identifier.</p> <ul> <li> <p>Auto Scaling group - The resource type is
143      * <code>autoScalingGroup</code> and the unique identifier is the name of the Auto
144      * Scaling group. Example: <code>autoScalingGroup/my-asg</code>.</p> </li> <li>
145      * <p>ECS service - The resource type is <code>service</code> and the unique
146      * identifier is the cluster name and service name. Example:
147      * <code>service/default/sample-webapp</code>.</p> </li> <li> <p>Spot Fleet request
148      * - The resource type is <code>spot-fleet-request</code> and the unique identifier
149      * is the Spot Fleet request ID. Example:
150      * <code>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</code>.</p>
151      * </li> <li> <p>DynamoDB table - The resource type is <code>table</code> and the
152      * unique identifier is the resource ID. Example: <code>table/my-table</code>.</p>
153      * </li> <li> <p>DynamoDB global secondary index - The resource type is
154      * <code>index</code> and the unique identifier is the resource ID. Example:
155      * <code>table/my-table/index/my-table-index</code>.</p> </li> <li> <p>Aurora DB
156      * cluster - The resource type is <code>cluster</code> and the unique identifier is
157      * the cluster name. Example: <code>cluster:my-db-cluster</code>.</p> </li> </ul>
158      */
SetResourceId(const Aws::String & value)159     inline void SetResourceId(const Aws::String& value) { m_resourceIdHasBeenSet = true; m_resourceId = value; }
160 
161     /**
162      * <p>The ID of the resource. This string consists of the resource type and unique
163      * identifier.</p> <ul> <li> <p>Auto Scaling group - The resource type is
164      * <code>autoScalingGroup</code> and the unique identifier is the name of the Auto
165      * Scaling group. Example: <code>autoScalingGroup/my-asg</code>.</p> </li> <li>
166      * <p>ECS service - The resource type is <code>service</code> and the unique
167      * identifier is the cluster name and service name. Example:
168      * <code>service/default/sample-webapp</code>.</p> </li> <li> <p>Spot Fleet request
169      * - The resource type is <code>spot-fleet-request</code> and the unique identifier
170      * is the Spot Fleet request ID. Example:
171      * <code>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</code>.</p>
172      * </li> <li> <p>DynamoDB table - The resource type is <code>table</code> and the
173      * unique identifier is the resource ID. Example: <code>table/my-table</code>.</p>
174      * </li> <li> <p>DynamoDB global secondary index - The resource type is
175      * <code>index</code> and the unique identifier is the resource ID. Example:
176      * <code>table/my-table/index/my-table-index</code>.</p> </li> <li> <p>Aurora DB
177      * cluster - The resource type is <code>cluster</code> and the unique identifier is
178      * the cluster name. Example: <code>cluster:my-db-cluster</code>.</p> </li> </ul>
179      */
SetResourceId(Aws::String && value)180     inline void SetResourceId(Aws::String&& value) { m_resourceIdHasBeenSet = true; m_resourceId = std::move(value); }
181 
182     /**
183      * <p>The ID of the resource. This string consists of the resource type and unique
184      * identifier.</p> <ul> <li> <p>Auto Scaling group - The resource type is
185      * <code>autoScalingGroup</code> and the unique identifier is the name of the Auto
186      * Scaling group. Example: <code>autoScalingGroup/my-asg</code>.</p> </li> <li>
187      * <p>ECS service - The resource type is <code>service</code> and the unique
188      * identifier is the cluster name and service name. Example:
189      * <code>service/default/sample-webapp</code>.</p> </li> <li> <p>Spot Fleet request
190      * - The resource type is <code>spot-fleet-request</code> and the unique identifier
191      * is the Spot Fleet request ID. Example:
192      * <code>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</code>.</p>
193      * </li> <li> <p>DynamoDB table - The resource type is <code>table</code> and the
194      * unique identifier is the resource ID. Example: <code>table/my-table</code>.</p>
195      * </li> <li> <p>DynamoDB global secondary index - The resource type is
196      * <code>index</code> and the unique identifier is the resource ID. Example:
197      * <code>table/my-table/index/my-table-index</code>.</p> </li> <li> <p>Aurora DB
198      * cluster - The resource type is <code>cluster</code> and the unique identifier is
199      * the cluster name. Example: <code>cluster:my-db-cluster</code>.</p> </li> </ul>
200      */
SetResourceId(const char * value)201     inline void SetResourceId(const char* value) { m_resourceIdHasBeenSet = true; m_resourceId.assign(value); }
202 
203     /**
204      * <p>The ID of the resource. This string consists of the resource type and unique
205      * identifier.</p> <ul> <li> <p>Auto Scaling group - The resource type is
206      * <code>autoScalingGroup</code> and the unique identifier is the name of the Auto
207      * Scaling group. Example: <code>autoScalingGroup/my-asg</code>.</p> </li> <li>
208      * <p>ECS service - The resource type is <code>service</code> and the unique
209      * identifier is the cluster name and service name. Example:
210      * <code>service/default/sample-webapp</code>.</p> </li> <li> <p>Spot Fleet request
211      * - The resource type is <code>spot-fleet-request</code> and the unique identifier
212      * is the Spot Fleet request ID. Example:
213      * <code>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</code>.</p>
214      * </li> <li> <p>DynamoDB table - The resource type is <code>table</code> and the
215      * unique identifier is the resource ID. Example: <code>table/my-table</code>.</p>
216      * </li> <li> <p>DynamoDB global secondary index - The resource type is
217      * <code>index</code> and the unique identifier is the resource ID. Example:
218      * <code>table/my-table/index/my-table-index</code>.</p> </li> <li> <p>Aurora DB
219      * cluster - The resource type is <code>cluster</code> and the unique identifier is
220      * the cluster name. Example: <code>cluster:my-db-cluster</code>.</p> </li> </ul>
221      */
WithResourceId(const Aws::String & value)222     inline ScalingInstruction& WithResourceId(const Aws::String& value) { SetResourceId(value); return *this;}
223 
224     /**
225      * <p>The ID of the resource. This string consists of the resource type and unique
226      * identifier.</p> <ul> <li> <p>Auto Scaling group - The resource type is
227      * <code>autoScalingGroup</code> and the unique identifier is the name of the Auto
228      * Scaling group. Example: <code>autoScalingGroup/my-asg</code>.</p> </li> <li>
229      * <p>ECS service - The resource type is <code>service</code> and the unique
230      * identifier is the cluster name and service name. Example:
231      * <code>service/default/sample-webapp</code>.</p> </li> <li> <p>Spot Fleet request
232      * - The resource type is <code>spot-fleet-request</code> and the unique identifier
233      * is the Spot Fleet request ID. Example:
234      * <code>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</code>.</p>
235      * </li> <li> <p>DynamoDB table - The resource type is <code>table</code> and the
236      * unique identifier is the resource ID. Example: <code>table/my-table</code>.</p>
237      * </li> <li> <p>DynamoDB global secondary index - The resource type is
238      * <code>index</code> and the unique identifier is the resource ID. Example:
239      * <code>table/my-table/index/my-table-index</code>.</p> </li> <li> <p>Aurora DB
240      * cluster - The resource type is <code>cluster</code> and the unique identifier is
241      * the cluster name. Example: <code>cluster:my-db-cluster</code>.</p> </li> </ul>
242      */
WithResourceId(Aws::String && value)243     inline ScalingInstruction& WithResourceId(Aws::String&& value) { SetResourceId(std::move(value)); return *this;}
244 
245     /**
246      * <p>The ID of the resource. This string consists of the resource type and unique
247      * identifier.</p> <ul> <li> <p>Auto Scaling group - The resource type is
248      * <code>autoScalingGroup</code> and the unique identifier is the name of the Auto
249      * Scaling group. Example: <code>autoScalingGroup/my-asg</code>.</p> </li> <li>
250      * <p>ECS service - The resource type is <code>service</code> and the unique
251      * identifier is the cluster name and service name. Example:
252      * <code>service/default/sample-webapp</code>.</p> </li> <li> <p>Spot Fleet request
253      * - The resource type is <code>spot-fleet-request</code> and the unique identifier
254      * is the Spot Fleet request ID. Example:
255      * <code>spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE</code>.</p>
256      * </li> <li> <p>DynamoDB table - The resource type is <code>table</code> and the
257      * unique identifier is the resource ID. Example: <code>table/my-table</code>.</p>
258      * </li> <li> <p>DynamoDB global secondary index - The resource type is
259      * <code>index</code> and the unique identifier is the resource ID. Example:
260      * <code>table/my-table/index/my-table-index</code>.</p> </li> <li> <p>Aurora DB
261      * cluster - The resource type is <code>cluster</code> and the unique identifier is
262      * the cluster name. Example: <code>cluster:my-db-cluster</code>.</p> </li> </ul>
263      */
WithResourceId(const char * value)264     inline ScalingInstruction& WithResourceId(const char* value) { SetResourceId(value); return *this;}
265 
266 
267     /**
268      * <p>The scalable dimension associated with the resource.</p> <ul> <li> <p>
269      * <code>autoscaling:autoScalingGroup:DesiredCapacity</code> - The desired capacity
270      * of an Auto Scaling group.</p> </li> <li> <p>
271      * <code>ecs:service:DesiredCount</code> - The desired task count of an ECS
272      * service.</p> </li> <li> <p> <code>ec2:spot-fleet-request:TargetCapacity</code> -
273      * The target capacity of a Spot Fleet request.</p> </li> <li> <p>
274      * <code>dynamodb:table:ReadCapacityUnits</code> - The provisioned read capacity
275      * for a DynamoDB table.</p> </li> <li> <p>
276      * <code>dynamodb:table:WriteCapacityUnits</code> - The provisioned write capacity
277      * for a DynamoDB table.</p> </li> <li> <p>
278      * <code>dynamodb:index:ReadCapacityUnits</code> - The provisioned read capacity
279      * for a DynamoDB global secondary index.</p> </li> <li> <p>
280      * <code>dynamodb:index:WriteCapacityUnits</code> - The provisioned write capacity
281      * for a DynamoDB global secondary index.</p> </li> <li> <p>
282      * <code>rds:cluster:ReadReplicaCount</code> - The count of Aurora Replicas in an
283      * Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora
284      * PostgreSQL-compatible edition.</p> </li> </ul>
285      */
GetScalableDimension()286     inline const ScalableDimension& GetScalableDimension() const{ return m_scalableDimension; }
287 
288     /**
289      * <p>The scalable dimension associated with the resource.</p> <ul> <li> <p>
290      * <code>autoscaling:autoScalingGroup:DesiredCapacity</code> - The desired capacity
291      * of an Auto Scaling group.</p> </li> <li> <p>
292      * <code>ecs:service:DesiredCount</code> - The desired task count of an ECS
293      * service.</p> </li> <li> <p> <code>ec2:spot-fleet-request:TargetCapacity</code> -
294      * The target capacity of a Spot Fleet request.</p> </li> <li> <p>
295      * <code>dynamodb:table:ReadCapacityUnits</code> - The provisioned read capacity
296      * for a DynamoDB table.</p> </li> <li> <p>
297      * <code>dynamodb:table:WriteCapacityUnits</code> - The provisioned write capacity
298      * for a DynamoDB table.</p> </li> <li> <p>
299      * <code>dynamodb:index:ReadCapacityUnits</code> - The provisioned read capacity
300      * for a DynamoDB global secondary index.</p> </li> <li> <p>
301      * <code>dynamodb:index:WriteCapacityUnits</code> - The provisioned write capacity
302      * for a DynamoDB global secondary index.</p> </li> <li> <p>
303      * <code>rds:cluster:ReadReplicaCount</code> - The count of Aurora Replicas in an
304      * Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora
305      * PostgreSQL-compatible edition.</p> </li> </ul>
306      */
ScalableDimensionHasBeenSet()307     inline bool ScalableDimensionHasBeenSet() const { return m_scalableDimensionHasBeenSet; }
308 
309     /**
310      * <p>The scalable dimension associated with the resource.</p> <ul> <li> <p>
311      * <code>autoscaling:autoScalingGroup:DesiredCapacity</code> - The desired capacity
312      * of an Auto Scaling group.</p> </li> <li> <p>
313      * <code>ecs:service:DesiredCount</code> - The desired task count of an ECS
314      * service.</p> </li> <li> <p> <code>ec2:spot-fleet-request:TargetCapacity</code> -
315      * The target capacity of a Spot Fleet request.</p> </li> <li> <p>
316      * <code>dynamodb:table:ReadCapacityUnits</code> - The provisioned read capacity
317      * for a DynamoDB table.</p> </li> <li> <p>
318      * <code>dynamodb:table:WriteCapacityUnits</code> - The provisioned write capacity
319      * for a DynamoDB table.</p> </li> <li> <p>
320      * <code>dynamodb:index:ReadCapacityUnits</code> - The provisioned read capacity
321      * for a DynamoDB global secondary index.</p> </li> <li> <p>
322      * <code>dynamodb:index:WriteCapacityUnits</code> - The provisioned write capacity
323      * for a DynamoDB global secondary index.</p> </li> <li> <p>
324      * <code>rds:cluster:ReadReplicaCount</code> - The count of Aurora Replicas in an
325      * Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora
326      * PostgreSQL-compatible edition.</p> </li> </ul>
327      */
SetScalableDimension(const ScalableDimension & value)328     inline void SetScalableDimension(const ScalableDimension& value) { m_scalableDimensionHasBeenSet = true; m_scalableDimension = value; }
329 
330     /**
331      * <p>The scalable dimension associated with the resource.</p> <ul> <li> <p>
332      * <code>autoscaling:autoScalingGroup:DesiredCapacity</code> - The desired capacity
333      * of an Auto Scaling group.</p> </li> <li> <p>
334      * <code>ecs:service:DesiredCount</code> - The desired task count of an ECS
335      * service.</p> </li> <li> <p> <code>ec2:spot-fleet-request:TargetCapacity</code> -
336      * The target capacity of a Spot Fleet request.</p> </li> <li> <p>
337      * <code>dynamodb:table:ReadCapacityUnits</code> - The provisioned read capacity
338      * for a DynamoDB table.</p> </li> <li> <p>
339      * <code>dynamodb:table:WriteCapacityUnits</code> - The provisioned write capacity
340      * for a DynamoDB table.</p> </li> <li> <p>
341      * <code>dynamodb:index:ReadCapacityUnits</code> - The provisioned read capacity
342      * for a DynamoDB global secondary index.</p> </li> <li> <p>
343      * <code>dynamodb:index:WriteCapacityUnits</code> - The provisioned write capacity
344      * for a DynamoDB global secondary index.</p> </li> <li> <p>
345      * <code>rds:cluster:ReadReplicaCount</code> - The count of Aurora Replicas in an
346      * Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora
347      * PostgreSQL-compatible edition.</p> </li> </ul>
348      */
SetScalableDimension(ScalableDimension && value)349     inline void SetScalableDimension(ScalableDimension&& value) { m_scalableDimensionHasBeenSet = true; m_scalableDimension = std::move(value); }
350 
351     /**
352      * <p>The scalable dimension associated with the resource.</p> <ul> <li> <p>
353      * <code>autoscaling:autoScalingGroup:DesiredCapacity</code> - The desired capacity
354      * of an Auto Scaling group.</p> </li> <li> <p>
355      * <code>ecs:service:DesiredCount</code> - The desired task count of an ECS
356      * service.</p> </li> <li> <p> <code>ec2:spot-fleet-request:TargetCapacity</code> -
357      * The target capacity of a Spot Fleet request.</p> </li> <li> <p>
358      * <code>dynamodb:table:ReadCapacityUnits</code> - The provisioned read capacity
359      * for a DynamoDB table.</p> </li> <li> <p>
360      * <code>dynamodb:table:WriteCapacityUnits</code> - The provisioned write capacity
361      * for a DynamoDB table.</p> </li> <li> <p>
362      * <code>dynamodb:index:ReadCapacityUnits</code> - The provisioned read capacity
363      * for a DynamoDB global secondary index.</p> </li> <li> <p>
364      * <code>dynamodb:index:WriteCapacityUnits</code> - The provisioned write capacity
365      * for a DynamoDB global secondary index.</p> </li> <li> <p>
366      * <code>rds:cluster:ReadReplicaCount</code> - The count of Aurora Replicas in an
367      * Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora
368      * PostgreSQL-compatible edition.</p> </li> </ul>
369      */
WithScalableDimension(const ScalableDimension & value)370     inline ScalingInstruction& WithScalableDimension(const ScalableDimension& value) { SetScalableDimension(value); return *this;}
371 
372     /**
373      * <p>The scalable dimension associated with the resource.</p> <ul> <li> <p>
374      * <code>autoscaling:autoScalingGroup:DesiredCapacity</code> - The desired capacity
375      * of an Auto Scaling group.</p> </li> <li> <p>
376      * <code>ecs:service:DesiredCount</code> - The desired task count of an ECS
377      * service.</p> </li> <li> <p> <code>ec2:spot-fleet-request:TargetCapacity</code> -
378      * The target capacity of a Spot Fleet request.</p> </li> <li> <p>
379      * <code>dynamodb:table:ReadCapacityUnits</code> - The provisioned read capacity
380      * for a DynamoDB table.</p> </li> <li> <p>
381      * <code>dynamodb:table:WriteCapacityUnits</code> - The provisioned write capacity
382      * for a DynamoDB table.</p> </li> <li> <p>
383      * <code>dynamodb:index:ReadCapacityUnits</code> - The provisioned read capacity
384      * for a DynamoDB global secondary index.</p> </li> <li> <p>
385      * <code>dynamodb:index:WriteCapacityUnits</code> - The provisioned write capacity
386      * for a DynamoDB global secondary index.</p> </li> <li> <p>
387      * <code>rds:cluster:ReadReplicaCount</code> - The count of Aurora Replicas in an
388      * Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora
389      * PostgreSQL-compatible edition.</p> </li> </ul>
390      */
WithScalableDimension(ScalableDimension && value)391     inline ScalingInstruction& WithScalableDimension(ScalableDimension&& value) { SetScalableDimension(std::move(value)); return *this;}
392 
393 
394     /**
395      * <p>The minimum capacity of the resource. </p>
396      */
GetMinCapacity()397     inline int GetMinCapacity() const{ return m_minCapacity; }
398 
399     /**
400      * <p>The minimum capacity of the resource. </p>
401      */
MinCapacityHasBeenSet()402     inline bool MinCapacityHasBeenSet() const { return m_minCapacityHasBeenSet; }
403 
404     /**
405      * <p>The minimum capacity of the resource. </p>
406      */
SetMinCapacity(int value)407     inline void SetMinCapacity(int value) { m_minCapacityHasBeenSet = true; m_minCapacity = value; }
408 
409     /**
410      * <p>The minimum capacity of the resource. </p>
411      */
WithMinCapacity(int value)412     inline ScalingInstruction& WithMinCapacity(int value) { SetMinCapacity(value); return *this;}
413 
414 
415     /**
416      * <p>The maximum capacity of the resource. The exception to this upper limit is if
417      * you specify a non-default setting for
418      * <b>PredictiveScalingMaxCapacityBehavior</b>. </p>
419      */
GetMaxCapacity()420     inline int GetMaxCapacity() const{ return m_maxCapacity; }
421 
422     /**
423      * <p>The maximum capacity of the resource. The exception to this upper limit is if
424      * you specify a non-default setting for
425      * <b>PredictiveScalingMaxCapacityBehavior</b>. </p>
426      */
MaxCapacityHasBeenSet()427     inline bool MaxCapacityHasBeenSet() const { return m_maxCapacityHasBeenSet; }
428 
429     /**
430      * <p>The maximum capacity of the resource. The exception to this upper limit is if
431      * you specify a non-default setting for
432      * <b>PredictiveScalingMaxCapacityBehavior</b>. </p>
433      */
SetMaxCapacity(int value)434     inline void SetMaxCapacity(int value) { m_maxCapacityHasBeenSet = true; m_maxCapacity = value; }
435 
436     /**
437      * <p>The maximum capacity of the resource. The exception to this upper limit is if
438      * you specify a non-default setting for
439      * <b>PredictiveScalingMaxCapacityBehavior</b>. </p>
440      */
WithMaxCapacity(int value)441     inline ScalingInstruction& WithMaxCapacity(int value) { SetMaxCapacity(value); return *this;}
442 
443 
444     /**
445      * <p>The target tracking configurations (up to 10). Each of these structures must
446      * specify a unique scaling metric and a target value for the metric. </p>
447      */
GetTargetTrackingConfigurations()448     inline const Aws::Vector<TargetTrackingConfiguration>& GetTargetTrackingConfigurations() const{ return m_targetTrackingConfigurations; }
449 
450     /**
451      * <p>The target tracking configurations (up to 10). Each of these structures must
452      * specify a unique scaling metric and a target value for the metric. </p>
453      */
TargetTrackingConfigurationsHasBeenSet()454     inline bool TargetTrackingConfigurationsHasBeenSet() const { return m_targetTrackingConfigurationsHasBeenSet; }
455 
456     /**
457      * <p>The target tracking configurations (up to 10). Each of these structures must
458      * specify a unique scaling metric and a target value for the metric. </p>
459      */
SetTargetTrackingConfigurations(const Aws::Vector<TargetTrackingConfiguration> & value)460     inline void SetTargetTrackingConfigurations(const Aws::Vector<TargetTrackingConfiguration>& value) { m_targetTrackingConfigurationsHasBeenSet = true; m_targetTrackingConfigurations = value; }
461 
462     /**
463      * <p>The target tracking configurations (up to 10). Each of these structures must
464      * specify a unique scaling metric and a target value for the metric. </p>
465      */
SetTargetTrackingConfigurations(Aws::Vector<TargetTrackingConfiguration> && value)466     inline void SetTargetTrackingConfigurations(Aws::Vector<TargetTrackingConfiguration>&& value) { m_targetTrackingConfigurationsHasBeenSet = true; m_targetTrackingConfigurations = std::move(value); }
467 
468     /**
469      * <p>The target tracking configurations (up to 10). Each of these structures must
470      * specify a unique scaling metric and a target value for the metric. </p>
471      */
WithTargetTrackingConfigurations(const Aws::Vector<TargetTrackingConfiguration> & value)472     inline ScalingInstruction& WithTargetTrackingConfigurations(const Aws::Vector<TargetTrackingConfiguration>& value) { SetTargetTrackingConfigurations(value); return *this;}
473 
474     /**
475      * <p>The target tracking configurations (up to 10). Each of these structures must
476      * specify a unique scaling metric and a target value for the metric. </p>
477      */
WithTargetTrackingConfigurations(Aws::Vector<TargetTrackingConfiguration> && value)478     inline ScalingInstruction& WithTargetTrackingConfigurations(Aws::Vector<TargetTrackingConfiguration>&& value) { SetTargetTrackingConfigurations(std::move(value)); return *this;}
479 
480     /**
481      * <p>The target tracking configurations (up to 10). Each of these structures must
482      * specify a unique scaling metric and a target value for the metric. </p>
483      */
AddTargetTrackingConfigurations(const TargetTrackingConfiguration & value)484     inline ScalingInstruction& AddTargetTrackingConfigurations(const TargetTrackingConfiguration& value) { m_targetTrackingConfigurationsHasBeenSet = true; m_targetTrackingConfigurations.push_back(value); return *this; }
485 
486     /**
487      * <p>The target tracking configurations (up to 10). Each of these structures must
488      * specify a unique scaling metric and a target value for the metric. </p>
489      */
AddTargetTrackingConfigurations(TargetTrackingConfiguration && value)490     inline ScalingInstruction& AddTargetTrackingConfigurations(TargetTrackingConfiguration&& value) { m_targetTrackingConfigurationsHasBeenSet = true; m_targetTrackingConfigurations.push_back(std::move(value)); return *this; }
491 
492 
493     /**
494      * <p>The predefined load metric to use for predictive scaling. This parameter or a
495      * <b>CustomizedLoadMetricSpecification</b> is required when configuring predictive
496      * scaling, and cannot be used otherwise. </p>
497      */
GetPredefinedLoadMetricSpecification()498     inline const PredefinedLoadMetricSpecification& GetPredefinedLoadMetricSpecification() const{ return m_predefinedLoadMetricSpecification; }
499 
500     /**
501      * <p>The predefined load metric to use for predictive scaling. This parameter or a
502      * <b>CustomizedLoadMetricSpecification</b> is required when configuring predictive
503      * scaling, and cannot be used otherwise. </p>
504      */
PredefinedLoadMetricSpecificationHasBeenSet()505     inline bool PredefinedLoadMetricSpecificationHasBeenSet() const { return m_predefinedLoadMetricSpecificationHasBeenSet; }
506 
507     /**
508      * <p>The predefined load metric to use for predictive scaling. This parameter or a
509      * <b>CustomizedLoadMetricSpecification</b> is required when configuring predictive
510      * scaling, and cannot be used otherwise. </p>
511      */
SetPredefinedLoadMetricSpecification(const PredefinedLoadMetricSpecification & value)512     inline void SetPredefinedLoadMetricSpecification(const PredefinedLoadMetricSpecification& value) { m_predefinedLoadMetricSpecificationHasBeenSet = true; m_predefinedLoadMetricSpecification = value; }
513 
514     /**
515      * <p>The predefined load metric to use for predictive scaling. This parameter or a
516      * <b>CustomizedLoadMetricSpecification</b> is required when configuring predictive
517      * scaling, and cannot be used otherwise. </p>
518      */
SetPredefinedLoadMetricSpecification(PredefinedLoadMetricSpecification && value)519     inline void SetPredefinedLoadMetricSpecification(PredefinedLoadMetricSpecification&& value) { m_predefinedLoadMetricSpecificationHasBeenSet = true; m_predefinedLoadMetricSpecification = std::move(value); }
520 
521     /**
522      * <p>The predefined load metric to use for predictive scaling. This parameter or a
523      * <b>CustomizedLoadMetricSpecification</b> is required when configuring predictive
524      * scaling, and cannot be used otherwise. </p>
525      */
WithPredefinedLoadMetricSpecification(const PredefinedLoadMetricSpecification & value)526     inline ScalingInstruction& WithPredefinedLoadMetricSpecification(const PredefinedLoadMetricSpecification& value) { SetPredefinedLoadMetricSpecification(value); return *this;}
527 
528     /**
529      * <p>The predefined load metric to use for predictive scaling. This parameter or a
530      * <b>CustomizedLoadMetricSpecification</b> is required when configuring predictive
531      * scaling, and cannot be used otherwise. </p>
532      */
WithPredefinedLoadMetricSpecification(PredefinedLoadMetricSpecification && value)533     inline ScalingInstruction& WithPredefinedLoadMetricSpecification(PredefinedLoadMetricSpecification&& value) { SetPredefinedLoadMetricSpecification(std::move(value)); return *this;}
534 
535 
536     /**
537      * <p>The customized load metric to use for predictive scaling. This parameter or a
538      * <b>PredefinedLoadMetricSpecification</b> is required when configuring predictive
539      * scaling, and cannot be used otherwise. </p>
540      */
GetCustomizedLoadMetricSpecification()541     inline const CustomizedLoadMetricSpecification& GetCustomizedLoadMetricSpecification() const{ return m_customizedLoadMetricSpecification; }
542 
543     /**
544      * <p>The customized load metric to use for predictive scaling. This parameter or a
545      * <b>PredefinedLoadMetricSpecification</b> is required when configuring predictive
546      * scaling, and cannot be used otherwise. </p>
547      */
CustomizedLoadMetricSpecificationHasBeenSet()548     inline bool CustomizedLoadMetricSpecificationHasBeenSet() const { return m_customizedLoadMetricSpecificationHasBeenSet; }
549 
550     /**
551      * <p>The customized load metric to use for predictive scaling. This parameter or a
552      * <b>PredefinedLoadMetricSpecification</b> is required when configuring predictive
553      * scaling, and cannot be used otherwise. </p>
554      */
SetCustomizedLoadMetricSpecification(const CustomizedLoadMetricSpecification & value)555     inline void SetCustomizedLoadMetricSpecification(const CustomizedLoadMetricSpecification& value) { m_customizedLoadMetricSpecificationHasBeenSet = true; m_customizedLoadMetricSpecification = value; }
556 
557     /**
558      * <p>The customized load metric to use for predictive scaling. This parameter or a
559      * <b>PredefinedLoadMetricSpecification</b> is required when configuring predictive
560      * scaling, and cannot be used otherwise. </p>
561      */
SetCustomizedLoadMetricSpecification(CustomizedLoadMetricSpecification && value)562     inline void SetCustomizedLoadMetricSpecification(CustomizedLoadMetricSpecification&& value) { m_customizedLoadMetricSpecificationHasBeenSet = true; m_customizedLoadMetricSpecification = std::move(value); }
563 
564     /**
565      * <p>The customized load metric to use for predictive scaling. This parameter or a
566      * <b>PredefinedLoadMetricSpecification</b> is required when configuring predictive
567      * scaling, and cannot be used otherwise. </p>
568      */
WithCustomizedLoadMetricSpecification(const CustomizedLoadMetricSpecification & value)569     inline ScalingInstruction& WithCustomizedLoadMetricSpecification(const CustomizedLoadMetricSpecification& value) { SetCustomizedLoadMetricSpecification(value); return *this;}
570 
571     /**
572      * <p>The customized load metric to use for predictive scaling. This parameter or a
573      * <b>PredefinedLoadMetricSpecification</b> is required when configuring predictive
574      * scaling, and cannot be used otherwise. </p>
575      */
WithCustomizedLoadMetricSpecification(CustomizedLoadMetricSpecification && value)576     inline ScalingInstruction& WithCustomizedLoadMetricSpecification(CustomizedLoadMetricSpecification&& value) { SetCustomizedLoadMetricSpecification(std::move(value)); return *this;}
577 
578 
579     /**
580      * <p>The amount of time, in seconds, to buffer the run time of scheduled scaling
581      * actions when scaling out. For example, if the forecast says to add capacity at
582      * 10:00 AM, and the buffer time is 5 minutes, then the run time of the
583      * corresponding scheduled scaling action will be 9:55 AM. The intention is to give
584      * resources time to be provisioned. For example, it can take a few minutes to
585      * launch an EC2 instance. The actual amount of time required depends on several
586      * factors, such as the size of the instance and whether there are startup scripts
587      * to complete. </p> <p>The value must be less than the forecast interval duration
588      * of 3600 seconds (60 minutes). The default is 300 seconds. </p> <p>Only valid
589      * when configuring predictive scaling. </p>
590      */
GetScheduledActionBufferTime()591     inline int GetScheduledActionBufferTime() const{ return m_scheduledActionBufferTime; }
592 
593     /**
594      * <p>The amount of time, in seconds, to buffer the run time of scheduled scaling
595      * actions when scaling out. For example, if the forecast says to add capacity at
596      * 10:00 AM, and the buffer time is 5 minutes, then the run time of the
597      * corresponding scheduled scaling action will be 9:55 AM. The intention is to give
598      * resources time to be provisioned. For example, it can take a few minutes to
599      * launch an EC2 instance. The actual amount of time required depends on several
600      * factors, such as the size of the instance and whether there are startup scripts
601      * to complete. </p> <p>The value must be less than the forecast interval duration
602      * of 3600 seconds (60 minutes). The default is 300 seconds. </p> <p>Only valid
603      * when configuring predictive scaling. </p>
604      */
ScheduledActionBufferTimeHasBeenSet()605     inline bool ScheduledActionBufferTimeHasBeenSet() const { return m_scheduledActionBufferTimeHasBeenSet; }
606 
607     /**
608      * <p>The amount of time, in seconds, to buffer the run time of scheduled scaling
609      * actions when scaling out. For example, if the forecast says to add capacity at
610      * 10:00 AM, and the buffer time is 5 minutes, then the run time of the
611      * corresponding scheduled scaling action will be 9:55 AM. The intention is to give
612      * resources time to be provisioned. For example, it can take a few minutes to
613      * launch an EC2 instance. The actual amount of time required depends on several
614      * factors, such as the size of the instance and whether there are startup scripts
615      * to complete. </p> <p>The value must be less than the forecast interval duration
616      * of 3600 seconds (60 minutes). The default is 300 seconds. </p> <p>Only valid
617      * when configuring predictive scaling. </p>
618      */
SetScheduledActionBufferTime(int value)619     inline void SetScheduledActionBufferTime(int value) { m_scheduledActionBufferTimeHasBeenSet = true; m_scheduledActionBufferTime = value; }
620 
621     /**
622      * <p>The amount of time, in seconds, to buffer the run time of scheduled scaling
623      * actions when scaling out. For example, if the forecast says to add capacity at
624      * 10:00 AM, and the buffer time is 5 minutes, then the run time of the
625      * corresponding scheduled scaling action will be 9:55 AM. The intention is to give
626      * resources time to be provisioned. For example, it can take a few minutes to
627      * launch an EC2 instance. The actual amount of time required depends on several
628      * factors, such as the size of the instance and whether there are startup scripts
629      * to complete. </p> <p>The value must be less than the forecast interval duration
630      * of 3600 seconds (60 minutes). The default is 300 seconds. </p> <p>Only valid
631      * when configuring predictive scaling. </p>
632      */
WithScheduledActionBufferTime(int value)633     inline ScalingInstruction& WithScheduledActionBufferTime(int value) { SetScheduledActionBufferTime(value); return *this;}
634 
635 
636     /**
637      * <p>Defines the behavior that should be applied if the forecast capacity
638      * approaches or exceeds the maximum capacity specified for the resource. The
639      * default value is <code>SetForecastCapacityToMaxCapacity</code>.</p> <p>The
640      * following are possible values:</p> <ul> <li> <p>
641      * <code>SetForecastCapacityToMaxCapacity</code> - AWS Auto Scaling cannot scale
642      * resource capacity higher than the maximum capacity. The maximum capacity is
643      * enforced as a hard limit. </p> </li> <li> <p>
644      * <code>SetMaxCapacityToForecastCapacity</code> - AWS Auto Scaling may scale
645      * resource capacity higher than the maximum capacity to equal but not exceed
646      * forecast capacity.</p> </li> <li> <p>
647      * <code>SetMaxCapacityAboveForecastCapacity</code> - AWS Auto Scaling may scale
648      * resource capacity higher than the maximum capacity by a specified buffer value.
649      * The intention is to give the target tracking scaling policy extra capacity if
650      * unexpected traffic occurs. </p> </li> </ul> <p>Only valid when configuring
651      * predictive scaling.</p>
652      */
GetPredictiveScalingMaxCapacityBehavior()653     inline const PredictiveScalingMaxCapacityBehavior& GetPredictiveScalingMaxCapacityBehavior() const{ return m_predictiveScalingMaxCapacityBehavior; }
654 
655     /**
656      * <p>Defines the behavior that should be applied if the forecast capacity
657      * approaches or exceeds the maximum capacity specified for the resource. The
658      * default value is <code>SetForecastCapacityToMaxCapacity</code>.</p> <p>The
659      * following are possible values:</p> <ul> <li> <p>
660      * <code>SetForecastCapacityToMaxCapacity</code> - AWS Auto Scaling cannot scale
661      * resource capacity higher than the maximum capacity. The maximum capacity is
662      * enforced as a hard limit. </p> </li> <li> <p>
663      * <code>SetMaxCapacityToForecastCapacity</code> - AWS Auto Scaling may scale
664      * resource capacity higher than the maximum capacity to equal but not exceed
665      * forecast capacity.</p> </li> <li> <p>
666      * <code>SetMaxCapacityAboveForecastCapacity</code> - AWS Auto Scaling may scale
667      * resource capacity higher than the maximum capacity by a specified buffer value.
668      * The intention is to give the target tracking scaling policy extra capacity if
669      * unexpected traffic occurs. </p> </li> </ul> <p>Only valid when configuring
670      * predictive scaling.</p>
671      */
PredictiveScalingMaxCapacityBehaviorHasBeenSet()672     inline bool PredictiveScalingMaxCapacityBehaviorHasBeenSet() const { return m_predictiveScalingMaxCapacityBehaviorHasBeenSet; }
673 
674     /**
675      * <p>Defines the behavior that should be applied if the forecast capacity
676      * approaches or exceeds the maximum capacity specified for the resource. The
677      * default value is <code>SetForecastCapacityToMaxCapacity</code>.</p> <p>The
678      * following are possible values:</p> <ul> <li> <p>
679      * <code>SetForecastCapacityToMaxCapacity</code> - AWS Auto Scaling cannot scale
680      * resource capacity higher than the maximum capacity. The maximum capacity is
681      * enforced as a hard limit. </p> </li> <li> <p>
682      * <code>SetMaxCapacityToForecastCapacity</code> - AWS Auto Scaling may scale
683      * resource capacity higher than the maximum capacity to equal but not exceed
684      * forecast capacity.</p> </li> <li> <p>
685      * <code>SetMaxCapacityAboveForecastCapacity</code> - AWS Auto Scaling may scale
686      * resource capacity higher than the maximum capacity by a specified buffer value.
687      * The intention is to give the target tracking scaling policy extra capacity if
688      * unexpected traffic occurs. </p> </li> </ul> <p>Only valid when configuring
689      * predictive scaling.</p>
690      */
SetPredictiveScalingMaxCapacityBehavior(const PredictiveScalingMaxCapacityBehavior & value)691     inline void SetPredictiveScalingMaxCapacityBehavior(const PredictiveScalingMaxCapacityBehavior& value) { m_predictiveScalingMaxCapacityBehaviorHasBeenSet = true; m_predictiveScalingMaxCapacityBehavior = value; }
692 
693     /**
694      * <p>Defines the behavior that should be applied if the forecast capacity
695      * approaches or exceeds the maximum capacity specified for the resource. The
696      * default value is <code>SetForecastCapacityToMaxCapacity</code>.</p> <p>The
697      * following are possible values:</p> <ul> <li> <p>
698      * <code>SetForecastCapacityToMaxCapacity</code> - AWS Auto Scaling cannot scale
699      * resource capacity higher than the maximum capacity. The maximum capacity is
700      * enforced as a hard limit. </p> </li> <li> <p>
701      * <code>SetMaxCapacityToForecastCapacity</code> - AWS Auto Scaling may scale
702      * resource capacity higher than the maximum capacity to equal but not exceed
703      * forecast capacity.</p> </li> <li> <p>
704      * <code>SetMaxCapacityAboveForecastCapacity</code> - AWS Auto Scaling may scale
705      * resource capacity higher than the maximum capacity by a specified buffer value.
706      * The intention is to give the target tracking scaling policy extra capacity if
707      * unexpected traffic occurs. </p> </li> </ul> <p>Only valid when configuring
708      * predictive scaling.</p>
709      */
SetPredictiveScalingMaxCapacityBehavior(PredictiveScalingMaxCapacityBehavior && value)710     inline void SetPredictiveScalingMaxCapacityBehavior(PredictiveScalingMaxCapacityBehavior&& value) { m_predictiveScalingMaxCapacityBehaviorHasBeenSet = true; m_predictiveScalingMaxCapacityBehavior = std::move(value); }
711 
712     /**
713      * <p>Defines the behavior that should be applied if the forecast capacity
714      * approaches or exceeds the maximum capacity specified for the resource. The
715      * default value is <code>SetForecastCapacityToMaxCapacity</code>.</p> <p>The
716      * following are possible values:</p> <ul> <li> <p>
717      * <code>SetForecastCapacityToMaxCapacity</code> - AWS Auto Scaling cannot scale
718      * resource capacity higher than the maximum capacity. The maximum capacity is
719      * enforced as a hard limit. </p> </li> <li> <p>
720      * <code>SetMaxCapacityToForecastCapacity</code> - AWS Auto Scaling may scale
721      * resource capacity higher than the maximum capacity to equal but not exceed
722      * forecast capacity.</p> </li> <li> <p>
723      * <code>SetMaxCapacityAboveForecastCapacity</code> - AWS Auto Scaling may scale
724      * resource capacity higher than the maximum capacity by a specified buffer value.
725      * The intention is to give the target tracking scaling policy extra capacity if
726      * unexpected traffic occurs. </p> </li> </ul> <p>Only valid when configuring
727      * predictive scaling.</p>
728      */
WithPredictiveScalingMaxCapacityBehavior(const PredictiveScalingMaxCapacityBehavior & value)729     inline ScalingInstruction& WithPredictiveScalingMaxCapacityBehavior(const PredictiveScalingMaxCapacityBehavior& value) { SetPredictiveScalingMaxCapacityBehavior(value); return *this;}
730 
731     /**
732      * <p>Defines the behavior that should be applied if the forecast capacity
733      * approaches or exceeds the maximum capacity specified for the resource. The
734      * default value is <code>SetForecastCapacityToMaxCapacity</code>.</p> <p>The
735      * following are possible values:</p> <ul> <li> <p>
736      * <code>SetForecastCapacityToMaxCapacity</code> - AWS Auto Scaling cannot scale
737      * resource capacity higher than the maximum capacity. The maximum capacity is
738      * enforced as a hard limit. </p> </li> <li> <p>
739      * <code>SetMaxCapacityToForecastCapacity</code> - AWS Auto Scaling may scale
740      * resource capacity higher than the maximum capacity to equal but not exceed
741      * forecast capacity.</p> </li> <li> <p>
742      * <code>SetMaxCapacityAboveForecastCapacity</code> - AWS Auto Scaling may scale
743      * resource capacity higher than the maximum capacity by a specified buffer value.
744      * The intention is to give the target tracking scaling policy extra capacity if
745      * unexpected traffic occurs. </p> </li> </ul> <p>Only valid when configuring
746      * predictive scaling.</p>
747      */
WithPredictiveScalingMaxCapacityBehavior(PredictiveScalingMaxCapacityBehavior && value)748     inline ScalingInstruction& WithPredictiveScalingMaxCapacityBehavior(PredictiveScalingMaxCapacityBehavior&& value) { SetPredictiveScalingMaxCapacityBehavior(std::move(value)); return *this;}
749 
750 
751     /**
752      * <p>The size of the capacity buffer to use when the forecast capacity is close to
753      * or exceeds the maximum capacity. The value is specified as a percentage relative
754      * to the forecast capacity. For example, if the buffer is 10, this means a 10
755      * percent buffer, such that if the forecast capacity is 50, and the maximum
756      * capacity is 40, then the effective maximum capacity is 55.</p> <p>Only valid
757      * when configuring predictive scaling. Required if the
758      * <b>PredictiveScalingMaxCapacityBehavior</b> is set to
759      * <code>SetMaxCapacityAboveForecastCapacity</code>, and cannot be used
760      * otherwise.</p> <p>The range is 1-100.</p>
761      */
GetPredictiveScalingMaxCapacityBuffer()762     inline int GetPredictiveScalingMaxCapacityBuffer() const{ return m_predictiveScalingMaxCapacityBuffer; }
763 
764     /**
765      * <p>The size of the capacity buffer to use when the forecast capacity is close to
766      * or exceeds the maximum capacity. The value is specified as a percentage relative
767      * to the forecast capacity. For example, if the buffer is 10, this means a 10
768      * percent buffer, such that if the forecast capacity is 50, and the maximum
769      * capacity is 40, then the effective maximum capacity is 55.</p> <p>Only valid
770      * when configuring predictive scaling. Required if the
771      * <b>PredictiveScalingMaxCapacityBehavior</b> is set to
772      * <code>SetMaxCapacityAboveForecastCapacity</code>, and cannot be used
773      * otherwise.</p> <p>The range is 1-100.</p>
774      */
PredictiveScalingMaxCapacityBufferHasBeenSet()775     inline bool PredictiveScalingMaxCapacityBufferHasBeenSet() const { return m_predictiveScalingMaxCapacityBufferHasBeenSet; }
776 
777     /**
778      * <p>The size of the capacity buffer to use when the forecast capacity is close to
779      * or exceeds the maximum capacity. The value is specified as a percentage relative
780      * to the forecast capacity. For example, if the buffer is 10, this means a 10
781      * percent buffer, such that if the forecast capacity is 50, and the maximum
782      * capacity is 40, then the effective maximum capacity is 55.</p> <p>Only valid
783      * when configuring predictive scaling. Required if the
784      * <b>PredictiveScalingMaxCapacityBehavior</b> is set to
785      * <code>SetMaxCapacityAboveForecastCapacity</code>, and cannot be used
786      * otherwise.</p> <p>The range is 1-100.</p>
787      */
SetPredictiveScalingMaxCapacityBuffer(int value)788     inline void SetPredictiveScalingMaxCapacityBuffer(int value) { m_predictiveScalingMaxCapacityBufferHasBeenSet = true; m_predictiveScalingMaxCapacityBuffer = value; }
789 
790     /**
791      * <p>The size of the capacity buffer to use when the forecast capacity is close to
792      * or exceeds the maximum capacity. The value is specified as a percentage relative
793      * to the forecast capacity. For example, if the buffer is 10, this means a 10
794      * percent buffer, such that if the forecast capacity is 50, and the maximum
795      * capacity is 40, then the effective maximum capacity is 55.</p> <p>Only valid
796      * when configuring predictive scaling. Required if the
797      * <b>PredictiveScalingMaxCapacityBehavior</b> is set to
798      * <code>SetMaxCapacityAboveForecastCapacity</code>, and cannot be used
799      * otherwise.</p> <p>The range is 1-100.</p>
800      */
WithPredictiveScalingMaxCapacityBuffer(int value)801     inline ScalingInstruction& WithPredictiveScalingMaxCapacityBuffer(int value) { SetPredictiveScalingMaxCapacityBuffer(value); return *this;}
802 
803 
804     /**
805      * <p>The predictive scaling mode. The default value is
806      * <code>ForecastAndScale</code>. Otherwise, AWS Auto Scaling forecasts capacity
807      * but does not create any scheduled scaling actions based on the capacity
808      * forecast. </p>
809      */
GetPredictiveScalingMode()810     inline const PredictiveScalingMode& GetPredictiveScalingMode() const{ return m_predictiveScalingMode; }
811 
812     /**
813      * <p>The predictive scaling mode. The default value is
814      * <code>ForecastAndScale</code>. Otherwise, AWS Auto Scaling forecasts capacity
815      * but does not create any scheduled scaling actions based on the capacity
816      * forecast. </p>
817      */
PredictiveScalingModeHasBeenSet()818     inline bool PredictiveScalingModeHasBeenSet() const { return m_predictiveScalingModeHasBeenSet; }
819 
820     /**
821      * <p>The predictive scaling mode. The default value is
822      * <code>ForecastAndScale</code>. Otherwise, AWS Auto Scaling forecasts capacity
823      * but does not create any scheduled scaling actions based on the capacity
824      * forecast. </p>
825      */
SetPredictiveScalingMode(const PredictiveScalingMode & value)826     inline void SetPredictiveScalingMode(const PredictiveScalingMode& value) { m_predictiveScalingModeHasBeenSet = true; m_predictiveScalingMode = value; }
827 
828     /**
829      * <p>The predictive scaling mode. The default value is
830      * <code>ForecastAndScale</code>. Otherwise, AWS Auto Scaling forecasts capacity
831      * but does not create any scheduled scaling actions based on the capacity
832      * forecast. </p>
833      */
SetPredictiveScalingMode(PredictiveScalingMode && value)834     inline void SetPredictiveScalingMode(PredictiveScalingMode&& value) { m_predictiveScalingModeHasBeenSet = true; m_predictiveScalingMode = std::move(value); }
835 
836     /**
837      * <p>The predictive scaling mode. The default value is
838      * <code>ForecastAndScale</code>. Otherwise, AWS Auto Scaling forecasts capacity
839      * but does not create any scheduled scaling actions based on the capacity
840      * forecast. </p>
841      */
WithPredictiveScalingMode(const PredictiveScalingMode & value)842     inline ScalingInstruction& WithPredictiveScalingMode(const PredictiveScalingMode& value) { SetPredictiveScalingMode(value); return *this;}
843 
844     /**
845      * <p>The predictive scaling mode. The default value is
846      * <code>ForecastAndScale</code>. Otherwise, AWS Auto Scaling forecasts capacity
847      * but does not create any scheduled scaling actions based on the capacity
848      * forecast. </p>
849      */
WithPredictiveScalingMode(PredictiveScalingMode && value)850     inline ScalingInstruction& WithPredictiveScalingMode(PredictiveScalingMode&& value) { SetPredictiveScalingMode(std::move(value)); return *this;}
851 
852 
853     /**
854      * <p>Controls whether a resource's externally created scaling policies are kept or
855      * replaced. </p> <p>The default value is <code>KeepExternalPolicies</code>. If the
856      * parameter is set to <code>ReplaceExternalPolicies</code>, any scaling policies
857      * that are external to AWS Auto Scaling are deleted and new target tracking
858      * scaling policies created. </p> <p>Only valid when configuring dynamic scaling.
859      * </p> <p>Condition: The number of existing policies to be replaced must be less
860      * than or equal to 50. If there are more than 50 policies to be replaced, AWS Auto
861      * Scaling keeps all existing policies and does not create new ones.</p>
862      */
GetScalingPolicyUpdateBehavior()863     inline const ScalingPolicyUpdateBehavior& GetScalingPolicyUpdateBehavior() const{ return m_scalingPolicyUpdateBehavior; }
864 
865     /**
866      * <p>Controls whether a resource's externally created scaling policies are kept or
867      * replaced. </p> <p>The default value is <code>KeepExternalPolicies</code>. If the
868      * parameter is set to <code>ReplaceExternalPolicies</code>, any scaling policies
869      * that are external to AWS Auto Scaling are deleted and new target tracking
870      * scaling policies created. </p> <p>Only valid when configuring dynamic scaling.
871      * </p> <p>Condition: The number of existing policies to be replaced must be less
872      * than or equal to 50. If there are more than 50 policies to be replaced, AWS Auto
873      * Scaling keeps all existing policies and does not create new ones.</p>
874      */
ScalingPolicyUpdateBehaviorHasBeenSet()875     inline bool ScalingPolicyUpdateBehaviorHasBeenSet() const { return m_scalingPolicyUpdateBehaviorHasBeenSet; }
876 
877     /**
878      * <p>Controls whether a resource's externally created scaling policies are kept or
879      * replaced. </p> <p>The default value is <code>KeepExternalPolicies</code>. If the
880      * parameter is set to <code>ReplaceExternalPolicies</code>, any scaling policies
881      * that are external to AWS Auto Scaling are deleted and new target tracking
882      * scaling policies created. </p> <p>Only valid when configuring dynamic scaling.
883      * </p> <p>Condition: The number of existing policies to be replaced must be less
884      * than or equal to 50. If there are more than 50 policies to be replaced, AWS Auto
885      * Scaling keeps all existing policies and does not create new ones.</p>
886      */
SetScalingPolicyUpdateBehavior(const ScalingPolicyUpdateBehavior & value)887     inline void SetScalingPolicyUpdateBehavior(const ScalingPolicyUpdateBehavior& value) { m_scalingPolicyUpdateBehaviorHasBeenSet = true; m_scalingPolicyUpdateBehavior = value; }
888 
889     /**
890      * <p>Controls whether a resource's externally created scaling policies are kept or
891      * replaced. </p> <p>The default value is <code>KeepExternalPolicies</code>. If the
892      * parameter is set to <code>ReplaceExternalPolicies</code>, any scaling policies
893      * that are external to AWS Auto Scaling are deleted and new target tracking
894      * scaling policies created. </p> <p>Only valid when configuring dynamic scaling.
895      * </p> <p>Condition: The number of existing policies to be replaced must be less
896      * than or equal to 50. If there are more than 50 policies to be replaced, AWS Auto
897      * Scaling keeps all existing policies and does not create new ones.</p>
898      */
SetScalingPolicyUpdateBehavior(ScalingPolicyUpdateBehavior && value)899     inline void SetScalingPolicyUpdateBehavior(ScalingPolicyUpdateBehavior&& value) { m_scalingPolicyUpdateBehaviorHasBeenSet = true; m_scalingPolicyUpdateBehavior = std::move(value); }
900 
901     /**
902      * <p>Controls whether a resource's externally created scaling policies are kept or
903      * replaced. </p> <p>The default value is <code>KeepExternalPolicies</code>. If the
904      * parameter is set to <code>ReplaceExternalPolicies</code>, any scaling policies
905      * that are external to AWS Auto Scaling are deleted and new target tracking
906      * scaling policies created. </p> <p>Only valid when configuring dynamic scaling.
907      * </p> <p>Condition: The number of existing policies to be replaced must be less
908      * than or equal to 50. If there are more than 50 policies to be replaced, AWS Auto
909      * Scaling keeps all existing policies and does not create new ones.</p>
910      */
WithScalingPolicyUpdateBehavior(const ScalingPolicyUpdateBehavior & value)911     inline ScalingInstruction& WithScalingPolicyUpdateBehavior(const ScalingPolicyUpdateBehavior& value) { SetScalingPolicyUpdateBehavior(value); return *this;}
912 
913     /**
914      * <p>Controls whether a resource's externally created scaling policies are kept or
915      * replaced. </p> <p>The default value is <code>KeepExternalPolicies</code>. If the
916      * parameter is set to <code>ReplaceExternalPolicies</code>, any scaling policies
917      * that are external to AWS Auto Scaling are deleted and new target tracking
918      * scaling policies created. </p> <p>Only valid when configuring dynamic scaling.
919      * </p> <p>Condition: The number of existing policies to be replaced must be less
920      * than or equal to 50. If there are more than 50 policies to be replaced, AWS Auto
921      * Scaling keeps all existing policies and does not create new ones.</p>
922      */
WithScalingPolicyUpdateBehavior(ScalingPolicyUpdateBehavior && value)923     inline ScalingInstruction& WithScalingPolicyUpdateBehavior(ScalingPolicyUpdateBehavior&& value) { SetScalingPolicyUpdateBehavior(std::move(value)); return *this;}
924 
925 
926     /**
927      * <p>Controls whether dynamic scaling by AWS Auto Scaling is disabled. When
928      * dynamic scaling is enabled, AWS Auto Scaling creates target tracking scaling
929      * policies based on the specified target tracking configurations. </p> <p>The
930      * default is enabled (<code>false</code>). </p>
931      */
GetDisableDynamicScaling()932     inline bool GetDisableDynamicScaling() const{ return m_disableDynamicScaling; }
933 
934     /**
935      * <p>Controls whether dynamic scaling by AWS Auto Scaling is disabled. When
936      * dynamic scaling is enabled, AWS Auto Scaling creates target tracking scaling
937      * policies based on the specified target tracking configurations. </p> <p>The
938      * default is enabled (<code>false</code>). </p>
939      */
DisableDynamicScalingHasBeenSet()940     inline bool DisableDynamicScalingHasBeenSet() const { return m_disableDynamicScalingHasBeenSet; }
941 
942     /**
943      * <p>Controls whether dynamic scaling by AWS Auto Scaling is disabled. When
944      * dynamic scaling is enabled, AWS Auto Scaling creates target tracking scaling
945      * policies based on the specified target tracking configurations. </p> <p>The
946      * default is enabled (<code>false</code>). </p>
947      */
SetDisableDynamicScaling(bool value)948     inline void SetDisableDynamicScaling(bool value) { m_disableDynamicScalingHasBeenSet = true; m_disableDynamicScaling = value; }
949 
950     /**
951      * <p>Controls whether dynamic scaling by AWS Auto Scaling is disabled. When
952      * dynamic scaling is enabled, AWS Auto Scaling creates target tracking scaling
953      * policies based on the specified target tracking configurations. </p> <p>The
954      * default is enabled (<code>false</code>). </p>
955      */
WithDisableDynamicScaling(bool value)956     inline ScalingInstruction& WithDisableDynamicScaling(bool value) { SetDisableDynamicScaling(value); return *this;}
957 
958   private:
959 
960     ServiceNamespace m_serviceNamespace;
961     bool m_serviceNamespaceHasBeenSet;
962 
963     Aws::String m_resourceId;
964     bool m_resourceIdHasBeenSet;
965 
966     ScalableDimension m_scalableDimension;
967     bool m_scalableDimensionHasBeenSet;
968 
969     int m_minCapacity;
970     bool m_minCapacityHasBeenSet;
971 
972     int m_maxCapacity;
973     bool m_maxCapacityHasBeenSet;
974 
975     Aws::Vector<TargetTrackingConfiguration> m_targetTrackingConfigurations;
976     bool m_targetTrackingConfigurationsHasBeenSet;
977 
978     PredefinedLoadMetricSpecification m_predefinedLoadMetricSpecification;
979     bool m_predefinedLoadMetricSpecificationHasBeenSet;
980 
981     CustomizedLoadMetricSpecification m_customizedLoadMetricSpecification;
982     bool m_customizedLoadMetricSpecificationHasBeenSet;
983 
984     int m_scheduledActionBufferTime;
985     bool m_scheduledActionBufferTimeHasBeenSet;
986 
987     PredictiveScalingMaxCapacityBehavior m_predictiveScalingMaxCapacityBehavior;
988     bool m_predictiveScalingMaxCapacityBehaviorHasBeenSet;
989 
990     int m_predictiveScalingMaxCapacityBuffer;
991     bool m_predictiveScalingMaxCapacityBufferHasBeenSet;
992 
993     PredictiveScalingMode m_predictiveScalingMode;
994     bool m_predictiveScalingModeHasBeenSet;
995 
996     ScalingPolicyUpdateBehavior m_scalingPolicyUpdateBehavior;
997     bool m_scalingPolicyUpdateBehaviorHasBeenSet;
998 
999     bool m_disableDynamicScaling;
1000     bool m_disableDynamicScalingHasBeenSet;
1001   };
1002 
1003 } // namespace Model
1004 } // namespace AutoScalingPlans
1005 } // namespace Aws
1006