// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. package autoscalingplans import ( "fmt" "time" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awsutil" "github.com/aws/aws-sdk-go/aws/request" "github.com/aws/aws-sdk-go/private/protocol" "github.com/aws/aws-sdk-go/private/protocol/jsonrpc" ) const opCreateScalingPlan = "CreateScalingPlan" // CreateScalingPlanRequest generates a "aws/request.Request" representing the // client's request for the CreateScalingPlan operation. The "output" return // value will be populated with the request's response once the request completes // successfully. // // Use "Send" method on the returned Request to send the API call to the service. // the "output" return value is not valid until after Send returns without error. // // See CreateScalingPlan for more information on using the CreateScalingPlan // API call, and error handling. // // This method is useful when you want to inject custom logic or configuration // into the SDK's request lifecycle. Such as custom headers, or retry logic. // // // // Example sending a request using the CreateScalingPlanRequest method. // req, resp := client.CreateScalingPlanRequest(params) // // err := req.Send() // if err == nil { // resp is now filled // fmt.Println(resp) // } // // See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/CreateScalingPlan func (c *AutoScalingPlans) CreateScalingPlanRequest(input *CreateScalingPlanInput) (req *request.Request, output *CreateScalingPlanOutput) { op := &request.Operation{ Name: opCreateScalingPlan, HTTPMethod: "POST", HTTPPath: "/", } if input == nil { input = &CreateScalingPlanInput{} } output = &CreateScalingPlanOutput{} req = c.newRequest(op, input, output) return } // CreateScalingPlan API operation for AWS Auto Scaling Plans. // // Creates a scaling plan. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. // // See the AWS API reference guide for AWS Auto Scaling Plans's // API operation CreateScalingPlan for usage and error information. // // Returned Error Codes: // * ErrCodeValidationException "ValidationException" // An exception was thrown for a validation issue. Review the parameters provided. // // * ErrCodeLimitExceededException "LimitExceededException" // Your account exceeded a limit. This exception is thrown when a per-account // resource limit is exceeded. // // * ErrCodeConcurrentUpdateException "ConcurrentUpdateException" // Concurrent updates caused an exception, for example, if you request an update // to a scaling plan that already has a pending update. // // * ErrCodeInternalServiceException "InternalServiceException" // The service encountered an internal error. // // See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/CreateScalingPlan func (c *AutoScalingPlans) CreateScalingPlan(input *CreateScalingPlanInput) (*CreateScalingPlanOutput, error) { req, out := c.CreateScalingPlanRequest(input) return out, req.Send() } // CreateScalingPlanWithContext is the same as CreateScalingPlan with the addition of // the ability to pass a context and additional request options. // // See CreateScalingPlan for details on how to use this API operation. // // The context must be non-nil and will be used for request cancellation. If // the context is nil a panic will occur. In the future the SDK may create // sub-contexts for http.Requests. See https://golang.org/pkg/context/ // for more information on using Contexts. func (c *AutoScalingPlans) CreateScalingPlanWithContext(ctx aws.Context, input *CreateScalingPlanInput, opts ...request.Option) (*CreateScalingPlanOutput, error) { req, out := c.CreateScalingPlanRequest(input) req.SetContext(ctx) req.ApplyOptions(opts...) return out, req.Send() } const opDeleteScalingPlan = "DeleteScalingPlan" // DeleteScalingPlanRequest generates a "aws/request.Request" representing the // client's request for the DeleteScalingPlan operation. The "output" return // value will be populated with the request's response once the request completes // successfully. // // Use "Send" method on the returned Request to send the API call to the service. // the "output" return value is not valid until after Send returns without error. // // See DeleteScalingPlan for more information on using the DeleteScalingPlan // API call, and error handling. // // This method is useful when you want to inject custom logic or configuration // into the SDK's request lifecycle. Such as custom headers, or retry logic. // // // // Example sending a request using the DeleteScalingPlanRequest method. // req, resp := client.DeleteScalingPlanRequest(params) // // err := req.Send() // if err == nil { // resp is now filled // fmt.Println(resp) // } // // See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/DeleteScalingPlan func (c *AutoScalingPlans) DeleteScalingPlanRequest(input *DeleteScalingPlanInput) (req *request.Request, output *DeleteScalingPlanOutput) { op := &request.Operation{ Name: opDeleteScalingPlan, HTTPMethod: "POST", HTTPPath: "/", } if input == nil { input = &DeleteScalingPlanInput{} } output = &DeleteScalingPlanOutput{} req = c.newRequest(op, input, output) req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) return } // DeleteScalingPlan API operation for AWS Auto Scaling Plans. // // Deletes the specified scaling plan. // // Deleting a scaling plan deletes the underlying ScalingInstruction for all // of the scalable resources that are covered by the plan. // // If the plan has launched resources or has scaling activities in progress, // you must delete those resources separately. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. // // See the AWS API reference guide for AWS Auto Scaling Plans's // API operation DeleteScalingPlan for usage and error information. // // Returned Error Codes: // * ErrCodeValidationException "ValidationException" // An exception was thrown for a validation issue. Review the parameters provided. // // * ErrCodeObjectNotFoundException "ObjectNotFoundException" // The specified object could not be found. // // * ErrCodeConcurrentUpdateException "ConcurrentUpdateException" // Concurrent updates caused an exception, for example, if you request an update // to a scaling plan that already has a pending update. // // * ErrCodeInternalServiceException "InternalServiceException" // The service encountered an internal error. // // See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/DeleteScalingPlan func (c *AutoScalingPlans) DeleteScalingPlan(input *DeleteScalingPlanInput) (*DeleteScalingPlanOutput, error) { req, out := c.DeleteScalingPlanRequest(input) return out, req.Send() } // DeleteScalingPlanWithContext is the same as DeleteScalingPlan with the addition of // the ability to pass a context and additional request options. // // See DeleteScalingPlan for details on how to use this API operation. // // The context must be non-nil and will be used for request cancellation. If // the context is nil a panic will occur. In the future the SDK may create // sub-contexts for http.Requests. See https://golang.org/pkg/context/ // for more information on using Contexts. func (c *AutoScalingPlans) DeleteScalingPlanWithContext(ctx aws.Context, input *DeleteScalingPlanInput, opts ...request.Option) (*DeleteScalingPlanOutput, error) { req, out := c.DeleteScalingPlanRequest(input) req.SetContext(ctx) req.ApplyOptions(opts...) return out, req.Send() } const opDescribeScalingPlanResources = "DescribeScalingPlanResources" // DescribeScalingPlanResourcesRequest generates a "aws/request.Request" representing the // client's request for the DescribeScalingPlanResources operation. The "output" return // value will be populated with the request's response once the request completes // successfully. // // Use "Send" method on the returned Request to send the API call to the service. // the "output" return value is not valid until after Send returns without error. // // See DescribeScalingPlanResources for more information on using the DescribeScalingPlanResources // API call, and error handling. // // This method is useful when you want to inject custom logic or configuration // into the SDK's request lifecycle. Such as custom headers, or retry logic. // // // // Example sending a request using the DescribeScalingPlanResourcesRequest method. // req, resp := client.DescribeScalingPlanResourcesRequest(params) // // err := req.Send() // if err == nil { // resp is now filled // fmt.Println(resp) // } // // See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/DescribeScalingPlanResources func (c *AutoScalingPlans) DescribeScalingPlanResourcesRequest(input *DescribeScalingPlanResourcesInput) (req *request.Request, output *DescribeScalingPlanResourcesOutput) { op := &request.Operation{ Name: opDescribeScalingPlanResources, HTTPMethod: "POST", HTTPPath: "/", } if input == nil { input = &DescribeScalingPlanResourcesInput{} } output = &DescribeScalingPlanResourcesOutput{} req = c.newRequest(op, input, output) return } // DescribeScalingPlanResources API operation for AWS Auto Scaling Plans. // // Describes the scalable resources in the specified scaling plan. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. // // See the AWS API reference guide for AWS Auto Scaling Plans's // API operation DescribeScalingPlanResources for usage and error information. // // Returned Error Codes: // * ErrCodeValidationException "ValidationException" // An exception was thrown for a validation issue. Review the parameters provided. // // * ErrCodeInvalidNextTokenException "InvalidNextTokenException" // The token provided is not valid. // // * ErrCodeConcurrentUpdateException "ConcurrentUpdateException" // Concurrent updates caused an exception, for example, if you request an update // to a scaling plan that already has a pending update. // // * ErrCodeInternalServiceException "InternalServiceException" // The service encountered an internal error. // // See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/DescribeScalingPlanResources func (c *AutoScalingPlans) DescribeScalingPlanResources(input *DescribeScalingPlanResourcesInput) (*DescribeScalingPlanResourcesOutput, error) { req, out := c.DescribeScalingPlanResourcesRequest(input) return out, req.Send() } // DescribeScalingPlanResourcesWithContext is the same as DescribeScalingPlanResources with the addition of // the ability to pass a context and additional request options. // // See DescribeScalingPlanResources for details on how to use this API operation. // // The context must be non-nil and will be used for request cancellation. If // the context is nil a panic will occur. In the future the SDK may create // sub-contexts for http.Requests. See https://golang.org/pkg/context/ // for more information on using Contexts. func (c *AutoScalingPlans) DescribeScalingPlanResourcesWithContext(ctx aws.Context, input *DescribeScalingPlanResourcesInput, opts ...request.Option) (*DescribeScalingPlanResourcesOutput, error) { req, out := c.DescribeScalingPlanResourcesRequest(input) req.SetContext(ctx) req.ApplyOptions(opts...) return out, req.Send() } const opDescribeScalingPlans = "DescribeScalingPlans" // DescribeScalingPlansRequest generates a "aws/request.Request" representing the // client's request for the DescribeScalingPlans operation. The "output" return // value will be populated with the request's response once the request completes // successfully. // // Use "Send" method on the returned Request to send the API call to the service. // the "output" return value is not valid until after Send returns without error. // // See DescribeScalingPlans for more information on using the DescribeScalingPlans // API call, and error handling. // // This method is useful when you want to inject custom logic or configuration // into the SDK's request lifecycle. Such as custom headers, or retry logic. // // // // Example sending a request using the DescribeScalingPlansRequest method. // req, resp := client.DescribeScalingPlansRequest(params) // // err := req.Send() // if err == nil { // resp is now filled // fmt.Println(resp) // } // // See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/DescribeScalingPlans func (c *AutoScalingPlans) DescribeScalingPlansRequest(input *DescribeScalingPlansInput) (req *request.Request, output *DescribeScalingPlansOutput) { op := &request.Operation{ Name: opDescribeScalingPlans, HTTPMethod: "POST", HTTPPath: "/", } if input == nil { input = &DescribeScalingPlansInput{} } output = &DescribeScalingPlansOutput{} req = c.newRequest(op, input, output) return } // DescribeScalingPlans API operation for AWS Auto Scaling Plans. // // Describes one or more of your scaling plans. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. // // See the AWS API reference guide for AWS Auto Scaling Plans's // API operation DescribeScalingPlans for usage and error information. // // Returned Error Codes: // * ErrCodeValidationException "ValidationException" // An exception was thrown for a validation issue. Review the parameters provided. // // * ErrCodeInvalidNextTokenException "InvalidNextTokenException" // The token provided is not valid. // // * ErrCodeConcurrentUpdateException "ConcurrentUpdateException" // Concurrent updates caused an exception, for example, if you request an update // to a scaling plan that already has a pending update. // // * ErrCodeInternalServiceException "InternalServiceException" // The service encountered an internal error. // // See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/DescribeScalingPlans func (c *AutoScalingPlans) DescribeScalingPlans(input *DescribeScalingPlansInput) (*DescribeScalingPlansOutput, error) { req, out := c.DescribeScalingPlansRequest(input) return out, req.Send() } // DescribeScalingPlansWithContext is the same as DescribeScalingPlans with the addition of // the ability to pass a context and additional request options. // // See DescribeScalingPlans for details on how to use this API operation. // // The context must be non-nil and will be used for request cancellation. If // the context is nil a panic will occur. In the future the SDK may create // sub-contexts for http.Requests. See https://golang.org/pkg/context/ // for more information on using Contexts. func (c *AutoScalingPlans) DescribeScalingPlansWithContext(ctx aws.Context, input *DescribeScalingPlansInput, opts ...request.Option) (*DescribeScalingPlansOutput, error) { req, out := c.DescribeScalingPlansRequest(input) req.SetContext(ctx) req.ApplyOptions(opts...) return out, req.Send() } const opGetScalingPlanResourceForecastData = "GetScalingPlanResourceForecastData" // GetScalingPlanResourceForecastDataRequest generates a "aws/request.Request" representing the // client's request for the GetScalingPlanResourceForecastData operation. The "output" return // value will be populated with the request's response once the request completes // successfully. // // Use "Send" method on the returned Request to send the API call to the service. // the "output" return value is not valid until after Send returns without error. // // See GetScalingPlanResourceForecastData for more information on using the GetScalingPlanResourceForecastData // API call, and error handling. // // This method is useful when you want to inject custom logic or configuration // into the SDK's request lifecycle. Such as custom headers, or retry logic. // // // // Example sending a request using the GetScalingPlanResourceForecastDataRequest method. // req, resp := client.GetScalingPlanResourceForecastDataRequest(params) // // err := req.Send() // if err == nil { // resp is now filled // fmt.Println(resp) // } // // See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/GetScalingPlanResourceForecastData func (c *AutoScalingPlans) GetScalingPlanResourceForecastDataRequest(input *GetScalingPlanResourceForecastDataInput) (req *request.Request, output *GetScalingPlanResourceForecastDataOutput) { op := &request.Operation{ Name: opGetScalingPlanResourceForecastData, HTTPMethod: "POST", HTTPPath: "/", } if input == nil { input = &GetScalingPlanResourceForecastDataInput{} } output = &GetScalingPlanResourceForecastDataOutput{} req = c.newRequest(op, input, output) return } // GetScalingPlanResourceForecastData API operation for AWS Auto Scaling Plans. // // Retrieves the forecast data for a scalable resource. // // Capacity forecasts are represented as predicted values, or data points, that // are calculated using historical data points from a specified CloudWatch load // metric. Data points are available for up to 56 days. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. // // See the AWS API reference guide for AWS Auto Scaling Plans's // API operation GetScalingPlanResourceForecastData for usage and error information. // // Returned Error Codes: // * ErrCodeValidationException "ValidationException" // An exception was thrown for a validation issue. Review the parameters provided. // // * ErrCodeInternalServiceException "InternalServiceException" // The service encountered an internal error. // // See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/GetScalingPlanResourceForecastData func (c *AutoScalingPlans) GetScalingPlanResourceForecastData(input *GetScalingPlanResourceForecastDataInput) (*GetScalingPlanResourceForecastDataOutput, error) { req, out := c.GetScalingPlanResourceForecastDataRequest(input) return out, req.Send() } // GetScalingPlanResourceForecastDataWithContext is the same as GetScalingPlanResourceForecastData with the addition of // the ability to pass a context and additional request options. // // See GetScalingPlanResourceForecastData for details on how to use this API operation. // // The context must be non-nil and will be used for request cancellation. If // the context is nil a panic will occur. In the future the SDK may create // sub-contexts for http.Requests. See https://golang.org/pkg/context/ // for more information on using Contexts. func (c *AutoScalingPlans) GetScalingPlanResourceForecastDataWithContext(ctx aws.Context, input *GetScalingPlanResourceForecastDataInput, opts ...request.Option) (*GetScalingPlanResourceForecastDataOutput, error) { req, out := c.GetScalingPlanResourceForecastDataRequest(input) req.SetContext(ctx) req.ApplyOptions(opts...) return out, req.Send() } const opUpdateScalingPlan = "UpdateScalingPlan" // UpdateScalingPlanRequest generates a "aws/request.Request" representing the // client's request for the UpdateScalingPlan operation. The "output" return // value will be populated with the request's response once the request completes // successfully. // // Use "Send" method on the returned Request to send the API call to the service. // the "output" return value is not valid until after Send returns without error. // // See UpdateScalingPlan for more information on using the UpdateScalingPlan // API call, and error handling. // // This method is useful when you want to inject custom logic or configuration // into the SDK's request lifecycle. Such as custom headers, or retry logic. // // // // Example sending a request using the UpdateScalingPlanRequest method. // req, resp := client.UpdateScalingPlanRequest(params) // // err := req.Send() // if err == nil { // resp is now filled // fmt.Println(resp) // } // // See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/UpdateScalingPlan func (c *AutoScalingPlans) UpdateScalingPlanRequest(input *UpdateScalingPlanInput) (req *request.Request, output *UpdateScalingPlanOutput) { op := &request.Operation{ Name: opUpdateScalingPlan, HTTPMethod: "POST", HTTPPath: "/", } if input == nil { input = &UpdateScalingPlanInput{} } output = &UpdateScalingPlanOutput{} req = c.newRequest(op, input, output) req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) return } // UpdateScalingPlan API operation for AWS Auto Scaling Plans. // // Updates the specified scaling plan. // // You cannot update a scaling plan if it is in the process of being created, // updated, or deleted. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. // // See the AWS API reference guide for AWS Auto Scaling Plans's // API operation UpdateScalingPlan for usage and error information. // // Returned Error Codes: // * ErrCodeValidationException "ValidationException" // An exception was thrown for a validation issue. Review the parameters provided. // // * ErrCodeConcurrentUpdateException "ConcurrentUpdateException" // Concurrent updates caused an exception, for example, if you request an update // to a scaling plan that already has a pending update. // // * ErrCodeInternalServiceException "InternalServiceException" // The service encountered an internal error. // // * ErrCodeObjectNotFoundException "ObjectNotFoundException" // The specified object could not be found. // // See also, https://docs.aws.amazon.com/goto/WebAPI/autoscaling-plans-2018-01-06/UpdateScalingPlan func (c *AutoScalingPlans) UpdateScalingPlan(input *UpdateScalingPlanInput) (*UpdateScalingPlanOutput, error) { req, out := c.UpdateScalingPlanRequest(input) return out, req.Send() } // UpdateScalingPlanWithContext is the same as UpdateScalingPlan with the addition of // the ability to pass a context and additional request options. // // See UpdateScalingPlan for details on how to use this API operation. // // The context must be non-nil and will be used for request cancellation. If // the context is nil a panic will occur. In the future the SDK may create // sub-contexts for http.Requests. See https://golang.org/pkg/context/ // for more information on using Contexts. func (c *AutoScalingPlans) UpdateScalingPlanWithContext(ctx aws.Context, input *UpdateScalingPlanInput, opts ...request.Option) (*UpdateScalingPlanOutput, error) { req, out := c.UpdateScalingPlanRequest(input) req.SetContext(ctx) req.ApplyOptions(opts...) return out, req.Send() } // Represents an application source. type ApplicationSource struct { _ struct{} `type:"structure"` // The Amazon Resource Name (ARN) of a AWS CloudFormation stack. CloudFormationStackARN *string `type:"string"` // A set of tags (up to 50). TagFilters []*TagFilter `type:"list"` } // String returns the string representation func (s ApplicationSource) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s ApplicationSource) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *ApplicationSource) Validate() error { invalidParams := request.ErrInvalidParams{Context: "ApplicationSource"} if s.TagFilters != nil { for i, v := range s.TagFilters { if v == nil { continue } if err := v.Validate(); err != nil { invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TagFilters", i), err.(request.ErrInvalidParams)) } } } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetCloudFormationStackARN sets the CloudFormationStackARN field's value. func (s *ApplicationSource) SetCloudFormationStackARN(v string) *ApplicationSource { s.CloudFormationStackARN = &v return s } // SetTagFilters sets the TagFilters field's value. func (s *ApplicationSource) SetTagFilters(v []*TagFilter) *ApplicationSource { s.TagFilters = v return s } type CreateScalingPlanInput struct { _ struct{} `type:"structure"` // A CloudFormation stack or set of tags. You can create one scaling plan per // application source. // // ApplicationSource is a required field ApplicationSource *ApplicationSource `type:"structure" required:"true"` // The scaling instructions. // // ScalingInstructions is a required field ScalingInstructions []*ScalingInstruction `type:"list" required:"true"` // The name of the scaling plan. Names cannot contain vertical bars, colons, // or forward slashes. // // ScalingPlanName is a required field ScalingPlanName *string `min:"1" type:"string" required:"true"` } // String returns the string representation func (s CreateScalingPlanInput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s CreateScalingPlanInput) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *CreateScalingPlanInput) Validate() error { invalidParams := request.ErrInvalidParams{Context: "CreateScalingPlanInput"} if s.ApplicationSource == nil { invalidParams.Add(request.NewErrParamRequired("ApplicationSource")) } if s.ScalingInstructions == nil { invalidParams.Add(request.NewErrParamRequired("ScalingInstructions")) } if s.ScalingPlanName == nil { invalidParams.Add(request.NewErrParamRequired("ScalingPlanName")) } if s.ScalingPlanName != nil && len(*s.ScalingPlanName) < 1 { invalidParams.Add(request.NewErrParamMinLen("ScalingPlanName", 1)) } if s.ApplicationSource != nil { if err := s.ApplicationSource.Validate(); err != nil { invalidParams.AddNested("ApplicationSource", err.(request.ErrInvalidParams)) } } if s.ScalingInstructions != nil { for i, v := range s.ScalingInstructions { if v == nil { continue } if err := v.Validate(); err != nil { invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ScalingInstructions", i), err.(request.ErrInvalidParams)) } } } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetApplicationSource sets the ApplicationSource field's value. func (s *CreateScalingPlanInput) SetApplicationSource(v *ApplicationSource) *CreateScalingPlanInput { s.ApplicationSource = v return s } // SetScalingInstructions sets the ScalingInstructions field's value. func (s *CreateScalingPlanInput) SetScalingInstructions(v []*ScalingInstruction) *CreateScalingPlanInput { s.ScalingInstructions = v return s } // SetScalingPlanName sets the ScalingPlanName field's value. func (s *CreateScalingPlanInput) SetScalingPlanName(v string) *CreateScalingPlanInput { s.ScalingPlanName = &v return s } type CreateScalingPlanOutput struct { _ struct{} `type:"structure"` // The version number of the scaling plan. This value is always 1. // // Currently, you cannot specify multiple scaling plan versions. // // ScalingPlanVersion is a required field ScalingPlanVersion *int64 `type:"long" required:"true"` } // String returns the string representation func (s CreateScalingPlanOutput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s CreateScalingPlanOutput) GoString() string { return s.String() } // SetScalingPlanVersion sets the ScalingPlanVersion field's value. func (s *CreateScalingPlanOutput) SetScalingPlanVersion(v int64) *CreateScalingPlanOutput { s.ScalingPlanVersion = &v return s } // Represents a CloudWatch metric of your choosing that can be used for predictive // scaling. // // For predictive scaling to work with a customized load metric specification, // AWS Auto Scaling needs access to the Sum and Average statistics that CloudWatch // computes from metric data. Statistics are calculations used to aggregate // data over specified time periods. // // When you choose a load metric, make sure that the required Sum and Average // statistics for your metric are available in CloudWatch and that they provide // relevant data for predictive scaling. The Sum statistic must represent the // total load on the resource, and the Average statistic must represent the // average load per capacity unit of the resource. For example, there is a metric // that counts the number of requests processed by your Auto Scaling group. // If the Sum statistic represents the total request count processed by the // group, then the Average statistic for the specified metric must represent // the average request count processed by each instance of the group. // // For information about terminology, available metrics, or how to publish new // metrics, see Amazon CloudWatch Concepts (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html) // in the Amazon CloudWatch User Guide. type CustomizedLoadMetricSpecification struct { _ struct{} `type:"structure"` // The dimensions of the metric. // // Conditional: If you published your metric with dimensions, you must specify // the same dimensions in your customized load metric specification. Dimensions []*MetricDimension `type:"list"` // The name of the metric. // // MetricName is a required field MetricName *string `type:"string" required:"true"` // The namespace of the metric. // // Namespace is a required field Namespace *string `type:"string" required:"true"` // The statistic of the metric. Currently, the value must always be Sum. // // Statistic is a required field Statistic *string `type:"string" required:"true" enum:"MetricStatistic"` // The unit of the metric. Unit *string `type:"string"` } // String returns the string representation func (s CustomizedLoadMetricSpecification) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s CustomizedLoadMetricSpecification) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *CustomizedLoadMetricSpecification) Validate() error { invalidParams := request.ErrInvalidParams{Context: "CustomizedLoadMetricSpecification"} if s.MetricName == nil { invalidParams.Add(request.NewErrParamRequired("MetricName")) } if s.Namespace == nil { invalidParams.Add(request.NewErrParamRequired("Namespace")) } if s.Statistic == nil { invalidParams.Add(request.NewErrParamRequired("Statistic")) } if s.Dimensions != nil { for i, v := range s.Dimensions { if v == nil { continue } if err := v.Validate(); err != nil { invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Dimensions", i), err.(request.ErrInvalidParams)) } } } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetDimensions sets the Dimensions field's value. func (s *CustomizedLoadMetricSpecification) SetDimensions(v []*MetricDimension) *CustomizedLoadMetricSpecification { s.Dimensions = v return s } // SetMetricName sets the MetricName field's value. func (s *CustomizedLoadMetricSpecification) SetMetricName(v string) *CustomizedLoadMetricSpecification { s.MetricName = &v return s } // SetNamespace sets the Namespace field's value. func (s *CustomizedLoadMetricSpecification) SetNamespace(v string) *CustomizedLoadMetricSpecification { s.Namespace = &v return s } // SetStatistic sets the Statistic field's value. func (s *CustomizedLoadMetricSpecification) SetStatistic(v string) *CustomizedLoadMetricSpecification { s.Statistic = &v return s } // SetUnit sets the Unit field's value. func (s *CustomizedLoadMetricSpecification) SetUnit(v string) *CustomizedLoadMetricSpecification { s.Unit = &v return s } // Represents a CloudWatch metric of your choosing that can be used for dynamic // scaling as part of a target tracking scaling policy. // // To create your customized scaling metric specification: // // * Add values for each required parameter from CloudWatch. You can use // an existing metric, or a new metric that you create. To use your own metric, // you must first publish the metric to CloudWatch. For more information, // see Publish Custom Metrics (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html) // in the Amazon CloudWatch User Guide. // // * Choose a metric that changes proportionally with capacity. The value // of the metric should increase or decrease in inverse proportion to the // number of capacity units. That is, the value of the metric should decrease // when capacity increases. // // For more information about CloudWatch, see Amazon CloudWatch Concepts (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html). type CustomizedScalingMetricSpecification struct { _ struct{} `type:"structure"` // The dimensions of the metric. // // Conditional: If you published your metric with dimensions, you must specify // the same dimensions in your customized scaling metric specification. Dimensions []*MetricDimension `type:"list"` // The name of the metric. // // MetricName is a required field MetricName *string `type:"string" required:"true"` // The namespace of the metric. // // Namespace is a required field Namespace *string `type:"string" required:"true"` // The statistic of the metric. // // Statistic is a required field Statistic *string `type:"string" required:"true" enum:"MetricStatistic"` // The unit of the metric. Unit *string `type:"string"` } // String returns the string representation func (s CustomizedScalingMetricSpecification) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s CustomizedScalingMetricSpecification) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *CustomizedScalingMetricSpecification) Validate() error { invalidParams := request.ErrInvalidParams{Context: "CustomizedScalingMetricSpecification"} if s.MetricName == nil { invalidParams.Add(request.NewErrParamRequired("MetricName")) } if s.Namespace == nil { invalidParams.Add(request.NewErrParamRequired("Namespace")) } if s.Statistic == nil { invalidParams.Add(request.NewErrParamRequired("Statistic")) } if s.Dimensions != nil { for i, v := range s.Dimensions { if v == nil { continue } if err := v.Validate(); err != nil { invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Dimensions", i), err.(request.ErrInvalidParams)) } } } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetDimensions sets the Dimensions field's value. func (s *CustomizedScalingMetricSpecification) SetDimensions(v []*MetricDimension) *CustomizedScalingMetricSpecification { s.Dimensions = v return s } // SetMetricName sets the MetricName field's value. func (s *CustomizedScalingMetricSpecification) SetMetricName(v string) *CustomizedScalingMetricSpecification { s.MetricName = &v return s } // SetNamespace sets the Namespace field's value. func (s *CustomizedScalingMetricSpecification) SetNamespace(v string) *CustomizedScalingMetricSpecification { s.Namespace = &v return s } // SetStatistic sets the Statistic field's value. func (s *CustomizedScalingMetricSpecification) SetStatistic(v string) *CustomizedScalingMetricSpecification { s.Statistic = &v return s } // SetUnit sets the Unit field's value. func (s *CustomizedScalingMetricSpecification) SetUnit(v string) *CustomizedScalingMetricSpecification { s.Unit = &v return s } // Represents a single value in the forecast data used for predictive scaling. type Datapoint struct { _ struct{} `type:"structure"` // The time stamp for the data point in UTC format. Timestamp *time.Time `type:"timestamp"` // The value of the data point. Value *float64 `type:"double"` } // String returns the string representation func (s Datapoint) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s Datapoint) GoString() string { return s.String() } // SetTimestamp sets the Timestamp field's value. func (s *Datapoint) SetTimestamp(v time.Time) *Datapoint { s.Timestamp = &v return s } // SetValue sets the Value field's value. func (s *Datapoint) SetValue(v float64) *Datapoint { s.Value = &v return s } type DeleteScalingPlanInput struct { _ struct{} `type:"structure"` // The name of the scaling plan. // // ScalingPlanName is a required field ScalingPlanName *string `min:"1" type:"string" required:"true"` // The version number of the scaling plan. // // ScalingPlanVersion is a required field ScalingPlanVersion *int64 `type:"long" required:"true"` } // String returns the string representation func (s DeleteScalingPlanInput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s DeleteScalingPlanInput) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *DeleteScalingPlanInput) Validate() error { invalidParams := request.ErrInvalidParams{Context: "DeleteScalingPlanInput"} if s.ScalingPlanName == nil { invalidParams.Add(request.NewErrParamRequired("ScalingPlanName")) } if s.ScalingPlanName != nil && len(*s.ScalingPlanName) < 1 { invalidParams.Add(request.NewErrParamMinLen("ScalingPlanName", 1)) } if s.ScalingPlanVersion == nil { invalidParams.Add(request.NewErrParamRequired("ScalingPlanVersion")) } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetScalingPlanName sets the ScalingPlanName field's value. func (s *DeleteScalingPlanInput) SetScalingPlanName(v string) *DeleteScalingPlanInput { s.ScalingPlanName = &v return s } // SetScalingPlanVersion sets the ScalingPlanVersion field's value. func (s *DeleteScalingPlanInput) SetScalingPlanVersion(v int64) *DeleteScalingPlanInput { s.ScalingPlanVersion = &v return s } type DeleteScalingPlanOutput struct { _ struct{} `type:"structure"` } // String returns the string representation func (s DeleteScalingPlanOutput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s DeleteScalingPlanOutput) GoString() string { return s.String() } type DescribeScalingPlanResourcesInput struct { _ struct{} `type:"structure"` // The maximum number of scalable resources to return. The value must be between // 1 and 50. The default value is 50. MaxResults *int64 `type:"integer"` // The token for the next set of results. NextToken *string `type:"string"` // The name of the scaling plan. // // ScalingPlanName is a required field ScalingPlanName *string `min:"1" type:"string" required:"true"` // The version number of the scaling plan. // // ScalingPlanVersion is a required field ScalingPlanVersion *int64 `type:"long" required:"true"` } // String returns the string representation func (s DescribeScalingPlanResourcesInput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s DescribeScalingPlanResourcesInput) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *DescribeScalingPlanResourcesInput) Validate() error { invalidParams := request.ErrInvalidParams{Context: "DescribeScalingPlanResourcesInput"} if s.ScalingPlanName == nil { invalidParams.Add(request.NewErrParamRequired("ScalingPlanName")) } if s.ScalingPlanName != nil && len(*s.ScalingPlanName) < 1 { invalidParams.Add(request.NewErrParamMinLen("ScalingPlanName", 1)) } if s.ScalingPlanVersion == nil { invalidParams.Add(request.NewErrParamRequired("ScalingPlanVersion")) } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetMaxResults sets the MaxResults field's value. func (s *DescribeScalingPlanResourcesInput) SetMaxResults(v int64) *DescribeScalingPlanResourcesInput { s.MaxResults = &v return s } // SetNextToken sets the NextToken field's value. func (s *DescribeScalingPlanResourcesInput) SetNextToken(v string) *DescribeScalingPlanResourcesInput { s.NextToken = &v return s } // SetScalingPlanName sets the ScalingPlanName field's value. func (s *DescribeScalingPlanResourcesInput) SetScalingPlanName(v string) *DescribeScalingPlanResourcesInput { s.ScalingPlanName = &v return s } // SetScalingPlanVersion sets the ScalingPlanVersion field's value. func (s *DescribeScalingPlanResourcesInput) SetScalingPlanVersion(v int64) *DescribeScalingPlanResourcesInput { s.ScalingPlanVersion = &v return s } type DescribeScalingPlanResourcesOutput struct { _ struct{} `type:"structure"` // The token required to get the next set of results. This value is null if // there are no more results to return. NextToken *string `type:"string"` // Information about the scalable resources. ScalingPlanResources []*ScalingPlanResource `type:"list"` } // String returns the string representation func (s DescribeScalingPlanResourcesOutput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s DescribeScalingPlanResourcesOutput) GoString() string { return s.String() } // SetNextToken sets the NextToken field's value. func (s *DescribeScalingPlanResourcesOutput) SetNextToken(v string) *DescribeScalingPlanResourcesOutput { s.NextToken = &v return s } // SetScalingPlanResources sets the ScalingPlanResources field's value. func (s *DescribeScalingPlanResourcesOutput) SetScalingPlanResources(v []*ScalingPlanResource) *DescribeScalingPlanResourcesOutput { s.ScalingPlanResources = v return s } type DescribeScalingPlansInput struct { _ struct{} `type:"structure"` // The sources for the applications (up to 10). If you specify scaling plan // names, you cannot specify application sources. ApplicationSources []*ApplicationSource `type:"list"` // The maximum number of scalable resources to return. This value can be between // 1 and 50. The default value is 50. MaxResults *int64 `type:"integer"` // The token for the next set of results. NextToken *string `type:"string"` // The names of the scaling plans (up to 10). If you specify application sources, // you cannot specify scaling plan names. ScalingPlanNames []*string `type:"list"` // The version number of the scaling plan. If you specify a scaling plan version, // you must also specify a scaling plan name. ScalingPlanVersion *int64 `type:"long"` } // String returns the string representation func (s DescribeScalingPlansInput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s DescribeScalingPlansInput) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *DescribeScalingPlansInput) Validate() error { invalidParams := request.ErrInvalidParams{Context: "DescribeScalingPlansInput"} if s.ApplicationSources != nil { for i, v := range s.ApplicationSources { if v == nil { continue } if err := v.Validate(); err != nil { invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ApplicationSources", i), err.(request.ErrInvalidParams)) } } } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetApplicationSources sets the ApplicationSources field's value. func (s *DescribeScalingPlansInput) SetApplicationSources(v []*ApplicationSource) *DescribeScalingPlansInput { s.ApplicationSources = v return s } // SetMaxResults sets the MaxResults field's value. func (s *DescribeScalingPlansInput) SetMaxResults(v int64) *DescribeScalingPlansInput { s.MaxResults = &v return s } // SetNextToken sets the NextToken field's value. func (s *DescribeScalingPlansInput) SetNextToken(v string) *DescribeScalingPlansInput { s.NextToken = &v return s } // SetScalingPlanNames sets the ScalingPlanNames field's value. func (s *DescribeScalingPlansInput) SetScalingPlanNames(v []*string) *DescribeScalingPlansInput { s.ScalingPlanNames = v return s } // SetScalingPlanVersion sets the ScalingPlanVersion field's value. func (s *DescribeScalingPlansInput) SetScalingPlanVersion(v int64) *DescribeScalingPlansInput { s.ScalingPlanVersion = &v return s } type DescribeScalingPlansOutput struct { _ struct{} `type:"structure"` // The token required to get the next set of results. This value is null if // there are no more results to return. NextToken *string `type:"string"` // Information about the scaling plans. ScalingPlans []*ScalingPlan `type:"list"` } // String returns the string representation func (s DescribeScalingPlansOutput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s DescribeScalingPlansOutput) GoString() string { return s.String() } // SetNextToken sets the NextToken field's value. func (s *DescribeScalingPlansOutput) SetNextToken(v string) *DescribeScalingPlansOutput { s.NextToken = &v return s } // SetScalingPlans sets the ScalingPlans field's value. func (s *DescribeScalingPlansOutput) SetScalingPlans(v []*ScalingPlan) *DescribeScalingPlansOutput { s.ScalingPlans = v return s } type GetScalingPlanResourceForecastDataInput struct { _ struct{} `type:"structure"` // The exclusive end time of the time range for the forecast data to get. The // maximum time duration between the start and end time is seven days. // // Although this parameter can accept a date and time that is more than two // days in the future, the availability of forecast data has limits. AWS Auto // Scaling only issues forecasts for periods of two days in advance. // // EndTime is a required field EndTime *time.Time `type:"timestamp" required:"true"` // The type of forecast data to get. // // * LoadForecast: The load metric forecast. // // * CapacityForecast: The capacity forecast. // // * ScheduledActionMinCapacity: The minimum capacity for each scheduled // scaling action. This data is calculated as the larger of two values: the // capacity forecast or the minimum capacity in the scaling instruction. // // * ScheduledActionMaxCapacity: The maximum capacity for each scheduled // scaling action. The calculation used is determined by the predictive scaling // maximum capacity behavior setting in the scaling instruction. // // ForecastDataType is a required field ForecastDataType *string `type:"string" required:"true" enum:"ForecastDataType"` // The ID of the resource. This string consists of the resource type and unique // identifier. // // * Auto Scaling group - The resource type is autoScalingGroup and the unique // identifier is the name of the Auto Scaling group. Example: autoScalingGroup/my-asg. // // * ECS service - The resource type is service and the unique identifier // is the cluster name and service name. Example: service/default/sample-webapp. // // * Spot Fleet request - The resource type is spot-fleet-request and the // unique identifier is the Spot Fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE. // // * DynamoDB table - The resource type is table and the unique identifier // is the resource ID. Example: table/my-table. // // * DynamoDB global secondary index - The resource type is index and the // unique identifier is the resource ID. Example: table/my-table/index/my-table-index. // // * Aurora DB cluster - The resource type is cluster and the unique identifier // is the cluster name. Example: cluster:my-db-cluster. // // ResourceId is a required field ResourceId *string `type:"string" required:"true"` // The scalable dimension for the resource. // // ScalableDimension is a required field ScalableDimension *string `type:"string" required:"true" enum:"ScalableDimension"` // The name of the scaling plan. // // ScalingPlanName is a required field ScalingPlanName *string `min:"1" type:"string" required:"true"` // The version number of the scaling plan. // // ScalingPlanVersion is a required field ScalingPlanVersion *int64 `type:"long" required:"true"` // The namespace of the AWS service. // // ServiceNamespace is a required field ServiceNamespace *string `type:"string" required:"true" enum:"ServiceNamespace"` // The inclusive start time of the time range for the forecast data to get. // The date and time can be at most 56 days before the current date and time. // // StartTime is a required field StartTime *time.Time `type:"timestamp" required:"true"` } // String returns the string representation func (s GetScalingPlanResourceForecastDataInput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s GetScalingPlanResourceForecastDataInput) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *GetScalingPlanResourceForecastDataInput) Validate() error { invalidParams := request.ErrInvalidParams{Context: "GetScalingPlanResourceForecastDataInput"} if s.EndTime == nil { invalidParams.Add(request.NewErrParamRequired("EndTime")) } if s.ForecastDataType == nil { invalidParams.Add(request.NewErrParamRequired("ForecastDataType")) } if s.ResourceId == nil { invalidParams.Add(request.NewErrParamRequired("ResourceId")) } if s.ScalableDimension == nil { invalidParams.Add(request.NewErrParamRequired("ScalableDimension")) } if s.ScalingPlanName == nil { invalidParams.Add(request.NewErrParamRequired("ScalingPlanName")) } if s.ScalingPlanName != nil && len(*s.ScalingPlanName) < 1 { invalidParams.Add(request.NewErrParamMinLen("ScalingPlanName", 1)) } if s.ScalingPlanVersion == nil { invalidParams.Add(request.NewErrParamRequired("ScalingPlanVersion")) } if s.ServiceNamespace == nil { invalidParams.Add(request.NewErrParamRequired("ServiceNamespace")) } if s.StartTime == nil { invalidParams.Add(request.NewErrParamRequired("StartTime")) } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetEndTime sets the EndTime field's value. func (s *GetScalingPlanResourceForecastDataInput) SetEndTime(v time.Time) *GetScalingPlanResourceForecastDataInput { s.EndTime = &v return s } // SetForecastDataType sets the ForecastDataType field's value. func (s *GetScalingPlanResourceForecastDataInput) SetForecastDataType(v string) *GetScalingPlanResourceForecastDataInput { s.ForecastDataType = &v return s } // SetResourceId sets the ResourceId field's value. func (s *GetScalingPlanResourceForecastDataInput) SetResourceId(v string) *GetScalingPlanResourceForecastDataInput { s.ResourceId = &v return s } // SetScalableDimension sets the ScalableDimension field's value. func (s *GetScalingPlanResourceForecastDataInput) SetScalableDimension(v string) *GetScalingPlanResourceForecastDataInput { s.ScalableDimension = &v return s } // SetScalingPlanName sets the ScalingPlanName field's value. func (s *GetScalingPlanResourceForecastDataInput) SetScalingPlanName(v string) *GetScalingPlanResourceForecastDataInput { s.ScalingPlanName = &v return s } // SetScalingPlanVersion sets the ScalingPlanVersion field's value. func (s *GetScalingPlanResourceForecastDataInput) SetScalingPlanVersion(v int64) *GetScalingPlanResourceForecastDataInput { s.ScalingPlanVersion = &v return s } // SetServiceNamespace sets the ServiceNamespace field's value. func (s *GetScalingPlanResourceForecastDataInput) SetServiceNamespace(v string) *GetScalingPlanResourceForecastDataInput { s.ServiceNamespace = &v return s } // SetStartTime sets the StartTime field's value. func (s *GetScalingPlanResourceForecastDataInput) SetStartTime(v time.Time) *GetScalingPlanResourceForecastDataInput { s.StartTime = &v return s } type GetScalingPlanResourceForecastDataOutput struct { _ struct{} `type:"structure"` // The data points to return. // // Datapoints is a required field Datapoints []*Datapoint `type:"list" required:"true"` } // String returns the string representation func (s GetScalingPlanResourceForecastDataOutput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s GetScalingPlanResourceForecastDataOutput) GoString() string { return s.String() } // SetDatapoints sets the Datapoints field's value. func (s *GetScalingPlanResourceForecastDataOutput) SetDatapoints(v []*Datapoint) *GetScalingPlanResourceForecastDataOutput { s.Datapoints = v return s } // Represents a dimension for a customized metric. type MetricDimension struct { _ struct{} `type:"structure"` // The name of the dimension. // // Name is a required field Name *string `type:"string" required:"true"` // The value of the dimension. // // Value is a required field Value *string `type:"string" required:"true"` } // String returns the string representation func (s MetricDimension) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s MetricDimension) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *MetricDimension) Validate() error { invalidParams := request.ErrInvalidParams{Context: "MetricDimension"} if s.Name == nil { invalidParams.Add(request.NewErrParamRequired("Name")) } if s.Value == nil { invalidParams.Add(request.NewErrParamRequired("Value")) } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetName sets the Name field's value. func (s *MetricDimension) SetName(v string) *MetricDimension { s.Name = &v return s } // SetValue sets the Value field's value. func (s *MetricDimension) SetValue(v string) *MetricDimension { s.Value = &v return s } // Represents a predefined metric that can be used for predictive scaling. type PredefinedLoadMetricSpecification struct { _ struct{} `type:"structure"` // The metric type. // // PredefinedLoadMetricType is a required field PredefinedLoadMetricType *string `type:"string" required:"true" enum:"LoadMetricType"` // Identifies the resource associated with the metric type. You can't specify // a resource label unless the metric type is ALBRequestCountPerTarget and there // is a target group for an Application Load Balancer attached to the Auto Scaling // group. // // The format is app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>, // where: // // * app/<load-balancer-name>/<load-balancer-id> is the final portion of // the load balancer ARN. // // * targetgroup/<target-group-name>/<target-group-id> is the final portion // of the target group ARN. ResourceLabel *string `min:"1" type:"string"` } // String returns the string representation func (s PredefinedLoadMetricSpecification) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s PredefinedLoadMetricSpecification) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *PredefinedLoadMetricSpecification) Validate() error { invalidParams := request.ErrInvalidParams{Context: "PredefinedLoadMetricSpecification"} if s.PredefinedLoadMetricType == nil { invalidParams.Add(request.NewErrParamRequired("PredefinedLoadMetricType")) } if s.ResourceLabel != nil && len(*s.ResourceLabel) < 1 { invalidParams.Add(request.NewErrParamMinLen("ResourceLabel", 1)) } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetPredefinedLoadMetricType sets the PredefinedLoadMetricType field's value. func (s *PredefinedLoadMetricSpecification) SetPredefinedLoadMetricType(v string) *PredefinedLoadMetricSpecification { s.PredefinedLoadMetricType = &v return s } // SetResourceLabel sets the ResourceLabel field's value. func (s *PredefinedLoadMetricSpecification) SetResourceLabel(v string) *PredefinedLoadMetricSpecification { s.ResourceLabel = &v return s } // Represents a predefined metric that can be used for dynamic scaling as part // of a target tracking scaling policy. type PredefinedScalingMetricSpecification struct { _ struct{} `type:"structure"` // The metric type. The ALBRequestCountPerTarget metric type applies only to // Auto Scaling groups, Spot Fleet requests, and ECS services. // // PredefinedScalingMetricType is a required field PredefinedScalingMetricType *string `type:"string" required:"true" enum:"ScalingMetricType"` // Identifies the resource associated with the metric type. You can't specify // a resource label unless the metric type is ALBRequestCountPerTarget and there // is a target group for an Application Load Balancer attached to the Auto Scaling // group, Spot Fleet request, or ECS service. // // The format is app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>, // where: // // * app/<load-balancer-name>/<load-balancer-id> is the final portion of // the load balancer ARN. // // * targetgroup/<target-group-name>/<target-group-id> is the final portion // of the target group ARN. ResourceLabel *string `min:"1" type:"string"` } // String returns the string representation func (s PredefinedScalingMetricSpecification) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s PredefinedScalingMetricSpecification) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *PredefinedScalingMetricSpecification) Validate() error { invalidParams := request.ErrInvalidParams{Context: "PredefinedScalingMetricSpecification"} if s.PredefinedScalingMetricType == nil { invalidParams.Add(request.NewErrParamRequired("PredefinedScalingMetricType")) } if s.ResourceLabel != nil && len(*s.ResourceLabel) < 1 { invalidParams.Add(request.NewErrParamMinLen("ResourceLabel", 1)) } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetPredefinedScalingMetricType sets the PredefinedScalingMetricType field's value. func (s *PredefinedScalingMetricSpecification) SetPredefinedScalingMetricType(v string) *PredefinedScalingMetricSpecification { s.PredefinedScalingMetricType = &v return s } // SetResourceLabel sets the ResourceLabel field's value. func (s *PredefinedScalingMetricSpecification) SetResourceLabel(v string) *PredefinedScalingMetricSpecification { s.ResourceLabel = &v return s } // Describes a scaling instruction for a scalable resource. // // The scaling instruction is used in combination with a scaling plan, which // is a set of instructions for configuring dynamic scaling and predictive scaling // for the scalable resources in your application. Each scaling instruction // applies to one resource. // // AWS Auto Scaling creates target tracking scaling policies based on the scaling // instructions. Target tracking scaling policies adjust the capacity of your // scalable resource as required to maintain resource utilization at the target // value that you specified. // // AWS Auto Scaling also configures predictive scaling for your Amazon EC2 Auto // Scaling groups using a subset of parameters, including the load metric, the // scaling metric, the target value for the scaling metric, the predictive scaling // mode (forecast and scale or forecast only), and the desired behavior when // the forecast capacity exceeds the maximum capacity of the resource. With // predictive scaling, AWS Auto Scaling generates forecasts with traffic predictions // for the two days ahead and schedules scaling actions that proactively add // and remove resource capacity to match the forecast. // // We recommend waiting a minimum of 24 hours after creating an Auto Scaling // group to configure predictive scaling. At minimum, there must be 24 hours // of historical data to generate a forecast. // // For more information, see Getting Started with AWS Auto Scaling (https://docs.aws.amazon.com/autoscaling/plans/userguide/auto-scaling-getting-started.html). type ScalingInstruction struct { _ struct{} `type:"structure"` // The customized load metric to use for predictive scaling. This parameter // or a PredefinedLoadMetricSpecification is required when configuring predictive // scaling, and cannot be used otherwise. CustomizedLoadMetricSpecification *CustomizedLoadMetricSpecification `type:"structure"` // Controls whether dynamic scaling by AWS Auto Scaling is disabled. When dynamic // scaling is enabled, AWS Auto Scaling creates target tracking scaling policies // based on the specified target tracking configurations. // // The default is enabled (false). DisableDynamicScaling *bool `type:"boolean"` // The maximum capacity of the resource. The exception to this upper limit is // if you specify a non-default setting for PredictiveScalingMaxCapacityBehavior. // // MaxCapacity is a required field MaxCapacity *int64 `type:"integer" required:"true"` // The minimum capacity of the resource. // // MinCapacity is a required field MinCapacity *int64 `type:"integer" required:"true"` // The predefined load metric to use for predictive scaling. This parameter // or a CustomizedLoadMetricSpecification is required when configuring predictive // scaling, and cannot be used otherwise. PredefinedLoadMetricSpecification *PredefinedLoadMetricSpecification `type:"structure"` // Defines the behavior that should be applied if the forecast capacity approaches // or exceeds the maximum capacity specified for the resource. The default value // is SetForecastCapacityToMaxCapacity. // // The following are possible values: // // * SetForecastCapacityToMaxCapacity - AWS Auto Scaling cannot scale resource // capacity higher than the maximum capacity. The maximum capacity is enforced // as a hard limit. // // * SetMaxCapacityToForecastCapacity - AWS Auto Scaling may scale resource // capacity higher than the maximum capacity to equal but not exceed forecast // capacity. // // * SetMaxCapacityAboveForecastCapacity - AWS Auto Scaling may scale resource // capacity higher than the maximum capacity by a specified buffer value. // The intention is to give the target tracking scaling policy extra capacity // if unexpected traffic occurs. // // Only valid when configuring predictive scaling. PredictiveScalingMaxCapacityBehavior *string `type:"string" enum:"PredictiveScalingMaxCapacityBehavior"` // The size of the capacity buffer to use when the forecast capacity is close // to or exceeds the maximum capacity. The value is specified as a percentage // relative to the forecast capacity. For example, if the buffer is 10, this // means a 10 percent buffer, such that if the forecast capacity is 50, and // the maximum capacity is 40, then the effective maximum capacity is 55. // // Only valid when configuring predictive scaling. Required if the PredictiveScalingMaxCapacityBehavior // is set to SetMaxCapacityAboveForecastCapacity, and cannot be used otherwise. // // The range is 1-100. PredictiveScalingMaxCapacityBuffer *int64 `type:"integer"` // The predictive scaling mode. The default value is ForecastAndScale. Otherwise, // AWS Auto Scaling forecasts capacity but does not create any scheduled scaling // actions based on the capacity forecast. PredictiveScalingMode *string `type:"string" enum:"PredictiveScalingMode"` // The ID of the resource. This string consists of the resource type and unique // identifier. // // * Auto Scaling group - The resource type is autoScalingGroup and the unique // identifier is the name of the Auto Scaling group. Example: autoScalingGroup/my-asg. // // * ECS service - The resource type is service and the unique identifier // is the cluster name and service name. Example: service/default/sample-webapp. // // * Spot Fleet request - The resource type is spot-fleet-request and the // unique identifier is the Spot Fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE. // // * DynamoDB table - The resource type is table and the unique identifier // is the resource ID. Example: table/my-table. // // * DynamoDB global secondary index - The resource type is index and the // unique identifier is the resource ID. Example: table/my-table/index/my-table-index. // // * Aurora DB cluster - The resource type is cluster and the unique identifier // is the cluster name. Example: cluster:my-db-cluster. // // ResourceId is a required field ResourceId *string `min:"1" type:"string" required:"true"` // The scalable dimension associated with the resource. // // * autoscaling:autoScalingGroup:DesiredCapacity - The desired capacity // of an Auto Scaling group. // // * ecs:service:DesiredCount - The desired task count of an ECS service. // // * ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot // Fleet request. // // * dynamodb:table:ReadCapacityUnits - The provisioned read capacity for // a DynamoDB table. // // * dynamodb:table:WriteCapacityUnits - The provisioned write capacity for // a DynamoDB table. // // * dynamodb:index:ReadCapacityUnits - The provisioned read capacity for // a DynamoDB global secondary index. // // * dynamodb:index:WriteCapacityUnits - The provisioned write capacity for // a DynamoDB global secondary index. // // * rds:cluster:ReadReplicaCount - The count of Aurora Replicas in an Aurora // DB cluster. Available for Aurora MySQL-compatible edition and Aurora PostgreSQL-compatible // edition. // // ScalableDimension is a required field ScalableDimension *string `type:"string" required:"true" enum:"ScalableDimension"` // Controls whether a resource's externally created scaling policies are kept // or replaced. // // The default value is KeepExternalPolicies. If the parameter is set to ReplaceExternalPolicies, // any scaling policies that are external to AWS Auto Scaling are deleted and // new target tracking scaling policies created. // // Only valid when configuring dynamic scaling. // // Condition: The number of existing policies to be replaced must be less than // or equal to 50. If there are more than 50 policies to be replaced, AWS Auto // Scaling keeps all existing policies and does not create new ones. ScalingPolicyUpdateBehavior *string `type:"string" enum:"ScalingPolicyUpdateBehavior"` // The amount of time, in seconds, to buffer the run time of scheduled scaling // actions when scaling out. For example, if the forecast says to add capacity // at 10:00 AM, and the buffer time is 5 minutes, then the run time of the corresponding // scheduled scaling action will be 9:55 AM. The intention is to give resources // time to be provisioned. For example, it can take a few minutes to launch // an EC2 instance. The actual amount of time required depends on several factors, // such as the size of the instance and whether there are startup scripts to // complete. // // The value must be less than the forecast interval duration of 3600 seconds // (60 minutes). The default is 300 seconds. // // Only valid when configuring predictive scaling. ScheduledActionBufferTime *int64 `type:"integer"` // The namespace of the AWS service. // // ServiceNamespace is a required field ServiceNamespace *string `type:"string" required:"true" enum:"ServiceNamespace"` // The structure that defines new target tracking configurations (up to 10). // Each of these structures includes a specific scaling metric and a target // value for the metric, along with various parameters to use with dynamic scaling. // // With predictive scaling and dynamic scaling, the resource scales based on // the target tracking configuration that provides the largest capacity for // both scale in and scale out. // // Condition: The scaling metric must be unique across target tracking configurations. // // TargetTrackingConfigurations is a required field TargetTrackingConfigurations []*TargetTrackingConfiguration `type:"list" required:"true"` } // String returns the string representation func (s ScalingInstruction) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s ScalingInstruction) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *ScalingInstruction) Validate() error { invalidParams := request.ErrInvalidParams{Context: "ScalingInstruction"} if s.MaxCapacity == nil { invalidParams.Add(request.NewErrParamRequired("MaxCapacity")) } if s.MinCapacity == nil { invalidParams.Add(request.NewErrParamRequired("MinCapacity")) } if s.ResourceId == nil { invalidParams.Add(request.NewErrParamRequired("ResourceId")) } if s.ResourceId != nil && len(*s.ResourceId) < 1 { invalidParams.Add(request.NewErrParamMinLen("ResourceId", 1)) } if s.ScalableDimension == nil { invalidParams.Add(request.NewErrParamRequired("ScalableDimension")) } if s.ServiceNamespace == nil { invalidParams.Add(request.NewErrParamRequired("ServiceNamespace")) } if s.TargetTrackingConfigurations == nil { invalidParams.Add(request.NewErrParamRequired("TargetTrackingConfigurations")) } if s.CustomizedLoadMetricSpecification != nil { if err := s.CustomizedLoadMetricSpecification.Validate(); err != nil { invalidParams.AddNested("CustomizedLoadMetricSpecification", err.(request.ErrInvalidParams)) } } if s.PredefinedLoadMetricSpecification != nil { if err := s.PredefinedLoadMetricSpecification.Validate(); err != nil { invalidParams.AddNested("PredefinedLoadMetricSpecification", err.(request.ErrInvalidParams)) } } if s.TargetTrackingConfigurations != nil { for i, v := range s.TargetTrackingConfigurations { if v == nil { continue } if err := v.Validate(); err != nil { invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetTrackingConfigurations", i), err.(request.ErrInvalidParams)) } } } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetCustomizedLoadMetricSpecification sets the CustomizedLoadMetricSpecification field's value. func (s *ScalingInstruction) SetCustomizedLoadMetricSpecification(v *CustomizedLoadMetricSpecification) *ScalingInstruction { s.CustomizedLoadMetricSpecification = v return s } // SetDisableDynamicScaling sets the DisableDynamicScaling field's value. func (s *ScalingInstruction) SetDisableDynamicScaling(v bool) *ScalingInstruction { s.DisableDynamicScaling = &v return s } // SetMaxCapacity sets the MaxCapacity field's value. func (s *ScalingInstruction) SetMaxCapacity(v int64) *ScalingInstruction { s.MaxCapacity = &v return s } // SetMinCapacity sets the MinCapacity field's value. func (s *ScalingInstruction) SetMinCapacity(v int64) *ScalingInstruction { s.MinCapacity = &v return s } // SetPredefinedLoadMetricSpecification sets the PredefinedLoadMetricSpecification field's value. func (s *ScalingInstruction) SetPredefinedLoadMetricSpecification(v *PredefinedLoadMetricSpecification) *ScalingInstruction { s.PredefinedLoadMetricSpecification = v return s } // SetPredictiveScalingMaxCapacityBehavior sets the PredictiveScalingMaxCapacityBehavior field's value. func (s *ScalingInstruction) SetPredictiveScalingMaxCapacityBehavior(v string) *ScalingInstruction { s.PredictiveScalingMaxCapacityBehavior = &v return s } // SetPredictiveScalingMaxCapacityBuffer sets the PredictiveScalingMaxCapacityBuffer field's value. func (s *ScalingInstruction) SetPredictiveScalingMaxCapacityBuffer(v int64) *ScalingInstruction { s.PredictiveScalingMaxCapacityBuffer = &v return s } // SetPredictiveScalingMode sets the PredictiveScalingMode field's value. func (s *ScalingInstruction) SetPredictiveScalingMode(v string) *ScalingInstruction { s.PredictiveScalingMode = &v return s } // SetResourceId sets the ResourceId field's value. func (s *ScalingInstruction) SetResourceId(v string) *ScalingInstruction { s.ResourceId = &v return s } // SetScalableDimension sets the ScalableDimension field's value. func (s *ScalingInstruction) SetScalableDimension(v string) *ScalingInstruction { s.ScalableDimension = &v return s } // SetScalingPolicyUpdateBehavior sets the ScalingPolicyUpdateBehavior field's value. func (s *ScalingInstruction) SetScalingPolicyUpdateBehavior(v string) *ScalingInstruction { s.ScalingPolicyUpdateBehavior = &v return s } // SetScheduledActionBufferTime sets the ScheduledActionBufferTime field's value. func (s *ScalingInstruction) SetScheduledActionBufferTime(v int64) *ScalingInstruction { s.ScheduledActionBufferTime = &v return s } // SetServiceNamespace sets the ServiceNamespace field's value. func (s *ScalingInstruction) SetServiceNamespace(v string) *ScalingInstruction { s.ServiceNamespace = &v return s } // SetTargetTrackingConfigurations sets the TargetTrackingConfigurations field's value. func (s *ScalingInstruction) SetTargetTrackingConfigurations(v []*TargetTrackingConfiguration) *ScalingInstruction { s.TargetTrackingConfigurations = v return s } // Represents a scaling plan. type ScalingPlan struct { _ struct{} `type:"structure"` // The application source. // // ApplicationSource is a required field ApplicationSource *ApplicationSource `type:"structure" required:"true"` // The Unix time stamp when the scaling plan was created. CreationTime *time.Time `type:"timestamp"` // The scaling instructions. // // ScalingInstructions is a required field ScalingInstructions []*ScalingInstruction `type:"list" required:"true"` // The name of the scaling plan. // // ScalingPlanName is a required field ScalingPlanName *string `min:"1" type:"string" required:"true"` // The version number of the scaling plan. // // ScalingPlanVersion is a required field ScalingPlanVersion *int64 `type:"long" required:"true"` // The status of the scaling plan. // // * Active - The scaling plan is active. // // * ActiveWithProblems - The scaling plan is active, but the scaling configuration // for one or more resources could not be applied. // // * CreationInProgress - The scaling plan is being created. // // * CreationFailed - The scaling plan could not be created. // // * DeletionInProgress - The scaling plan is being deleted. // // * DeletionFailed - The scaling plan could not be deleted. // // * UpdateInProgress - The scaling plan is being updated. // // * UpdateFailed - The scaling plan could not be updated. // // StatusCode is a required field StatusCode *string `type:"string" required:"true" enum:"ScalingPlanStatusCode"` // A simple message about the current status of the scaling plan. StatusMessage *string `type:"string"` // The Unix time stamp when the scaling plan entered the current status. StatusStartTime *time.Time `type:"timestamp"` } // String returns the string representation func (s ScalingPlan) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s ScalingPlan) GoString() string { return s.String() } // SetApplicationSource sets the ApplicationSource field's value. func (s *ScalingPlan) SetApplicationSource(v *ApplicationSource) *ScalingPlan { s.ApplicationSource = v return s } // SetCreationTime sets the CreationTime field's value. func (s *ScalingPlan) SetCreationTime(v time.Time) *ScalingPlan { s.CreationTime = &v return s } // SetScalingInstructions sets the ScalingInstructions field's value. func (s *ScalingPlan) SetScalingInstructions(v []*ScalingInstruction) *ScalingPlan { s.ScalingInstructions = v return s } // SetScalingPlanName sets the ScalingPlanName field's value. func (s *ScalingPlan) SetScalingPlanName(v string) *ScalingPlan { s.ScalingPlanName = &v return s } // SetScalingPlanVersion sets the ScalingPlanVersion field's value. func (s *ScalingPlan) SetScalingPlanVersion(v int64) *ScalingPlan { s.ScalingPlanVersion = &v return s } // SetStatusCode sets the StatusCode field's value. func (s *ScalingPlan) SetStatusCode(v string) *ScalingPlan { s.StatusCode = &v return s } // SetStatusMessage sets the StatusMessage field's value. func (s *ScalingPlan) SetStatusMessage(v string) *ScalingPlan { s.StatusMessage = &v return s } // SetStatusStartTime sets the StatusStartTime field's value. func (s *ScalingPlan) SetStatusStartTime(v time.Time) *ScalingPlan { s.StatusStartTime = &v return s } // Represents a scalable resource. type ScalingPlanResource struct { _ struct{} `type:"structure"` // The ID of the resource. This string consists of the resource type and unique // identifier. // // * Auto Scaling group - The resource type is autoScalingGroup and the unique // identifier is the name of the Auto Scaling group. Example: autoScalingGroup/my-asg. // // * ECS service - The resource type is service and the unique identifier // is the cluster name and service name. Example: service/default/sample-webapp. // // * Spot Fleet request - The resource type is spot-fleet-request and the // unique identifier is the Spot Fleet request ID. Example: spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE. // // * DynamoDB table - The resource type is table and the unique identifier // is the resource ID. Example: table/my-table. // // * DynamoDB global secondary index - The resource type is index and the // unique identifier is the resource ID. Example: table/my-table/index/my-table-index. // // * Aurora DB cluster - The resource type is cluster and the unique identifier // is the cluster name. Example: cluster:my-db-cluster. // // ResourceId is a required field ResourceId *string `min:"1" type:"string" required:"true"` // The scalable dimension for the resource. // // * autoscaling:autoScalingGroup:DesiredCapacity - The desired capacity // of an Auto Scaling group. // // * ecs:service:DesiredCount - The desired task count of an ECS service. // // * ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot // Fleet request. // // * dynamodb:table:ReadCapacityUnits - The provisioned read capacity for // a DynamoDB table. // // * dynamodb:table:WriteCapacityUnits - The provisioned write capacity for // a DynamoDB table. // // * dynamodb:index:ReadCapacityUnits - The provisioned read capacity for // a DynamoDB global secondary index. // // * dynamodb:index:WriteCapacityUnits - The provisioned write capacity for // a DynamoDB global secondary index. // // * rds:cluster:ReadReplicaCount - The count of Aurora Replicas in an Aurora // DB cluster. Available for Aurora MySQL-compatible edition and Aurora PostgreSQL-compatible // edition. // // ScalableDimension is a required field ScalableDimension *string `type:"string" required:"true" enum:"ScalableDimension"` // The name of the scaling plan. // // ScalingPlanName is a required field ScalingPlanName *string `min:"1" type:"string" required:"true"` // The version number of the scaling plan. // // ScalingPlanVersion is a required field ScalingPlanVersion *int64 `type:"long" required:"true"` // The scaling policies. ScalingPolicies []*ScalingPolicy `type:"list"` // The scaling status of the resource. // // * Active - The scaling configuration is active. // // * Inactive - The scaling configuration is not active because the scaling // plan is being created or the scaling configuration could not be applied. // Check the status message for more information. // // * PartiallyActive - The scaling configuration is partially active because // the scaling plan is being created or deleted or the scaling configuration // could not be fully applied. Check the status message for more information. // // ScalingStatusCode is a required field ScalingStatusCode *string `type:"string" required:"true" enum:"ScalingStatusCode"` // A simple message about the current scaling status of the resource. ScalingStatusMessage *string `type:"string"` // The namespace of the AWS service. // // ServiceNamespace is a required field ServiceNamespace *string `type:"string" required:"true" enum:"ServiceNamespace"` } // String returns the string representation func (s ScalingPlanResource) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s ScalingPlanResource) GoString() string { return s.String() } // SetResourceId sets the ResourceId field's value. func (s *ScalingPlanResource) SetResourceId(v string) *ScalingPlanResource { s.ResourceId = &v return s } // SetScalableDimension sets the ScalableDimension field's value. func (s *ScalingPlanResource) SetScalableDimension(v string) *ScalingPlanResource { s.ScalableDimension = &v return s } // SetScalingPlanName sets the ScalingPlanName field's value. func (s *ScalingPlanResource) SetScalingPlanName(v string) *ScalingPlanResource { s.ScalingPlanName = &v return s } // SetScalingPlanVersion sets the ScalingPlanVersion field's value. func (s *ScalingPlanResource) SetScalingPlanVersion(v int64) *ScalingPlanResource { s.ScalingPlanVersion = &v return s } // SetScalingPolicies sets the ScalingPolicies field's value. func (s *ScalingPlanResource) SetScalingPolicies(v []*ScalingPolicy) *ScalingPlanResource { s.ScalingPolicies = v return s } // SetScalingStatusCode sets the ScalingStatusCode field's value. func (s *ScalingPlanResource) SetScalingStatusCode(v string) *ScalingPlanResource { s.ScalingStatusCode = &v return s } // SetScalingStatusMessage sets the ScalingStatusMessage field's value. func (s *ScalingPlanResource) SetScalingStatusMessage(v string) *ScalingPlanResource { s.ScalingStatusMessage = &v return s } // SetServiceNamespace sets the ServiceNamespace field's value. func (s *ScalingPlanResource) SetServiceNamespace(v string) *ScalingPlanResource { s.ServiceNamespace = &v return s } // Represents a scaling policy. type ScalingPolicy struct { _ struct{} `type:"structure"` // The name of the scaling policy. // // PolicyName is a required field PolicyName *string `min:"1" type:"string" required:"true"` // The type of scaling policy. // // PolicyType is a required field PolicyType *string `type:"string" required:"true" enum:"PolicyType"` // The target tracking scaling policy. Includes support for predefined or customized // metrics. TargetTrackingConfiguration *TargetTrackingConfiguration `type:"structure"` } // String returns the string representation func (s ScalingPolicy) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s ScalingPolicy) GoString() string { return s.String() } // SetPolicyName sets the PolicyName field's value. func (s *ScalingPolicy) SetPolicyName(v string) *ScalingPolicy { s.PolicyName = &v return s } // SetPolicyType sets the PolicyType field's value. func (s *ScalingPolicy) SetPolicyType(v string) *ScalingPolicy { s.PolicyType = &v return s } // SetTargetTrackingConfiguration sets the TargetTrackingConfiguration field's value. func (s *ScalingPolicy) SetTargetTrackingConfiguration(v *TargetTrackingConfiguration) *ScalingPolicy { s.TargetTrackingConfiguration = v return s } // Represents a tag. type TagFilter struct { _ struct{} `type:"structure"` // The tag key. Key *string `min:"1" type:"string"` // The tag values (0 to 20). Values []*string `type:"list"` } // String returns the string representation func (s TagFilter) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s TagFilter) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *TagFilter) Validate() error { invalidParams := request.ErrInvalidParams{Context: "TagFilter"} if s.Key != nil && len(*s.Key) < 1 { invalidParams.Add(request.NewErrParamMinLen("Key", 1)) } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetKey sets the Key field's value. func (s *TagFilter) SetKey(v string) *TagFilter { s.Key = &v return s } // SetValues sets the Values field's value. func (s *TagFilter) SetValues(v []*string) *TagFilter { s.Values = v return s } // Describes a target tracking configuration to use with AWS Auto Scaling. Used // with ScalingInstruction and ScalingPolicy. type TargetTrackingConfiguration struct { _ struct{} `type:"structure"` // A customized metric. You can specify either a predefined metric or a customized // metric. CustomizedScalingMetricSpecification *CustomizedScalingMetricSpecification `type:"structure"` // Indicates whether scale in by the target tracking scaling policy is disabled. // If the value is true, scale in is disabled and the target tracking scaling // policy doesn't remove capacity from the scalable resource. Otherwise, scale // in is enabled and the target tracking scaling policy can remove capacity // from the scalable resource. // // The default value is false. DisableScaleIn *bool `type:"boolean"` // The estimated time, in seconds, until a newly launched instance can contribute // to the CloudWatch metrics. This value is used only if the resource is an // Auto Scaling group. EstimatedInstanceWarmup *int64 `type:"integer"` // A predefined metric. You can specify either a predefined metric or a customized // metric. PredefinedScalingMetricSpecification *PredefinedScalingMetricSpecification `type:"structure"` // The amount of time, in seconds, after a scale in activity completes before // another scale in activity can start. This value is not used if the scalable // resource is an Auto Scaling group. // // The cooldown period is used to block subsequent scale in requests until it // has expired. The intention is to scale in conservatively to protect your // application's availability. However, if another alarm triggers a scale-out // policy during the cooldown period after a scale-in, AWS Auto Scaling scales // out your scalable target immediately. ScaleInCooldown *int64 `type:"integer"` // The amount of time, in seconds, after a scale-out activity completes before // another scale-out activity can start. This value is not used if the scalable // resource is an Auto Scaling group. // // While the cooldown period is in effect, the capacity that has been added // by the previous scale-out event that initiated the cooldown is calculated // as part of the desired capacity for the next scale out. The intention is // to continuously (but not excessively) scale out. ScaleOutCooldown *int64 `type:"integer"` // The target value for the metric. The range is 8.515920e-109 to 1.174271e+108 // (Base 10) or 2e-360 to 2e360 (Base 2). // // TargetValue is a required field TargetValue *float64 `type:"double" required:"true"` } // String returns the string representation func (s TargetTrackingConfiguration) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s TargetTrackingConfiguration) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *TargetTrackingConfiguration) Validate() error { invalidParams := request.ErrInvalidParams{Context: "TargetTrackingConfiguration"} if s.TargetValue == nil { invalidParams.Add(request.NewErrParamRequired("TargetValue")) } if s.CustomizedScalingMetricSpecification != nil { if err := s.CustomizedScalingMetricSpecification.Validate(); err != nil { invalidParams.AddNested("CustomizedScalingMetricSpecification", err.(request.ErrInvalidParams)) } } if s.PredefinedScalingMetricSpecification != nil { if err := s.PredefinedScalingMetricSpecification.Validate(); err != nil { invalidParams.AddNested("PredefinedScalingMetricSpecification", err.(request.ErrInvalidParams)) } } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetCustomizedScalingMetricSpecification sets the CustomizedScalingMetricSpecification field's value. func (s *TargetTrackingConfiguration) SetCustomizedScalingMetricSpecification(v *CustomizedScalingMetricSpecification) *TargetTrackingConfiguration { s.CustomizedScalingMetricSpecification = v return s } // SetDisableScaleIn sets the DisableScaleIn field's value. func (s *TargetTrackingConfiguration) SetDisableScaleIn(v bool) *TargetTrackingConfiguration { s.DisableScaleIn = &v return s } // SetEstimatedInstanceWarmup sets the EstimatedInstanceWarmup field's value. func (s *TargetTrackingConfiguration) SetEstimatedInstanceWarmup(v int64) *TargetTrackingConfiguration { s.EstimatedInstanceWarmup = &v return s } // SetPredefinedScalingMetricSpecification sets the PredefinedScalingMetricSpecification field's value. func (s *TargetTrackingConfiguration) SetPredefinedScalingMetricSpecification(v *PredefinedScalingMetricSpecification) *TargetTrackingConfiguration { s.PredefinedScalingMetricSpecification = v return s } // SetScaleInCooldown sets the ScaleInCooldown field's value. func (s *TargetTrackingConfiguration) SetScaleInCooldown(v int64) *TargetTrackingConfiguration { s.ScaleInCooldown = &v return s } // SetScaleOutCooldown sets the ScaleOutCooldown field's value. func (s *TargetTrackingConfiguration) SetScaleOutCooldown(v int64) *TargetTrackingConfiguration { s.ScaleOutCooldown = &v return s } // SetTargetValue sets the TargetValue field's value. func (s *TargetTrackingConfiguration) SetTargetValue(v float64) *TargetTrackingConfiguration { s.TargetValue = &v return s } type UpdateScalingPlanInput struct { _ struct{} `type:"structure"` // A CloudFormation stack or set of tags. ApplicationSource *ApplicationSource `type:"structure"` // The scaling instructions. ScalingInstructions []*ScalingInstruction `type:"list"` // The name of the scaling plan. // // ScalingPlanName is a required field ScalingPlanName *string `min:"1" type:"string" required:"true"` // The version number of the scaling plan. // // ScalingPlanVersion is a required field ScalingPlanVersion *int64 `type:"long" required:"true"` } // String returns the string representation func (s UpdateScalingPlanInput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s UpdateScalingPlanInput) GoString() string { return s.String() } // Validate inspects the fields of the type to determine if they are valid. func (s *UpdateScalingPlanInput) Validate() error { invalidParams := request.ErrInvalidParams{Context: "UpdateScalingPlanInput"} if s.ScalingPlanName == nil { invalidParams.Add(request.NewErrParamRequired("ScalingPlanName")) } if s.ScalingPlanName != nil && len(*s.ScalingPlanName) < 1 { invalidParams.Add(request.NewErrParamMinLen("ScalingPlanName", 1)) } if s.ScalingPlanVersion == nil { invalidParams.Add(request.NewErrParamRequired("ScalingPlanVersion")) } if s.ApplicationSource != nil { if err := s.ApplicationSource.Validate(); err != nil { invalidParams.AddNested("ApplicationSource", err.(request.ErrInvalidParams)) } } if s.ScalingInstructions != nil { for i, v := range s.ScalingInstructions { if v == nil { continue } if err := v.Validate(); err != nil { invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ScalingInstructions", i), err.(request.ErrInvalidParams)) } } } if invalidParams.Len() > 0 { return invalidParams } return nil } // SetApplicationSource sets the ApplicationSource field's value. func (s *UpdateScalingPlanInput) SetApplicationSource(v *ApplicationSource) *UpdateScalingPlanInput { s.ApplicationSource = v return s } // SetScalingInstructions sets the ScalingInstructions field's value. func (s *UpdateScalingPlanInput) SetScalingInstructions(v []*ScalingInstruction) *UpdateScalingPlanInput { s.ScalingInstructions = v return s } // SetScalingPlanName sets the ScalingPlanName field's value. func (s *UpdateScalingPlanInput) SetScalingPlanName(v string) *UpdateScalingPlanInput { s.ScalingPlanName = &v return s } // SetScalingPlanVersion sets the ScalingPlanVersion field's value. func (s *UpdateScalingPlanInput) SetScalingPlanVersion(v int64) *UpdateScalingPlanInput { s.ScalingPlanVersion = &v return s } type UpdateScalingPlanOutput struct { _ struct{} `type:"structure"` } // String returns the string representation func (s UpdateScalingPlanOutput) String() string { return awsutil.Prettify(s) } // GoString returns the string representation func (s UpdateScalingPlanOutput) GoString() string { return s.String() } const ( // ForecastDataTypeCapacityForecast is a ForecastDataType enum value ForecastDataTypeCapacityForecast = "CapacityForecast" // ForecastDataTypeLoadForecast is a ForecastDataType enum value ForecastDataTypeLoadForecast = "LoadForecast" // ForecastDataTypeScheduledActionMinCapacity is a ForecastDataType enum value ForecastDataTypeScheduledActionMinCapacity = "ScheduledActionMinCapacity" // ForecastDataTypeScheduledActionMaxCapacity is a ForecastDataType enum value ForecastDataTypeScheduledActionMaxCapacity = "ScheduledActionMaxCapacity" ) const ( // LoadMetricTypeAsgtotalCpuutilization is a LoadMetricType enum value LoadMetricTypeAsgtotalCpuutilization = "ASGTotalCPUUtilization" // LoadMetricTypeAsgtotalNetworkIn is a LoadMetricType enum value LoadMetricTypeAsgtotalNetworkIn = "ASGTotalNetworkIn" // LoadMetricTypeAsgtotalNetworkOut is a LoadMetricType enum value LoadMetricTypeAsgtotalNetworkOut = "ASGTotalNetworkOut" // LoadMetricTypeAlbtargetGroupRequestCount is a LoadMetricType enum value LoadMetricTypeAlbtargetGroupRequestCount = "ALBTargetGroupRequestCount" ) const ( // MetricStatisticAverage is a MetricStatistic enum value MetricStatisticAverage = "Average" // MetricStatisticMinimum is a MetricStatistic enum value MetricStatisticMinimum = "Minimum" // MetricStatisticMaximum is a MetricStatistic enum value MetricStatisticMaximum = "Maximum" // MetricStatisticSampleCount is a MetricStatistic enum value MetricStatisticSampleCount = "SampleCount" // MetricStatisticSum is a MetricStatistic enum value MetricStatisticSum = "Sum" ) const ( // PolicyTypeTargetTrackingScaling is a PolicyType enum value PolicyTypeTargetTrackingScaling = "TargetTrackingScaling" ) const ( // PredictiveScalingMaxCapacityBehaviorSetForecastCapacityToMaxCapacity is a PredictiveScalingMaxCapacityBehavior enum value PredictiveScalingMaxCapacityBehaviorSetForecastCapacityToMaxCapacity = "SetForecastCapacityToMaxCapacity" // PredictiveScalingMaxCapacityBehaviorSetMaxCapacityToForecastCapacity is a PredictiveScalingMaxCapacityBehavior enum value PredictiveScalingMaxCapacityBehaviorSetMaxCapacityToForecastCapacity = "SetMaxCapacityToForecastCapacity" // PredictiveScalingMaxCapacityBehaviorSetMaxCapacityAboveForecastCapacity is a PredictiveScalingMaxCapacityBehavior enum value PredictiveScalingMaxCapacityBehaviorSetMaxCapacityAboveForecastCapacity = "SetMaxCapacityAboveForecastCapacity" ) const ( // PredictiveScalingModeForecastAndScale is a PredictiveScalingMode enum value PredictiveScalingModeForecastAndScale = "ForecastAndScale" // PredictiveScalingModeForecastOnly is a PredictiveScalingMode enum value PredictiveScalingModeForecastOnly = "ForecastOnly" ) const ( // ScalableDimensionAutoscalingAutoScalingGroupDesiredCapacity is a ScalableDimension enum value ScalableDimensionAutoscalingAutoScalingGroupDesiredCapacity = "autoscaling:autoScalingGroup:DesiredCapacity" // ScalableDimensionEcsServiceDesiredCount is a ScalableDimension enum value ScalableDimensionEcsServiceDesiredCount = "ecs:service:DesiredCount" // ScalableDimensionEc2SpotFleetRequestTargetCapacity is a ScalableDimension enum value ScalableDimensionEc2SpotFleetRequestTargetCapacity = "ec2:spot-fleet-request:TargetCapacity" // ScalableDimensionRdsClusterReadReplicaCount is a ScalableDimension enum value ScalableDimensionRdsClusterReadReplicaCount = "rds:cluster:ReadReplicaCount" // ScalableDimensionDynamodbTableReadCapacityUnits is a ScalableDimension enum value ScalableDimensionDynamodbTableReadCapacityUnits = "dynamodb:table:ReadCapacityUnits" // ScalableDimensionDynamodbTableWriteCapacityUnits is a ScalableDimension enum value ScalableDimensionDynamodbTableWriteCapacityUnits = "dynamodb:table:WriteCapacityUnits" // ScalableDimensionDynamodbIndexReadCapacityUnits is a ScalableDimension enum value ScalableDimensionDynamodbIndexReadCapacityUnits = "dynamodb:index:ReadCapacityUnits" // ScalableDimensionDynamodbIndexWriteCapacityUnits is a ScalableDimension enum value ScalableDimensionDynamodbIndexWriteCapacityUnits = "dynamodb:index:WriteCapacityUnits" ) const ( // ScalingMetricTypeAsgaverageCpuutilization is a ScalingMetricType enum value ScalingMetricTypeAsgaverageCpuutilization = "ASGAverageCPUUtilization" // ScalingMetricTypeAsgaverageNetworkIn is a ScalingMetricType enum value ScalingMetricTypeAsgaverageNetworkIn = "ASGAverageNetworkIn" // ScalingMetricTypeAsgaverageNetworkOut is a ScalingMetricType enum value ScalingMetricTypeAsgaverageNetworkOut = "ASGAverageNetworkOut" // ScalingMetricTypeDynamoDbreadCapacityUtilization is a ScalingMetricType enum value ScalingMetricTypeDynamoDbreadCapacityUtilization = "DynamoDBReadCapacityUtilization" // ScalingMetricTypeDynamoDbwriteCapacityUtilization is a ScalingMetricType enum value ScalingMetricTypeDynamoDbwriteCapacityUtilization = "DynamoDBWriteCapacityUtilization" // ScalingMetricTypeEcsserviceAverageCpuutilization is a ScalingMetricType enum value ScalingMetricTypeEcsserviceAverageCpuutilization = "ECSServiceAverageCPUUtilization" // ScalingMetricTypeEcsserviceAverageMemoryUtilization is a ScalingMetricType enum value ScalingMetricTypeEcsserviceAverageMemoryUtilization = "ECSServiceAverageMemoryUtilization" // ScalingMetricTypeAlbrequestCountPerTarget is a ScalingMetricType enum value ScalingMetricTypeAlbrequestCountPerTarget = "ALBRequestCountPerTarget" // ScalingMetricTypeRdsreaderAverageCpuutilization is a ScalingMetricType enum value ScalingMetricTypeRdsreaderAverageCpuutilization = "RDSReaderAverageCPUUtilization" // ScalingMetricTypeRdsreaderAverageDatabaseConnections is a ScalingMetricType enum value ScalingMetricTypeRdsreaderAverageDatabaseConnections = "RDSReaderAverageDatabaseConnections" // ScalingMetricTypeEc2spotFleetRequestAverageCpuutilization is a ScalingMetricType enum value ScalingMetricTypeEc2spotFleetRequestAverageCpuutilization = "EC2SpotFleetRequestAverageCPUUtilization" // ScalingMetricTypeEc2spotFleetRequestAverageNetworkIn is a ScalingMetricType enum value ScalingMetricTypeEc2spotFleetRequestAverageNetworkIn = "EC2SpotFleetRequestAverageNetworkIn" // ScalingMetricTypeEc2spotFleetRequestAverageNetworkOut is a ScalingMetricType enum value ScalingMetricTypeEc2spotFleetRequestAverageNetworkOut = "EC2SpotFleetRequestAverageNetworkOut" ) const ( // ScalingPlanStatusCodeActive is a ScalingPlanStatusCode enum value ScalingPlanStatusCodeActive = "Active" // ScalingPlanStatusCodeActiveWithProblems is a ScalingPlanStatusCode enum value ScalingPlanStatusCodeActiveWithProblems = "ActiveWithProblems" // ScalingPlanStatusCodeCreationInProgress is a ScalingPlanStatusCode enum value ScalingPlanStatusCodeCreationInProgress = "CreationInProgress" // ScalingPlanStatusCodeCreationFailed is a ScalingPlanStatusCode enum value ScalingPlanStatusCodeCreationFailed = "CreationFailed" // ScalingPlanStatusCodeDeletionInProgress is a ScalingPlanStatusCode enum value ScalingPlanStatusCodeDeletionInProgress = "DeletionInProgress" // ScalingPlanStatusCodeDeletionFailed is a ScalingPlanStatusCode enum value ScalingPlanStatusCodeDeletionFailed = "DeletionFailed" // ScalingPlanStatusCodeUpdateInProgress is a ScalingPlanStatusCode enum value ScalingPlanStatusCodeUpdateInProgress = "UpdateInProgress" // ScalingPlanStatusCodeUpdateFailed is a ScalingPlanStatusCode enum value ScalingPlanStatusCodeUpdateFailed = "UpdateFailed" ) const ( // ScalingPolicyUpdateBehaviorKeepExternalPolicies is a ScalingPolicyUpdateBehavior enum value ScalingPolicyUpdateBehaviorKeepExternalPolicies = "KeepExternalPolicies" // ScalingPolicyUpdateBehaviorReplaceExternalPolicies is a ScalingPolicyUpdateBehavior enum value ScalingPolicyUpdateBehaviorReplaceExternalPolicies = "ReplaceExternalPolicies" ) const ( // ScalingStatusCodeInactive is a ScalingStatusCode enum value ScalingStatusCodeInactive = "Inactive" // ScalingStatusCodePartiallyActive is a ScalingStatusCode enum value ScalingStatusCodePartiallyActive = "PartiallyActive" // ScalingStatusCodeActive is a ScalingStatusCode enum value ScalingStatusCodeActive = "Active" ) const ( // ServiceNamespaceAutoscaling is a ServiceNamespace enum value ServiceNamespaceAutoscaling = "autoscaling" // ServiceNamespaceEcs is a ServiceNamespace enum value ServiceNamespaceEcs = "ecs" // ServiceNamespaceEc2 is a ServiceNamespace enum value ServiceNamespaceEc2 = "ec2" // ServiceNamespaceRds is a ServiceNamespace enum value ServiceNamespaceRds = "rds" // ServiceNamespaceDynamodb is a ServiceNamespace enum value ServiceNamespaceDynamodb = "dynamodb" )