1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package autoscalingplans
4
5import (
6	"fmt"
7	"time"
8
9	"github.com/aws/aws-sdk-go/aws"
10	"github.com/aws/aws-sdk-go/aws/awsutil"
11	"github.com/aws/aws-sdk-go/aws/request"
12	"github.com/aws/aws-sdk-go/private/protocol"
13	"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
14)
15
16const opCreateScalingPlan = "CreateScalingPlan"
17
18// CreateScalingPlanRequest generates a "aws/request.Request" representing the
19// client's request for the CreateScalingPlan operation. The "output" return
20// value will be populated with the request's response once the request completes
21// successfully.
22//
23// Use "Send" method on the returned Request to send the API call to the service.
24// the "output" return value is not valid until after Send returns without error.
25//
26// See CreateScalingPlan for more information on using the CreateScalingPlan
27// API call, and error handling.
28//
29// This method is useful when you want to inject custom logic or configuration
30// into the SDK's request lifecycle. Such as custom headers, or retry logic.
31//
32//
33//    // Example sending a request using the CreateScalingPlanRequest method.
34//    req, resp := client.CreateScalingPlanRequest(params)
35//
36//    err := req.Send()
37//    if err == nil { // resp is now filled
38//        fmt.Println(resp)
39//    }
40//
41// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/CreateScalingPlan
42func (c *AutoScalingPlans) CreateScalingPlanRequest(input *CreateScalingPlanInput) (req *request.Request, output *CreateScalingPlanOutput) {
43	op := &request.Operation{
44		Name:       opCreateScalingPlan,
45		HTTPMethod: "POST",
46		HTTPPath:   "/",
47	}
48
49	if input == nil {
50		input = &CreateScalingPlanInput{}
51	}
52
53	output = &CreateScalingPlanOutput{}
54	req = c.newRequest(op, input, output)
55	return
56}
57
58// CreateScalingPlan API operation for AWS Auto Scaling Plans.
59//
60// Creates a scaling plan.
61//
62// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
63// with awserr.Error's Code and Message methods to get detailed information about
64// the error.
65//
66// See the AWS API reference guide for AWS Auto Scaling Plans's
67// API operation CreateScalingPlan for usage and error information.
68//
69// Returned Error Types:
70//   * ValidationException
71//   An exception was thrown for a validation issue. Review the parameters provided.
72//
73//   * LimitExceededException
74//   Your account exceeded a limit. This exception is thrown when a per-account
75//   resource limit is exceeded.
76//
77//   * ConcurrentUpdateException
78//   Concurrent updates caused an exception, for example, if you request an update
79//   to a scaling plan that already has a pending update.
80//
81//   * InternalServiceException
82//   The service encountered an internal error.
83//
84// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/CreateScalingPlan
85func (c *AutoScalingPlans) CreateScalingPlan(input *CreateScalingPlanInput) (*CreateScalingPlanOutput, error) {
86	req, out := c.CreateScalingPlanRequest(input)
87	return out, req.Send()
88}
89
90// CreateScalingPlanWithContext is the same as CreateScalingPlan with the addition of
91// the ability to pass a context and additional request options.
92//
93// See CreateScalingPlan for details on how to use this API operation.
94//
95// The context must be non-nil and will be used for request cancellation. If
96// the context is nil a panic will occur. In the future the SDK may create
97// sub-contexts for http.Requests. See https://golang.org/pkg/context/
98// for more information on using Contexts.
99func (c *AutoScalingPlans) CreateScalingPlanWithContext(ctx aws.Context, input *CreateScalingPlanInput, opts ...request.Option) (*CreateScalingPlanOutput, error) {
100	req, out := c.CreateScalingPlanRequest(input)
101	req.SetContext(ctx)
102	req.ApplyOptions(opts...)
103	return out, req.Send()
104}
105
106const opDeleteScalingPlan = "DeleteScalingPlan"
107
108// DeleteScalingPlanRequest generates a "aws/request.Request" representing the
109// client's request for the DeleteScalingPlan operation. The "output" return
110// value will be populated with the request's response once the request completes
111// successfully.
112//
113// Use "Send" method on the returned Request to send the API call to the service.
114// the "output" return value is not valid until after Send returns without error.
115//
116// See DeleteScalingPlan for more information on using the DeleteScalingPlan
117// API call, and error handling.
118//
119// This method is useful when you want to inject custom logic or configuration
120// into the SDK's request lifecycle. Such as custom headers, or retry logic.
121//
122//
123//    // Example sending a request using the DeleteScalingPlanRequest method.
124//    req, resp := client.DeleteScalingPlanRequest(params)
125//
126//    err := req.Send()
127//    if err == nil { // resp is now filled
128//        fmt.Println(resp)
129//    }
130//
131// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/DeleteScalingPlan
132func (c *AutoScalingPlans) DeleteScalingPlanRequest(input *DeleteScalingPlanInput) (req *request.Request, output *DeleteScalingPlanOutput) {
133	op := &request.Operation{
134		Name:       opDeleteScalingPlan,
135		HTTPMethod: "POST",
136		HTTPPath:   "/",
137	}
138
139	if input == nil {
140		input = &DeleteScalingPlanInput{}
141	}
142
143	output = &DeleteScalingPlanOutput{}
144	req = c.newRequest(op, input, output)
145	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
146	return
147}
148
149// DeleteScalingPlan API operation for AWS Auto Scaling Plans.
150//
151// Deletes the specified scaling plan.
152//
153// Deleting a scaling plan deletes the underlying ScalingInstruction for all
154// of the scalable resources that are covered by the plan.
155//
156// If the plan has launched resources or has scaling activities in progress,
157// you must delete those resources separately.
158//
159// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
160// with awserr.Error's Code and Message methods to get detailed information about
161// the error.
162//
163// See the AWS API reference guide for AWS Auto Scaling Plans's
164// API operation DeleteScalingPlan for usage and error information.
165//
166// Returned Error Types:
167//   * ValidationException
168//   An exception was thrown for a validation issue. Review the parameters provided.
169//
170//   * ObjectNotFoundException
171//   The specified object could not be found.
172//
173//   * ConcurrentUpdateException
174//   Concurrent updates caused an exception, for example, if you request an update
175//   to a scaling plan that already has a pending update.
176//
177//   * InternalServiceException
178//   The service encountered an internal error.
179//
180// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/DeleteScalingPlan
181func (c *AutoScalingPlans) DeleteScalingPlan(input *DeleteScalingPlanInput) (*DeleteScalingPlanOutput, error) {
182	req, out := c.DeleteScalingPlanRequest(input)
183	return out, req.Send()
184}
185
186// DeleteScalingPlanWithContext is the same as DeleteScalingPlan with the addition of
187// the ability to pass a context and additional request options.
188//
189// See DeleteScalingPlan for details on how to use this API operation.
190//
191// The context must be non-nil and will be used for request cancellation. If
192// the context is nil a panic will occur. In the future the SDK may create
193// sub-contexts for http.Requests. See https://golang.org/pkg/context/
194// for more information on using Contexts.
195func (c *AutoScalingPlans) DeleteScalingPlanWithContext(ctx aws.Context, input *DeleteScalingPlanInput, opts ...request.Option) (*DeleteScalingPlanOutput, error) {
196	req, out := c.DeleteScalingPlanRequest(input)
197	req.SetContext(ctx)
198	req.ApplyOptions(opts...)
199	return out, req.Send()
200}
201
202const opDescribeScalingPlanResources = "DescribeScalingPlanResources"
203
204// DescribeScalingPlanResourcesRequest generates a "aws/request.Request" representing the
205// client's request for the DescribeScalingPlanResources operation. The "output" return
206// value will be populated with the request's response once the request completes
207// successfully.
208//
209// Use "Send" method on the returned Request to send the API call to the service.
210// the "output" return value is not valid until after Send returns without error.
211//
212// See DescribeScalingPlanResources for more information on using the DescribeScalingPlanResources
213// API call, and error handling.
214//
215// This method is useful when you want to inject custom logic or configuration
216// into the SDK's request lifecycle. Such as custom headers, or retry logic.
217//
218//
219//    // Example sending a request using the DescribeScalingPlanResourcesRequest method.
220//    req, resp := client.DescribeScalingPlanResourcesRequest(params)
221//
222//    err := req.Send()
223//    if err == nil { // resp is now filled
224//        fmt.Println(resp)
225//    }
226//
227// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/DescribeScalingPlanResources
228func (c *AutoScalingPlans) DescribeScalingPlanResourcesRequest(input *DescribeScalingPlanResourcesInput) (req *request.Request, output *DescribeScalingPlanResourcesOutput) {
229	op := &request.Operation{
230		Name:       opDescribeScalingPlanResources,
231		HTTPMethod: "POST",
232		HTTPPath:   "/",
233	}
234
235	if input == nil {
236		input = &DescribeScalingPlanResourcesInput{}
237	}
238
239	output = &DescribeScalingPlanResourcesOutput{}
240	req = c.newRequest(op, input, output)
241	return
242}
243
244// DescribeScalingPlanResources API operation for AWS Auto Scaling Plans.
245//
246// Describes the scalable resources in the specified scaling plan.
247//
248// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
249// with awserr.Error's Code and Message methods to get detailed information about
250// the error.
251//
252// See the AWS API reference guide for AWS Auto Scaling Plans's
253// API operation DescribeScalingPlanResources for usage and error information.
254//
255// Returned Error Types:
256//   * ValidationException
257//   An exception was thrown for a validation issue. Review the parameters provided.
258//
259//   * InvalidNextTokenException
260//   The token provided is not valid.
261//
262//   * ConcurrentUpdateException
263//   Concurrent updates caused an exception, for example, if you request an update
264//   to a scaling plan that already has a pending update.
265//
266//   * InternalServiceException
267//   The service encountered an internal error.
268//
269// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/DescribeScalingPlanResources
270func (c *AutoScalingPlans) DescribeScalingPlanResources(input *DescribeScalingPlanResourcesInput) (*DescribeScalingPlanResourcesOutput, error) {
271	req, out := c.DescribeScalingPlanResourcesRequest(input)
272	return out, req.Send()
273}
274
275// DescribeScalingPlanResourcesWithContext is the same as DescribeScalingPlanResources with the addition of
276// the ability to pass a context and additional request options.
277//
278// See DescribeScalingPlanResources for details on how to use this API operation.
279//
280// The context must be non-nil and will be used for request cancellation. If
281// the context is nil a panic will occur. In the future the SDK may create
282// sub-contexts for http.Requests. See https://golang.org/pkg/context/
283// for more information on using Contexts.
284func (c *AutoScalingPlans) DescribeScalingPlanResourcesWithContext(ctx aws.Context, input *DescribeScalingPlanResourcesInput, opts ...request.Option) (*DescribeScalingPlanResourcesOutput, error) {
285	req, out := c.DescribeScalingPlanResourcesRequest(input)
286	req.SetContext(ctx)
287	req.ApplyOptions(opts...)
288	return out, req.Send()
289}
290
291const opDescribeScalingPlans = "DescribeScalingPlans"
292
293// DescribeScalingPlansRequest generates a "aws/request.Request" representing the
294// client's request for the DescribeScalingPlans operation. The "output" return
295// value will be populated with the request's response once the request completes
296// successfully.
297//
298// Use "Send" method on the returned Request to send the API call to the service.
299// the "output" return value is not valid until after Send returns without error.
300//
301// See DescribeScalingPlans for more information on using the DescribeScalingPlans
302// API call, and error handling.
303//
304// This method is useful when you want to inject custom logic or configuration
305// into the SDK's request lifecycle. Such as custom headers, or retry logic.
306//
307//
308//    // Example sending a request using the DescribeScalingPlansRequest method.
309//    req, resp := client.DescribeScalingPlansRequest(params)
310//
311//    err := req.Send()
312//    if err == nil { // resp is now filled
313//        fmt.Println(resp)
314//    }
315//
316// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/DescribeScalingPlans
317func (c *AutoScalingPlans) DescribeScalingPlansRequest(input *DescribeScalingPlansInput) (req *request.Request, output *DescribeScalingPlansOutput) {
318	op := &request.Operation{
319		Name:       opDescribeScalingPlans,
320		HTTPMethod: "POST",
321		HTTPPath:   "/",
322	}
323
324	if input == nil {
325		input = &DescribeScalingPlansInput{}
326	}
327
328	output = &DescribeScalingPlansOutput{}
329	req = c.newRequest(op, input, output)
330	return
331}
332
333// DescribeScalingPlans API operation for AWS Auto Scaling Plans.
334//
335// Describes one or more of your scaling plans.
336//
337// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
338// with awserr.Error's Code and Message methods to get detailed information about
339// the error.
340//
341// See the AWS API reference guide for AWS Auto Scaling Plans's
342// API operation DescribeScalingPlans for usage and error information.
343//
344// Returned Error Types:
345//   * ValidationException
346//   An exception was thrown for a validation issue. Review the parameters provided.
347//
348//   * InvalidNextTokenException
349//   The token provided is not valid.
350//
351//   * ConcurrentUpdateException
352//   Concurrent updates caused an exception, for example, if you request an update
353//   to a scaling plan that already has a pending update.
354//
355//   * InternalServiceException
356//   The service encountered an internal error.
357//
358// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/DescribeScalingPlans
359func (c *AutoScalingPlans) DescribeScalingPlans(input *DescribeScalingPlansInput) (*DescribeScalingPlansOutput, error) {
360	req, out := c.DescribeScalingPlansRequest(input)
361	return out, req.Send()
362}
363
364// DescribeScalingPlansWithContext is the same as DescribeScalingPlans with the addition of
365// the ability to pass a context and additional request options.
366//
367// See DescribeScalingPlans for details on how to use this API operation.
368//
369// The context must be non-nil and will be used for request cancellation. If
370// the context is nil a panic will occur. In the future the SDK may create
371// sub-contexts for http.Requests. See https://golang.org/pkg/context/
372// for more information on using Contexts.
373func (c *AutoScalingPlans) DescribeScalingPlansWithContext(ctx aws.Context, input *DescribeScalingPlansInput, opts ...request.Option) (*DescribeScalingPlansOutput, error) {
374	req, out := c.DescribeScalingPlansRequest(input)
375	req.SetContext(ctx)
376	req.ApplyOptions(opts...)
377	return out, req.Send()
378}
379
380const opGetScalingPlanResourceForecastData = "GetScalingPlanResourceForecastData"
381
382// GetScalingPlanResourceForecastDataRequest generates a "aws/request.Request" representing the
383// client's request for the GetScalingPlanResourceForecastData operation. The "output" return
384// value will be populated with the request's response once the request completes
385// successfully.
386//
387// Use "Send" method on the returned Request to send the API call to the service.
388// the "output" return value is not valid until after Send returns without error.
389//
390// See GetScalingPlanResourceForecastData for more information on using the GetScalingPlanResourceForecastData
391// API call, and error handling.
392//
393// This method is useful when you want to inject custom logic or configuration
394// into the SDK's request lifecycle. Such as custom headers, or retry logic.
395//
396//
397//    // Example sending a request using the GetScalingPlanResourceForecastDataRequest method.
398//    req, resp := client.GetScalingPlanResourceForecastDataRequest(params)
399//
400//    err := req.Send()
401//    if err == nil { // resp is now filled
402//        fmt.Println(resp)
403//    }
404//
405// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/GetScalingPlanResourceForecastData
406func (c *AutoScalingPlans) GetScalingPlanResourceForecastDataRequest(input *GetScalingPlanResourceForecastDataInput) (req *request.Request, output *GetScalingPlanResourceForecastDataOutput) {
407	op := &request.Operation{
408		Name:       opGetScalingPlanResourceForecastData,
409		HTTPMethod: "POST",
410		HTTPPath:   "/",
411	}
412
413	if input == nil {
414		input = &GetScalingPlanResourceForecastDataInput{}
415	}
416
417	output = &GetScalingPlanResourceForecastDataOutput{}
418	req = c.newRequest(op, input, output)
419	return
420}
421
422// GetScalingPlanResourceForecastData API operation for AWS Auto Scaling Plans.
423//
424// Retrieves the forecast data for a scalable resource.
425//
426// Capacity forecasts are represented as predicted values, or data points, that
427// are calculated using historical data points from a specified CloudWatch load
428// metric. Data points are available for up to 56 days.
429//
430// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
431// with awserr.Error's Code and Message methods to get detailed information about
432// the error.
433//
434// See the AWS API reference guide for AWS Auto Scaling Plans's
435// API operation GetScalingPlanResourceForecastData for usage and error information.
436//
437// Returned Error Types:
438//   * ValidationException
439//   An exception was thrown for a validation issue. Review the parameters provided.
440//
441//   * InternalServiceException
442//   The service encountered an internal error.
443//
444// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/GetScalingPlanResourceForecastData
445func (c *AutoScalingPlans) GetScalingPlanResourceForecastData(input *GetScalingPlanResourceForecastDataInput) (*GetScalingPlanResourceForecastDataOutput, error) {
446	req, out := c.GetScalingPlanResourceForecastDataRequest(input)
447	return out, req.Send()
448}
449
450// GetScalingPlanResourceForecastDataWithContext is the same as GetScalingPlanResourceForecastData with the addition of
451// the ability to pass a context and additional request options.
452//
453// See GetScalingPlanResourceForecastData for details on how to use this API operation.
454//
455// The context must be non-nil and will be used for request cancellation. If
456// the context is nil a panic will occur. In the future the SDK may create
457// sub-contexts for http.Requests. See https://golang.org/pkg/context/
458// for more information on using Contexts.
459func (c *AutoScalingPlans) GetScalingPlanResourceForecastDataWithContext(ctx aws.Context, input *GetScalingPlanResourceForecastDataInput, opts ...request.Option) (*GetScalingPlanResourceForecastDataOutput, error) {
460	req, out := c.GetScalingPlanResourceForecastDataRequest(input)
461	req.SetContext(ctx)
462	req.ApplyOptions(opts...)
463	return out, req.Send()
464}
465
466const opUpdateScalingPlan = "UpdateScalingPlan"
467
468// UpdateScalingPlanRequest generates a "aws/request.Request" representing the
469// client's request for the UpdateScalingPlan operation. The "output" return
470// value will be populated with the request's response once the request completes
471// successfully.
472//
473// Use "Send" method on the returned Request to send the API call to the service.
474// the "output" return value is not valid until after Send returns without error.
475//
476// See UpdateScalingPlan for more information on using the UpdateScalingPlan
477// API call, and error handling.
478//
479// This method is useful when you want to inject custom logic or configuration
480// into the SDK's request lifecycle. Such as custom headers, or retry logic.
481//
482//
483//    // Example sending a request using the UpdateScalingPlanRequest method.
484//    req, resp := client.UpdateScalingPlanRequest(params)
485//
486//    err := req.Send()
487//    if err == nil { // resp is now filled
488//        fmt.Println(resp)
489//    }
490//
491// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/UpdateScalingPlan
492func (c *AutoScalingPlans) UpdateScalingPlanRequest(input *UpdateScalingPlanInput) (req *request.Request, output *UpdateScalingPlanOutput) {
493	op := &request.Operation{
494		Name:       opUpdateScalingPlan,
495		HTTPMethod: "POST",
496		HTTPPath:   "/",
497	}
498
499	if input == nil {
500		input = &UpdateScalingPlanInput{}
501	}
502
503	output = &UpdateScalingPlanOutput{}
504	req = c.newRequest(op, input, output)
505	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
506	return
507}
508
509// UpdateScalingPlan API operation for AWS Auto Scaling Plans.
510//
511// Updates the specified scaling plan.
512//
513// You cannot update a scaling plan if it is in the process of being created,
514// updated, or deleted.
515//
516// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
517// with awserr.Error's Code and Message methods to get detailed information about
518// the error.
519//
520// See the AWS API reference guide for AWS Auto Scaling Plans's
521// API operation UpdateScalingPlan for usage and error information.
522//
523// Returned Error Types:
524//   * ValidationException
525//   An exception was thrown for a validation issue. Review the parameters provided.
526//
527//   * ConcurrentUpdateException
528//   Concurrent updates caused an exception, for example, if you request an update
529//   to a scaling plan that already has a pending update.
530//
531//   * InternalServiceException
532//   The service encountered an internal error.
533//
534//   * ObjectNotFoundException
535//   The specified object could not be found.
536//
537// See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/UpdateScalingPlan
538func (c *AutoScalingPlans) UpdateScalingPlan(input *UpdateScalingPlanInput) (*UpdateScalingPlanOutput, error) {
539	req, out := c.UpdateScalingPlanRequest(input)
540	return out, req.Send()
541}
542
543// UpdateScalingPlanWithContext is the same as UpdateScalingPlan with the addition of
544// the ability to pass a context and additional request options.
545//
546// See UpdateScalingPlan for details on how to use this API operation.
547//
548// The context must be non-nil and will be used for request cancellation. If
549// the context is nil a panic will occur. In the future the SDK may create
550// sub-contexts for http.Requests. See https://golang.org/pkg/context/
551// for more information on using Contexts.
552func (c *AutoScalingPlans) UpdateScalingPlanWithContext(ctx aws.Context, input *UpdateScalingPlanInput, opts ...request.Option) (*UpdateScalingPlanOutput, error) {
553	req, out := c.UpdateScalingPlanRequest(input)
554	req.SetContext(ctx)
555	req.ApplyOptions(opts...)
556	return out, req.Send()
557}
558
559// Represents an application source.
560type ApplicationSource struct {
561	_ struct{} `type:"structure"`
562
563	// The Amazon Resource Name (ARN) of a AWS CloudFormation stack.
564	CloudFormationStackARN *string `type:"string"`
565
566	// A set of tags (up to 50).
567	TagFilters []*TagFilter `type:"list"`
568}
569
570// String returns the string representation
571func (s ApplicationSource) String() string {
572	return awsutil.Prettify(s)
573}
574
575// GoString returns the string representation
576func (s ApplicationSource) GoString() string {
577	return s.String()
578}
579
580// Validate inspects the fields of the type to determine if they are valid.
581func (s *ApplicationSource) Validate() error {
582	invalidParams := request.ErrInvalidParams{Context: "ApplicationSource"}
583	if s.TagFilters != nil {
584		for i, v := range s.TagFilters {
585			if v == nil {
586				continue
587			}
588			if err := v.Validate(); err != nil {
589				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TagFilters", i), err.(request.ErrInvalidParams))
590			}
591		}
592	}
593
594	if invalidParams.Len() > 0 {
595		return invalidParams
596	}
597	return nil
598}
599
600// SetCloudFormationStackARN sets the CloudFormationStackARN field's value.
601func (s *ApplicationSource) SetCloudFormationStackARN(v string) *ApplicationSource {
602	s.CloudFormationStackARN = &v
603	return s
604}
605
606// SetTagFilters sets the TagFilters field's value.
607func (s *ApplicationSource) SetTagFilters(v []*TagFilter) *ApplicationSource {
608	s.TagFilters = v
609	return s
610}
611
612// Concurrent updates caused an exception, for example, if you request an update
613// to a scaling plan that already has a pending update.
614type ConcurrentUpdateException struct {
615	_            struct{}                  `type:"structure"`
616	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
617
618	Message_ *string `locationName:"Message" type:"string"`
619}
620
621// String returns the string representation
622func (s ConcurrentUpdateException) String() string {
623	return awsutil.Prettify(s)
624}
625
626// GoString returns the string representation
627func (s ConcurrentUpdateException) GoString() string {
628	return s.String()
629}
630
631func newErrorConcurrentUpdateException(v protocol.ResponseMetadata) error {
632	return &ConcurrentUpdateException{
633		RespMetadata: v,
634	}
635}
636
637// Code returns the exception type name.
638func (s *ConcurrentUpdateException) Code() string {
639	return "ConcurrentUpdateException"
640}
641
642// Message returns the exception's message.
643func (s *ConcurrentUpdateException) Message() string {
644	if s.Message_ != nil {
645		return *s.Message_
646	}
647	return ""
648}
649
650// OrigErr always returns nil, satisfies awserr.Error interface.
651func (s *ConcurrentUpdateException) OrigErr() error {
652	return nil
653}
654
655func (s *ConcurrentUpdateException) Error() string {
656	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
657}
658
659// Status code returns the HTTP status code for the request's response error.
660func (s *ConcurrentUpdateException) StatusCode() int {
661	return s.RespMetadata.StatusCode
662}
663
664// RequestID returns the service's response RequestID for request.
665func (s *ConcurrentUpdateException) RequestID() string {
666	return s.RespMetadata.RequestID
667}
668
669type CreateScalingPlanInput struct {
670	_ struct{} `type:"structure"`
671
672	// A CloudFormation stack or set of tags. You can create one scaling plan per
673	// application source.
674	//
675	// For more information, see ApplicationSource (https://docs.aws.amazon.com/autoscaling/plans/APIReference/API_ApplicationSource.html)
676	// in the AWS Auto Scaling API Reference.
677	//
678	// ApplicationSource is a required field
679	ApplicationSource *ApplicationSource `type:"structure" required:"true"`
680
681	// The scaling instructions.
682	//
683	// For more information, see ScalingInstruction (https://docs.aws.amazon.com/autoscaling/plans/APIReference/API_ScalingInstruction.html)
684	// in the AWS Auto Scaling API Reference.
685	//
686	// ScalingInstructions is a required field
687	ScalingInstructions []*ScalingInstruction `type:"list" required:"true"`
688
689	// The name of the scaling plan. Names cannot contain vertical bars, colons,
690	// or forward slashes.
691	//
692	// ScalingPlanName is a required field
693	ScalingPlanName *string `min:"1" type:"string" required:"true"`
694}
695
696// String returns the string representation
697func (s CreateScalingPlanInput) String() string {
698	return awsutil.Prettify(s)
699}
700
701// GoString returns the string representation
702func (s CreateScalingPlanInput) GoString() string {
703	return s.String()
704}
705
706// Validate inspects the fields of the type to determine if they are valid.
707func (s *CreateScalingPlanInput) Validate() error {
708	invalidParams := request.ErrInvalidParams{Context: "CreateScalingPlanInput"}
709	if s.ApplicationSource == nil {
710		invalidParams.Add(request.NewErrParamRequired("ApplicationSource"))
711	}
712	if s.ScalingInstructions == nil {
713		invalidParams.Add(request.NewErrParamRequired("ScalingInstructions"))
714	}
715	if s.ScalingPlanName == nil {
716		invalidParams.Add(request.NewErrParamRequired("ScalingPlanName"))
717	}
718	if s.ScalingPlanName != nil && len(*s.ScalingPlanName) < 1 {
719		invalidParams.Add(request.NewErrParamMinLen("ScalingPlanName", 1))
720	}
721	if s.ApplicationSource != nil {
722		if err := s.ApplicationSource.Validate(); err != nil {
723			invalidParams.AddNested("ApplicationSource", err.(request.ErrInvalidParams))
724		}
725	}
726	if s.ScalingInstructions != nil {
727		for i, v := range s.ScalingInstructions {
728			if v == nil {
729				continue
730			}
731			if err := v.Validate(); err != nil {
732				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ScalingInstructions", i), err.(request.ErrInvalidParams))
733			}
734		}
735	}
736
737	if invalidParams.Len() > 0 {
738		return invalidParams
739	}
740	return nil
741}
742
743// SetApplicationSource sets the ApplicationSource field's value.
744func (s *CreateScalingPlanInput) SetApplicationSource(v *ApplicationSource) *CreateScalingPlanInput {
745	s.ApplicationSource = v
746	return s
747}
748
749// SetScalingInstructions sets the ScalingInstructions field's value.
750func (s *CreateScalingPlanInput) SetScalingInstructions(v []*ScalingInstruction) *CreateScalingPlanInput {
751	s.ScalingInstructions = v
752	return s
753}
754
755// SetScalingPlanName sets the ScalingPlanName field's value.
756func (s *CreateScalingPlanInput) SetScalingPlanName(v string) *CreateScalingPlanInput {
757	s.ScalingPlanName = &v
758	return s
759}
760
761type CreateScalingPlanOutput struct {
762	_ struct{} `type:"structure"`
763
764	// The version number of the scaling plan. This value is always 1. Currently,
765	// you cannot have multiple scaling plan versions.
766	//
767	// ScalingPlanVersion is a required field
768	ScalingPlanVersion *int64 `type:"long" required:"true"`
769}
770
771// String returns the string representation
772func (s CreateScalingPlanOutput) String() string {
773	return awsutil.Prettify(s)
774}
775
776// GoString returns the string representation
777func (s CreateScalingPlanOutput) GoString() string {
778	return s.String()
779}
780
781// SetScalingPlanVersion sets the ScalingPlanVersion field's value.
782func (s *CreateScalingPlanOutput) SetScalingPlanVersion(v int64) *CreateScalingPlanOutput {
783	s.ScalingPlanVersion = &v
784	return s
785}
786
787// Represents a CloudWatch metric of your choosing that can be used for predictive
788// scaling.
789//
790// For predictive scaling to work with a customized load metric specification,
791// AWS Auto Scaling needs access to the Sum and Average statistics that CloudWatch
792// computes from metric data.
793//
794// When you choose a load metric, make sure that the required Sum and Average
795// statistics for your metric are available in CloudWatch and that they provide
796// relevant data for predictive scaling. The Sum statistic must represent the
797// total load on the resource, and the Average statistic must represent the
798// average load per capacity unit of the resource. For example, there is a metric
799// that counts the number of requests processed by your Auto Scaling group.
800// If the Sum statistic represents the total request count processed by the
801// group, then the Average statistic for the specified metric must represent
802// the average request count processed by each instance of the group.
803//
804// If you publish your own metrics, you can aggregate the data points at a given
805// interval and then publish the aggregated data points to CloudWatch. Before
806// AWS Auto Scaling generates the forecast, it sums up all the metric data points
807// that occurred within each hour to match the granularity period that is used
808// in the forecast (60 minutes).
809//
810// For information about terminology, available metrics, or how to publish new
811// metrics, see Amazon CloudWatch Concepts (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html)
812// in the Amazon CloudWatch User Guide.
813//
814// After creating your scaling plan, you can use the AWS Auto Scaling console
815// to visualize forecasts for the specified metric. For more information, see
816// View Scaling Information for a Resource (https://docs.aws.amazon.com/autoscaling/plans/userguide/gs-create-scaling-plan.html#gs-view-resource)
817// in the AWS Auto Scaling User Guide.
818type CustomizedLoadMetricSpecification struct {
819	_ struct{} `type:"structure"`
820
821	// The dimensions of the metric.
822	//
823	// Conditional: If you published your metric with dimensions, you must specify
824	// the same dimensions in your customized load metric specification.
825	Dimensions []*MetricDimension `type:"list"`
826
827	// The name of the metric.
828	//
829	// MetricName is a required field
830	MetricName *string `type:"string" required:"true"`
831
832	// The namespace of the metric.
833	//
834	// Namespace is a required field
835	Namespace *string `type:"string" required:"true"`
836
837	// The statistic of the metric. The only valid value is Sum.
838	//
839	// Statistic is a required field
840	Statistic *string `type:"string" required:"true" enum:"MetricStatistic"`
841
842	// The unit of the metric.
843	Unit *string `type:"string"`
844}
845
846// String returns the string representation
847func (s CustomizedLoadMetricSpecification) String() string {
848	return awsutil.Prettify(s)
849}
850
851// GoString returns the string representation
852func (s CustomizedLoadMetricSpecification) GoString() string {
853	return s.String()
854}
855
856// Validate inspects the fields of the type to determine if they are valid.
857func (s *CustomizedLoadMetricSpecification) Validate() error {
858	invalidParams := request.ErrInvalidParams{Context: "CustomizedLoadMetricSpecification"}
859	if s.MetricName == nil {
860		invalidParams.Add(request.NewErrParamRequired("MetricName"))
861	}
862	if s.Namespace == nil {
863		invalidParams.Add(request.NewErrParamRequired("Namespace"))
864	}
865	if s.Statistic == nil {
866		invalidParams.Add(request.NewErrParamRequired("Statistic"))
867	}
868	if s.Dimensions != nil {
869		for i, v := range s.Dimensions {
870			if v == nil {
871				continue
872			}
873			if err := v.Validate(); err != nil {
874				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Dimensions", i), err.(request.ErrInvalidParams))
875			}
876		}
877	}
878
879	if invalidParams.Len() > 0 {
880		return invalidParams
881	}
882	return nil
883}
884
885// SetDimensions sets the Dimensions field's value.
886func (s *CustomizedLoadMetricSpecification) SetDimensions(v []*MetricDimension) *CustomizedLoadMetricSpecification {
887	s.Dimensions = v
888	return s
889}
890
891// SetMetricName sets the MetricName field's value.
892func (s *CustomizedLoadMetricSpecification) SetMetricName(v string) *CustomizedLoadMetricSpecification {
893	s.MetricName = &v
894	return s
895}
896
897// SetNamespace sets the Namespace field's value.
898func (s *CustomizedLoadMetricSpecification) SetNamespace(v string) *CustomizedLoadMetricSpecification {
899	s.Namespace = &v
900	return s
901}
902
903// SetStatistic sets the Statistic field's value.
904func (s *CustomizedLoadMetricSpecification) SetStatistic(v string) *CustomizedLoadMetricSpecification {
905	s.Statistic = &v
906	return s
907}
908
909// SetUnit sets the Unit field's value.
910func (s *CustomizedLoadMetricSpecification) SetUnit(v string) *CustomizedLoadMetricSpecification {
911	s.Unit = &v
912	return s
913}
914
915// Represents a CloudWatch metric of your choosing that can be used for dynamic
916// scaling as part of a target tracking scaling policy.
917//
918// To create your customized scaling metric specification:
919//
920//    * Add values for each required parameter from CloudWatch. You can use
921//    an existing metric, or a new metric that you create. To use your own metric,
922//    you must first publish the metric to CloudWatch. For more information,
923//    see Publish Custom Metrics (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html)
924//    in the Amazon CloudWatch User Guide.
925//
926//    * Choose a metric that changes proportionally with capacity. The value
927//    of the metric should increase or decrease in inverse proportion to the
928//    number of capacity units. That is, the value of the metric should decrease
929//    when capacity increases.
930//
931// For information about terminology, available metrics, or how to publish new
932// metrics, see Amazon CloudWatch Concepts (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html)
933// in the Amazon CloudWatch User Guide.
934type CustomizedScalingMetricSpecification struct {
935	_ struct{} `type:"structure"`
936
937	// The dimensions of the metric.
938	//
939	// Conditional: If you published your metric with dimensions, you must specify
940	// the same dimensions in your customized scaling metric specification.
941	Dimensions []*MetricDimension `type:"list"`
942
943	// The name of the metric.
944	//
945	// MetricName is a required field
946	MetricName *string `type:"string" required:"true"`
947
948	// The namespace of the metric.
949	//
950	// Namespace is a required field
951	Namespace *string `type:"string" required:"true"`
952
953	// The statistic of the metric.
954	//
955	// Statistic is a required field
956	Statistic *string `type:"string" required:"true" enum:"MetricStatistic"`
957
958	// The unit of the metric.
959	Unit *string `type:"string"`
960}
961
962// String returns the string representation
963func (s CustomizedScalingMetricSpecification) String() string {
964	return awsutil.Prettify(s)
965}
966
967// GoString returns the string representation
968func (s CustomizedScalingMetricSpecification) GoString() string {
969	return s.String()
970}
971
972// Validate inspects the fields of the type to determine if they are valid.
973func (s *CustomizedScalingMetricSpecification) Validate() error {
974	invalidParams := request.ErrInvalidParams{Context: "CustomizedScalingMetricSpecification"}
975	if s.MetricName == nil {
976		invalidParams.Add(request.NewErrParamRequired("MetricName"))
977	}
978	if s.Namespace == nil {
979		invalidParams.Add(request.NewErrParamRequired("Namespace"))
980	}
981	if s.Statistic == nil {
982		invalidParams.Add(request.NewErrParamRequired("Statistic"))
983	}
984	if s.Dimensions != nil {
985		for i, v := range s.Dimensions {
986			if v == nil {
987				continue
988			}
989			if err := v.Validate(); err != nil {
990				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Dimensions", i), err.(request.ErrInvalidParams))
991			}
992		}
993	}
994
995	if invalidParams.Len() > 0 {
996		return invalidParams
997	}
998	return nil
999}
1000
1001// SetDimensions sets the Dimensions field's value.
1002func (s *CustomizedScalingMetricSpecification) SetDimensions(v []*MetricDimension) *CustomizedScalingMetricSpecification {
1003	s.Dimensions = v
1004	return s
1005}
1006
1007// SetMetricName sets the MetricName field's value.
1008func (s *CustomizedScalingMetricSpecification) SetMetricName(v string) *CustomizedScalingMetricSpecification {
1009	s.MetricName = &v
1010	return s
1011}
1012
1013// SetNamespace sets the Namespace field's value.
1014func (s *CustomizedScalingMetricSpecification) SetNamespace(v string) *CustomizedScalingMetricSpecification {
1015	s.Namespace = &v
1016	return s
1017}
1018
1019// SetStatistic sets the Statistic field's value.
1020func (s *CustomizedScalingMetricSpecification) SetStatistic(v string) *CustomizedScalingMetricSpecification {
1021	s.Statistic = &v
1022	return s
1023}
1024
1025// SetUnit sets the Unit field's value.
1026func (s *CustomizedScalingMetricSpecification) SetUnit(v string) *CustomizedScalingMetricSpecification {
1027	s.Unit = &v
1028	return s
1029}
1030
1031// Represents a single value in the forecast data used for predictive scaling.
1032type Datapoint struct {
1033	_ struct{} `type:"structure"`
1034
1035	// The time stamp for the data point in UTC format.
1036	Timestamp *time.Time `type:"timestamp"`
1037
1038	// The value of the data point.
1039	Value *float64 `type:"double"`
1040}
1041
1042// String returns the string representation
1043func (s Datapoint) String() string {
1044	return awsutil.Prettify(s)
1045}
1046
1047// GoString returns the string representation
1048func (s Datapoint) GoString() string {
1049	return s.String()
1050}
1051
1052// SetTimestamp sets the Timestamp field's value.
1053func (s *Datapoint) SetTimestamp(v time.Time) *Datapoint {
1054	s.Timestamp = &v
1055	return s
1056}
1057
1058// SetValue sets the Value field's value.
1059func (s *Datapoint) SetValue(v float64) *Datapoint {
1060	s.Value = &v
1061	return s
1062}
1063
1064type DeleteScalingPlanInput struct {
1065	_ struct{} `type:"structure"`
1066
1067	// The name of the scaling plan.
1068	//
1069	// ScalingPlanName is a required field
1070	ScalingPlanName *string `min:"1" type:"string" required:"true"`
1071
1072	// The version number of the scaling plan. Currently, the only valid value is
1073	// 1.
1074	//
1075	// ScalingPlanVersion is a required field
1076	ScalingPlanVersion *int64 `type:"long" required:"true"`
1077}
1078
1079// String returns the string representation
1080func (s DeleteScalingPlanInput) String() string {
1081	return awsutil.Prettify(s)
1082}
1083
1084// GoString returns the string representation
1085func (s DeleteScalingPlanInput) GoString() string {
1086	return s.String()
1087}
1088
1089// Validate inspects the fields of the type to determine if they are valid.
1090func (s *DeleteScalingPlanInput) Validate() error {
1091	invalidParams := request.ErrInvalidParams{Context: "DeleteScalingPlanInput"}
1092	if s.ScalingPlanName == nil {
1093		invalidParams.Add(request.NewErrParamRequired("ScalingPlanName"))
1094	}
1095	if s.ScalingPlanName != nil && len(*s.ScalingPlanName) < 1 {
1096		invalidParams.Add(request.NewErrParamMinLen("ScalingPlanName", 1))
1097	}
1098	if s.ScalingPlanVersion == nil {
1099		invalidParams.Add(request.NewErrParamRequired("ScalingPlanVersion"))
1100	}
1101
1102	if invalidParams.Len() > 0 {
1103		return invalidParams
1104	}
1105	return nil
1106}
1107
1108// SetScalingPlanName sets the ScalingPlanName field's value.
1109func (s *DeleteScalingPlanInput) SetScalingPlanName(v string) *DeleteScalingPlanInput {
1110	s.ScalingPlanName = &v
1111	return s
1112}
1113
1114// SetScalingPlanVersion sets the ScalingPlanVersion field's value.
1115func (s *DeleteScalingPlanInput) SetScalingPlanVersion(v int64) *DeleteScalingPlanInput {
1116	s.ScalingPlanVersion = &v
1117	return s
1118}
1119
1120type DeleteScalingPlanOutput struct {
1121	_ struct{} `type:"structure"`
1122}
1123
1124// String returns the string representation
1125func (s DeleteScalingPlanOutput) String() string {
1126	return awsutil.Prettify(s)
1127}
1128
1129// GoString returns the string representation
1130func (s DeleteScalingPlanOutput) GoString() string {
1131	return s.String()
1132}
1133
1134type DescribeScalingPlanResourcesInput struct {
1135	_ struct{} `type:"structure"`
1136
1137	// The maximum number of scalable resources to return. The value must be between
1138	// 1 and 50. The default value is 50.
1139	MaxResults *int64 `type:"integer"`
1140
1141	// The token for the next set of results.
1142	NextToken *string `type:"string"`
1143
1144	// The name of the scaling plan.
1145	//
1146	// ScalingPlanName is a required field
1147	ScalingPlanName *string `min:"1" type:"string" required:"true"`
1148
1149	// The version number of the scaling plan. Currently, the only valid value is
1150	// 1.
1151	//
1152	// ScalingPlanVersion is a required field
1153	ScalingPlanVersion *int64 `type:"long" required:"true"`
1154}
1155
1156// String returns the string representation
1157func (s DescribeScalingPlanResourcesInput) String() string {
1158	return awsutil.Prettify(s)
1159}
1160
1161// GoString returns the string representation
1162func (s DescribeScalingPlanResourcesInput) GoString() string {
1163	return s.String()
1164}
1165
1166// Validate inspects the fields of the type to determine if they are valid.
1167func (s *DescribeScalingPlanResourcesInput) Validate() error {
1168	invalidParams := request.ErrInvalidParams{Context: "DescribeScalingPlanResourcesInput"}
1169	if s.ScalingPlanName == nil {
1170		invalidParams.Add(request.NewErrParamRequired("ScalingPlanName"))
1171	}
1172	if s.ScalingPlanName != nil && len(*s.ScalingPlanName) < 1 {
1173		invalidParams.Add(request.NewErrParamMinLen("ScalingPlanName", 1))
1174	}
1175	if s.ScalingPlanVersion == nil {
1176		invalidParams.Add(request.NewErrParamRequired("ScalingPlanVersion"))
1177	}
1178
1179	if invalidParams.Len() > 0 {
1180		return invalidParams
1181	}
1182	return nil
1183}
1184
1185// SetMaxResults sets the MaxResults field's value.
1186func (s *DescribeScalingPlanResourcesInput) SetMaxResults(v int64) *DescribeScalingPlanResourcesInput {
1187	s.MaxResults = &v
1188	return s
1189}
1190
1191// SetNextToken sets the NextToken field's value.
1192func (s *DescribeScalingPlanResourcesInput) SetNextToken(v string) *DescribeScalingPlanResourcesInput {
1193	s.NextToken = &v
1194	return s
1195}
1196
1197// SetScalingPlanName sets the ScalingPlanName field's value.
1198func (s *DescribeScalingPlanResourcesInput) SetScalingPlanName(v string) *DescribeScalingPlanResourcesInput {
1199	s.ScalingPlanName = &v
1200	return s
1201}
1202
1203// SetScalingPlanVersion sets the ScalingPlanVersion field's value.
1204func (s *DescribeScalingPlanResourcesInput) SetScalingPlanVersion(v int64) *DescribeScalingPlanResourcesInput {
1205	s.ScalingPlanVersion = &v
1206	return s
1207}
1208
1209type DescribeScalingPlanResourcesOutput struct {
1210	_ struct{} `type:"structure"`
1211
1212	// The token required to get the next set of results. This value is null if
1213	// there are no more results to return.
1214	NextToken *string `type:"string"`
1215
1216	// Information about the scalable resources.
1217	ScalingPlanResources []*ScalingPlanResource `type:"list"`
1218}
1219
1220// String returns the string representation
1221func (s DescribeScalingPlanResourcesOutput) String() string {
1222	return awsutil.Prettify(s)
1223}
1224
1225// GoString returns the string representation
1226func (s DescribeScalingPlanResourcesOutput) GoString() string {
1227	return s.String()
1228}
1229
1230// SetNextToken sets the NextToken field's value.
1231func (s *DescribeScalingPlanResourcesOutput) SetNextToken(v string) *DescribeScalingPlanResourcesOutput {
1232	s.NextToken = &v
1233	return s
1234}
1235
1236// SetScalingPlanResources sets the ScalingPlanResources field's value.
1237func (s *DescribeScalingPlanResourcesOutput) SetScalingPlanResources(v []*ScalingPlanResource) *DescribeScalingPlanResourcesOutput {
1238	s.ScalingPlanResources = v
1239	return s
1240}
1241
1242type DescribeScalingPlansInput struct {
1243	_ struct{} `type:"structure"`
1244
1245	// The sources for the applications (up to 10). If you specify scaling plan
1246	// names, you cannot specify application sources.
1247	ApplicationSources []*ApplicationSource `type:"list"`
1248
1249	// The maximum number of scalable resources to return. This value can be between
1250	// 1 and 50. The default value is 50.
1251	MaxResults *int64 `type:"integer"`
1252
1253	// The token for the next set of results.
1254	NextToken *string `type:"string"`
1255
1256	// The names of the scaling plans (up to 10). If you specify application sources,
1257	// you cannot specify scaling plan names.
1258	ScalingPlanNames []*string `type:"list"`
1259
1260	// The version number of the scaling plan. Currently, the only valid value is
1261	// 1.
1262	//
1263	// If you specify a scaling plan version, you must also specify a scaling plan
1264	// name.
1265	ScalingPlanVersion *int64 `type:"long"`
1266}
1267
1268// String returns the string representation
1269func (s DescribeScalingPlansInput) String() string {
1270	return awsutil.Prettify(s)
1271}
1272
1273// GoString returns the string representation
1274func (s DescribeScalingPlansInput) GoString() string {
1275	return s.String()
1276}
1277
1278// Validate inspects the fields of the type to determine if they are valid.
1279func (s *DescribeScalingPlansInput) Validate() error {
1280	invalidParams := request.ErrInvalidParams{Context: "DescribeScalingPlansInput"}
1281	if s.ApplicationSources != nil {
1282		for i, v := range s.ApplicationSources {
1283			if v == nil {
1284				continue
1285			}
1286			if err := v.Validate(); err != nil {
1287				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ApplicationSources", i), err.(request.ErrInvalidParams))
1288			}
1289		}
1290	}
1291
1292	if invalidParams.Len() > 0 {
1293		return invalidParams
1294	}
1295	return nil
1296}
1297
1298// SetApplicationSources sets the ApplicationSources field's value.
1299func (s *DescribeScalingPlansInput) SetApplicationSources(v []*ApplicationSource) *DescribeScalingPlansInput {
1300	s.ApplicationSources = v
1301	return s
1302}
1303
1304// SetMaxResults sets the MaxResults field's value.
1305func (s *DescribeScalingPlansInput) SetMaxResults(v int64) *DescribeScalingPlansInput {
1306	s.MaxResults = &v
1307	return s
1308}
1309
1310// SetNextToken sets the NextToken field's value.
1311func (s *DescribeScalingPlansInput) SetNextToken(v string) *DescribeScalingPlansInput {
1312	s.NextToken = &v
1313	return s
1314}
1315
1316// SetScalingPlanNames sets the ScalingPlanNames field's value.
1317func (s *DescribeScalingPlansInput) SetScalingPlanNames(v []*string) *DescribeScalingPlansInput {
1318	s.ScalingPlanNames = v
1319	return s
1320}
1321
1322// SetScalingPlanVersion sets the ScalingPlanVersion field's value.
1323func (s *DescribeScalingPlansInput) SetScalingPlanVersion(v int64) *DescribeScalingPlansInput {
1324	s.ScalingPlanVersion = &v
1325	return s
1326}
1327
1328type DescribeScalingPlansOutput struct {
1329	_ struct{} `type:"structure"`
1330
1331	// The token required to get the next set of results. This value is null if
1332	// there are no more results to return.
1333	NextToken *string `type:"string"`
1334
1335	// Information about the scaling plans.
1336	ScalingPlans []*ScalingPlan `type:"list"`
1337}
1338
1339// String returns the string representation
1340func (s DescribeScalingPlansOutput) String() string {
1341	return awsutil.Prettify(s)
1342}
1343
1344// GoString returns the string representation
1345func (s DescribeScalingPlansOutput) GoString() string {
1346	return s.String()
1347}
1348
1349// SetNextToken sets the NextToken field's value.
1350func (s *DescribeScalingPlansOutput) SetNextToken(v string) *DescribeScalingPlansOutput {
1351	s.NextToken = &v
1352	return s
1353}
1354
1355// SetScalingPlans sets the ScalingPlans field's value.
1356func (s *DescribeScalingPlansOutput) SetScalingPlans(v []*ScalingPlan) *DescribeScalingPlansOutput {
1357	s.ScalingPlans = v
1358	return s
1359}
1360
1361type GetScalingPlanResourceForecastDataInput struct {
1362	_ struct{} `type:"structure"`
1363
1364	// The exclusive end time of the time range for the forecast data to get. The
1365	// maximum time duration between the start and end time is seven days.
1366	//
1367	// Although this parameter can accept a date and time that is more than two
1368	// days in the future, the availability of forecast data has limits. AWS Auto
1369	// Scaling only issues forecasts for periods of two days in advance.
1370	//
1371	// EndTime is a required field
1372	EndTime *time.Time `type:"timestamp" required:"true"`
1373
1374	// The type of forecast data to get.
1375	//
1376	//    * LoadForecast: The load metric forecast.
1377	//
1378	//    * CapacityForecast: The capacity forecast.
1379	//
1380	//    * ScheduledActionMinCapacity: The minimum capacity for each scheduled
1381	//    scaling action. This data is calculated as the larger of two values: the
1382	//    capacity forecast or the minimum capacity in the scaling instruction.
1383	//
1384	//    * ScheduledActionMaxCapacity: The maximum capacity for each scheduled
1385	//    scaling action. The calculation used is determined by the predictive scaling
1386	//    maximum capacity behavior setting in the scaling instruction.
1387	//
1388	// ForecastDataType is a required field
1389	ForecastDataType *string `type:"string" required:"true" enum:"ForecastDataType"`
1390
1391	// The ID of the resource. This string consists of a prefix (autoScalingGroup)
1392	// followed by the name of a specified Auto Scaling group (my-asg). Example:
1393	// autoScalingGroup/my-asg.
1394	//
1395	// ResourceId is a required field
1396	ResourceId *string `type:"string" required:"true"`
1397
1398	// The scalable dimension for the resource. The only valid value is autoscaling:autoScalingGroup:DesiredCapacity.
1399	//
1400	// ScalableDimension is a required field
1401	ScalableDimension *string `type:"string" required:"true" enum:"ScalableDimension"`
1402
1403	// The name of the scaling plan.
1404	//
1405	// ScalingPlanName is a required field
1406	ScalingPlanName *string `min:"1" type:"string" required:"true"`
1407
1408	// The version number of the scaling plan. Currently, the only valid value is
1409	// 1.
1410	//
1411	// ScalingPlanVersion is a required field
1412	ScalingPlanVersion *int64 `type:"long" required:"true"`
1413
1414	// The namespace of the AWS service. The only valid value is autoscaling.
1415	//
1416	// ServiceNamespace is a required field
1417	ServiceNamespace *string `type:"string" required:"true" enum:"ServiceNamespace"`
1418
1419	// The inclusive start time of the time range for the forecast data to get.
1420	// The date and time can be at most 56 days before the current date and time.
1421	//
1422	// StartTime is a required field
1423	StartTime *time.Time `type:"timestamp" required:"true"`
1424}
1425
1426// String returns the string representation
1427func (s GetScalingPlanResourceForecastDataInput) String() string {
1428	return awsutil.Prettify(s)
1429}
1430
1431// GoString returns the string representation
1432func (s GetScalingPlanResourceForecastDataInput) GoString() string {
1433	return s.String()
1434}
1435
1436// Validate inspects the fields of the type to determine if they are valid.
1437func (s *GetScalingPlanResourceForecastDataInput) Validate() error {
1438	invalidParams := request.ErrInvalidParams{Context: "GetScalingPlanResourceForecastDataInput"}
1439	if s.EndTime == nil {
1440		invalidParams.Add(request.NewErrParamRequired("EndTime"))
1441	}
1442	if s.ForecastDataType == nil {
1443		invalidParams.Add(request.NewErrParamRequired("ForecastDataType"))
1444	}
1445	if s.ResourceId == nil {
1446		invalidParams.Add(request.NewErrParamRequired("ResourceId"))
1447	}
1448	if s.ScalableDimension == nil {
1449		invalidParams.Add(request.NewErrParamRequired("ScalableDimension"))
1450	}
1451	if s.ScalingPlanName == nil {
1452		invalidParams.Add(request.NewErrParamRequired("ScalingPlanName"))
1453	}
1454	if s.ScalingPlanName != nil && len(*s.ScalingPlanName) < 1 {
1455		invalidParams.Add(request.NewErrParamMinLen("ScalingPlanName", 1))
1456	}
1457	if s.ScalingPlanVersion == nil {
1458		invalidParams.Add(request.NewErrParamRequired("ScalingPlanVersion"))
1459	}
1460	if s.ServiceNamespace == nil {
1461		invalidParams.Add(request.NewErrParamRequired("ServiceNamespace"))
1462	}
1463	if s.StartTime == nil {
1464		invalidParams.Add(request.NewErrParamRequired("StartTime"))
1465	}
1466
1467	if invalidParams.Len() > 0 {
1468		return invalidParams
1469	}
1470	return nil
1471}
1472
1473// SetEndTime sets the EndTime field's value.
1474func (s *GetScalingPlanResourceForecastDataInput) SetEndTime(v time.Time) *GetScalingPlanResourceForecastDataInput {
1475	s.EndTime = &v
1476	return s
1477}
1478
1479// SetForecastDataType sets the ForecastDataType field's value.
1480func (s *GetScalingPlanResourceForecastDataInput) SetForecastDataType(v string) *GetScalingPlanResourceForecastDataInput {
1481	s.ForecastDataType = &v
1482	return s
1483}
1484
1485// SetResourceId sets the ResourceId field's value.
1486func (s *GetScalingPlanResourceForecastDataInput) SetResourceId(v string) *GetScalingPlanResourceForecastDataInput {
1487	s.ResourceId = &v
1488	return s
1489}
1490
1491// SetScalableDimension sets the ScalableDimension field's value.
1492func (s *GetScalingPlanResourceForecastDataInput) SetScalableDimension(v string) *GetScalingPlanResourceForecastDataInput {
1493	s.ScalableDimension = &v
1494	return s
1495}
1496
1497// SetScalingPlanName sets the ScalingPlanName field's value.
1498func (s *GetScalingPlanResourceForecastDataInput) SetScalingPlanName(v string) *GetScalingPlanResourceForecastDataInput {
1499	s.ScalingPlanName = &v
1500	return s
1501}
1502
1503// SetScalingPlanVersion sets the ScalingPlanVersion field's value.
1504func (s *GetScalingPlanResourceForecastDataInput) SetScalingPlanVersion(v int64) *GetScalingPlanResourceForecastDataInput {
1505	s.ScalingPlanVersion = &v
1506	return s
1507}
1508
1509// SetServiceNamespace sets the ServiceNamespace field's value.
1510func (s *GetScalingPlanResourceForecastDataInput) SetServiceNamespace(v string) *GetScalingPlanResourceForecastDataInput {
1511	s.ServiceNamespace = &v
1512	return s
1513}
1514
1515// SetStartTime sets the StartTime field's value.
1516func (s *GetScalingPlanResourceForecastDataInput) SetStartTime(v time.Time) *GetScalingPlanResourceForecastDataInput {
1517	s.StartTime = &v
1518	return s
1519}
1520
1521type GetScalingPlanResourceForecastDataOutput struct {
1522	_ struct{} `type:"structure"`
1523
1524	// The data points to return.
1525	//
1526	// Datapoints is a required field
1527	Datapoints []*Datapoint `type:"list" required:"true"`
1528}
1529
1530// String returns the string representation
1531func (s GetScalingPlanResourceForecastDataOutput) String() string {
1532	return awsutil.Prettify(s)
1533}
1534
1535// GoString returns the string representation
1536func (s GetScalingPlanResourceForecastDataOutput) GoString() string {
1537	return s.String()
1538}
1539
1540// SetDatapoints sets the Datapoints field's value.
1541func (s *GetScalingPlanResourceForecastDataOutput) SetDatapoints(v []*Datapoint) *GetScalingPlanResourceForecastDataOutput {
1542	s.Datapoints = v
1543	return s
1544}
1545
1546// The service encountered an internal error.
1547type InternalServiceException struct {
1548	_            struct{}                  `type:"structure"`
1549	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
1550
1551	Message_ *string `locationName:"Message" type:"string"`
1552}
1553
1554// String returns the string representation
1555func (s InternalServiceException) String() string {
1556	return awsutil.Prettify(s)
1557}
1558
1559// GoString returns the string representation
1560func (s InternalServiceException) GoString() string {
1561	return s.String()
1562}
1563
1564func newErrorInternalServiceException(v protocol.ResponseMetadata) error {
1565	return &InternalServiceException{
1566		RespMetadata: v,
1567	}
1568}
1569
1570// Code returns the exception type name.
1571func (s *InternalServiceException) Code() string {
1572	return "InternalServiceException"
1573}
1574
1575// Message returns the exception's message.
1576func (s *InternalServiceException) Message() string {
1577	if s.Message_ != nil {
1578		return *s.Message_
1579	}
1580	return ""
1581}
1582
1583// OrigErr always returns nil, satisfies awserr.Error interface.
1584func (s *InternalServiceException) OrigErr() error {
1585	return nil
1586}
1587
1588func (s *InternalServiceException) Error() string {
1589	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
1590}
1591
1592// Status code returns the HTTP status code for the request's response error.
1593func (s *InternalServiceException) StatusCode() int {
1594	return s.RespMetadata.StatusCode
1595}
1596
1597// RequestID returns the service's response RequestID for request.
1598func (s *InternalServiceException) RequestID() string {
1599	return s.RespMetadata.RequestID
1600}
1601
1602// The token provided is not valid.
1603type InvalidNextTokenException struct {
1604	_            struct{}                  `type:"structure"`
1605	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
1606
1607	Message_ *string `locationName:"Message" type:"string"`
1608}
1609
1610// String returns the string representation
1611func (s InvalidNextTokenException) String() string {
1612	return awsutil.Prettify(s)
1613}
1614
1615// GoString returns the string representation
1616func (s InvalidNextTokenException) GoString() string {
1617	return s.String()
1618}
1619
1620func newErrorInvalidNextTokenException(v protocol.ResponseMetadata) error {
1621	return &InvalidNextTokenException{
1622		RespMetadata: v,
1623	}
1624}
1625
1626// Code returns the exception type name.
1627func (s *InvalidNextTokenException) Code() string {
1628	return "InvalidNextTokenException"
1629}
1630
1631// Message returns the exception's message.
1632func (s *InvalidNextTokenException) Message() string {
1633	if s.Message_ != nil {
1634		return *s.Message_
1635	}
1636	return ""
1637}
1638
1639// OrigErr always returns nil, satisfies awserr.Error interface.
1640func (s *InvalidNextTokenException) OrigErr() error {
1641	return nil
1642}
1643
1644func (s *InvalidNextTokenException) Error() string {
1645	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
1646}
1647
1648// Status code returns the HTTP status code for the request's response error.
1649func (s *InvalidNextTokenException) StatusCode() int {
1650	return s.RespMetadata.StatusCode
1651}
1652
1653// RequestID returns the service's response RequestID for request.
1654func (s *InvalidNextTokenException) RequestID() string {
1655	return s.RespMetadata.RequestID
1656}
1657
1658// Your account exceeded a limit. This exception is thrown when a per-account
1659// resource limit is exceeded.
1660type LimitExceededException struct {
1661	_            struct{}                  `type:"structure"`
1662	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
1663
1664	Message_ *string `locationName:"Message" type:"string"`
1665}
1666
1667// String returns the string representation
1668func (s LimitExceededException) String() string {
1669	return awsutil.Prettify(s)
1670}
1671
1672// GoString returns the string representation
1673func (s LimitExceededException) GoString() string {
1674	return s.String()
1675}
1676
1677func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
1678	return &LimitExceededException{
1679		RespMetadata: v,
1680	}
1681}
1682
1683// Code returns the exception type name.
1684func (s *LimitExceededException) Code() string {
1685	return "LimitExceededException"
1686}
1687
1688// Message returns the exception's message.
1689func (s *LimitExceededException) Message() string {
1690	if s.Message_ != nil {
1691		return *s.Message_
1692	}
1693	return ""
1694}
1695
1696// OrigErr always returns nil, satisfies awserr.Error interface.
1697func (s *LimitExceededException) OrigErr() error {
1698	return nil
1699}
1700
1701func (s *LimitExceededException) Error() string {
1702	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
1703}
1704
1705// Status code returns the HTTP status code for the request's response error.
1706func (s *LimitExceededException) StatusCode() int {
1707	return s.RespMetadata.StatusCode
1708}
1709
1710// RequestID returns the service's response RequestID for request.
1711func (s *LimitExceededException) RequestID() string {
1712	return s.RespMetadata.RequestID
1713}
1714
1715// Represents a dimension for a customized metric.
1716type MetricDimension struct {
1717	_ struct{} `type:"structure"`
1718
1719	// The name of the dimension.
1720	//
1721	// Name is a required field
1722	Name *string `type:"string" required:"true"`
1723
1724	// The value of the dimension.
1725	//
1726	// Value is a required field
1727	Value *string `type:"string" required:"true"`
1728}
1729
1730// String returns the string representation
1731func (s MetricDimension) String() string {
1732	return awsutil.Prettify(s)
1733}
1734
1735// GoString returns the string representation
1736func (s MetricDimension) GoString() string {
1737	return s.String()
1738}
1739
1740// Validate inspects the fields of the type to determine if they are valid.
1741func (s *MetricDimension) Validate() error {
1742	invalidParams := request.ErrInvalidParams{Context: "MetricDimension"}
1743	if s.Name == nil {
1744		invalidParams.Add(request.NewErrParamRequired("Name"))
1745	}
1746	if s.Value == nil {
1747		invalidParams.Add(request.NewErrParamRequired("Value"))
1748	}
1749
1750	if invalidParams.Len() > 0 {
1751		return invalidParams
1752	}
1753	return nil
1754}
1755
1756// SetName sets the Name field's value.
1757func (s *MetricDimension) SetName(v string) *MetricDimension {
1758	s.Name = &v
1759	return s
1760}
1761
1762// SetValue sets the Value field's value.
1763func (s *MetricDimension) SetValue(v string) *MetricDimension {
1764	s.Value = &v
1765	return s
1766}
1767
1768// The specified object could not be found.
1769type ObjectNotFoundException struct {
1770	_            struct{}                  `type:"structure"`
1771	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
1772
1773	Message_ *string `locationName:"Message" type:"string"`
1774}
1775
1776// String returns the string representation
1777func (s ObjectNotFoundException) String() string {
1778	return awsutil.Prettify(s)
1779}
1780
1781// GoString returns the string representation
1782func (s ObjectNotFoundException) GoString() string {
1783	return s.String()
1784}
1785
1786func newErrorObjectNotFoundException(v protocol.ResponseMetadata) error {
1787	return &ObjectNotFoundException{
1788		RespMetadata: v,
1789	}
1790}
1791
1792// Code returns the exception type name.
1793func (s *ObjectNotFoundException) Code() string {
1794	return "ObjectNotFoundException"
1795}
1796
1797// Message returns the exception's message.
1798func (s *ObjectNotFoundException) Message() string {
1799	if s.Message_ != nil {
1800		return *s.Message_
1801	}
1802	return ""
1803}
1804
1805// OrigErr always returns nil, satisfies awserr.Error interface.
1806func (s *ObjectNotFoundException) OrigErr() error {
1807	return nil
1808}
1809
1810func (s *ObjectNotFoundException) Error() string {
1811	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
1812}
1813
1814// Status code returns the HTTP status code for the request's response error.
1815func (s *ObjectNotFoundException) StatusCode() int {
1816	return s.RespMetadata.StatusCode
1817}
1818
1819// RequestID returns the service's response RequestID for request.
1820func (s *ObjectNotFoundException) RequestID() string {
1821	return s.RespMetadata.RequestID
1822}
1823
1824// Represents a predefined metric that can be used for predictive scaling.
1825//
1826// After creating your scaling plan, you can use the AWS Auto Scaling console
1827// to visualize forecasts for the specified metric. For more information, see
1828// View Scaling Information for a Resource (https://docs.aws.amazon.com/autoscaling/plans/userguide/gs-create-scaling-plan.html#gs-view-resource)
1829// in the AWS Auto Scaling User Guide.
1830type PredefinedLoadMetricSpecification struct {
1831	_ struct{} `type:"structure"`
1832
1833	// The metric type.
1834	//
1835	// PredefinedLoadMetricType is a required field
1836	PredefinedLoadMetricType *string `type:"string" required:"true" enum:"LoadMetricType"`
1837
1838	// Identifies the resource associated with the metric type. You can't specify
1839	// a resource label unless the metric type is ALBTargetGroupRequestCount and
1840	// there is a target group for an Application Load Balancer attached to the
1841	// Auto Scaling group.
1842	//
1843	// You create the resource label by appending the final portion of the load
1844	// balancer ARN and the final portion of the target group ARN into a single
1845	// value, separated by a forward slash (/). The format is app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>,
1846	// where:
1847	//
1848	//    * app/<load-balancer-name>/<load-balancer-id> is the final portion of
1849	//    the load balancer ARN
1850	//
1851	//    * targetgroup/<target-group-name>/<target-group-id> is the final portion
1852	//    of the target group ARN.
1853	//
1854	// This is an example: app/EC2Co-EcsEl-1TKLTMITMM0EO/f37c06a68c1748aa/targetgroup/EC2Co-Defau-LDNM7Q3ZH1ZN/6d4ea56ca2d6a18d.
1855	//
1856	// To find the ARN for an Application Load Balancer, use the DescribeLoadBalancers
1857	// (https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeLoadBalancers.html)
1858	// API operation. To find the ARN for the target group, use the DescribeTargetGroups
1859	// (https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeTargetGroups.html)
1860	// API operation.
1861	ResourceLabel *string `min:"1" type:"string"`
1862}
1863
1864// String returns the string representation
1865func (s PredefinedLoadMetricSpecification) String() string {
1866	return awsutil.Prettify(s)
1867}
1868
1869// GoString returns the string representation
1870func (s PredefinedLoadMetricSpecification) GoString() string {
1871	return s.String()
1872}
1873
1874// Validate inspects the fields of the type to determine if they are valid.
1875func (s *PredefinedLoadMetricSpecification) Validate() error {
1876	invalidParams := request.ErrInvalidParams{Context: "PredefinedLoadMetricSpecification"}
1877	if s.PredefinedLoadMetricType == nil {
1878		invalidParams.Add(request.NewErrParamRequired("PredefinedLoadMetricType"))
1879	}
1880	if s.ResourceLabel != nil && len(*s.ResourceLabel) < 1 {
1881		invalidParams.Add(request.NewErrParamMinLen("ResourceLabel", 1))
1882	}
1883
1884	if invalidParams.Len() > 0 {
1885		return invalidParams
1886	}
1887	return nil
1888}
1889
1890// SetPredefinedLoadMetricType sets the PredefinedLoadMetricType field's value.
1891func (s *PredefinedLoadMetricSpecification) SetPredefinedLoadMetricType(v string) *PredefinedLoadMetricSpecification {
1892	s.PredefinedLoadMetricType = &v
1893	return s
1894}
1895
1896// SetResourceLabel sets the ResourceLabel field's value.
1897func (s *PredefinedLoadMetricSpecification) SetResourceLabel(v string) *PredefinedLoadMetricSpecification {
1898	s.ResourceLabel = &v
1899	return s
1900}
1901
1902// Represents a predefined metric that can be used for dynamic scaling as part
1903// of a target tracking scaling policy.
1904type PredefinedScalingMetricSpecification struct {
1905	_ struct{} `type:"structure"`
1906
1907	// The metric type. The ALBRequestCountPerTarget metric type applies only to
1908	// Auto Scaling groups, Spot Fleet requests, and ECS services.
1909	//
1910	// PredefinedScalingMetricType is a required field
1911	PredefinedScalingMetricType *string `type:"string" required:"true" enum:"ScalingMetricType"`
1912
1913	// Identifies the resource associated with the metric type. You can't specify
1914	// a resource label unless the metric type is ALBRequestCountPerTarget and there
1915	// is a target group for an Application Load Balancer attached to the Auto Scaling
1916	// group, Spot Fleet request, or ECS service.
1917	//
1918	// You create the resource label by appending the final portion of the load
1919	// balancer ARN and the final portion of the target group ARN into a single
1920	// value, separated by a forward slash (/). The format is app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>,
1921	// where:
1922	//
1923	//    * app/<load-balancer-name>/<load-balancer-id> is the final portion of
1924	//    the load balancer ARN
1925	//
1926	//    * targetgroup/<target-group-name>/<target-group-id> is the final portion
1927	//    of the target group ARN.
1928	//
1929	// This is an example: app/EC2Co-EcsEl-1TKLTMITMM0EO/f37c06a68c1748aa/targetgroup/EC2Co-Defau-LDNM7Q3ZH1ZN/6d4ea56ca2d6a18d.
1930	//
1931	// To find the ARN for an Application Load Balancer, use the DescribeLoadBalancers
1932	// (https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeLoadBalancers.html)
1933	// API operation. To find the ARN for the target group, use the DescribeTargetGroups
1934	// (https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeTargetGroups.html)
1935	// API operation.
1936	ResourceLabel *string `min:"1" type:"string"`
1937}
1938
1939// String returns the string representation
1940func (s PredefinedScalingMetricSpecification) String() string {
1941	return awsutil.Prettify(s)
1942}
1943
1944// GoString returns the string representation
1945func (s PredefinedScalingMetricSpecification) GoString() string {
1946	return s.String()
1947}
1948
1949// Validate inspects the fields of the type to determine if they are valid.
1950func (s *PredefinedScalingMetricSpecification) Validate() error {
1951	invalidParams := request.ErrInvalidParams{Context: "PredefinedScalingMetricSpecification"}
1952	if s.PredefinedScalingMetricType == nil {
1953		invalidParams.Add(request.NewErrParamRequired("PredefinedScalingMetricType"))
1954	}
1955	if s.ResourceLabel != nil && len(*s.ResourceLabel) < 1 {
1956		invalidParams.Add(request.NewErrParamMinLen("ResourceLabel", 1))
1957	}
1958
1959	if invalidParams.Len() > 0 {
1960		return invalidParams
1961	}
1962	return nil
1963}
1964
1965// SetPredefinedScalingMetricType sets the PredefinedScalingMetricType field's value.
1966func (s *PredefinedScalingMetricSpecification) SetPredefinedScalingMetricType(v string) *PredefinedScalingMetricSpecification {
1967	s.PredefinedScalingMetricType = &v
1968	return s
1969}
1970
1971// SetResourceLabel sets the ResourceLabel field's value.
1972func (s *PredefinedScalingMetricSpecification) SetResourceLabel(v string) *PredefinedScalingMetricSpecification {
1973	s.ResourceLabel = &v
1974	return s
1975}
1976
1977// Describes a scaling instruction for a scalable resource in a scaling plan.
1978// Each scaling instruction applies to one resource.
1979//
1980// AWS Auto Scaling creates target tracking scaling policies based on the scaling
1981// instructions. Target tracking scaling policies adjust the capacity of your
1982// scalable resource as required to maintain resource utilization at the target
1983// value that you specified.
1984//
1985// AWS Auto Scaling also configures predictive scaling for your Amazon EC2 Auto
1986// Scaling groups using a subset of parameters, including the load metric, the
1987// scaling metric, the target value for the scaling metric, the predictive scaling
1988// mode (forecast and scale or forecast only), and the desired behavior when
1989// the forecast capacity exceeds the maximum capacity of the resource. With
1990// predictive scaling, AWS Auto Scaling generates forecasts with traffic predictions
1991// for the two days ahead and schedules scaling actions that proactively add
1992// and remove resource capacity to match the forecast.
1993//
1994// We recommend waiting a minimum of 24 hours after creating an Auto Scaling
1995// group to configure predictive scaling. At minimum, there must be 24 hours
1996// of historical data to generate a forecast. For more information, see Best
1997// Practices for AWS Auto Scaling (https://docs.aws.amazon.com/autoscaling/plans/userguide/gs-best-practices.html)
1998// in the AWS Auto Scaling User Guide.
1999type ScalingInstruction struct {
2000	_ struct{} `type:"structure"`
2001
2002	// The customized load metric to use for predictive scaling. This parameter
2003	// or a PredefinedLoadMetricSpecification is required when configuring predictive
2004	// scaling, and cannot be used otherwise.
2005	CustomizedLoadMetricSpecification *CustomizedLoadMetricSpecification `type:"structure"`
2006
2007	// Controls whether dynamic scaling by AWS Auto Scaling is disabled. When dynamic
2008	// scaling is enabled, AWS Auto Scaling creates target tracking scaling policies
2009	// based on the specified target tracking configurations.
2010	//
2011	// The default is enabled (false).
2012	DisableDynamicScaling *bool `type:"boolean"`
2013
2014	// The maximum capacity of the resource. The exception to this upper limit is
2015	// if you specify a non-default setting for PredictiveScalingMaxCapacityBehavior.
2016	//
2017	// MaxCapacity is a required field
2018	MaxCapacity *int64 `type:"integer" required:"true"`
2019
2020	// The minimum capacity of the resource.
2021	//
2022	// MinCapacity is a required field
2023	MinCapacity *int64 `type:"integer" required:"true"`
2024
2025	// The predefined load metric to use for predictive scaling. This parameter
2026	// or a CustomizedLoadMetricSpecification is required when configuring predictive
2027	// scaling, and cannot be used otherwise.
2028	PredefinedLoadMetricSpecification *PredefinedLoadMetricSpecification `type:"structure"`
2029
2030	// Defines the behavior that should be applied if the forecast capacity approaches
2031	// or exceeds the maximum capacity specified for the resource. The default value
2032	// is SetForecastCapacityToMaxCapacity.
2033	//
2034	// The following are possible values:
2035	//
2036	//    * SetForecastCapacityToMaxCapacity - AWS Auto Scaling cannot scale resource
2037	//    capacity higher than the maximum capacity. The maximum capacity is enforced
2038	//    as a hard limit.
2039	//
2040	//    * SetMaxCapacityToForecastCapacity - AWS Auto Scaling may scale resource
2041	//    capacity higher than the maximum capacity to equal but not exceed forecast
2042	//    capacity.
2043	//
2044	//    * SetMaxCapacityAboveForecastCapacity - AWS Auto Scaling may scale resource
2045	//    capacity higher than the maximum capacity by a specified buffer value.
2046	//    The intention is to give the target tracking scaling policy extra capacity
2047	//    if unexpected traffic occurs.
2048	//
2049	// Only valid when configuring predictive scaling.
2050	PredictiveScalingMaxCapacityBehavior *string `type:"string" enum:"PredictiveScalingMaxCapacityBehavior"`
2051
2052	// The size of the capacity buffer to use when the forecast capacity is close
2053	// to or exceeds the maximum capacity. The value is specified as a percentage
2054	// relative to the forecast capacity. For example, if the buffer is 10, this
2055	// means a 10 percent buffer, such that if the forecast capacity is 50, and
2056	// the maximum capacity is 40, then the effective maximum capacity is 55.
2057	//
2058	// Only valid when configuring predictive scaling. Required if the PredictiveScalingMaxCapacityBehavior
2059	// is set to SetMaxCapacityAboveForecastCapacity, and cannot be used otherwise.
2060	//
2061	// The range is 1-100.
2062	PredictiveScalingMaxCapacityBuffer *int64 `type:"integer"`
2063
2064	// The predictive scaling mode. The default value is ForecastAndScale. Otherwise,
2065	// AWS Auto Scaling forecasts capacity but does not create any scheduled scaling
2066	// actions based on the capacity forecast.
2067	PredictiveScalingMode *string `type:"string" enum:"PredictiveScalingMode"`
2068
2069	// The ID of the resource. This string consists of the resource type and unique
2070	// identifier.
2071	//
2072	//    * Auto Scaling group - The resource type is autoScalingGroup and the unique
2073	//    identifier is the name of the Auto Scaling group. Example: autoScalingGroup/my-asg.
2074	//
2075	//    * ECS service - The resource type is service and the unique identifier
2076	//    is the cluster name and service name. Example: service/default/sample-webapp.
2077	//
2078	//    * Spot Fleet request - The resource type is spot-fleet-request and the
2079	//    unique identifier is the Spot Fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE.
2080	//
2081	//    * DynamoDB table - The resource type is table and the unique identifier
2082	//    is the resource ID. Example: table/my-table.
2083	//
2084	//    * DynamoDB global secondary index - The resource type is index and the
2085	//    unique identifier is the resource ID. Example: table/my-table/index/my-table-index.
2086	//
2087	//    * Aurora DB cluster - The resource type is cluster and the unique identifier
2088	//    is the cluster name. Example: cluster:my-db-cluster.
2089	//
2090	// ResourceId is a required field
2091	ResourceId *string `min:"1" type:"string" required:"true"`
2092
2093	// The scalable dimension associated with the resource.
2094	//
2095	//    * autoscaling:autoScalingGroup:DesiredCapacity - The desired capacity
2096	//    of an Auto Scaling group.
2097	//
2098	//    * ecs:service:DesiredCount - The desired task count of an ECS service.
2099	//
2100	//    * ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot
2101	//    Fleet request.
2102	//
2103	//    * dynamodb:table:ReadCapacityUnits - The provisioned read capacity for
2104	//    a DynamoDB table.
2105	//
2106	//    * dynamodb:table:WriteCapacityUnits - The provisioned write capacity for
2107	//    a DynamoDB table.
2108	//
2109	//    * dynamodb:index:ReadCapacityUnits - The provisioned read capacity for
2110	//    a DynamoDB global secondary index.
2111	//
2112	//    * dynamodb:index:WriteCapacityUnits - The provisioned write capacity for
2113	//    a DynamoDB global secondary index.
2114	//
2115	//    * rds:cluster:ReadReplicaCount - The count of Aurora Replicas in an Aurora
2116	//    DB cluster. Available for Aurora MySQL-compatible edition and Aurora PostgreSQL-compatible
2117	//    edition.
2118	//
2119	// ScalableDimension is a required field
2120	ScalableDimension *string `type:"string" required:"true" enum:"ScalableDimension"`
2121
2122	// Controls whether a resource's externally created scaling policies are kept
2123	// or replaced.
2124	//
2125	// The default value is KeepExternalPolicies. If the parameter is set to ReplaceExternalPolicies,
2126	// any scaling policies that are external to AWS Auto Scaling are deleted and
2127	// new target tracking scaling policies created.
2128	//
2129	// Only valid when configuring dynamic scaling.
2130	//
2131	// Condition: The number of existing policies to be replaced must be less than
2132	// or equal to 50. If there are more than 50 policies to be replaced, AWS Auto
2133	// Scaling keeps all existing policies and does not create new ones.
2134	ScalingPolicyUpdateBehavior *string `type:"string" enum:"ScalingPolicyUpdateBehavior"`
2135
2136	// The amount of time, in seconds, to buffer the run time of scheduled scaling
2137	// actions when scaling out. For example, if the forecast says to add capacity
2138	// at 10:00 AM, and the buffer time is 5 minutes, then the run time of the corresponding
2139	// scheduled scaling action will be 9:55 AM. The intention is to give resources
2140	// time to be provisioned. For example, it can take a few minutes to launch
2141	// an EC2 instance. The actual amount of time required depends on several factors,
2142	// such as the size of the instance and whether there are startup scripts to
2143	// complete.
2144	//
2145	// The value must be less than the forecast interval duration of 3600 seconds
2146	// (60 minutes). The default is 300 seconds.
2147	//
2148	// Only valid when configuring predictive scaling.
2149	ScheduledActionBufferTime *int64 `type:"integer"`
2150
2151	// The namespace of the AWS service.
2152	//
2153	// ServiceNamespace is a required field
2154	ServiceNamespace *string `type:"string" required:"true" enum:"ServiceNamespace"`
2155
2156	// The target tracking configurations (up to 10). Each of these structures must
2157	// specify a unique scaling metric and a target value for the metric.
2158	//
2159	// TargetTrackingConfigurations is a required field
2160	TargetTrackingConfigurations []*TargetTrackingConfiguration `type:"list" required:"true"`
2161}
2162
2163// String returns the string representation
2164func (s ScalingInstruction) String() string {
2165	return awsutil.Prettify(s)
2166}
2167
2168// GoString returns the string representation
2169func (s ScalingInstruction) GoString() string {
2170	return s.String()
2171}
2172
2173// Validate inspects the fields of the type to determine if they are valid.
2174func (s *ScalingInstruction) Validate() error {
2175	invalidParams := request.ErrInvalidParams{Context: "ScalingInstruction"}
2176	if s.MaxCapacity == nil {
2177		invalidParams.Add(request.NewErrParamRequired("MaxCapacity"))
2178	}
2179	if s.MinCapacity == nil {
2180		invalidParams.Add(request.NewErrParamRequired("MinCapacity"))
2181	}
2182	if s.ResourceId == nil {
2183		invalidParams.Add(request.NewErrParamRequired("ResourceId"))
2184	}
2185	if s.ResourceId != nil && len(*s.ResourceId) < 1 {
2186		invalidParams.Add(request.NewErrParamMinLen("ResourceId", 1))
2187	}
2188	if s.ScalableDimension == nil {
2189		invalidParams.Add(request.NewErrParamRequired("ScalableDimension"))
2190	}
2191	if s.ServiceNamespace == nil {
2192		invalidParams.Add(request.NewErrParamRequired("ServiceNamespace"))
2193	}
2194	if s.TargetTrackingConfigurations == nil {
2195		invalidParams.Add(request.NewErrParamRequired("TargetTrackingConfigurations"))
2196	}
2197	if s.CustomizedLoadMetricSpecification != nil {
2198		if err := s.CustomizedLoadMetricSpecification.Validate(); err != nil {
2199			invalidParams.AddNested("CustomizedLoadMetricSpecification", err.(request.ErrInvalidParams))
2200		}
2201	}
2202	if s.PredefinedLoadMetricSpecification != nil {
2203		if err := s.PredefinedLoadMetricSpecification.Validate(); err != nil {
2204			invalidParams.AddNested("PredefinedLoadMetricSpecification", err.(request.ErrInvalidParams))
2205		}
2206	}
2207	if s.TargetTrackingConfigurations != nil {
2208		for i, v := range s.TargetTrackingConfigurations {
2209			if v == nil {
2210				continue
2211			}
2212			if err := v.Validate(); err != nil {
2213				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetTrackingConfigurations", i), err.(request.ErrInvalidParams))
2214			}
2215		}
2216	}
2217
2218	if invalidParams.Len() > 0 {
2219		return invalidParams
2220	}
2221	return nil
2222}
2223
2224// SetCustomizedLoadMetricSpecification sets the CustomizedLoadMetricSpecification field's value.
2225func (s *ScalingInstruction) SetCustomizedLoadMetricSpecification(v *CustomizedLoadMetricSpecification) *ScalingInstruction {
2226	s.CustomizedLoadMetricSpecification = v
2227	return s
2228}
2229
2230// SetDisableDynamicScaling sets the DisableDynamicScaling field's value.
2231func (s *ScalingInstruction) SetDisableDynamicScaling(v bool) *ScalingInstruction {
2232	s.DisableDynamicScaling = &v
2233	return s
2234}
2235
2236// SetMaxCapacity sets the MaxCapacity field's value.
2237func (s *ScalingInstruction) SetMaxCapacity(v int64) *ScalingInstruction {
2238	s.MaxCapacity = &v
2239	return s
2240}
2241
2242// SetMinCapacity sets the MinCapacity field's value.
2243func (s *ScalingInstruction) SetMinCapacity(v int64) *ScalingInstruction {
2244	s.MinCapacity = &v
2245	return s
2246}
2247
2248// SetPredefinedLoadMetricSpecification sets the PredefinedLoadMetricSpecification field's value.
2249func (s *ScalingInstruction) SetPredefinedLoadMetricSpecification(v *PredefinedLoadMetricSpecification) *ScalingInstruction {
2250	s.PredefinedLoadMetricSpecification = v
2251	return s
2252}
2253
2254// SetPredictiveScalingMaxCapacityBehavior sets the PredictiveScalingMaxCapacityBehavior field's value.
2255func (s *ScalingInstruction) SetPredictiveScalingMaxCapacityBehavior(v string) *ScalingInstruction {
2256	s.PredictiveScalingMaxCapacityBehavior = &v
2257	return s
2258}
2259
2260// SetPredictiveScalingMaxCapacityBuffer sets the PredictiveScalingMaxCapacityBuffer field's value.
2261func (s *ScalingInstruction) SetPredictiveScalingMaxCapacityBuffer(v int64) *ScalingInstruction {
2262	s.PredictiveScalingMaxCapacityBuffer = &v
2263	return s
2264}
2265
2266// SetPredictiveScalingMode sets the PredictiveScalingMode field's value.
2267func (s *ScalingInstruction) SetPredictiveScalingMode(v string) *ScalingInstruction {
2268	s.PredictiveScalingMode = &v
2269	return s
2270}
2271
2272// SetResourceId sets the ResourceId field's value.
2273func (s *ScalingInstruction) SetResourceId(v string) *ScalingInstruction {
2274	s.ResourceId = &v
2275	return s
2276}
2277
2278// SetScalableDimension sets the ScalableDimension field's value.
2279func (s *ScalingInstruction) SetScalableDimension(v string) *ScalingInstruction {
2280	s.ScalableDimension = &v
2281	return s
2282}
2283
2284// SetScalingPolicyUpdateBehavior sets the ScalingPolicyUpdateBehavior field's value.
2285func (s *ScalingInstruction) SetScalingPolicyUpdateBehavior(v string) *ScalingInstruction {
2286	s.ScalingPolicyUpdateBehavior = &v
2287	return s
2288}
2289
2290// SetScheduledActionBufferTime sets the ScheduledActionBufferTime field's value.
2291func (s *ScalingInstruction) SetScheduledActionBufferTime(v int64) *ScalingInstruction {
2292	s.ScheduledActionBufferTime = &v
2293	return s
2294}
2295
2296// SetServiceNamespace sets the ServiceNamespace field's value.
2297func (s *ScalingInstruction) SetServiceNamespace(v string) *ScalingInstruction {
2298	s.ServiceNamespace = &v
2299	return s
2300}
2301
2302// SetTargetTrackingConfigurations sets the TargetTrackingConfigurations field's value.
2303func (s *ScalingInstruction) SetTargetTrackingConfigurations(v []*TargetTrackingConfiguration) *ScalingInstruction {
2304	s.TargetTrackingConfigurations = v
2305	return s
2306}
2307
2308// Represents a scaling plan.
2309type ScalingPlan struct {
2310	_ struct{} `type:"structure"`
2311
2312	// A CloudFormation stack or a set of tags. You can create one scaling plan
2313	// per application source.
2314	//
2315	// ApplicationSource is a required field
2316	ApplicationSource *ApplicationSource `type:"structure" required:"true"`
2317
2318	// The Unix time stamp when the scaling plan was created.
2319	CreationTime *time.Time `type:"timestamp"`
2320
2321	// The scaling instructions.
2322	//
2323	// ScalingInstructions is a required field
2324	ScalingInstructions []*ScalingInstruction `type:"list" required:"true"`
2325
2326	// The name of the scaling plan.
2327	//
2328	// ScalingPlanName is a required field
2329	ScalingPlanName *string `min:"1" type:"string" required:"true"`
2330
2331	// The version number of the scaling plan.
2332	//
2333	// ScalingPlanVersion is a required field
2334	ScalingPlanVersion *int64 `type:"long" required:"true"`
2335
2336	// The status of the scaling plan.
2337	//
2338	//    * Active - The scaling plan is active.
2339	//
2340	//    * ActiveWithProblems - The scaling plan is active, but the scaling configuration
2341	//    for one or more resources could not be applied.
2342	//
2343	//    * CreationInProgress - The scaling plan is being created.
2344	//
2345	//    * CreationFailed - The scaling plan could not be created.
2346	//
2347	//    * DeletionInProgress - The scaling plan is being deleted.
2348	//
2349	//    * DeletionFailed - The scaling plan could not be deleted.
2350	//
2351	//    * UpdateInProgress - The scaling plan is being updated.
2352	//
2353	//    * UpdateFailed - The scaling plan could not be updated.
2354	//
2355	// StatusCode is a required field
2356	StatusCode *string `type:"string" required:"true" enum:"ScalingPlanStatusCode"`
2357
2358	// A simple message about the current status of the scaling plan.
2359	StatusMessage *string `type:"string"`
2360
2361	// The Unix time stamp when the scaling plan entered the current status.
2362	StatusStartTime *time.Time `type:"timestamp"`
2363}
2364
2365// String returns the string representation
2366func (s ScalingPlan) String() string {
2367	return awsutil.Prettify(s)
2368}
2369
2370// GoString returns the string representation
2371func (s ScalingPlan) GoString() string {
2372	return s.String()
2373}
2374
2375// SetApplicationSource sets the ApplicationSource field's value.
2376func (s *ScalingPlan) SetApplicationSource(v *ApplicationSource) *ScalingPlan {
2377	s.ApplicationSource = v
2378	return s
2379}
2380
2381// SetCreationTime sets the CreationTime field's value.
2382func (s *ScalingPlan) SetCreationTime(v time.Time) *ScalingPlan {
2383	s.CreationTime = &v
2384	return s
2385}
2386
2387// SetScalingInstructions sets the ScalingInstructions field's value.
2388func (s *ScalingPlan) SetScalingInstructions(v []*ScalingInstruction) *ScalingPlan {
2389	s.ScalingInstructions = v
2390	return s
2391}
2392
2393// SetScalingPlanName sets the ScalingPlanName field's value.
2394func (s *ScalingPlan) SetScalingPlanName(v string) *ScalingPlan {
2395	s.ScalingPlanName = &v
2396	return s
2397}
2398
2399// SetScalingPlanVersion sets the ScalingPlanVersion field's value.
2400func (s *ScalingPlan) SetScalingPlanVersion(v int64) *ScalingPlan {
2401	s.ScalingPlanVersion = &v
2402	return s
2403}
2404
2405// SetStatusCode sets the StatusCode field's value.
2406func (s *ScalingPlan) SetStatusCode(v string) *ScalingPlan {
2407	s.StatusCode = &v
2408	return s
2409}
2410
2411// SetStatusMessage sets the StatusMessage field's value.
2412func (s *ScalingPlan) SetStatusMessage(v string) *ScalingPlan {
2413	s.StatusMessage = &v
2414	return s
2415}
2416
2417// SetStatusStartTime sets the StatusStartTime field's value.
2418func (s *ScalingPlan) SetStatusStartTime(v time.Time) *ScalingPlan {
2419	s.StatusStartTime = &v
2420	return s
2421}
2422
2423// Represents a scalable resource.
2424type ScalingPlanResource struct {
2425	_ struct{} `type:"structure"`
2426
2427	// The ID of the resource. This string consists of the resource type and unique
2428	// identifier.
2429	//
2430	//    * Auto Scaling group - The resource type is autoScalingGroup and the unique
2431	//    identifier is the name of the Auto Scaling group. Example: autoScalingGroup/my-asg.
2432	//
2433	//    * ECS service - The resource type is service and the unique identifier
2434	//    is the cluster name and service name. Example: service/default/sample-webapp.
2435	//
2436	//    * Spot Fleet request - The resource type is spot-fleet-request and the
2437	//    unique identifier is the Spot Fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE.
2438	//
2439	//    * DynamoDB table - The resource type is table and the unique identifier
2440	//    is the resource ID. Example: table/my-table.
2441	//
2442	//    * DynamoDB global secondary index - The resource type is index and the
2443	//    unique identifier is the resource ID. Example: table/my-table/index/my-table-index.
2444	//
2445	//    * Aurora DB cluster - The resource type is cluster and the unique identifier
2446	//    is the cluster name. Example: cluster:my-db-cluster.
2447	//
2448	// ResourceId is a required field
2449	ResourceId *string `min:"1" type:"string" required:"true"`
2450
2451	// The scalable dimension for the resource.
2452	//
2453	//    * autoscaling:autoScalingGroup:DesiredCapacity - The desired capacity
2454	//    of an Auto Scaling group.
2455	//
2456	//    * ecs:service:DesiredCount - The desired task count of an ECS service.
2457	//
2458	//    * ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot
2459	//    Fleet request.
2460	//
2461	//    * dynamodb:table:ReadCapacityUnits - The provisioned read capacity for
2462	//    a DynamoDB table.
2463	//
2464	//    * dynamodb:table:WriteCapacityUnits - The provisioned write capacity for
2465	//    a DynamoDB table.
2466	//
2467	//    * dynamodb:index:ReadCapacityUnits - The provisioned read capacity for
2468	//    a DynamoDB global secondary index.
2469	//
2470	//    * dynamodb:index:WriteCapacityUnits - The provisioned write capacity for
2471	//    a DynamoDB global secondary index.
2472	//
2473	//    * rds:cluster:ReadReplicaCount - The count of Aurora Replicas in an Aurora
2474	//    DB cluster. Available for Aurora MySQL-compatible edition and Aurora PostgreSQL-compatible
2475	//    edition.
2476	//
2477	// ScalableDimension is a required field
2478	ScalableDimension *string `type:"string" required:"true" enum:"ScalableDimension"`
2479
2480	// The name of the scaling plan.
2481	//
2482	// ScalingPlanName is a required field
2483	ScalingPlanName *string `min:"1" type:"string" required:"true"`
2484
2485	// The version number of the scaling plan.
2486	//
2487	// ScalingPlanVersion is a required field
2488	ScalingPlanVersion *int64 `type:"long" required:"true"`
2489
2490	// The scaling policies.
2491	ScalingPolicies []*ScalingPolicy `type:"list"`
2492
2493	// The scaling status of the resource.
2494	//
2495	//    * Active - The scaling configuration is active.
2496	//
2497	//    * Inactive - The scaling configuration is not active because the scaling
2498	//    plan is being created or the scaling configuration could not be applied.
2499	//    Check the status message for more information.
2500	//
2501	//    * PartiallyActive - The scaling configuration is partially active because
2502	//    the scaling plan is being created or deleted or the scaling configuration
2503	//    could not be fully applied. Check the status message for more information.
2504	//
2505	// ScalingStatusCode is a required field
2506	ScalingStatusCode *string `type:"string" required:"true" enum:"ScalingStatusCode"`
2507
2508	// A simple message about the current scaling status of the resource.
2509	ScalingStatusMessage *string `type:"string"`
2510
2511	// The namespace of the AWS service.
2512	//
2513	// ServiceNamespace is a required field
2514	ServiceNamespace *string `type:"string" required:"true" enum:"ServiceNamespace"`
2515}
2516
2517// String returns the string representation
2518func (s ScalingPlanResource) String() string {
2519	return awsutil.Prettify(s)
2520}
2521
2522// GoString returns the string representation
2523func (s ScalingPlanResource) GoString() string {
2524	return s.String()
2525}
2526
2527// SetResourceId sets the ResourceId field's value.
2528func (s *ScalingPlanResource) SetResourceId(v string) *ScalingPlanResource {
2529	s.ResourceId = &v
2530	return s
2531}
2532
2533// SetScalableDimension sets the ScalableDimension field's value.
2534func (s *ScalingPlanResource) SetScalableDimension(v string) *ScalingPlanResource {
2535	s.ScalableDimension = &v
2536	return s
2537}
2538
2539// SetScalingPlanName sets the ScalingPlanName field's value.
2540func (s *ScalingPlanResource) SetScalingPlanName(v string) *ScalingPlanResource {
2541	s.ScalingPlanName = &v
2542	return s
2543}
2544
2545// SetScalingPlanVersion sets the ScalingPlanVersion field's value.
2546func (s *ScalingPlanResource) SetScalingPlanVersion(v int64) *ScalingPlanResource {
2547	s.ScalingPlanVersion = &v
2548	return s
2549}
2550
2551// SetScalingPolicies sets the ScalingPolicies field's value.
2552func (s *ScalingPlanResource) SetScalingPolicies(v []*ScalingPolicy) *ScalingPlanResource {
2553	s.ScalingPolicies = v
2554	return s
2555}
2556
2557// SetScalingStatusCode sets the ScalingStatusCode field's value.
2558func (s *ScalingPlanResource) SetScalingStatusCode(v string) *ScalingPlanResource {
2559	s.ScalingStatusCode = &v
2560	return s
2561}
2562
2563// SetScalingStatusMessage sets the ScalingStatusMessage field's value.
2564func (s *ScalingPlanResource) SetScalingStatusMessage(v string) *ScalingPlanResource {
2565	s.ScalingStatusMessage = &v
2566	return s
2567}
2568
2569// SetServiceNamespace sets the ServiceNamespace field's value.
2570func (s *ScalingPlanResource) SetServiceNamespace(v string) *ScalingPlanResource {
2571	s.ServiceNamespace = &v
2572	return s
2573}
2574
2575// Represents a scaling policy.
2576type ScalingPolicy struct {
2577	_ struct{} `type:"structure"`
2578
2579	// The name of the scaling policy.
2580	//
2581	// PolicyName is a required field
2582	PolicyName *string `min:"1" type:"string" required:"true"`
2583
2584	// The type of scaling policy.
2585	//
2586	// PolicyType is a required field
2587	PolicyType *string `type:"string" required:"true" enum:"PolicyType"`
2588
2589	// The target tracking scaling policy. Includes support for predefined or customized
2590	// metrics.
2591	TargetTrackingConfiguration *TargetTrackingConfiguration `type:"structure"`
2592}
2593
2594// String returns the string representation
2595func (s ScalingPolicy) String() string {
2596	return awsutil.Prettify(s)
2597}
2598
2599// GoString returns the string representation
2600func (s ScalingPolicy) GoString() string {
2601	return s.String()
2602}
2603
2604// SetPolicyName sets the PolicyName field's value.
2605func (s *ScalingPolicy) SetPolicyName(v string) *ScalingPolicy {
2606	s.PolicyName = &v
2607	return s
2608}
2609
2610// SetPolicyType sets the PolicyType field's value.
2611func (s *ScalingPolicy) SetPolicyType(v string) *ScalingPolicy {
2612	s.PolicyType = &v
2613	return s
2614}
2615
2616// SetTargetTrackingConfiguration sets the TargetTrackingConfiguration field's value.
2617func (s *ScalingPolicy) SetTargetTrackingConfiguration(v *TargetTrackingConfiguration) *ScalingPolicy {
2618	s.TargetTrackingConfiguration = v
2619	return s
2620}
2621
2622// Represents a tag.
2623type TagFilter struct {
2624	_ struct{} `type:"structure"`
2625
2626	// The tag key.
2627	Key *string `min:"1" type:"string"`
2628
2629	// The tag values (0 to 20).
2630	Values []*string `type:"list"`
2631}
2632
2633// String returns the string representation
2634func (s TagFilter) String() string {
2635	return awsutil.Prettify(s)
2636}
2637
2638// GoString returns the string representation
2639func (s TagFilter) GoString() string {
2640	return s.String()
2641}
2642
2643// Validate inspects the fields of the type to determine if they are valid.
2644func (s *TagFilter) Validate() error {
2645	invalidParams := request.ErrInvalidParams{Context: "TagFilter"}
2646	if s.Key != nil && len(*s.Key) < 1 {
2647		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
2648	}
2649
2650	if invalidParams.Len() > 0 {
2651		return invalidParams
2652	}
2653	return nil
2654}
2655
2656// SetKey sets the Key field's value.
2657func (s *TagFilter) SetKey(v string) *TagFilter {
2658	s.Key = &v
2659	return s
2660}
2661
2662// SetValues sets the Values field's value.
2663func (s *TagFilter) SetValues(v []*string) *TagFilter {
2664	s.Values = v
2665	return s
2666}
2667
2668// Describes a target tracking configuration to use with AWS Auto Scaling. Used
2669// with ScalingInstruction and ScalingPolicy.
2670type TargetTrackingConfiguration struct {
2671	_ struct{} `type:"structure"`
2672
2673	// A customized metric. You can specify either a predefined metric or a customized
2674	// metric.
2675	CustomizedScalingMetricSpecification *CustomizedScalingMetricSpecification `type:"structure"`
2676
2677	// Indicates whether scale in by the target tracking scaling policy is disabled.
2678	// If the value is true, scale in is disabled and the target tracking scaling
2679	// policy doesn't remove capacity from the scalable resource. Otherwise, scale
2680	// in is enabled and the target tracking scaling policy can remove capacity
2681	// from the scalable resource.
2682	//
2683	// The default value is false.
2684	DisableScaleIn *bool `type:"boolean"`
2685
2686	// The estimated time, in seconds, until a newly launched instance can contribute
2687	// to the CloudWatch metrics. This value is used only if the resource is an
2688	// Auto Scaling group.
2689	EstimatedInstanceWarmup *int64 `type:"integer"`
2690
2691	// A predefined metric. You can specify either a predefined metric or a customized
2692	// metric.
2693	PredefinedScalingMetricSpecification *PredefinedScalingMetricSpecification `type:"structure"`
2694
2695	// The amount of time, in seconds, after a scale-in activity completes before
2696	// another scale-in activity can start. This property is not used if the scalable
2697	// resource is an Auto Scaling group.
2698	//
2699	// With the scale-in cooldown period, the intention is to scale in conservatively
2700	// to protect your application’s availability, so scale-in activities are
2701	// blocked until the cooldown period has expired. However, if another alarm
2702	// triggers a scale-out activity during the scale-in cooldown period, Auto Scaling
2703	// scales out the target immediately. In this case, the scale-in cooldown period
2704	// stops and doesn't complete.
2705	ScaleInCooldown *int64 `type:"integer"`
2706
2707	// The amount of time, in seconds, to wait for a previous scale-out activity
2708	// to take effect. This property is not used if the scalable resource is an
2709	// Auto Scaling group.
2710	//
2711	// With the scale-out cooldown period, the intention is to continuously (but
2712	// not excessively) scale out. After Auto Scaling successfully scales out using
2713	// a target tracking scaling policy, it starts to calculate the cooldown time.
2714	// The scaling policy won't increase the desired capacity again unless either
2715	// a larger scale out is triggered or the cooldown period ends.
2716	ScaleOutCooldown *int64 `type:"integer"`
2717
2718	// The target value for the metric. Although this property accepts numbers of
2719	// type Double, it won't accept values that are either too small or too large.
2720	// Values must be in the range of -2^360 to 2^360.
2721	//
2722	// TargetValue is a required field
2723	TargetValue *float64 `type:"double" required:"true"`
2724}
2725
2726// String returns the string representation
2727func (s TargetTrackingConfiguration) String() string {
2728	return awsutil.Prettify(s)
2729}
2730
2731// GoString returns the string representation
2732func (s TargetTrackingConfiguration) GoString() string {
2733	return s.String()
2734}
2735
2736// Validate inspects the fields of the type to determine if they are valid.
2737func (s *TargetTrackingConfiguration) Validate() error {
2738	invalidParams := request.ErrInvalidParams{Context: "TargetTrackingConfiguration"}
2739	if s.TargetValue == nil {
2740		invalidParams.Add(request.NewErrParamRequired("TargetValue"))
2741	}
2742	if s.CustomizedScalingMetricSpecification != nil {
2743		if err := s.CustomizedScalingMetricSpecification.Validate(); err != nil {
2744			invalidParams.AddNested("CustomizedScalingMetricSpecification", err.(request.ErrInvalidParams))
2745		}
2746	}
2747	if s.PredefinedScalingMetricSpecification != nil {
2748		if err := s.PredefinedScalingMetricSpecification.Validate(); err != nil {
2749			invalidParams.AddNested("PredefinedScalingMetricSpecification", err.(request.ErrInvalidParams))
2750		}
2751	}
2752
2753	if invalidParams.Len() > 0 {
2754		return invalidParams
2755	}
2756	return nil
2757}
2758
2759// SetCustomizedScalingMetricSpecification sets the CustomizedScalingMetricSpecification field's value.
2760func (s *TargetTrackingConfiguration) SetCustomizedScalingMetricSpecification(v *CustomizedScalingMetricSpecification) *TargetTrackingConfiguration {
2761	s.CustomizedScalingMetricSpecification = v
2762	return s
2763}
2764
2765// SetDisableScaleIn sets the DisableScaleIn field's value.
2766func (s *TargetTrackingConfiguration) SetDisableScaleIn(v bool) *TargetTrackingConfiguration {
2767	s.DisableScaleIn = &v
2768	return s
2769}
2770
2771// SetEstimatedInstanceWarmup sets the EstimatedInstanceWarmup field's value.
2772func (s *TargetTrackingConfiguration) SetEstimatedInstanceWarmup(v int64) *TargetTrackingConfiguration {
2773	s.EstimatedInstanceWarmup = &v
2774	return s
2775}
2776
2777// SetPredefinedScalingMetricSpecification sets the PredefinedScalingMetricSpecification field's value.
2778func (s *TargetTrackingConfiguration) SetPredefinedScalingMetricSpecification(v *PredefinedScalingMetricSpecification) *TargetTrackingConfiguration {
2779	s.PredefinedScalingMetricSpecification = v
2780	return s
2781}
2782
2783// SetScaleInCooldown sets the ScaleInCooldown field's value.
2784func (s *TargetTrackingConfiguration) SetScaleInCooldown(v int64) *TargetTrackingConfiguration {
2785	s.ScaleInCooldown = &v
2786	return s
2787}
2788
2789// SetScaleOutCooldown sets the ScaleOutCooldown field's value.
2790func (s *TargetTrackingConfiguration) SetScaleOutCooldown(v int64) *TargetTrackingConfiguration {
2791	s.ScaleOutCooldown = &v
2792	return s
2793}
2794
2795// SetTargetValue sets the TargetValue field's value.
2796func (s *TargetTrackingConfiguration) SetTargetValue(v float64) *TargetTrackingConfiguration {
2797	s.TargetValue = &v
2798	return s
2799}
2800
2801type UpdateScalingPlanInput struct {
2802	_ struct{} `type:"structure"`
2803
2804	// A CloudFormation stack or set of tags.
2805	//
2806	// For more information, see ApplicationSource (https://docs.aws.amazon.com/autoscaling/plans/APIReference/API_ApplicationSource.html)
2807	// in the AWS Auto Scaling API Reference.
2808	ApplicationSource *ApplicationSource `type:"structure"`
2809
2810	// The scaling instructions.
2811	//
2812	// For more information, see ScalingInstruction (https://docs.aws.amazon.com/autoscaling/plans/APIReference/API_ScalingInstruction.html)
2813	// in the AWS Auto Scaling API Reference.
2814	ScalingInstructions []*ScalingInstruction `type:"list"`
2815
2816	// The name of the scaling plan.
2817	//
2818	// ScalingPlanName is a required field
2819	ScalingPlanName *string `min:"1" type:"string" required:"true"`
2820
2821	// The version number of the scaling plan. The only valid value is 1. Currently,
2822	// you cannot have multiple scaling plan versions.
2823	//
2824	// ScalingPlanVersion is a required field
2825	ScalingPlanVersion *int64 `type:"long" required:"true"`
2826}
2827
2828// String returns the string representation
2829func (s UpdateScalingPlanInput) String() string {
2830	return awsutil.Prettify(s)
2831}
2832
2833// GoString returns the string representation
2834func (s UpdateScalingPlanInput) GoString() string {
2835	return s.String()
2836}
2837
2838// Validate inspects the fields of the type to determine if they are valid.
2839func (s *UpdateScalingPlanInput) Validate() error {
2840	invalidParams := request.ErrInvalidParams{Context: "UpdateScalingPlanInput"}
2841	if s.ScalingPlanName == nil {
2842		invalidParams.Add(request.NewErrParamRequired("ScalingPlanName"))
2843	}
2844	if s.ScalingPlanName != nil && len(*s.ScalingPlanName) < 1 {
2845		invalidParams.Add(request.NewErrParamMinLen("ScalingPlanName", 1))
2846	}
2847	if s.ScalingPlanVersion == nil {
2848		invalidParams.Add(request.NewErrParamRequired("ScalingPlanVersion"))
2849	}
2850	if s.ApplicationSource != nil {
2851		if err := s.ApplicationSource.Validate(); err != nil {
2852			invalidParams.AddNested("ApplicationSource", err.(request.ErrInvalidParams))
2853		}
2854	}
2855	if s.ScalingInstructions != nil {
2856		for i, v := range s.ScalingInstructions {
2857			if v == nil {
2858				continue
2859			}
2860			if err := v.Validate(); err != nil {
2861				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ScalingInstructions", i), err.(request.ErrInvalidParams))
2862			}
2863		}
2864	}
2865
2866	if invalidParams.Len() > 0 {
2867		return invalidParams
2868	}
2869	return nil
2870}
2871
2872// SetApplicationSource sets the ApplicationSource field's value.
2873func (s *UpdateScalingPlanInput) SetApplicationSource(v *ApplicationSource) *UpdateScalingPlanInput {
2874	s.ApplicationSource = v
2875	return s
2876}
2877
2878// SetScalingInstructions sets the ScalingInstructions field's value.
2879func (s *UpdateScalingPlanInput) SetScalingInstructions(v []*ScalingInstruction) *UpdateScalingPlanInput {
2880	s.ScalingInstructions = v
2881	return s
2882}
2883
2884// SetScalingPlanName sets the ScalingPlanName field's value.
2885func (s *UpdateScalingPlanInput) SetScalingPlanName(v string) *UpdateScalingPlanInput {
2886	s.ScalingPlanName = &v
2887	return s
2888}
2889
2890// SetScalingPlanVersion sets the ScalingPlanVersion field's value.
2891func (s *UpdateScalingPlanInput) SetScalingPlanVersion(v int64) *UpdateScalingPlanInput {
2892	s.ScalingPlanVersion = &v
2893	return s
2894}
2895
2896type UpdateScalingPlanOutput struct {
2897	_ struct{} `type:"structure"`
2898}
2899
2900// String returns the string representation
2901func (s UpdateScalingPlanOutput) String() string {
2902	return awsutil.Prettify(s)
2903}
2904
2905// GoString returns the string representation
2906func (s UpdateScalingPlanOutput) GoString() string {
2907	return s.String()
2908}
2909
2910// An exception was thrown for a validation issue. Review the parameters provided.
2911type ValidationException struct {
2912	_            struct{}                  `type:"structure"`
2913	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
2914
2915	Message_ *string `locationName:"Message" type:"string"`
2916}
2917
2918// String returns the string representation
2919func (s ValidationException) String() string {
2920	return awsutil.Prettify(s)
2921}
2922
2923// GoString returns the string representation
2924func (s ValidationException) GoString() string {
2925	return s.String()
2926}
2927
2928func newErrorValidationException(v protocol.ResponseMetadata) error {
2929	return &ValidationException{
2930		RespMetadata: v,
2931	}
2932}
2933
2934// Code returns the exception type name.
2935func (s *ValidationException) Code() string {
2936	return "ValidationException"
2937}
2938
2939// Message returns the exception's message.
2940func (s *ValidationException) Message() string {
2941	if s.Message_ != nil {
2942		return *s.Message_
2943	}
2944	return ""
2945}
2946
2947// OrigErr always returns nil, satisfies awserr.Error interface.
2948func (s *ValidationException) OrigErr() error {
2949	return nil
2950}
2951
2952func (s *ValidationException) Error() string {
2953	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
2954}
2955
2956// Status code returns the HTTP status code for the request's response error.
2957func (s *ValidationException) StatusCode() int {
2958	return s.RespMetadata.StatusCode
2959}
2960
2961// RequestID returns the service's response RequestID for request.
2962func (s *ValidationException) RequestID() string {
2963	return s.RespMetadata.RequestID
2964}
2965
2966const (
2967	// ForecastDataTypeCapacityForecast is a ForecastDataType enum value
2968	ForecastDataTypeCapacityForecast = "CapacityForecast"
2969
2970	// ForecastDataTypeLoadForecast is a ForecastDataType enum value
2971	ForecastDataTypeLoadForecast = "LoadForecast"
2972
2973	// ForecastDataTypeScheduledActionMinCapacity is a ForecastDataType enum value
2974	ForecastDataTypeScheduledActionMinCapacity = "ScheduledActionMinCapacity"
2975
2976	// ForecastDataTypeScheduledActionMaxCapacity is a ForecastDataType enum value
2977	ForecastDataTypeScheduledActionMaxCapacity = "ScheduledActionMaxCapacity"
2978)
2979
2980// ForecastDataType_Values returns all elements of the ForecastDataType enum
2981func ForecastDataType_Values() []string {
2982	return []string{
2983		ForecastDataTypeCapacityForecast,
2984		ForecastDataTypeLoadForecast,
2985		ForecastDataTypeScheduledActionMinCapacity,
2986		ForecastDataTypeScheduledActionMaxCapacity,
2987	}
2988}
2989
2990const (
2991	// LoadMetricTypeAsgtotalCpuutilization is a LoadMetricType enum value
2992	LoadMetricTypeAsgtotalCpuutilization = "ASGTotalCPUUtilization"
2993
2994	// LoadMetricTypeAsgtotalNetworkIn is a LoadMetricType enum value
2995	LoadMetricTypeAsgtotalNetworkIn = "ASGTotalNetworkIn"
2996
2997	// LoadMetricTypeAsgtotalNetworkOut is a LoadMetricType enum value
2998	LoadMetricTypeAsgtotalNetworkOut = "ASGTotalNetworkOut"
2999
3000	// LoadMetricTypeAlbtargetGroupRequestCount is a LoadMetricType enum value
3001	LoadMetricTypeAlbtargetGroupRequestCount = "ALBTargetGroupRequestCount"
3002)
3003
3004// LoadMetricType_Values returns all elements of the LoadMetricType enum
3005func LoadMetricType_Values() []string {
3006	return []string{
3007		LoadMetricTypeAsgtotalCpuutilization,
3008		LoadMetricTypeAsgtotalNetworkIn,
3009		LoadMetricTypeAsgtotalNetworkOut,
3010		LoadMetricTypeAlbtargetGroupRequestCount,
3011	}
3012}
3013
3014const (
3015	// MetricStatisticAverage is a MetricStatistic enum value
3016	MetricStatisticAverage = "Average"
3017
3018	// MetricStatisticMinimum is a MetricStatistic enum value
3019	MetricStatisticMinimum = "Minimum"
3020
3021	// MetricStatisticMaximum is a MetricStatistic enum value
3022	MetricStatisticMaximum = "Maximum"
3023
3024	// MetricStatisticSampleCount is a MetricStatistic enum value
3025	MetricStatisticSampleCount = "SampleCount"
3026
3027	// MetricStatisticSum is a MetricStatistic enum value
3028	MetricStatisticSum = "Sum"
3029)
3030
3031// MetricStatistic_Values returns all elements of the MetricStatistic enum
3032func MetricStatistic_Values() []string {
3033	return []string{
3034		MetricStatisticAverage,
3035		MetricStatisticMinimum,
3036		MetricStatisticMaximum,
3037		MetricStatisticSampleCount,
3038		MetricStatisticSum,
3039	}
3040}
3041
3042const (
3043	// PolicyTypeTargetTrackingScaling is a PolicyType enum value
3044	PolicyTypeTargetTrackingScaling = "TargetTrackingScaling"
3045)
3046
3047// PolicyType_Values returns all elements of the PolicyType enum
3048func PolicyType_Values() []string {
3049	return []string{
3050		PolicyTypeTargetTrackingScaling,
3051	}
3052}
3053
3054const (
3055	// PredictiveScalingMaxCapacityBehaviorSetForecastCapacityToMaxCapacity is a PredictiveScalingMaxCapacityBehavior enum value
3056	PredictiveScalingMaxCapacityBehaviorSetForecastCapacityToMaxCapacity = "SetForecastCapacityToMaxCapacity"
3057
3058	// PredictiveScalingMaxCapacityBehaviorSetMaxCapacityToForecastCapacity is a PredictiveScalingMaxCapacityBehavior enum value
3059	PredictiveScalingMaxCapacityBehaviorSetMaxCapacityToForecastCapacity = "SetMaxCapacityToForecastCapacity"
3060
3061	// PredictiveScalingMaxCapacityBehaviorSetMaxCapacityAboveForecastCapacity is a PredictiveScalingMaxCapacityBehavior enum value
3062	PredictiveScalingMaxCapacityBehaviorSetMaxCapacityAboveForecastCapacity = "SetMaxCapacityAboveForecastCapacity"
3063)
3064
3065// PredictiveScalingMaxCapacityBehavior_Values returns all elements of the PredictiveScalingMaxCapacityBehavior enum
3066func PredictiveScalingMaxCapacityBehavior_Values() []string {
3067	return []string{
3068		PredictiveScalingMaxCapacityBehaviorSetForecastCapacityToMaxCapacity,
3069		PredictiveScalingMaxCapacityBehaviorSetMaxCapacityToForecastCapacity,
3070		PredictiveScalingMaxCapacityBehaviorSetMaxCapacityAboveForecastCapacity,
3071	}
3072}
3073
3074const (
3075	// PredictiveScalingModeForecastAndScale is a PredictiveScalingMode enum value
3076	PredictiveScalingModeForecastAndScale = "ForecastAndScale"
3077
3078	// PredictiveScalingModeForecastOnly is a PredictiveScalingMode enum value
3079	PredictiveScalingModeForecastOnly = "ForecastOnly"
3080)
3081
3082// PredictiveScalingMode_Values returns all elements of the PredictiveScalingMode enum
3083func PredictiveScalingMode_Values() []string {
3084	return []string{
3085		PredictiveScalingModeForecastAndScale,
3086		PredictiveScalingModeForecastOnly,
3087	}
3088}
3089
3090const (
3091	// ScalableDimensionAutoscalingAutoScalingGroupDesiredCapacity is a ScalableDimension enum value
3092	ScalableDimensionAutoscalingAutoScalingGroupDesiredCapacity = "autoscaling:autoScalingGroup:DesiredCapacity"
3093
3094	// ScalableDimensionEcsServiceDesiredCount is a ScalableDimension enum value
3095	ScalableDimensionEcsServiceDesiredCount = "ecs:service:DesiredCount"
3096
3097	// ScalableDimensionEc2SpotFleetRequestTargetCapacity is a ScalableDimension enum value
3098	ScalableDimensionEc2SpotFleetRequestTargetCapacity = "ec2:spot-fleet-request:TargetCapacity"
3099
3100	// ScalableDimensionRdsClusterReadReplicaCount is a ScalableDimension enum value
3101	ScalableDimensionRdsClusterReadReplicaCount = "rds:cluster:ReadReplicaCount"
3102
3103	// ScalableDimensionDynamodbTableReadCapacityUnits is a ScalableDimension enum value
3104	ScalableDimensionDynamodbTableReadCapacityUnits = "dynamodb:table:ReadCapacityUnits"
3105
3106	// ScalableDimensionDynamodbTableWriteCapacityUnits is a ScalableDimension enum value
3107	ScalableDimensionDynamodbTableWriteCapacityUnits = "dynamodb:table:WriteCapacityUnits"
3108
3109	// ScalableDimensionDynamodbIndexReadCapacityUnits is a ScalableDimension enum value
3110	ScalableDimensionDynamodbIndexReadCapacityUnits = "dynamodb:index:ReadCapacityUnits"
3111
3112	// ScalableDimensionDynamodbIndexWriteCapacityUnits is a ScalableDimension enum value
3113	ScalableDimensionDynamodbIndexWriteCapacityUnits = "dynamodb:index:WriteCapacityUnits"
3114)
3115
3116// ScalableDimension_Values returns all elements of the ScalableDimension enum
3117func ScalableDimension_Values() []string {
3118	return []string{
3119		ScalableDimensionAutoscalingAutoScalingGroupDesiredCapacity,
3120		ScalableDimensionEcsServiceDesiredCount,
3121		ScalableDimensionEc2SpotFleetRequestTargetCapacity,
3122		ScalableDimensionRdsClusterReadReplicaCount,
3123		ScalableDimensionDynamodbTableReadCapacityUnits,
3124		ScalableDimensionDynamodbTableWriteCapacityUnits,
3125		ScalableDimensionDynamodbIndexReadCapacityUnits,
3126		ScalableDimensionDynamodbIndexWriteCapacityUnits,
3127	}
3128}
3129
3130const (
3131	// ScalingMetricTypeAsgaverageCpuutilization is a ScalingMetricType enum value
3132	ScalingMetricTypeAsgaverageCpuutilization = "ASGAverageCPUUtilization"
3133
3134	// ScalingMetricTypeAsgaverageNetworkIn is a ScalingMetricType enum value
3135	ScalingMetricTypeAsgaverageNetworkIn = "ASGAverageNetworkIn"
3136
3137	// ScalingMetricTypeAsgaverageNetworkOut is a ScalingMetricType enum value
3138	ScalingMetricTypeAsgaverageNetworkOut = "ASGAverageNetworkOut"
3139
3140	// ScalingMetricTypeDynamoDbreadCapacityUtilization is a ScalingMetricType enum value
3141	ScalingMetricTypeDynamoDbreadCapacityUtilization = "DynamoDBReadCapacityUtilization"
3142
3143	// ScalingMetricTypeDynamoDbwriteCapacityUtilization is a ScalingMetricType enum value
3144	ScalingMetricTypeDynamoDbwriteCapacityUtilization = "DynamoDBWriteCapacityUtilization"
3145
3146	// ScalingMetricTypeEcsserviceAverageCpuutilization is a ScalingMetricType enum value
3147	ScalingMetricTypeEcsserviceAverageCpuutilization = "ECSServiceAverageCPUUtilization"
3148
3149	// ScalingMetricTypeEcsserviceAverageMemoryUtilization is a ScalingMetricType enum value
3150	ScalingMetricTypeEcsserviceAverageMemoryUtilization = "ECSServiceAverageMemoryUtilization"
3151
3152	// ScalingMetricTypeAlbrequestCountPerTarget is a ScalingMetricType enum value
3153	ScalingMetricTypeAlbrequestCountPerTarget = "ALBRequestCountPerTarget"
3154
3155	// ScalingMetricTypeRdsreaderAverageCpuutilization is a ScalingMetricType enum value
3156	ScalingMetricTypeRdsreaderAverageCpuutilization = "RDSReaderAverageCPUUtilization"
3157
3158	// ScalingMetricTypeRdsreaderAverageDatabaseConnections is a ScalingMetricType enum value
3159	ScalingMetricTypeRdsreaderAverageDatabaseConnections = "RDSReaderAverageDatabaseConnections"
3160
3161	// ScalingMetricTypeEc2spotFleetRequestAverageCpuutilization is a ScalingMetricType enum value
3162	ScalingMetricTypeEc2spotFleetRequestAverageCpuutilization = "EC2SpotFleetRequestAverageCPUUtilization"
3163
3164	// ScalingMetricTypeEc2spotFleetRequestAverageNetworkIn is a ScalingMetricType enum value
3165	ScalingMetricTypeEc2spotFleetRequestAverageNetworkIn = "EC2SpotFleetRequestAverageNetworkIn"
3166
3167	// ScalingMetricTypeEc2spotFleetRequestAverageNetworkOut is a ScalingMetricType enum value
3168	ScalingMetricTypeEc2spotFleetRequestAverageNetworkOut = "EC2SpotFleetRequestAverageNetworkOut"
3169)
3170
3171// ScalingMetricType_Values returns all elements of the ScalingMetricType enum
3172func ScalingMetricType_Values() []string {
3173	return []string{
3174		ScalingMetricTypeAsgaverageCpuutilization,
3175		ScalingMetricTypeAsgaverageNetworkIn,
3176		ScalingMetricTypeAsgaverageNetworkOut,
3177		ScalingMetricTypeDynamoDbreadCapacityUtilization,
3178		ScalingMetricTypeDynamoDbwriteCapacityUtilization,
3179		ScalingMetricTypeEcsserviceAverageCpuutilization,
3180		ScalingMetricTypeEcsserviceAverageMemoryUtilization,
3181		ScalingMetricTypeAlbrequestCountPerTarget,
3182		ScalingMetricTypeRdsreaderAverageCpuutilization,
3183		ScalingMetricTypeRdsreaderAverageDatabaseConnections,
3184		ScalingMetricTypeEc2spotFleetRequestAverageCpuutilization,
3185		ScalingMetricTypeEc2spotFleetRequestAverageNetworkIn,
3186		ScalingMetricTypeEc2spotFleetRequestAverageNetworkOut,
3187	}
3188}
3189
3190const (
3191	// ScalingPlanStatusCodeActive is a ScalingPlanStatusCode enum value
3192	ScalingPlanStatusCodeActive = "Active"
3193
3194	// ScalingPlanStatusCodeActiveWithProblems is a ScalingPlanStatusCode enum value
3195	ScalingPlanStatusCodeActiveWithProblems = "ActiveWithProblems"
3196
3197	// ScalingPlanStatusCodeCreationInProgress is a ScalingPlanStatusCode enum value
3198	ScalingPlanStatusCodeCreationInProgress = "CreationInProgress"
3199
3200	// ScalingPlanStatusCodeCreationFailed is a ScalingPlanStatusCode enum value
3201	ScalingPlanStatusCodeCreationFailed = "CreationFailed"
3202
3203	// ScalingPlanStatusCodeDeletionInProgress is a ScalingPlanStatusCode enum value
3204	ScalingPlanStatusCodeDeletionInProgress = "DeletionInProgress"
3205
3206	// ScalingPlanStatusCodeDeletionFailed is a ScalingPlanStatusCode enum value
3207	ScalingPlanStatusCodeDeletionFailed = "DeletionFailed"
3208
3209	// ScalingPlanStatusCodeUpdateInProgress is a ScalingPlanStatusCode enum value
3210	ScalingPlanStatusCodeUpdateInProgress = "UpdateInProgress"
3211
3212	// ScalingPlanStatusCodeUpdateFailed is a ScalingPlanStatusCode enum value
3213	ScalingPlanStatusCodeUpdateFailed = "UpdateFailed"
3214)
3215
3216// ScalingPlanStatusCode_Values returns all elements of the ScalingPlanStatusCode enum
3217func ScalingPlanStatusCode_Values() []string {
3218	return []string{
3219		ScalingPlanStatusCodeActive,
3220		ScalingPlanStatusCodeActiveWithProblems,
3221		ScalingPlanStatusCodeCreationInProgress,
3222		ScalingPlanStatusCodeCreationFailed,
3223		ScalingPlanStatusCodeDeletionInProgress,
3224		ScalingPlanStatusCodeDeletionFailed,
3225		ScalingPlanStatusCodeUpdateInProgress,
3226		ScalingPlanStatusCodeUpdateFailed,
3227	}
3228}
3229
3230const (
3231	// ScalingPolicyUpdateBehaviorKeepExternalPolicies is a ScalingPolicyUpdateBehavior enum value
3232	ScalingPolicyUpdateBehaviorKeepExternalPolicies = "KeepExternalPolicies"
3233
3234	// ScalingPolicyUpdateBehaviorReplaceExternalPolicies is a ScalingPolicyUpdateBehavior enum value
3235	ScalingPolicyUpdateBehaviorReplaceExternalPolicies = "ReplaceExternalPolicies"
3236)
3237
3238// ScalingPolicyUpdateBehavior_Values returns all elements of the ScalingPolicyUpdateBehavior enum
3239func ScalingPolicyUpdateBehavior_Values() []string {
3240	return []string{
3241		ScalingPolicyUpdateBehaviorKeepExternalPolicies,
3242		ScalingPolicyUpdateBehaviorReplaceExternalPolicies,
3243	}
3244}
3245
3246const (
3247	// ScalingStatusCodeInactive is a ScalingStatusCode enum value
3248	ScalingStatusCodeInactive = "Inactive"
3249
3250	// ScalingStatusCodePartiallyActive is a ScalingStatusCode enum value
3251	ScalingStatusCodePartiallyActive = "PartiallyActive"
3252
3253	// ScalingStatusCodeActive is a ScalingStatusCode enum value
3254	ScalingStatusCodeActive = "Active"
3255)
3256
3257// ScalingStatusCode_Values returns all elements of the ScalingStatusCode enum
3258func ScalingStatusCode_Values() []string {
3259	return []string{
3260		ScalingStatusCodeInactive,
3261		ScalingStatusCodePartiallyActive,
3262		ScalingStatusCodeActive,
3263	}
3264}
3265
3266const (
3267	// ServiceNamespaceAutoscaling is a ServiceNamespace enum value
3268	ServiceNamespaceAutoscaling = "autoscaling"
3269
3270	// ServiceNamespaceEcs is a ServiceNamespace enum value
3271	ServiceNamespaceEcs = "ecs"
3272
3273	// ServiceNamespaceEc2 is a ServiceNamespace enum value
3274	ServiceNamespaceEc2 = "ec2"
3275
3276	// ServiceNamespaceRds is a ServiceNamespace enum value
3277	ServiceNamespaceRds = "rds"
3278
3279	// ServiceNamespaceDynamodb is a ServiceNamespace enum value
3280	ServiceNamespaceDynamodb = "dynamodb"
3281)
3282
3283// ServiceNamespace_Values returns all elements of the ServiceNamespace enum
3284func ServiceNamespace_Values() []string {
3285	return []string{
3286		ServiceNamespaceAutoscaling,
3287		ServiceNamespaceEcs,
3288		ServiceNamespaceEc2,
3289		ServiceNamespaceRds,
3290		ServiceNamespaceDynamodb,
3291	}
3292}
3293