404 Not Found


nginx
beegazpacho.com - GrazzMean
Uname: Linux in-mum-web1557.main-hosting.eu 5.14.0-611.42.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 24 05:30:20 EDT 2026 x86_64
Software: LiteSpeed
PHP version: 8.2.30 [ PHP INFO ] PHP os: Linux
Server Ip: 91.108.106.35
Your Ip: 216.73.216.168
User: u848900432 (848900432) | Group: o51372345 (1051372345)
Safe Mode: OFF
Disable Function:
NONE

name : api.go
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.

package computeoptimizer

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 opDeleteRecommendationPreferences = "DeleteRecommendationPreferences"

// DeleteRecommendationPreferencesRequest generates a "aws/request.Request" representing the
// client's request for the DeleteRecommendationPreferences 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 DeleteRecommendationPreferences for more information on using the DeleteRecommendationPreferences
// 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 DeleteRecommendationPreferencesRequest method.
//	req, resp := client.DeleteRecommendationPreferencesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/DeleteRecommendationPreferences
func (c *ComputeOptimizer) DeleteRecommendationPreferencesRequest(input *DeleteRecommendationPreferencesInput) (req *request.Request, output *DeleteRecommendationPreferencesOutput) {
	op := &request.Operation{
		Name:       opDeleteRecommendationPreferences,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteRecommendationPreferencesInput{}
	}

	output = &DeleteRecommendationPreferencesOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// DeleteRecommendationPreferences API operation for AWS Compute Optimizer.
//
// Deletes a recommendation preference, such as enhanced infrastructure metrics.
//
// For more information, see Activating enhanced infrastructure metrics (https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html)
// in the Compute Optimizer User Guide.
//
// 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 Compute Optimizer's
// API operation DeleteRecommendationPreferences for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - ResourceNotFoundException
//     A resource that is required for the action doesn't exist.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/DeleteRecommendationPreferences
func (c *ComputeOptimizer) DeleteRecommendationPreferences(input *DeleteRecommendationPreferencesInput) (*DeleteRecommendationPreferencesOutput, error) {
	req, out := c.DeleteRecommendationPreferencesRequest(input)
	return out, req.Send()
}

// DeleteRecommendationPreferencesWithContext is the same as DeleteRecommendationPreferences with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteRecommendationPreferences 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 *ComputeOptimizer) DeleteRecommendationPreferencesWithContext(ctx aws.Context, input *DeleteRecommendationPreferencesInput, opts ...request.Option) (*DeleteRecommendationPreferencesOutput, error) {
	req, out := c.DeleteRecommendationPreferencesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeRecommendationExportJobs = "DescribeRecommendationExportJobs"

// DescribeRecommendationExportJobsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeRecommendationExportJobs 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 DescribeRecommendationExportJobs for more information on using the DescribeRecommendationExportJobs
// 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 DescribeRecommendationExportJobsRequest method.
//	req, resp := client.DescribeRecommendationExportJobsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/DescribeRecommendationExportJobs
func (c *ComputeOptimizer) DescribeRecommendationExportJobsRequest(input *DescribeRecommendationExportJobsInput) (req *request.Request, output *DescribeRecommendationExportJobsOutput) {
	op := &request.Operation{
		Name:       opDescribeRecommendationExportJobs,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeRecommendationExportJobsInput{}
	}

	output = &DescribeRecommendationExportJobsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeRecommendationExportJobs API operation for AWS Compute Optimizer.
//
// Describes recommendation export jobs created in the last seven days.
//
// Use the ExportAutoScalingGroupRecommendations or ExportEC2InstanceRecommendations
// actions to request an export of your recommendations. Then use the DescribeRecommendationExportJobs
// action to view your export jobs.
//
// 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 Compute Optimizer's
// API operation DescribeRecommendationExportJobs for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - ResourceNotFoundException
//     A resource that is required for the action doesn't exist.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/DescribeRecommendationExportJobs
func (c *ComputeOptimizer) DescribeRecommendationExportJobs(input *DescribeRecommendationExportJobsInput) (*DescribeRecommendationExportJobsOutput, error) {
	req, out := c.DescribeRecommendationExportJobsRequest(input)
	return out, req.Send()
}

// DescribeRecommendationExportJobsWithContext is the same as DescribeRecommendationExportJobs with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeRecommendationExportJobs 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 *ComputeOptimizer) DescribeRecommendationExportJobsWithContext(ctx aws.Context, input *DescribeRecommendationExportJobsInput, opts ...request.Option) (*DescribeRecommendationExportJobsOutput, error) {
	req, out := c.DescribeRecommendationExportJobsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// DescribeRecommendationExportJobsPages iterates over the pages of a DescribeRecommendationExportJobs operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeRecommendationExportJobs method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//	// Example iterating over at most 3 pages of a DescribeRecommendationExportJobs operation.
//	pageNum := 0
//	err := client.DescribeRecommendationExportJobsPages(params,
//	    func(page *computeoptimizer.DescribeRecommendationExportJobsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *ComputeOptimizer) DescribeRecommendationExportJobsPages(input *DescribeRecommendationExportJobsInput, fn func(*DescribeRecommendationExportJobsOutput, bool) bool) error {
	return c.DescribeRecommendationExportJobsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeRecommendationExportJobsPagesWithContext same as DescribeRecommendationExportJobsPages except
// it takes a Context and allows setting request options on the pages.
//
// 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 *ComputeOptimizer) DescribeRecommendationExportJobsPagesWithContext(ctx aws.Context, input *DescribeRecommendationExportJobsInput, fn func(*DescribeRecommendationExportJobsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeRecommendationExportJobsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeRecommendationExportJobsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*DescribeRecommendationExportJobsOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opExportAutoScalingGroupRecommendations = "ExportAutoScalingGroupRecommendations"

// ExportAutoScalingGroupRecommendationsRequest generates a "aws/request.Request" representing the
// client's request for the ExportAutoScalingGroupRecommendations 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 ExportAutoScalingGroupRecommendations for more information on using the ExportAutoScalingGroupRecommendations
// 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 ExportAutoScalingGroupRecommendationsRequest method.
//	req, resp := client.ExportAutoScalingGroupRecommendationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ExportAutoScalingGroupRecommendations
func (c *ComputeOptimizer) ExportAutoScalingGroupRecommendationsRequest(input *ExportAutoScalingGroupRecommendationsInput) (req *request.Request, output *ExportAutoScalingGroupRecommendationsOutput) {
	op := &request.Operation{
		Name:       opExportAutoScalingGroupRecommendations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ExportAutoScalingGroupRecommendationsInput{}
	}

	output = &ExportAutoScalingGroupRecommendationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ExportAutoScalingGroupRecommendations API operation for AWS Compute Optimizer.
//
// Exports optimization recommendations for Auto Scaling groups.
//
// Recommendations are exported in a comma-separated values (.csv) file, and
// its metadata in a JavaScript Object Notation (JSON) (.json) file, to an existing
// Amazon Simple Storage Service (Amazon S3) bucket that you specify. For more
// information, see Exporting Recommendations (https://docs.aws.amazon.com/compute-optimizer/latest/ug/exporting-recommendations.html)
// in the Compute Optimizer User Guide.
//
// You can have only one Auto Scaling group export job in progress per Amazon
// Web Services Region.
//
// 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 Compute Optimizer's
// API operation ExportAutoScalingGroupRecommendations for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - LimitExceededException
//     The request exceeds a limit of the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ExportAutoScalingGroupRecommendations
func (c *ComputeOptimizer) ExportAutoScalingGroupRecommendations(input *ExportAutoScalingGroupRecommendationsInput) (*ExportAutoScalingGroupRecommendationsOutput, error) {
	req, out := c.ExportAutoScalingGroupRecommendationsRequest(input)
	return out, req.Send()
}

// ExportAutoScalingGroupRecommendationsWithContext is the same as ExportAutoScalingGroupRecommendations with the addition of
// the ability to pass a context and additional request options.
//
// See ExportAutoScalingGroupRecommendations 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 *ComputeOptimizer) ExportAutoScalingGroupRecommendationsWithContext(ctx aws.Context, input *ExportAutoScalingGroupRecommendationsInput, opts ...request.Option) (*ExportAutoScalingGroupRecommendationsOutput, error) {
	req, out := c.ExportAutoScalingGroupRecommendationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opExportEBSVolumeRecommendations = "ExportEBSVolumeRecommendations"

// ExportEBSVolumeRecommendationsRequest generates a "aws/request.Request" representing the
// client's request for the ExportEBSVolumeRecommendations 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 ExportEBSVolumeRecommendations for more information on using the ExportEBSVolumeRecommendations
// 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 ExportEBSVolumeRecommendationsRequest method.
//	req, resp := client.ExportEBSVolumeRecommendationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ExportEBSVolumeRecommendations
func (c *ComputeOptimizer) ExportEBSVolumeRecommendationsRequest(input *ExportEBSVolumeRecommendationsInput) (req *request.Request, output *ExportEBSVolumeRecommendationsOutput) {
	op := &request.Operation{
		Name:       opExportEBSVolumeRecommendations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ExportEBSVolumeRecommendationsInput{}
	}

	output = &ExportEBSVolumeRecommendationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ExportEBSVolumeRecommendations API operation for AWS Compute Optimizer.
//
// Exports optimization recommendations for Amazon EBS volumes.
//
// Recommendations are exported in a comma-separated values (.csv) file, and
// its metadata in a JavaScript Object Notation (JSON) (.json) file, to an existing
// Amazon Simple Storage Service (Amazon S3) bucket that you specify. For more
// information, see Exporting Recommendations (https://docs.aws.amazon.com/compute-optimizer/latest/ug/exporting-recommendations.html)
// in the Compute Optimizer User Guide.
//
// You can have only one Amazon EBS volume export job in progress per Amazon
// Web Services Region.
//
// 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 Compute Optimizer's
// API operation ExportEBSVolumeRecommendations for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - LimitExceededException
//     The request exceeds a limit of the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ExportEBSVolumeRecommendations
func (c *ComputeOptimizer) ExportEBSVolumeRecommendations(input *ExportEBSVolumeRecommendationsInput) (*ExportEBSVolumeRecommendationsOutput, error) {
	req, out := c.ExportEBSVolumeRecommendationsRequest(input)
	return out, req.Send()
}

// ExportEBSVolumeRecommendationsWithContext is the same as ExportEBSVolumeRecommendations with the addition of
// the ability to pass a context and additional request options.
//
// See ExportEBSVolumeRecommendations 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 *ComputeOptimizer) ExportEBSVolumeRecommendationsWithContext(ctx aws.Context, input *ExportEBSVolumeRecommendationsInput, opts ...request.Option) (*ExportEBSVolumeRecommendationsOutput, error) {
	req, out := c.ExportEBSVolumeRecommendationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opExportEC2InstanceRecommendations = "ExportEC2InstanceRecommendations"

// ExportEC2InstanceRecommendationsRequest generates a "aws/request.Request" representing the
// client's request for the ExportEC2InstanceRecommendations 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 ExportEC2InstanceRecommendations for more information on using the ExportEC2InstanceRecommendations
// 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 ExportEC2InstanceRecommendationsRequest method.
//	req, resp := client.ExportEC2InstanceRecommendationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ExportEC2InstanceRecommendations
func (c *ComputeOptimizer) ExportEC2InstanceRecommendationsRequest(input *ExportEC2InstanceRecommendationsInput) (req *request.Request, output *ExportEC2InstanceRecommendationsOutput) {
	op := &request.Operation{
		Name:       opExportEC2InstanceRecommendations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ExportEC2InstanceRecommendationsInput{}
	}

	output = &ExportEC2InstanceRecommendationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ExportEC2InstanceRecommendations API operation for AWS Compute Optimizer.
//
// Exports optimization recommendations for Amazon EC2 instances.
//
// Recommendations are exported in a comma-separated values (.csv) file, and
// its metadata in a JavaScript Object Notation (JSON) (.json) file, to an existing
// Amazon Simple Storage Service (Amazon S3) bucket that you specify. For more
// information, see Exporting Recommendations (https://docs.aws.amazon.com/compute-optimizer/latest/ug/exporting-recommendations.html)
// in the Compute Optimizer User Guide.
//
// You can have only one Amazon EC2 instance export job in progress per Amazon
// Web Services Region.
//
// 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 Compute Optimizer's
// API operation ExportEC2InstanceRecommendations for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - LimitExceededException
//     The request exceeds a limit of the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ExportEC2InstanceRecommendations
func (c *ComputeOptimizer) ExportEC2InstanceRecommendations(input *ExportEC2InstanceRecommendationsInput) (*ExportEC2InstanceRecommendationsOutput, error) {
	req, out := c.ExportEC2InstanceRecommendationsRequest(input)
	return out, req.Send()
}

// ExportEC2InstanceRecommendationsWithContext is the same as ExportEC2InstanceRecommendations with the addition of
// the ability to pass a context and additional request options.
//
// See ExportEC2InstanceRecommendations 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 *ComputeOptimizer) ExportEC2InstanceRecommendationsWithContext(ctx aws.Context, input *ExportEC2InstanceRecommendationsInput, opts ...request.Option) (*ExportEC2InstanceRecommendationsOutput, error) {
	req, out := c.ExportEC2InstanceRecommendationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opExportECSServiceRecommendations = "ExportECSServiceRecommendations"

// ExportECSServiceRecommendationsRequest generates a "aws/request.Request" representing the
// client's request for the ExportECSServiceRecommendations 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 ExportECSServiceRecommendations for more information on using the ExportECSServiceRecommendations
// 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 ExportECSServiceRecommendationsRequest method.
//	req, resp := client.ExportECSServiceRecommendationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ExportECSServiceRecommendations
func (c *ComputeOptimizer) ExportECSServiceRecommendationsRequest(input *ExportECSServiceRecommendationsInput) (req *request.Request, output *ExportECSServiceRecommendationsOutput) {
	op := &request.Operation{
		Name:       opExportECSServiceRecommendations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ExportECSServiceRecommendationsInput{}
	}

	output = &ExportECSServiceRecommendationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ExportECSServiceRecommendations API operation for AWS Compute Optimizer.
//
// Exports optimization recommendations for Amazon ECS services on Fargate.
//
// Recommendations are exported in a CSV file, and its metadata in a JSON file,
// to an existing Amazon Simple Storage Service (Amazon S3) bucket that you
// specify. For more information, see Exporting Recommendations (https://docs.aws.amazon.com/compute-optimizer/latest/ug/exporting-recommendations.html)
// in the Compute Optimizer User Guide.
//
// You can only have one Amazon ECS service export job in progress per Amazon
// Web Services Region.
//
// 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 Compute Optimizer's
// API operation ExportECSServiceRecommendations for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - LimitExceededException
//     The request exceeds a limit of the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ExportECSServiceRecommendations
func (c *ComputeOptimizer) ExportECSServiceRecommendations(input *ExportECSServiceRecommendationsInput) (*ExportECSServiceRecommendationsOutput, error) {
	req, out := c.ExportECSServiceRecommendationsRequest(input)
	return out, req.Send()
}

// ExportECSServiceRecommendationsWithContext is the same as ExportECSServiceRecommendations with the addition of
// the ability to pass a context and additional request options.
//
// See ExportECSServiceRecommendations 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 *ComputeOptimizer) ExportECSServiceRecommendationsWithContext(ctx aws.Context, input *ExportECSServiceRecommendationsInput, opts ...request.Option) (*ExportECSServiceRecommendationsOutput, error) {
	req, out := c.ExportECSServiceRecommendationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opExportLambdaFunctionRecommendations = "ExportLambdaFunctionRecommendations"

// ExportLambdaFunctionRecommendationsRequest generates a "aws/request.Request" representing the
// client's request for the ExportLambdaFunctionRecommendations 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 ExportLambdaFunctionRecommendations for more information on using the ExportLambdaFunctionRecommendations
// 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 ExportLambdaFunctionRecommendationsRequest method.
//	req, resp := client.ExportLambdaFunctionRecommendationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ExportLambdaFunctionRecommendations
func (c *ComputeOptimizer) ExportLambdaFunctionRecommendationsRequest(input *ExportLambdaFunctionRecommendationsInput) (req *request.Request, output *ExportLambdaFunctionRecommendationsOutput) {
	op := &request.Operation{
		Name:       opExportLambdaFunctionRecommendations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ExportLambdaFunctionRecommendationsInput{}
	}

	output = &ExportLambdaFunctionRecommendationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ExportLambdaFunctionRecommendations API operation for AWS Compute Optimizer.
//
// Exports optimization recommendations for Lambda functions.
//
// Recommendations are exported in a comma-separated values (.csv) file, and
// its metadata in a JavaScript Object Notation (JSON) (.json) file, to an existing
// Amazon Simple Storage Service (Amazon S3) bucket that you specify. For more
// information, see Exporting Recommendations (https://docs.aws.amazon.com/compute-optimizer/latest/ug/exporting-recommendations.html)
// in the Compute Optimizer User Guide.
//
// You can have only one Lambda function export job in progress per Amazon Web
// Services Region.
//
// 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 Compute Optimizer's
// API operation ExportLambdaFunctionRecommendations for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - LimitExceededException
//     The request exceeds a limit of the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ExportLambdaFunctionRecommendations
func (c *ComputeOptimizer) ExportLambdaFunctionRecommendations(input *ExportLambdaFunctionRecommendationsInput) (*ExportLambdaFunctionRecommendationsOutput, error) {
	req, out := c.ExportLambdaFunctionRecommendationsRequest(input)
	return out, req.Send()
}

// ExportLambdaFunctionRecommendationsWithContext is the same as ExportLambdaFunctionRecommendations with the addition of
// the ability to pass a context and additional request options.
//
// See ExportLambdaFunctionRecommendations 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 *ComputeOptimizer) ExportLambdaFunctionRecommendationsWithContext(ctx aws.Context, input *ExportLambdaFunctionRecommendationsInput, opts ...request.Option) (*ExportLambdaFunctionRecommendationsOutput, error) {
	req, out := c.ExportLambdaFunctionRecommendationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opExportLicenseRecommendations = "ExportLicenseRecommendations"

// ExportLicenseRecommendationsRequest generates a "aws/request.Request" representing the
// client's request for the ExportLicenseRecommendations 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 ExportLicenseRecommendations for more information on using the ExportLicenseRecommendations
// 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 ExportLicenseRecommendationsRequest method.
//	req, resp := client.ExportLicenseRecommendationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ExportLicenseRecommendations
func (c *ComputeOptimizer) ExportLicenseRecommendationsRequest(input *ExportLicenseRecommendationsInput) (req *request.Request, output *ExportLicenseRecommendationsOutput) {
	op := &request.Operation{
		Name:       opExportLicenseRecommendations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ExportLicenseRecommendationsInput{}
	}

	output = &ExportLicenseRecommendationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ExportLicenseRecommendations API operation for AWS Compute Optimizer.
//
// Export optimization recommendations for your licenses.
//
// Recommendations are exported in a comma-separated values (CSV) file, and
// its metadata in a JavaScript Object Notation (JSON) file, to an existing
// Amazon Simple Storage Service (Amazon S3) bucket that you specify. For more
// information, see Exporting Recommendations (https://docs.aws.amazon.com/compute-optimizer/latest/ug/exporting-recommendations.html)
// in the Compute Optimizer User Guide.
//
// You can have only one license export job in progress per Amazon Web Services
// Region.
//
// 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 Compute Optimizer's
// API operation ExportLicenseRecommendations for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - LimitExceededException
//     The request exceeds a limit of the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/ExportLicenseRecommendations
func (c *ComputeOptimizer) ExportLicenseRecommendations(input *ExportLicenseRecommendationsInput) (*ExportLicenseRecommendationsOutput, error) {
	req, out := c.ExportLicenseRecommendationsRequest(input)
	return out, req.Send()
}

// ExportLicenseRecommendationsWithContext is the same as ExportLicenseRecommendations with the addition of
// the ability to pass a context and additional request options.
//
// See ExportLicenseRecommendations 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 *ComputeOptimizer) ExportLicenseRecommendationsWithContext(ctx aws.Context, input *ExportLicenseRecommendationsInput, opts ...request.Option) (*ExportLicenseRecommendationsOutput, error) {
	req, out := c.ExportLicenseRecommendationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetAutoScalingGroupRecommendations = "GetAutoScalingGroupRecommendations"

// GetAutoScalingGroupRecommendationsRequest generates a "aws/request.Request" representing the
// client's request for the GetAutoScalingGroupRecommendations 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 GetAutoScalingGroupRecommendations for more information on using the GetAutoScalingGroupRecommendations
// 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 GetAutoScalingGroupRecommendationsRequest method.
//	req, resp := client.GetAutoScalingGroupRecommendationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetAutoScalingGroupRecommendations
func (c *ComputeOptimizer) GetAutoScalingGroupRecommendationsRequest(input *GetAutoScalingGroupRecommendationsInput) (req *request.Request, output *GetAutoScalingGroupRecommendationsOutput) {
	op := &request.Operation{
		Name:       opGetAutoScalingGroupRecommendations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetAutoScalingGroupRecommendationsInput{}
	}

	output = &GetAutoScalingGroupRecommendationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetAutoScalingGroupRecommendations API operation for AWS Compute Optimizer.
//
// Returns Auto Scaling group recommendations.
//
// Compute Optimizer generates recommendations for Amazon EC2 Auto Scaling groups
// that meet a specific set of requirements. For more information, see the Supported
// resources and requirements (https://docs.aws.amazon.com/compute-optimizer/latest/ug/requirements.html)
// in the Compute Optimizer User Guide.
//
// 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 Compute Optimizer's
// API operation GetAutoScalingGroupRecommendations for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - ResourceNotFoundException
//     A resource that is required for the action doesn't exist.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetAutoScalingGroupRecommendations
func (c *ComputeOptimizer) GetAutoScalingGroupRecommendations(input *GetAutoScalingGroupRecommendationsInput) (*GetAutoScalingGroupRecommendationsOutput, error) {
	req, out := c.GetAutoScalingGroupRecommendationsRequest(input)
	return out, req.Send()
}

// GetAutoScalingGroupRecommendationsWithContext is the same as GetAutoScalingGroupRecommendations with the addition of
// the ability to pass a context and additional request options.
//
// See GetAutoScalingGroupRecommendations 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 *ComputeOptimizer) GetAutoScalingGroupRecommendationsWithContext(ctx aws.Context, input *GetAutoScalingGroupRecommendationsInput, opts ...request.Option) (*GetAutoScalingGroupRecommendationsOutput, error) {
	req, out := c.GetAutoScalingGroupRecommendationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetEBSVolumeRecommendations = "GetEBSVolumeRecommendations"

// GetEBSVolumeRecommendationsRequest generates a "aws/request.Request" representing the
// client's request for the GetEBSVolumeRecommendations 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 GetEBSVolumeRecommendations for more information on using the GetEBSVolumeRecommendations
// 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 GetEBSVolumeRecommendationsRequest method.
//	req, resp := client.GetEBSVolumeRecommendationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetEBSVolumeRecommendations
func (c *ComputeOptimizer) GetEBSVolumeRecommendationsRequest(input *GetEBSVolumeRecommendationsInput) (req *request.Request, output *GetEBSVolumeRecommendationsOutput) {
	op := &request.Operation{
		Name:       opGetEBSVolumeRecommendations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetEBSVolumeRecommendationsInput{}
	}

	output = &GetEBSVolumeRecommendationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetEBSVolumeRecommendations API operation for AWS Compute Optimizer.
//
// Returns Amazon Elastic Block Store (Amazon EBS) volume recommendations.
//
// Compute Optimizer generates recommendations for Amazon EBS volumes that meet
// a specific set of requirements. For more information, see the Supported resources
// and requirements (https://docs.aws.amazon.com/compute-optimizer/latest/ug/requirements.html)
// in the Compute Optimizer User Guide.
//
// 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 Compute Optimizer's
// API operation GetEBSVolumeRecommendations for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - ResourceNotFoundException
//     A resource that is required for the action doesn't exist.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetEBSVolumeRecommendations
func (c *ComputeOptimizer) GetEBSVolumeRecommendations(input *GetEBSVolumeRecommendationsInput) (*GetEBSVolumeRecommendationsOutput, error) {
	req, out := c.GetEBSVolumeRecommendationsRequest(input)
	return out, req.Send()
}

// GetEBSVolumeRecommendationsWithContext is the same as GetEBSVolumeRecommendations with the addition of
// the ability to pass a context and additional request options.
//
// See GetEBSVolumeRecommendations 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 *ComputeOptimizer) GetEBSVolumeRecommendationsWithContext(ctx aws.Context, input *GetEBSVolumeRecommendationsInput, opts ...request.Option) (*GetEBSVolumeRecommendationsOutput, error) {
	req, out := c.GetEBSVolumeRecommendationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetEC2InstanceRecommendations = "GetEC2InstanceRecommendations"

// GetEC2InstanceRecommendationsRequest generates a "aws/request.Request" representing the
// client's request for the GetEC2InstanceRecommendations 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 GetEC2InstanceRecommendations for more information on using the GetEC2InstanceRecommendations
// 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 GetEC2InstanceRecommendationsRequest method.
//	req, resp := client.GetEC2InstanceRecommendationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetEC2InstanceRecommendations
func (c *ComputeOptimizer) GetEC2InstanceRecommendationsRequest(input *GetEC2InstanceRecommendationsInput) (req *request.Request, output *GetEC2InstanceRecommendationsOutput) {
	op := &request.Operation{
		Name:       opGetEC2InstanceRecommendations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetEC2InstanceRecommendationsInput{}
	}

	output = &GetEC2InstanceRecommendationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetEC2InstanceRecommendations API operation for AWS Compute Optimizer.
//
// Returns Amazon EC2 instance recommendations.
//
// Compute Optimizer generates recommendations for Amazon Elastic Compute Cloud
// (Amazon EC2) instances that meet a specific set of requirements. For more
// information, see the Supported resources and requirements (https://docs.aws.amazon.com/compute-optimizer/latest/ug/requirements.html)
// in the Compute Optimizer User Guide.
//
// 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 Compute Optimizer's
// API operation GetEC2InstanceRecommendations for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - ResourceNotFoundException
//     A resource that is required for the action doesn't exist.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetEC2InstanceRecommendations
func (c *ComputeOptimizer) GetEC2InstanceRecommendations(input *GetEC2InstanceRecommendationsInput) (*GetEC2InstanceRecommendationsOutput, error) {
	req, out := c.GetEC2InstanceRecommendationsRequest(input)
	return out, req.Send()
}

// GetEC2InstanceRecommendationsWithContext is the same as GetEC2InstanceRecommendations with the addition of
// the ability to pass a context and additional request options.
//
// See GetEC2InstanceRecommendations 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 *ComputeOptimizer) GetEC2InstanceRecommendationsWithContext(ctx aws.Context, input *GetEC2InstanceRecommendationsInput, opts ...request.Option) (*GetEC2InstanceRecommendationsOutput, error) {
	req, out := c.GetEC2InstanceRecommendationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetEC2RecommendationProjectedMetrics = "GetEC2RecommendationProjectedMetrics"

// GetEC2RecommendationProjectedMetricsRequest generates a "aws/request.Request" representing the
// client's request for the GetEC2RecommendationProjectedMetrics 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 GetEC2RecommendationProjectedMetrics for more information on using the GetEC2RecommendationProjectedMetrics
// 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 GetEC2RecommendationProjectedMetricsRequest method.
//	req, resp := client.GetEC2RecommendationProjectedMetricsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetEC2RecommendationProjectedMetrics
func (c *ComputeOptimizer) GetEC2RecommendationProjectedMetricsRequest(input *GetEC2RecommendationProjectedMetricsInput) (req *request.Request, output *GetEC2RecommendationProjectedMetricsOutput) {
	op := &request.Operation{
		Name:       opGetEC2RecommendationProjectedMetrics,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetEC2RecommendationProjectedMetricsInput{}
	}

	output = &GetEC2RecommendationProjectedMetricsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetEC2RecommendationProjectedMetrics API operation for AWS Compute Optimizer.
//
// Returns the projected utilization metrics of Amazon EC2 instance recommendations.
//
// The Cpu and Memory metrics are the only projected utilization metrics returned
// when you run this action. Additionally, the Memory metric is returned only
// for resources that have the unified CloudWatch agent installed on them. For
// more information, see Enabling Memory Utilization with the CloudWatch Agent
// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent).
//
// 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 Compute Optimizer's
// API operation GetEC2RecommendationProjectedMetrics for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - ResourceNotFoundException
//     A resource that is required for the action doesn't exist.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetEC2RecommendationProjectedMetrics
func (c *ComputeOptimizer) GetEC2RecommendationProjectedMetrics(input *GetEC2RecommendationProjectedMetricsInput) (*GetEC2RecommendationProjectedMetricsOutput, error) {
	req, out := c.GetEC2RecommendationProjectedMetricsRequest(input)
	return out, req.Send()
}

// GetEC2RecommendationProjectedMetricsWithContext is the same as GetEC2RecommendationProjectedMetrics with the addition of
// the ability to pass a context and additional request options.
//
// See GetEC2RecommendationProjectedMetrics 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 *ComputeOptimizer) GetEC2RecommendationProjectedMetricsWithContext(ctx aws.Context, input *GetEC2RecommendationProjectedMetricsInput, opts ...request.Option) (*GetEC2RecommendationProjectedMetricsOutput, error) {
	req, out := c.GetEC2RecommendationProjectedMetricsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetECSServiceRecommendationProjectedMetrics = "GetECSServiceRecommendationProjectedMetrics"

// GetECSServiceRecommendationProjectedMetricsRequest generates a "aws/request.Request" representing the
// client's request for the GetECSServiceRecommendationProjectedMetrics 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 GetECSServiceRecommendationProjectedMetrics for more information on using the GetECSServiceRecommendationProjectedMetrics
// 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 GetECSServiceRecommendationProjectedMetricsRequest method.
//	req, resp := client.GetECSServiceRecommendationProjectedMetricsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetECSServiceRecommendationProjectedMetrics
func (c *ComputeOptimizer) GetECSServiceRecommendationProjectedMetricsRequest(input *GetECSServiceRecommendationProjectedMetricsInput) (req *request.Request, output *GetECSServiceRecommendationProjectedMetricsOutput) {
	op := &request.Operation{
		Name:       opGetECSServiceRecommendationProjectedMetrics,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetECSServiceRecommendationProjectedMetricsInput{}
	}

	output = &GetECSServiceRecommendationProjectedMetricsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetECSServiceRecommendationProjectedMetrics API operation for AWS Compute Optimizer.
//
// Returns the projected metrics of Amazon ECS service recommendations.
//
// 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 Compute Optimizer's
// API operation GetECSServiceRecommendationProjectedMetrics for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - ResourceNotFoundException
//     A resource that is required for the action doesn't exist.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetECSServiceRecommendationProjectedMetrics
func (c *ComputeOptimizer) GetECSServiceRecommendationProjectedMetrics(input *GetECSServiceRecommendationProjectedMetricsInput) (*GetECSServiceRecommendationProjectedMetricsOutput, error) {
	req, out := c.GetECSServiceRecommendationProjectedMetricsRequest(input)
	return out, req.Send()
}

// GetECSServiceRecommendationProjectedMetricsWithContext is the same as GetECSServiceRecommendationProjectedMetrics with the addition of
// the ability to pass a context and additional request options.
//
// See GetECSServiceRecommendationProjectedMetrics 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 *ComputeOptimizer) GetECSServiceRecommendationProjectedMetricsWithContext(ctx aws.Context, input *GetECSServiceRecommendationProjectedMetricsInput, opts ...request.Option) (*GetECSServiceRecommendationProjectedMetricsOutput, error) {
	req, out := c.GetECSServiceRecommendationProjectedMetricsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetECSServiceRecommendations = "GetECSServiceRecommendations"

// GetECSServiceRecommendationsRequest generates a "aws/request.Request" representing the
// client's request for the GetECSServiceRecommendations 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 GetECSServiceRecommendations for more information on using the GetECSServiceRecommendations
// 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 GetECSServiceRecommendationsRequest method.
//	req, resp := client.GetECSServiceRecommendationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetECSServiceRecommendations
func (c *ComputeOptimizer) GetECSServiceRecommendationsRequest(input *GetECSServiceRecommendationsInput) (req *request.Request, output *GetECSServiceRecommendationsOutput) {
	op := &request.Operation{
		Name:       opGetECSServiceRecommendations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetECSServiceRecommendationsInput{}
	}

	output = &GetECSServiceRecommendationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetECSServiceRecommendations API operation for AWS Compute Optimizer.
//
// Returns Amazon ECS service recommendations.
//
// Compute Optimizer generates recommendations for Amazon ECS services on Fargate
// that meet a specific set of requirements. For more information, see the Supported
// resources and requirements (https://docs.aws.amazon.com/compute-optimizer/latest/ug/requirements.html)
// in the Compute Optimizer User Guide.
//
// 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 Compute Optimizer's
// API operation GetECSServiceRecommendations for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - ResourceNotFoundException
//     A resource that is required for the action doesn't exist.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetECSServiceRecommendations
func (c *ComputeOptimizer) GetECSServiceRecommendations(input *GetECSServiceRecommendationsInput) (*GetECSServiceRecommendationsOutput, error) {
	req, out := c.GetECSServiceRecommendationsRequest(input)
	return out, req.Send()
}

// GetECSServiceRecommendationsWithContext is the same as GetECSServiceRecommendations with the addition of
// the ability to pass a context and additional request options.
//
// See GetECSServiceRecommendations 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 *ComputeOptimizer) GetECSServiceRecommendationsWithContext(ctx aws.Context, input *GetECSServiceRecommendationsInput, opts ...request.Option) (*GetECSServiceRecommendationsOutput, error) {
	req, out := c.GetECSServiceRecommendationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetEffectiveRecommendationPreferences = "GetEffectiveRecommendationPreferences"

// GetEffectiveRecommendationPreferencesRequest generates a "aws/request.Request" representing the
// client's request for the GetEffectiveRecommendationPreferences 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 GetEffectiveRecommendationPreferences for more information on using the GetEffectiveRecommendationPreferences
// 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 GetEffectiveRecommendationPreferencesRequest method.
//	req, resp := client.GetEffectiveRecommendationPreferencesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetEffectiveRecommendationPreferences
func (c *ComputeOptimizer) GetEffectiveRecommendationPreferencesRequest(input *GetEffectiveRecommendationPreferencesInput) (req *request.Request, output *GetEffectiveRecommendationPreferencesOutput) {
	op := &request.Operation{
		Name:       opGetEffectiveRecommendationPreferences,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetEffectiveRecommendationPreferencesInput{}
	}

	output = &GetEffectiveRecommendationPreferencesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetEffectiveRecommendationPreferences API operation for AWS Compute Optimizer.
//
// Returns the recommendation preferences that are in effect for a given resource,
// such as enhanced infrastructure metrics. Considers all applicable preferences
// that you might have set at the resource, account, and organization level.
//
// When you create a recommendation preference, you can set its status to Active
// or Inactive. Use this action to view the recommendation preferences that
// are in effect, or Active.
//
// 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 Compute Optimizer's
// API operation GetEffectiveRecommendationPreferences for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - ResourceNotFoundException
//     A resource that is required for the action doesn't exist.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetEffectiveRecommendationPreferences
func (c *ComputeOptimizer) GetEffectiveRecommendationPreferences(input *GetEffectiveRecommendationPreferencesInput) (*GetEffectiveRecommendationPreferencesOutput, error) {
	req, out := c.GetEffectiveRecommendationPreferencesRequest(input)
	return out, req.Send()
}

// GetEffectiveRecommendationPreferencesWithContext is the same as GetEffectiveRecommendationPreferences with the addition of
// the ability to pass a context and additional request options.
//
// See GetEffectiveRecommendationPreferences 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 *ComputeOptimizer) GetEffectiveRecommendationPreferencesWithContext(ctx aws.Context, input *GetEffectiveRecommendationPreferencesInput, opts ...request.Option) (*GetEffectiveRecommendationPreferencesOutput, error) {
	req, out := c.GetEffectiveRecommendationPreferencesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetEnrollmentStatus = "GetEnrollmentStatus"

// GetEnrollmentStatusRequest generates a "aws/request.Request" representing the
// client's request for the GetEnrollmentStatus 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 GetEnrollmentStatus for more information on using the GetEnrollmentStatus
// 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 GetEnrollmentStatusRequest method.
//	req, resp := client.GetEnrollmentStatusRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetEnrollmentStatus
func (c *ComputeOptimizer) GetEnrollmentStatusRequest(input *GetEnrollmentStatusInput) (req *request.Request, output *GetEnrollmentStatusOutput) {
	op := &request.Operation{
		Name:       opGetEnrollmentStatus,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetEnrollmentStatusInput{}
	}

	output = &GetEnrollmentStatusOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetEnrollmentStatus API operation for AWS Compute Optimizer.
//
// Returns the enrollment (opt in) status of an account to the Compute Optimizer
// service.
//
// If the account is the management account of an organization, this action
// also confirms the enrollment status of member accounts of the organization.
// Use the GetEnrollmentStatusesForOrganization action to get detailed information
// about the enrollment status of member accounts of an organization.
//
// 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 Compute Optimizer's
// API operation GetEnrollmentStatus for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetEnrollmentStatus
func (c *ComputeOptimizer) GetEnrollmentStatus(input *GetEnrollmentStatusInput) (*GetEnrollmentStatusOutput, error) {
	req, out := c.GetEnrollmentStatusRequest(input)
	return out, req.Send()
}

// GetEnrollmentStatusWithContext is the same as GetEnrollmentStatus with the addition of
// the ability to pass a context and additional request options.
//
// See GetEnrollmentStatus 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 *ComputeOptimizer) GetEnrollmentStatusWithContext(ctx aws.Context, input *GetEnrollmentStatusInput, opts ...request.Option) (*GetEnrollmentStatusOutput, error) {
	req, out := c.GetEnrollmentStatusRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetEnrollmentStatusesForOrganization = "GetEnrollmentStatusesForOrganization"

// GetEnrollmentStatusesForOrganizationRequest generates a "aws/request.Request" representing the
// client's request for the GetEnrollmentStatusesForOrganization 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 GetEnrollmentStatusesForOrganization for more information on using the GetEnrollmentStatusesForOrganization
// 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 GetEnrollmentStatusesForOrganizationRequest method.
//	req, resp := client.GetEnrollmentStatusesForOrganizationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetEnrollmentStatusesForOrganization
func (c *ComputeOptimizer) GetEnrollmentStatusesForOrganizationRequest(input *GetEnrollmentStatusesForOrganizationInput) (req *request.Request, output *GetEnrollmentStatusesForOrganizationOutput) {
	op := &request.Operation{
		Name:       opGetEnrollmentStatusesForOrganization,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetEnrollmentStatusesForOrganizationInput{}
	}

	output = &GetEnrollmentStatusesForOrganizationOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetEnrollmentStatusesForOrganization API operation for AWS Compute Optimizer.
//
// Returns the Compute Optimizer enrollment (opt-in) status of organization
// member accounts, if your account is an organization management account.
//
// To get the enrollment status of standalone accounts, use the GetEnrollmentStatus
// action.
//
// 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 Compute Optimizer's
// API operation GetEnrollmentStatusesForOrganization for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetEnrollmentStatusesForOrganization
func (c *ComputeOptimizer) GetEnrollmentStatusesForOrganization(input *GetEnrollmentStatusesForOrganizationInput) (*GetEnrollmentStatusesForOrganizationOutput, error) {
	req, out := c.GetEnrollmentStatusesForOrganizationRequest(input)
	return out, req.Send()
}

// GetEnrollmentStatusesForOrganizationWithContext is the same as GetEnrollmentStatusesForOrganization with the addition of
// the ability to pass a context and additional request options.
//
// See GetEnrollmentStatusesForOrganization 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 *ComputeOptimizer) GetEnrollmentStatusesForOrganizationWithContext(ctx aws.Context, input *GetEnrollmentStatusesForOrganizationInput, opts ...request.Option) (*GetEnrollmentStatusesForOrganizationOutput, error) {
	req, out := c.GetEnrollmentStatusesForOrganizationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// GetEnrollmentStatusesForOrganizationPages iterates over the pages of a GetEnrollmentStatusesForOrganization operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See GetEnrollmentStatusesForOrganization method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//	// Example iterating over at most 3 pages of a GetEnrollmentStatusesForOrganization operation.
//	pageNum := 0
//	err := client.GetEnrollmentStatusesForOrganizationPages(params,
//	    func(page *computeoptimizer.GetEnrollmentStatusesForOrganizationOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *ComputeOptimizer) GetEnrollmentStatusesForOrganizationPages(input *GetEnrollmentStatusesForOrganizationInput, fn func(*GetEnrollmentStatusesForOrganizationOutput, bool) bool) error {
	return c.GetEnrollmentStatusesForOrganizationPagesWithContext(aws.BackgroundContext(), input, fn)
}

// GetEnrollmentStatusesForOrganizationPagesWithContext same as GetEnrollmentStatusesForOrganizationPages except
// it takes a Context and allows setting request options on the pages.
//
// 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 *ComputeOptimizer) GetEnrollmentStatusesForOrganizationPagesWithContext(ctx aws.Context, input *GetEnrollmentStatusesForOrganizationInput, fn func(*GetEnrollmentStatusesForOrganizationOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *GetEnrollmentStatusesForOrganizationInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.GetEnrollmentStatusesForOrganizationRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*GetEnrollmentStatusesForOrganizationOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opGetLambdaFunctionRecommendations = "GetLambdaFunctionRecommendations"

// GetLambdaFunctionRecommendationsRequest generates a "aws/request.Request" representing the
// client's request for the GetLambdaFunctionRecommendations 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 GetLambdaFunctionRecommendations for more information on using the GetLambdaFunctionRecommendations
// 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 GetLambdaFunctionRecommendationsRequest method.
//	req, resp := client.GetLambdaFunctionRecommendationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetLambdaFunctionRecommendations
func (c *ComputeOptimizer) GetLambdaFunctionRecommendationsRequest(input *GetLambdaFunctionRecommendationsInput) (req *request.Request, output *GetLambdaFunctionRecommendationsOutput) {
	op := &request.Operation{
		Name:       opGetLambdaFunctionRecommendations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetLambdaFunctionRecommendationsInput{}
	}

	output = &GetLambdaFunctionRecommendationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetLambdaFunctionRecommendations API operation for AWS Compute Optimizer.
//
// Returns Lambda function recommendations.
//
// Compute Optimizer generates recommendations for functions that meet a specific
// set of requirements. For more information, see the Supported resources and
// requirements (https://docs.aws.amazon.com/compute-optimizer/latest/ug/requirements.html)
// in the Compute Optimizer User Guide.
//
// 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 Compute Optimizer's
// API operation GetLambdaFunctionRecommendations for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - LimitExceededException
//     The request exceeds a limit of the service.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetLambdaFunctionRecommendations
func (c *ComputeOptimizer) GetLambdaFunctionRecommendations(input *GetLambdaFunctionRecommendationsInput) (*GetLambdaFunctionRecommendationsOutput, error) {
	req, out := c.GetLambdaFunctionRecommendationsRequest(input)
	return out, req.Send()
}

// GetLambdaFunctionRecommendationsWithContext is the same as GetLambdaFunctionRecommendations with the addition of
// the ability to pass a context and additional request options.
//
// See GetLambdaFunctionRecommendations 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 *ComputeOptimizer) GetLambdaFunctionRecommendationsWithContext(ctx aws.Context, input *GetLambdaFunctionRecommendationsInput, opts ...request.Option) (*GetLambdaFunctionRecommendationsOutput, error) {
	req, out := c.GetLambdaFunctionRecommendationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// GetLambdaFunctionRecommendationsPages iterates over the pages of a GetLambdaFunctionRecommendations operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See GetLambdaFunctionRecommendations method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//	// Example iterating over at most 3 pages of a GetLambdaFunctionRecommendations operation.
//	pageNum := 0
//	err := client.GetLambdaFunctionRecommendationsPages(params,
//	    func(page *computeoptimizer.GetLambdaFunctionRecommendationsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *ComputeOptimizer) GetLambdaFunctionRecommendationsPages(input *GetLambdaFunctionRecommendationsInput, fn func(*GetLambdaFunctionRecommendationsOutput, bool) bool) error {
	return c.GetLambdaFunctionRecommendationsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// GetLambdaFunctionRecommendationsPagesWithContext same as GetLambdaFunctionRecommendationsPages except
// it takes a Context and allows setting request options on the pages.
//
// 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 *ComputeOptimizer) GetLambdaFunctionRecommendationsPagesWithContext(ctx aws.Context, input *GetLambdaFunctionRecommendationsInput, fn func(*GetLambdaFunctionRecommendationsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *GetLambdaFunctionRecommendationsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.GetLambdaFunctionRecommendationsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*GetLambdaFunctionRecommendationsOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opGetLicenseRecommendations = "GetLicenseRecommendations"

// GetLicenseRecommendationsRequest generates a "aws/request.Request" representing the
// client's request for the GetLicenseRecommendations 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 GetLicenseRecommendations for more information on using the GetLicenseRecommendations
// 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 GetLicenseRecommendationsRequest method.
//	req, resp := client.GetLicenseRecommendationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetLicenseRecommendations
func (c *ComputeOptimizer) GetLicenseRecommendationsRequest(input *GetLicenseRecommendationsInput) (req *request.Request, output *GetLicenseRecommendationsOutput) {
	op := &request.Operation{
		Name:       opGetLicenseRecommendations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetLicenseRecommendationsInput{}
	}

	output = &GetLicenseRecommendationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetLicenseRecommendations API operation for AWS Compute Optimizer.
//
// Returns license recommendations for Amazon EC2 instances that run on a specific
// license.
//
// Compute Optimizer generates recommendations for licenses that meet a specific
// set of requirements. For more information, see the Supported resources and
// requirements (https://docs.aws.amazon.com/compute-optimizer/latest/ug/requirements.html)
// in the Compute Optimizer User Guide.
//
// 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 Compute Optimizer's
// API operation GetLicenseRecommendations for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - ResourceNotFoundException
//     A resource that is required for the action doesn't exist.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetLicenseRecommendations
func (c *ComputeOptimizer) GetLicenseRecommendations(input *GetLicenseRecommendationsInput) (*GetLicenseRecommendationsOutput, error) {
	req, out := c.GetLicenseRecommendationsRequest(input)
	return out, req.Send()
}

// GetLicenseRecommendationsWithContext is the same as GetLicenseRecommendations with the addition of
// the ability to pass a context and additional request options.
//
// See GetLicenseRecommendations 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 *ComputeOptimizer) GetLicenseRecommendationsWithContext(ctx aws.Context, input *GetLicenseRecommendationsInput, opts ...request.Option) (*GetLicenseRecommendationsOutput, error) {
	req, out := c.GetLicenseRecommendationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetRecommendationPreferences = "GetRecommendationPreferences"

// GetRecommendationPreferencesRequest generates a "aws/request.Request" representing the
// client's request for the GetRecommendationPreferences 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 GetRecommendationPreferences for more information on using the GetRecommendationPreferences
// 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 GetRecommendationPreferencesRequest method.
//	req, resp := client.GetRecommendationPreferencesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetRecommendationPreferences
func (c *ComputeOptimizer) GetRecommendationPreferencesRequest(input *GetRecommendationPreferencesInput) (req *request.Request, output *GetRecommendationPreferencesOutput) {
	op := &request.Operation{
		Name:       opGetRecommendationPreferences,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetRecommendationPreferencesInput{}
	}

	output = &GetRecommendationPreferencesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetRecommendationPreferences API operation for AWS Compute Optimizer.
//
// Returns existing recommendation preferences, such as enhanced infrastructure
// metrics.
//
// Use the scope parameter to specify which preferences to return. You can specify
// to return preferences for an organization, a specific account ID, or a specific
// EC2 instance or Auto Scaling group Amazon Resource Name (ARN).
//
// For more information, see Activating enhanced infrastructure metrics (https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html)
// in the Compute Optimizer User Guide.
//
// 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 Compute Optimizer's
// API operation GetRecommendationPreferences for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - ResourceNotFoundException
//     A resource that is required for the action doesn't exist.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetRecommendationPreferences
func (c *ComputeOptimizer) GetRecommendationPreferences(input *GetRecommendationPreferencesInput) (*GetRecommendationPreferencesOutput, error) {
	req, out := c.GetRecommendationPreferencesRequest(input)
	return out, req.Send()
}

// GetRecommendationPreferencesWithContext is the same as GetRecommendationPreferences with the addition of
// the ability to pass a context and additional request options.
//
// See GetRecommendationPreferences 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 *ComputeOptimizer) GetRecommendationPreferencesWithContext(ctx aws.Context, input *GetRecommendationPreferencesInput, opts ...request.Option) (*GetRecommendationPreferencesOutput, error) {
	req, out := c.GetRecommendationPreferencesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// GetRecommendationPreferencesPages iterates over the pages of a GetRecommendationPreferences operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See GetRecommendationPreferences method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//	// Example iterating over at most 3 pages of a GetRecommendationPreferences operation.
//	pageNum := 0
//	err := client.GetRecommendationPreferencesPages(params,
//	    func(page *computeoptimizer.GetRecommendationPreferencesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *ComputeOptimizer) GetRecommendationPreferencesPages(input *GetRecommendationPreferencesInput, fn func(*GetRecommendationPreferencesOutput, bool) bool) error {
	return c.GetRecommendationPreferencesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// GetRecommendationPreferencesPagesWithContext same as GetRecommendationPreferencesPages except
// it takes a Context and allows setting request options on the pages.
//
// 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 *ComputeOptimizer) GetRecommendationPreferencesPagesWithContext(ctx aws.Context, input *GetRecommendationPreferencesInput, fn func(*GetRecommendationPreferencesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *GetRecommendationPreferencesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.GetRecommendationPreferencesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*GetRecommendationPreferencesOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opGetRecommendationSummaries = "GetRecommendationSummaries"

// GetRecommendationSummariesRequest generates a "aws/request.Request" representing the
// client's request for the GetRecommendationSummaries 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 GetRecommendationSummaries for more information on using the GetRecommendationSummaries
// 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 GetRecommendationSummariesRequest method.
//	req, resp := client.GetRecommendationSummariesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetRecommendationSummaries
func (c *ComputeOptimizer) GetRecommendationSummariesRequest(input *GetRecommendationSummariesInput) (req *request.Request, output *GetRecommendationSummariesOutput) {
	op := &request.Operation{
		Name:       opGetRecommendationSummaries,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetRecommendationSummariesInput{}
	}

	output = &GetRecommendationSummariesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetRecommendationSummaries API operation for AWS Compute Optimizer.
//
// Returns the optimization findings for an account.
//
// It returns the number of:
//
//   - Amazon EC2 instances in an account that are Underprovisioned, Overprovisioned,
//     or Optimized.
//
//   - Auto Scaling groups in an account that are NotOptimized, or Optimized.
//
//   - Amazon EBS volumes in an account that are NotOptimized, or Optimized.
//
//   - Lambda functions in an account that are NotOptimized, or Optimized.
//
//   - Amazon ECS services in an account that are Underprovisioned, Overprovisioned,
//     or Optimized.
//
// 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 Compute Optimizer's
// API operation GetRecommendationSummaries for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/GetRecommendationSummaries
func (c *ComputeOptimizer) GetRecommendationSummaries(input *GetRecommendationSummariesInput) (*GetRecommendationSummariesOutput, error) {
	req, out := c.GetRecommendationSummariesRequest(input)
	return out, req.Send()
}

// GetRecommendationSummariesWithContext is the same as GetRecommendationSummaries with the addition of
// the ability to pass a context and additional request options.
//
// See GetRecommendationSummaries 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 *ComputeOptimizer) GetRecommendationSummariesWithContext(ctx aws.Context, input *GetRecommendationSummariesInput, opts ...request.Option) (*GetRecommendationSummariesOutput, error) {
	req, out := c.GetRecommendationSummariesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// GetRecommendationSummariesPages iterates over the pages of a GetRecommendationSummaries operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See GetRecommendationSummaries method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//	// Example iterating over at most 3 pages of a GetRecommendationSummaries operation.
//	pageNum := 0
//	err := client.GetRecommendationSummariesPages(params,
//	    func(page *computeoptimizer.GetRecommendationSummariesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *ComputeOptimizer) GetRecommendationSummariesPages(input *GetRecommendationSummariesInput, fn func(*GetRecommendationSummariesOutput, bool) bool) error {
	return c.GetRecommendationSummariesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// GetRecommendationSummariesPagesWithContext same as GetRecommendationSummariesPages except
// it takes a Context and allows setting request options on the pages.
//
// 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 *ComputeOptimizer) GetRecommendationSummariesPagesWithContext(ctx aws.Context, input *GetRecommendationSummariesInput, fn func(*GetRecommendationSummariesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *GetRecommendationSummariesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.GetRecommendationSummariesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*GetRecommendationSummariesOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opPutRecommendationPreferences = "PutRecommendationPreferences"

// PutRecommendationPreferencesRequest generates a "aws/request.Request" representing the
// client's request for the PutRecommendationPreferences 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 PutRecommendationPreferences for more information on using the PutRecommendationPreferences
// 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 PutRecommendationPreferencesRequest method.
//	req, resp := client.PutRecommendationPreferencesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/PutRecommendationPreferences
func (c *ComputeOptimizer) PutRecommendationPreferencesRequest(input *PutRecommendationPreferencesInput) (req *request.Request, output *PutRecommendationPreferencesOutput) {
	op := &request.Operation{
		Name:       opPutRecommendationPreferences,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &PutRecommendationPreferencesInput{}
	}

	output = &PutRecommendationPreferencesOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// PutRecommendationPreferences API operation for AWS Compute Optimizer.
//
// Creates a new recommendation preference or updates an existing recommendation
// preference, such as enhanced infrastructure metrics.
//
// For more information, see Activating enhanced infrastructure metrics (https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html)
// in the Compute Optimizer User Guide.
//
// 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 Compute Optimizer's
// API operation PutRecommendationPreferences for usage and error information.
//
// Returned Error Types:
//
//   - OptInRequiredException
//     The account is not opted in to Compute Optimizer.
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - ResourceNotFoundException
//     A resource that is required for the action doesn't exist.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/PutRecommendationPreferences
func (c *ComputeOptimizer) PutRecommendationPreferences(input *PutRecommendationPreferencesInput) (*PutRecommendationPreferencesOutput, error) {
	req, out := c.PutRecommendationPreferencesRequest(input)
	return out, req.Send()
}

// PutRecommendationPreferencesWithContext is the same as PutRecommendationPreferences with the addition of
// the ability to pass a context and additional request options.
//
// See PutRecommendationPreferences 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 *ComputeOptimizer) PutRecommendationPreferencesWithContext(ctx aws.Context, input *PutRecommendationPreferencesInput, opts ...request.Option) (*PutRecommendationPreferencesOutput, error) {
	req, out := c.PutRecommendationPreferencesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateEnrollmentStatus = "UpdateEnrollmentStatus"

// UpdateEnrollmentStatusRequest generates a "aws/request.Request" representing the
// client's request for the UpdateEnrollmentStatus 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 UpdateEnrollmentStatus for more information on using the UpdateEnrollmentStatus
// 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 UpdateEnrollmentStatusRequest method.
//	req, resp := client.UpdateEnrollmentStatusRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/UpdateEnrollmentStatus
func (c *ComputeOptimizer) UpdateEnrollmentStatusRequest(input *UpdateEnrollmentStatusInput) (req *request.Request, output *UpdateEnrollmentStatusOutput) {
	op := &request.Operation{
		Name:       opUpdateEnrollmentStatus,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateEnrollmentStatusInput{}
	}

	output = &UpdateEnrollmentStatusOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateEnrollmentStatus API operation for AWS Compute Optimizer.
//
// Updates the enrollment (opt in and opt out) status of an account to the Compute
// Optimizer service.
//
// If the account is a management account of an organization, this action can
// also be used to enroll member accounts of the organization.
//
// You must have the appropriate permissions to opt in to Compute Optimizer,
// to view its recommendations, and to opt out. For more information, see Controlling
// access with Amazon Web Services Identity and Access Management (https://docs.aws.amazon.com/compute-optimizer/latest/ug/security-iam.html)
// in the Compute Optimizer User Guide.
//
// When you opt in, Compute Optimizer automatically creates a service-linked
// role in your account to access its data. For more information, see Using
// Service-Linked Roles for Compute Optimizer (https://docs.aws.amazon.com/compute-optimizer/latest/ug/using-service-linked-roles.html)
// in the Compute Optimizer User Guide.
//
// 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 Compute Optimizer's
// API operation UpdateEnrollmentStatus for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     An internal error has occurred. Try your call again.
//
//   - ServiceUnavailableException
//     The request has failed due to a temporary failure of the server.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - InvalidParameterValueException
//     The value supplied for the input parameter is out of range or not valid.
//
//   - MissingAuthenticationToken
//     The request must contain either a valid (registered) Amazon Web Services
//     access key ID or X.509 certificate.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-2019-11-01/UpdateEnrollmentStatus
func (c *ComputeOptimizer) UpdateEnrollmentStatus(input *UpdateEnrollmentStatusInput) (*UpdateEnrollmentStatusOutput, error) {
	req, out := c.UpdateEnrollmentStatusRequest(input)
	return out, req.Send()
}

// UpdateEnrollmentStatusWithContext is the same as UpdateEnrollmentStatus with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateEnrollmentStatus 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 *ComputeOptimizer) UpdateEnrollmentStatusWithContext(ctx aws.Context, input *UpdateEnrollmentStatusInput, opts ...request.Option) (*UpdateEnrollmentStatusOutput, error) {
	req, out := c.UpdateEnrollmentStatusRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// You do not have sufficient access to perform this action.
type AccessDeniedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AccessDeniedException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AccessDeniedException) GoString() string {
	return s.String()
}

func newErrorAccessDeniedException(v protocol.ResponseMetadata) error {
	return &AccessDeniedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *AccessDeniedException) Code() string {
	return "AccessDeniedException"
}

// Message returns the exception's message.
func (s *AccessDeniedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *AccessDeniedException) OrigErr() error {
	return nil
}

func (s *AccessDeniedException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *AccessDeniedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *AccessDeniedException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Describes the enrollment status of an organization's member accounts in Compute
// Optimizer.
type AccountEnrollmentStatus struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID.
	AccountId *string `locationName:"accountId" type:"string"`

	// The Unix epoch timestamp, in seconds, of when the account enrollment status
	// was last updated.
	LastUpdatedTimestamp *time.Time `locationName:"lastUpdatedTimestamp" type:"timestamp"`

	// The account enrollment status.
	Status *string `locationName:"status" type:"string" enum:"Status"`

	// The reason for the account enrollment status.
	//
	// For example, an account might show a status of Pending because member accounts
	// of an organization require more time to be enrolled in the service.
	StatusReason *string `locationName:"statusReason" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AccountEnrollmentStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AccountEnrollmentStatus) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *AccountEnrollmentStatus) SetAccountId(v string) *AccountEnrollmentStatus {
	s.AccountId = &v
	return s
}

// SetLastUpdatedTimestamp sets the LastUpdatedTimestamp field's value.
func (s *AccountEnrollmentStatus) SetLastUpdatedTimestamp(v time.Time) *AccountEnrollmentStatus {
	s.LastUpdatedTimestamp = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *AccountEnrollmentStatus) SetStatus(v string) *AccountEnrollmentStatus {
	s.Status = &v
	return s
}

// SetStatusReason sets the StatusReason field's value.
func (s *AccountEnrollmentStatus) SetStatusReason(v string) *AccountEnrollmentStatus {
	s.StatusReason = &v
	return s
}

// Describes the configuration of an Auto Scaling group.
type AutoScalingGroupConfiguration struct {
	_ struct{} `type:"structure"`

	// The desired capacity, or number of instances, for the Auto Scaling group.
	DesiredCapacity *int64 `locationName:"desiredCapacity" type:"integer"`

	// The instance type for the Auto Scaling group.
	InstanceType *string `locationName:"instanceType" type:"string"`

	// The maximum size, or maximum number of instances, for the Auto Scaling group.
	MaxSize *int64 `locationName:"maxSize" type:"integer"`

	// The minimum size, or minimum number of instances, for the Auto Scaling group.
	MinSize *int64 `locationName:"minSize" type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AutoScalingGroupConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AutoScalingGroupConfiguration) GoString() string {
	return s.String()
}

// SetDesiredCapacity sets the DesiredCapacity field's value.
func (s *AutoScalingGroupConfiguration) SetDesiredCapacity(v int64) *AutoScalingGroupConfiguration {
	s.DesiredCapacity = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *AutoScalingGroupConfiguration) SetInstanceType(v string) *AutoScalingGroupConfiguration {
	s.InstanceType = &v
	return s
}

// SetMaxSize sets the MaxSize field's value.
func (s *AutoScalingGroupConfiguration) SetMaxSize(v int64) *AutoScalingGroupConfiguration {
	s.MaxSize = &v
	return s
}

// SetMinSize sets the MinSize field's value.
func (s *AutoScalingGroupConfiguration) SetMinSize(v int64) *AutoScalingGroupConfiguration {
	s.MinSize = &v
	return s
}

// An object that describes the estimated monthly savings possible by adopting
// Compute Optimizer’s Auto Scaling group recommendations. This is based on
// the Savings Plans and Reserved Instances discounts.
type AutoScalingGroupEstimatedMonthlySavings struct {
	_ struct{} `type:"structure"`

	// The currency of the estimated monthly savings.
	Currency *string `locationName:"currency" type:"string" enum:"Currency"`

	// The value of the estimated monthly savings.
	Value *float64 `locationName:"value" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AutoScalingGroupEstimatedMonthlySavings) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AutoScalingGroupEstimatedMonthlySavings) GoString() string {
	return s.String()
}

// SetCurrency sets the Currency field's value.
func (s *AutoScalingGroupEstimatedMonthlySavings) SetCurrency(v string) *AutoScalingGroupEstimatedMonthlySavings {
	s.Currency = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AutoScalingGroupEstimatedMonthlySavings) SetValue(v float64) *AutoScalingGroupEstimatedMonthlySavings {
	s.Value = &v
	return s
}

// Describes an Auto Scaling group recommendation.
type AutoScalingGroupRecommendation struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the Auto Scaling group.
	AccountId *string `locationName:"accountId" type:"string"`

	// The Amazon Resource Name (ARN) of the Auto Scaling group.
	AutoScalingGroupArn *string `locationName:"autoScalingGroupArn" type:"string"`

	// The name of the Auto Scaling group.
	AutoScalingGroupName *string `locationName:"autoScalingGroupName" type:"string"`

	// An array of objects that describe the current configuration of the Auto Scaling
	// group.
	CurrentConfiguration *AutoScalingGroupConfiguration `locationName:"currentConfiguration" type:"structure"`

	// Describes the GPU accelerator settings for the current instance type of the
	// Auto Scaling group.
	CurrentInstanceGpuInfo *GpuInfo `locationName:"currentInstanceGpuInfo" type:"structure"`

	// The risk of the current Auto Scaling group not meeting the performance needs
	// of its workloads. The higher the risk, the more likely the current Auto Scaling
	// group configuration has insufficient capacity and cannot meet workload requirements.
	CurrentPerformanceRisk *string `locationName:"currentPerformanceRisk" type:"string" enum:"CurrentPerformanceRisk"`

	// An object that describes the effective recommendation preferences for the
	// Auto Scaling group.
	EffectiveRecommendationPreferences *EffectiveRecommendationPreferences `locationName:"effectiveRecommendationPreferences" type:"structure"`

	// The finding classification of the Auto Scaling group.
	//
	// Findings for Auto Scaling groups include:
	//
	//    * NotOptimized —An Auto Scaling group is considered not optimized when
	//    Compute Optimizer identifies a recommendation that can provide better
	//    performance for your workload.
	//
	//    * Optimized —An Auto Scaling group is considered optimized when Compute
	//    Optimizer determines that the group is correctly provisioned to run your
	//    workload based on the chosen instance type. For optimized resources, Compute
	//    Optimizer might recommend a new generation instance type.
	Finding *string `locationName:"finding" type:"string" enum:"Finding"`

	// The applications that might be running on the instances in the Auto Scaling
	// group as inferred by Compute Optimizer.
	//
	// Compute Optimizer can infer if one of the following applications might be
	// running on the instances:
	//
	//    * AmazonEmr - Infers that Amazon EMR might be running on the instances.
	//
	//    * ApacheCassandra - Infers that Apache Cassandra might be running on the
	//    instances.
	//
	//    * ApacheHadoop - Infers that Apache Hadoop might be running on the instances.
	//
	//    * Memcached - Infers that Memcached might be running on the instances.
	//
	//    * NGINX - Infers that NGINX might be running on the instances.
	//
	//    * PostgreSql - Infers that PostgreSQL might be running on the instances.
	//
	//    * Redis - Infers that Redis might be running on the instances.
	//
	//    * Kafka - Infers that Kafka might be running on the instance.
	//
	//    * SQLServer - Infers that SQLServer might be running on the instance.
	InferredWorkloadTypes []*string `locationName:"inferredWorkloadTypes" type:"list" enum:"InferredWorkloadType"`

	// The timestamp of when the Auto Scaling group recommendation was last generated.
	LastRefreshTimestamp *time.Time `locationName:"lastRefreshTimestamp" type:"timestamp"`

	// The number of days for which utilization metrics were analyzed for the Auto
	// Scaling group.
	LookBackPeriodInDays *float64 `locationName:"lookBackPeriodInDays" type:"double"`

	// An array of objects that describe the recommendation options for the Auto
	// Scaling group.
	RecommendationOptions []*AutoScalingGroupRecommendationOption `locationName:"recommendationOptions" type:"list"`

	// An array of objects that describe the utilization metrics of the Auto Scaling
	// group.
	UtilizationMetrics []*UtilizationMetric `locationName:"utilizationMetrics" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AutoScalingGroupRecommendation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AutoScalingGroupRecommendation) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *AutoScalingGroupRecommendation) SetAccountId(v string) *AutoScalingGroupRecommendation {
	s.AccountId = &v
	return s
}

// SetAutoScalingGroupArn sets the AutoScalingGroupArn field's value.
func (s *AutoScalingGroupRecommendation) SetAutoScalingGroupArn(v string) *AutoScalingGroupRecommendation {
	s.AutoScalingGroupArn = &v
	return s
}

// SetAutoScalingGroupName sets the AutoScalingGroupName field's value.
func (s *AutoScalingGroupRecommendation) SetAutoScalingGroupName(v string) *AutoScalingGroupRecommendation {
	s.AutoScalingGroupName = &v
	return s
}

// SetCurrentConfiguration sets the CurrentConfiguration field's value.
func (s *AutoScalingGroupRecommendation) SetCurrentConfiguration(v *AutoScalingGroupConfiguration) *AutoScalingGroupRecommendation {
	s.CurrentConfiguration = v
	return s
}

// SetCurrentInstanceGpuInfo sets the CurrentInstanceGpuInfo field's value.
func (s *AutoScalingGroupRecommendation) SetCurrentInstanceGpuInfo(v *GpuInfo) *AutoScalingGroupRecommendation {
	s.CurrentInstanceGpuInfo = v
	return s
}

// SetCurrentPerformanceRisk sets the CurrentPerformanceRisk field's value.
func (s *AutoScalingGroupRecommendation) SetCurrentPerformanceRisk(v string) *AutoScalingGroupRecommendation {
	s.CurrentPerformanceRisk = &v
	return s
}

// SetEffectiveRecommendationPreferences sets the EffectiveRecommendationPreferences field's value.
func (s *AutoScalingGroupRecommendation) SetEffectiveRecommendationPreferences(v *EffectiveRecommendationPreferences) *AutoScalingGroupRecommendation {
	s.EffectiveRecommendationPreferences = v
	return s
}

// SetFinding sets the Finding field's value.
func (s *AutoScalingGroupRecommendation) SetFinding(v string) *AutoScalingGroupRecommendation {
	s.Finding = &v
	return s
}

// SetInferredWorkloadTypes sets the InferredWorkloadTypes field's value.
func (s *AutoScalingGroupRecommendation) SetInferredWorkloadTypes(v []*string) *AutoScalingGroupRecommendation {
	s.InferredWorkloadTypes = v
	return s
}

// SetLastRefreshTimestamp sets the LastRefreshTimestamp field's value.
func (s *AutoScalingGroupRecommendation) SetLastRefreshTimestamp(v time.Time) *AutoScalingGroupRecommendation {
	s.LastRefreshTimestamp = &v
	return s
}

// SetLookBackPeriodInDays sets the LookBackPeriodInDays field's value.
func (s *AutoScalingGroupRecommendation) SetLookBackPeriodInDays(v float64) *AutoScalingGroupRecommendation {
	s.LookBackPeriodInDays = &v
	return s
}

// SetRecommendationOptions sets the RecommendationOptions field's value.
func (s *AutoScalingGroupRecommendation) SetRecommendationOptions(v []*AutoScalingGroupRecommendationOption) *AutoScalingGroupRecommendation {
	s.RecommendationOptions = v
	return s
}

// SetUtilizationMetrics sets the UtilizationMetrics field's value.
func (s *AutoScalingGroupRecommendation) SetUtilizationMetrics(v []*UtilizationMetric) *AutoScalingGroupRecommendation {
	s.UtilizationMetrics = v
	return s
}

// Describes a recommendation option for an Auto Scaling group.
type AutoScalingGroupRecommendationOption struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe an Auto Scaling group configuration.
	Configuration *AutoScalingGroupConfiguration `locationName:"configuration" type:"structure"`

	// Describes the GPU accelerator settings for the recommended instance type
	// of the Auto Scaling group.
	InstanceGpuInfo *GpuInfo `locationName:"instanceGpuInfo" type:"structure"`

	// The level of effort required to migrate from the current instance type to
	// the recommended instance type.
	//
	// For example, the migration effort is Low if Amazon EMR is the inferred workload
	// type and an Amazon Web Services Graviton instance type is recommended. The
	// migration effort is Medium if a workload type couldn't be inferred but an
	// Amazon Web Services Graviton instance type is recommended. The migration
	// effort is VeryLow if both the current and recommended instance types are
	// of the same CPU architecture.
	MigrationEffort *string `locationName:"migrationEffort" type:"string" enum:"MigrationEffort"`

	// The performance risk of the Auto Scaling group configuration recommendation.
	//
	// Performance risk indicates the likelihood of the recommended instance type
	// not meeting the resource needs of your workload. Compute Optimizer calculates
	// an individual performance risk score for each specification of the recommended
	// instance, including CPU, memory, EBS throughput, EBS IOPS, disk throughput,
	// disk IOPS, network throughput, and network PPS. The performance risk of the
	// recommended instance is calculated as the maximum performance risk score
	// across the analyzed resource specifications.
	//
	// The value ranges from 0 - 4, with 0 meaning that the recommended resource
	// is predicted to always provide enough hardware capability. The higher the
	// performance risk is, the more likely you should validate whether the recommendation
	// will meet the performance requirements of your workload before migrating
	// your resource.
	PerformanceRisk *float64 `locationName:"performanceRisk" type:"double"`

	// An array of objects that describe the projected utilization metrics of the
	// Auto Scaling group recommendation option.
	//
	// The Cpu and Memory metrics are the only projected utilization metrics returned.
	// Additionally, the Memory metric is returned only for resources that have
	// the unified CloudWatch agent installed on them. For more information, see
	// Enabling Memory Utilization with the CloudWatch Agent (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent).
	ProjectedUtilizationMetrics []*UtilizationMetric `locationName:"projectedUtilizationMetrics" type:"list"`

	// The rank of the Auto Scaling group recommendation option.
	//
	// The top recommendation option is ranked as 1.
	Rank *int64 `locationName:"rank" type:"integer"`

	// An object that describes the savings opportunity for the Auto Scaling group
	// recommendation option. Savings opportunity includes the estimated monthly
	// savings amount and percentage.
	SavingsOpportunity *SavingsOpportunity `locationName:"savingsOpportunity" type:"structure"`

	// An object that describes the savings opportunity for the Auto Scaling group
	// recommendation option that includes Savings Plans and Reserved Instances
	// discounts. Savings opportunity includes the estimated monthly savings and
	// percentage.
	SavingsOpportunityAfterDiscounts *AutoScalingGroupSavingsOpportunityAfterDiscounts `locationName:"savingsOpportunityAfterDiscounts" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AutoScalingGroupRecommendationOption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AutoScalingGroupRecommendationOption) GoString() string {
	return s.String()
}

// SetConfiguration sets the Configuration field's value.
func (s *AutoScalingGroupRecommendationOption) SetConfiguration(v *AutoScalingGroupConfiguration) *AutoScalingGroupRecommendationOption {
	s.Configuration = v
	return s
}

// SetInstanceGpuInfo sets the InstanceGpuInfo field's value.
func (s *AutoScalingGroupRecommendationOption) SetInstanceGpuInfo(v *GpuInfo) *AutoScalingGroupRecommendationOption {
	s.InstanceGpuInfo = v
	return s
}

// SetMigrationEffort sets the MigrationEffort field's value.
func (s *AutoScalingGroupRecommendationOption) SetMigrationEffort(v string) *AutoScalingGroupRecommendationOption {
	s.MigrationEffort = &v
	return s
}

// SetPerformanceRisk sets the PerformanceRisk field's value.
func (s *AutoScalingGroupRecommendationOption) SetPerformanceRisk(v float64) *AutoScalingGroupRecommendationOption {
	s.PerformanceRisk = &v
	return s
}

// SetProjectedUtilizationMetrics sets the ProjectedUtilizationMetrics field's value.
func (s *AutoScalingGroupRecommendationOption) SetProjectedUtilizationMetrics(v []*UtilizationMetric) *AutoScalingGroupRecommendationOption {
	s.ProjectedUtilizationMetrics = v
	return s
}

// SetRank sets the Rank field's value.
func (s *AutoScalingGroupRecommendationOption) SetRank(v int64) *AutoScalingGroupRecommendationOption {
	s.Rank = &v
	return s
}

// SetSavingsOpportunity sets the SavingsOpportunity field's value.
func (s *AutoScalingGroupRecommendationOption) SetSavingsOpportunity(v *SavingsOpportunity) *AutoScalingGroupRecommendationOption {
	s.SavingsOpportunity = v
	return s
}

// SetSavingsOpportunityAfterDiscounts sets the SavingsOpportunityAfterDiscounts field's value.
func (s *AutoScalingGroupRecommendationOption) SetSavingsOpportunityAfterDiscounts(v *AutoScalingGroupSavingsOpportunityAfterDiscounts) *AutoScalingGroupRecommendationOption {
	s.SavingsOpportunityAfterDiscounts = v
	return s
}

// Describes the savings opportunity for Auto Scaling group recommendations
// after applying the Savings Plans and Reserved Instances discounts.
//
// Savings opportunity represents the estimated monthly savings you can achieve
// by implementing Compute Optimizer recommendations.
type AutoScalingGroupSavingsOpportunityAfterDiscounts struct {
	_ struct{} `type:"structure"`

	// An object that describes the estimated monthly savings possible by adopting
	// Compute Optimizer’s Auto Scaling group recommendations. This is based on
	// the Savings Plans and Reserved Instances pricing discounts.
	EstimatedMonthlySavings *AutoScalingGroupEstimatedMonthlySavings `locationName:"estimatedMonthlySavings" type:"structure"`

	// The estimated monthly savings possible as a percentage of monthly cost after
	// applying the Savings Plans and Reserved Instances discounts. This saving
	// can be achieved by adopting Compute Optimizer’s Auto Scaling group recommendations.
	SavingsOpportunityPercentage *float64 `locationName:"savingsOpportunityPercentage" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AutoScalingGroupSavingsOpportunityAfterDiscounts) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AutoScalingGroupSavingsOpportunityAfterDiscounts) GoString() string {
	return s.String()
}

// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
func (s *AutoScalingGroupSavingsOpportunityAfterDiscounts) SetEstimatedMonthlySavings(v *AutoScalingGroupEstimatedMonthlySavings) *AutoScalingGroupSavingsOpportunityAfterDiscounts {
	s.EstimatedMonthlySavings = v
	return s
}

// SetSavingsOpportunityPercentage sets the SavingsOpportunityPercentage field's value.
func (s *AutoScalingGroupSavingsOpportunityAfterDiscounts) SetSavingsOpportunityPercentage(v float64) *AutoScalingGroupSavingsOpportunityAfterDiscounts {
	s.SavingsOpportunityPercentage = &v
	return s
}

// Describes the container configurations within the tasks of your Amazon ECS
// service.
type ContainerConfiguration struct {
	_ struct{} `type:"structure"`

	// The name of the container.
	ContainerName *string `locationName:"containerName" type:"string"`

	// The number of CPU units reserved for the container.
	Cpu *int64 `locationName:"cpu" type:"integer"`

	// The memory size configurations for the container.
	MemorySizeConfiguration *MemorySizeConfiguration `locationName:"memorySizeConfiguration" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContainerConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContainerConfiguration) GoString() string {
	return s.String()
}

// SetContainerName sets the ContainerName field's value.
func (s *ContainerConfiguration) SetContainerName(v string) *ContainerConfiguration {
	s.ContainerName = &v
	return s
}

// SetCpu sets the Cpu field's value.
func (s *ContainerConfiguration) SetCpu(v int64) *ContainerConfiguration {
	s.Cpu = &v
	return s
}

// SetMemorySizeConfiguration sets the MemorySizeConfiguration field's value.
func (s *ContainerConfiguration) SetMemorySizeConfiguration(v *MemorySizeConfiguration) *ContainerConfiguration {
	s.MemorySizeConfiguration = v
	return s
}

// The CPU and memory recommendations for a container within the tasks of your
// Amazon ECS service.
type ContainerRecommendation struct {
	_ struct{} `type:"structure"`

	// The name of the container.
	ContainerName *string `locationName:"containerName" type:"string"`

	// The recommended number of CPU units reserved for the container.
	Cpu *int64 `locationName:"cpu" type:"integer"`

	// The recommended memory size configurations for the container.
	MemorySizeConfiguration *MemorySizeConfiguration `locationName:"memorySizeConfiguration" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContainerRecommendation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContainerRecommendation) GoString() string {
	return s.String()
}

// SetContainerName sets the ContainerName field's value.
func (s *ContainerRecommendation) SetContainerName(v string) *ContainerRecommendation {
	s.ContainerName = &v
	return s
}

// SetCpu sets the Cpu field's value.
func (s *ContainerRecommendation) SetCpu(v int64) *ContainerRecommendation {
	s.Cpu = &v
	return s
}

// SetMemorySizeConfiguration sets the MemorySizeConfiguration field's value.
func (s *ContainerRecommendation) SetMemorySizeConfiguration(v *MemorySizeConfiguration) *ContainerRecommendation {
	s.MemorySizeConfiguration = v
	return s
}

// Describes the performance risk ratings for a given resource type.
//
// Resources with a high or medium rating are at risk of not meeting the performance
// needs of their workloads, while resources with a low rating are performing
// well in their workloads.
type CurrentPerformanceRiskRatings struct {
	_ struct{} `type:"structure"`

	// A count of the applicable resource types with a high performance risk rating.
	High *int64 `locationName:"high" type:"long"`

	// A count of the applicable resource types with a low performance risk rating.
	Low *int64 `locationName:"low" type:"long"`

	// A count of the applicable resource types with a medium performance risk rating.
	Medium *int64 `locationName:"medium" type:"long"`

	// A count of the applicable resource types with a very low performance risk
	// rating.
	VeryLow *int64 `locationName:"veryLow" type:"long"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CurrentPerformanceRiskRatings) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CurrentPerformanceRiskRatings) GoString() string {
	return s.String()
}

// SetHigh sets the High field's value.
func (s *CurrentPerformanceRiskRatings) SetHigh(v int64) *CurrentPerformanceRiskRatings {
	s.High = &v
	return s
}

// SetLow sets the Low field's value.
func (s *CurrentPerformanceRiskRatings) SetLow(v int64) *CurrentPerformanceRiskRatings {
	s.Low = &v
	return s
}

// SetMedium sets the Medium field's value.
func (s *CurrentPerformanceRiskRatings) SetMedium(v int64) *CurrentPerformanceRiskRatings {
	s.Medium = &v
	return s
}

// SetVeryLow sets the VeryLow field's value.
func (s *CurrentPerformanceRiskRatings) SetVeryLow(v int64) *CurrentPerformanceRiskRatings {
	s.VeryLow = &v
	return s
}

// Defines the various metric parameters that can be customized, such as threshold
// and headroom.
type CustomizableMetricParameters struct {
	_ struct{} `type:"structure"`

	// The headroom threshold value in percentage used for the specified metric
	// parameter.
	Headroom *string `locationName:"headroom" type:"string" enum:"CustomizableMetricHeadroom"`

	// The threshold value used for the specified metric parameter.
	Threshold *string `locationName:"threshold" type:"string" enum:"CustomizableMetricThreshold"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomizableMetricParameters) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomizableMetricParameters) GoString() string {
	return s.String()
}

// SetHeadroom sets the Headroom field's value.
func (s *CustomizableMetricParameters) SetHeadroom(v string) *CustomizableMetricParameters {
	s.Headroom = &v
	return s
}

// SetThreshold sets the Threshold field's value.
func (s *CustomizableMetricParameters) SetThreshold(v string) *CustomizableMetricParameters {
	s.Threshold = &v
	return s
}

type DeleteRecommendationPreferencesInput struct {
	_ struct{} `type:"structure"`

	// The name of the recommendation preference to delete.
	//
	// RecommendationPreferenceNames is a required field
	RecommendationPreferenceNames []*string `locationName:"recommendationPreferenceNames" type:"list" required:"true" enum:"RecommendationPreferenceName"`

	// The target resource type of the recommendation preference to delete.
	//
	// The Ec2Instance option encompasses standalone instances and instances that
	// are part of Auto Scaling groups. The AutoScalingGroup option encompasses
	// only instances that are part of an Auto Scaling group.
	//
	// The valid values for this parameter are Ec2Instance and AutoScalingGroup.
	//
	// ResourceType is a required field
	ResourceType *string `locationName:"resourceType" type:"string" required:"true" enum:"ResourceType"`

	// An object that describes the scope of the recommendation preference to delete.
	//
	// You can delete recommendation preferences that are created at the organization
	// level (for management accounts of an organization only), account level, and
	// resource level. For more information, see Activating enhanced infrastructure
	// metrics (https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html)
	// in the Compute Optimizer User Guide.
	Scope *Scope `locationName:"scope" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRecommendationPreferencesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRecommendationPreferencesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteRecommendationPreferencesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteRecommendationPreferencesInput"}
	if s.RecommendationPreferenceNames == nil {
		invalidParams.Add(request.NewErrParamRequired("RecommendationPreferenceNames"))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRecommendationPreferenceNames sets the RecommendationPreferenceNames field's value.
func (s *DeleteRecommendationPreferencesInput) SetRecommendationPreferenceNames(v []*string) *DeleteRecommendationPreferencesInput {
	s.RecommendationPreferenceNames = v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *DeleteRecommendationPreferencesInput) SetResourceType(v string) *DeleteRecommendationPreferencesInput {
	s.ResourceType = &v
	return s
}

// SetScope sets the Scope field's value.
func (s *DeleteRecommendationPreferencesInput) SetScope(v *Scope) *DeleteRecommendationPreferencesInput {
	s.Scope = v
	return s
}

type DeleteRecommendationPreferencesOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRecommendationPreferencesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRecommendationPreferencesOutput) GoString() string {
	return s.String()
}

type DescribeRecommendationExportJobsInput struct {
	_ struct{} `type:"structure"`

	// An array of objects to specify a filter that returns a more specific list
	// of export jobs.
	Filters []*JobFilter `locationName:"filters" type:"list"`

	// The identification numbers of the export jobs to return.
	//
	// An export job ID is returned when you create an export using the ExportAutoScalingGroupRecommendations
	// or ExportEC2InstanceRecommendations actions.
	//
	// All export jobs created in the last seven days are returned if this parameter
	// is omitted.
	JobIds []*string `locationName:"jobIds" type:"list"`

	// The maximum number of export jobs to return with a single request.
	//
	// To retrieve the remaining results, make another request with the returned
	// nextToken value.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The token to advance to the next page of export jobs.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeRecommendationExportJobsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeRecommendationExportJobsInput) GoString() string {
	return s.String()
}

// SetFilters sets the Filters field's value.
func (s *DescribeRecommendationExportJobsInput) SetFilters(v []*JobFilter) *DescribeRecommendationExportJobsInput {
	s.Filters = v
	return s
}

// SetJobIds sets the JobIds field's value.
func (s *DescribeRecommendationExportJobsInput) SetJobIds(v []*string) *DescribeRecommendationExportJobsInput {
	s.JobIds = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeRecommendationExportJobsInput) SetMaxResults(v int64) *DescribeRecommendationExportJobsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeRecommendationExportJobsInput) SetNextToken(v string) *DescribeRecommendationExportJobsInput {
	s.NextToken = &v
	return s
}

type DescribeRecommendationExportJobsOutput struct {
	_ struct{} `type:"structure"`

	// The token to use to advance to the next page of export jobs.
	//
	// This value is null when there are no more pages of export jobs to return.
	NextToken *string `locationName:"nextToken" type:"string"`

	// An array of objects that describe recommendation export jobs.
	RecommendationExportJobs []*RecommendationExportJob `locationName:"recommendationExportJobs" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeRecommendationExportJobsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeRecommendationExportJobsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeRecommendationExportJobsOutput) SetNextToken(v string) *DescribeRecommendationExportJobsOutput {
	s.NextToken = &v
	return s
}

// SetRecommendationExportJobs sets the RecommendationExportJobs field's value.
func (s *DescribeRecommendationExportJobsOutput) SetRecommendationExportJobs(v []*RecommendationExportJob) *DescribeRecommendationExportJobsOutput {
	s.RecommendationExportJobs = v
	return s
}

// Describes the effective recommendation preferences for Amazon EBS volumes.
type EBSEffectiveRecommendationPreferences struct {
	_ struct{} `type:"structure"`

	// Describes the savings estimation mode preference applied for calculating
	// savings opportunity for Amazon EBS volumes.
	SavingsEstimationMode *EBSSavingsEstimationMode `locationName:"savingsEstimationMode" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EBSEffectiveRecommendationPreferences) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EBSEffectiveRecommendationPreferences) GoString() string {
	return s.String()
}

// SetSavingsEstimationMode sets the SavingsEstimationMode field's value.
func (s *EBSEffectiveRecommendationPreferences) SetSavingsEstimationMode(v *EBSSavingsEstimationMode) *EBSEffectiveRecommendationPreferences {
	s.SavingsEstimationMode = v
	return s
}

// An object that describes the estimated monthly savings possible by adopting
// Compute Optimizer’s Amazon EBS volume recommendations. This includes any
// applicable discounts.
type EBSEstimatedMonthlySavings struct {
	_ struct{} `type:"structure"`

	// The currency of the estimated monthly savings.
	Currency *string `locationName:"currency" type:"string" enum:"Currency"`

	// The value of the estimated monthly savings.
	Value *float64 `locationName:"value" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EBSEstimatedMonthlySavings) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EBSEstimatedMonthlySavings) GoString() string {
	return s.String()
}

// SetCurrency sets the Currency field's value.
func (s *EBSEstimatedMonthlySavings) SetCurrency(v string) *EBSEstimatedMonthlySavings {
	s.Currency = &v
	return s
}

// SetValue sets the Value field's value.
func (s *EBSEstimatedMonthlySavings) SetValue(v float64) *EBSEstimatedMonthlySavings {
	s.Value = &v
	return s
}

// Describes a filter that returns a more specific list of Amazon Elastic Block
// Store (Amazon EBS) volume recommendations. Use this filter with the GetEBSVolumeRecommendations
// action.
//
// You can use LambdaFunctionRecommendationFilter with the GetLambdaFunctionRecommendations
// action, JobFilter with the DescribeRecommendationExportJobs action, and Filter
// with the GetAutoScalingGroupRecommendations and GetEC2InstanceRecommendations
// actions.
type EBSFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter.
	//
	// Specify Finding to return recommendations with a specific finding classification
	// (for example, NotOptimized).
	//
	// You can filter your Amazon EBS volume recommendations by tag:key and tag-key
	// tags.
	//
	// A tag:key is a key and value combination of a tag assigned to your Amazon
	// EBS volume recommendations. Use the tag key in the filter name and the tag
	// value as the filter value. For example, to find all Amazon EBS volume recommendations
	// that have a tag with the key of Owner and the value of TeamA, specify tag:Owner
	// for the filter name and TeamA for the filter value.
	//
	// A tag-key is the key of a tag assigned to your Amazon EBS volume recommendations.
	// Use this filter to find all of your Amazon EBS volume recommendations that
	// have a tag with a specific key. This doesn’t consider the tag value. For
	// example, you can find your Amazon EBS volume recommendations with a tag key
	// value of Owner or without any tag keys assigned.
	Name *string `locationName:"name" type:"string" enum:"EBSFilterName"`

	// The value of the filter.
	//
	// The valid values are Optimized, or NotOptimized.
	Values []*string `locationName:"values" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EBSFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EBSFilter) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *EBSFilter) SetName(v string) *EBSFilter {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *EBSFilter) SetValues(v []*string) *EBSFilter {
	s.Values = v
	return s
}

// Describes the savings estimation mode used for calculating savings opportunity
// for Amazon EBS volumes.
type EBSSavingsEstimationMode struct {
	_ struct{} `type:"structure"`

	// Describes the source for calculating the savings opportunity for Amazon EBS
	// volumes.
	Source *string `locationName:"source" type:"string" enum:"EBSSavingsEstimationModeSource"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EBSSavingsEstimationMode) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EBSSavingsEstimationMode) GoString() string {
	return s.String()
}

// SetSource sets the Source field's value.
func (s *EBSSavingsEstimationMode) SetSource(v string) *EBSSavingsEstimationMode {
	s.Source = &v
	return s
}

// Describes the savings opportunity for Amazon EBS volume recommendations after
// applying specific discounts.
type EBSSavingsOpportunityAfterDiscounts struct {
	_ struct{} `type:"structure"`

	// The estimated monthly savings possible as a percentage of monthly cost by
	// adopting Compute Optimizer’s Amazon EBS volume recommendations. This saving
	// includes any applicable discounts.
	EstimatedMonthlySavings *EBSEstimatedMonthlySavings `locationName:"estimatedMonthlySavings" type:"structure"`

	// The estimated monthly savings possible as a percentage of monthly cost after
	// applying the specific discounts. This saving can be achieved by adopting
	// Compute Optimizer’s Amazon EBS volume recommendations.
	SavingsOpportunityPercentage *float64 `locationName:"savingsOpportunityPercentage" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EBSSavingsOpportunityAfterDiscounts) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EBSSavingsOpportunityAfterDiscounts) GoString() string {
	return s.String()
}

// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
func (s *EBSSavingsOpportunityAfterDiscounts) SetEstimatedMonthlySavings(v *EBSEstimatedMonthlySavings) *EBSSavingsOpportunityAfterDiscounts {
	s.EstimatedMonthlySavings = v
	return s
}

// SetSavingsOpportunityPercentage sets the SavingsOpportunityPercentage field's value.
func (s *EBSSavingsOpportunityAfterDiscounts) SetSavingsOpportunityPercentage(v float64) *EBSSavingsOpportunityAfterDiscounts {
	s.SavingsOpportunityPercentage = &v
	return s
}

// Describes a utilization metric of an Amazon Elastic Block Store (Amazon EBS)
// volume.
//
// Compare the utilization metric data of your resource against its projected
// utilization metric data to determine the performance difference between your
// current resource and the recommended option.
type EBSUtilizationMetric struct {
	_ struct{} `type:"structure"`

	// The name of the utilization metric.
	//
	// The following utilization metrics are available:
	//
	//    * VolumeReadOpsPerSecond - The completed read operations per second from
	//    the volume in a specified period of time. Unit: Count
	//
	//    * VolumeWriteOpsPerSecond - The completed write operations per second
	//    to the volume in a specified period of time. Unit: Count
	//
	//    * VolumeReadBytesPerSecond - The bytes read per second from the volume
	//    in a specified period of time. Unit: Bytes
	//
	//    * VolumeWriteBytesPerSecond - The bytes written to the volume in a specified
	//    period of time. Unit: Bytes
	Name *string `locationName:"name" type:"string" enum:"EBSMetricName"`

	// The statistic of the utilization metric.
	//
	// The Compute Optimizer API, Command Line Interface (CLI), and SDKs return
	// utilization metrics using only the Maximum statistic, which is the highest
	// value observed during the specified period.
	//
	// The Compute Optimizer console displays graphs for some utilization metrics
	// using the Average statistic, which is the value of Sum / SampleCount during
	// the specified period. For more information, see Viewing resource recommendations
	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/viewing-recommendations.html)
	// in the Compute Optimizer User Guide. You can also get averaged utilization
	// metric data for your resources using Amazon CloudWatch. For more information,
	// see the Amazon CloudWatch User Guide (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html).
	Statistic *string `locationName:"statistic" type:"string" enum:"MetricStatistic"`

	// The value of the utilization metric.
	Value *float64 `locationName:"value" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EBSUtilizationMetric) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EBSUtilizationMetric) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *EBSUtilizationMetric) SetName(v string) *EBSUtilizationMetric {
	s.Name = &v
	return s
}

// SetStatistic sets the Statistic field's value.
func (s *EBSUtilizationMetric) SetStatistic(v string) *EBSUtilizationMetric {
	s.Statistic = &v
	return s
}

// SetValue sets the Value field's value.
func (s *EBSUtilizationMetric) SetValue(v float64) *EBSUtilizationMetric {
	s.Value = &v
	return s
}

// Describes the effective recommendation preferences for Amazon ECS services.
type ECSEffectiveRecommendationPreferences struct {
	_ struct{} `type:"structure"`

	// Describes the savings estimation mode preference applied for calculating
	// savings opportunity for Amazon ECS services.
	SavingsEstimationMode *ECSSavingsEstimationMode `locationName:"savingsEstimationMode" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSEffectiveRecommendationPreferences) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSEffectiveRecommendationPreferences) GoString() string {
	return s.String()
}

// SetSavingsEstimationMode sets the SavingsEstimationMode field's value.
func (s *ECSEffectiveRecommendationPreferences) SetSavingsEstimationMode(v *ECSSavingsEstimationMode) *ECSEffectiveRecommendationPreferences {
	s.SavingsEstimationMode = v
	return s
}

// Describes the estimated monthly savings possible for Amazon ECS services
// by adopting Compute Optimizer recommendations. This is based on Amazon ECS
// service pricing after applying Savings Plans discounts.
type ECSEstimatedMonthlySavings struct {
	_ struct{} `type:"structure"`

	// The currency of the estimated monthly savings.
	Currency *string `locationName:"currency" type:"string" enum:"Currency"`

	// The value of the estimated monthly savings for Amazon ECS services.
	Value *float64 `locationName:"value" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSEstimatedMonthlySavings) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSEstimatedMonthlySavings) GoString() string {
	return s.String()
}

// SetCurrency sets the Currency field's value.
func (s *ECSEstimatedMonthlySavings) SetCurrency(v string) *ECSEstimatedMonthlySavings {
	s.Currency = &v
	return s
}

// SetValue sets the Value field's value.
func (s *ECSEstimatedMonthlySavings) SetValue(v float64) *ECSEstimatedMonthlySavings {
	s.Value = &v
	return s
}

// Describes the savings estimation mode used for calculating savings opportunity
// for Amazon ECS services.
type ECSSavingsEstimationMode struct {
	_ struct{} `type:"structure"`

	// Describes the source for calculating the savings opportunity for Amazon ECS
	// services.
	Source *string `locationName:"source" type:"string" enum:"ECSSavingsEstimationModeSource"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSSavingsEstimationMode) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSSavingsEstimationMode) GoString() string {
	return s.String()
}

// SetSource sets the Source field's value.
func (s *ECSSavingsEstimationMode) SetSource(v string) *ECSSavingsEstimationMode {
	s.Source = &v
	return s
}

// Describes the savings opportunity for Amazon ECS service recommendations
// after applying Savings Plans discounts.
//
// Savings opportunity represents the estimated monthly savings after applying
// Savings Plans discounts. You can achieve this by implementing a given Compute
// Optimizer recommendation.
type ECSSavingsOpportunityAfterDiscounts struct {
	_ struct{} `type:"structure"`

	// The estimated monthly savings possible by adopting Compute Optimizer’s
	// Amazon ECS service recommendations. This includes any applicable Savings
	// Plans discounts.
	EstimatedMonthlySavings *ECSEstimatedMonthlySavings `locationName:"estimatedMonthlySavings" type:"structure"`

	// The estimated monthly savings possible as a percentage of monthly cost by
	// adopting Compute Optimizer’s Amazon ECS service recommendations. This includes
	// any applicable Savings Plans discounts.
	SavingsOpportunityPercentage *float64 `locationName:"savingsOpportunityPercentage" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSSavingsOpportunityAfterDiscounts) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSSavingsOpportunityAfterDiscounts) GoString() string {
	return s.String()
}

// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
func (s *ECSSavingsOpportunityAfterDiscounts) SetEstimatedMonthlySavings(v *ECSEstimatedMonthlySavings) *ECSSavingsOpportunityAfterDiscounts {
	s.EstimatedMonthlySavings = v
	return s
}

// SetSavingsOpportunityPercentage sets the SavingsOpportunityPercentage field's value.
func (s *ECSSavingsOpportunityAfterDiscounts) SetSavingsOpportunityPercentage(v float64) *ECSSavingsOpportunityAfterDiscounts {
	s.SavingsOpportunityPercentage = &v
	return s
}

// Describes the projected metrics of an Amazon ECS service recommendation option.
//
// To determine the performance difference between your current Amazon ECS service
// and the recommended option, compare the metric data of your service against
// its projected metric data.
type ECSServiceProjectedMetric struct {
	_ struct{} `type:"structure"`

	// The lower bound values for the projected metric.
	LowerBoundValues []*float64 `locationName:"lowerBoundValues" type:"list"`

	// The name of the projected metric.
	//
	// The following metrics are available:
	//
	//    * Cpu — The percentage of allocated compute units that are currently
	//    in use on the service tasks.
	//
	//    * Memory — The percentage of memory that's currently in use on the service
	//    tasks.
	Name *string `locationName:"name" type:"string" enum:"ECSServiceMetricName"`

	// The timestamps of the projected metric.
	Timestamps []*time.Time `locationName:"timestamps" type:"list"`

	// The upper bound values for the projected metric.
	UpperBoundValues []*float64 `locationName:"upperBoundValues" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSServiceProjectedMetric) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSServiceProjectedMetric) GoString() string {
	return s.String()
}

// SetLowerBoundValues sets the LowerBoundValues field's value.
func (s *ECSServiceProjectedMetric) SetLowerBoundValues(v []*float64) *ECSServiceProjectedMetric {
	s.LowerBoundValues = v
	return s
}

// SetName sets the Name field's value.
func (s *ECSServiceProjectedMetric) SetName(v string) *ECSServiceProjectedMetric {
	s.Name = &v
	return s
}

// SetTimestamps sets the Timestamps field's value.
func (s *ECSServiceProjectedMetric) SetTimestamps(v []*time.Time) *ECSServiceProjectedMetric {
	s.Timestamps = v
	return s
}

// SetUpperBoundValues sets the UpperBoundValues field's value.
func (s *ECSServiceProjectedMetric) SetUpperBoundValues(v []*float64) *ECSServiceProjectedMetric {
	s.UpperBoundValues = v
	return s
}

// Describes the projected utilization metrics of an Amazon ECS service recommendation
// option.
//
// To determine the performance difference between your current Amazon ECS service
// and the recommended option, compare the utilization metric data of your service
// against its projected utilization metric data.
type ECSServiceProjectedUtilizationMetric struct {
	_ struct{} `type:"structure"`

	// The lower bound values for the projected utilization metrics.
	LowerBoundValue *float64 `locationName:"lowerBoundValue" type:"double"`

	// The name of the projected utilization metric.
	//
	// The following utilization metrics are available:
	//
	//    * Cpu — The percentage of allocated compute units that are currently
	//    in use on the service tasks.
	//
	//    * Memory — The percentage of memory that's currently in use on the service
	//    tasks.
	Name *string `locationName:"name" type:"string" enum:"ECSServiceMetricName"`

	// The statistic of the projected utilization metric.
	//
	// The Compute Optimizer API, Command Line Interface (CLI), and SDKs return
	// utilization metrics using only the Maximum statistic, which is the highest
	// value observed during the specified period.
	//
	// The Compute Optimizer console displays graphs for some utilization metrics
	// using the Average statistic, which is the value of Sum / SampleCount during
	// the specified period. For more information, see Viewing resource recommendations
	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/viewing-recommendations.html)
	// in the Compute Optimizer User Guide. You can also get averaged utilization
	// metric data for your resources using Amazon CloudWatch. For more information,
	// see the Amazon CloudWatch User Guide (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html).
	Statistic *string `locationName:"statistic" type:"string" enum:"ECSServiceMetricStatistic"`

	// The upper bound values for the projected utilization metrics.
	UpperBoundValue *float64 `locationName:"upperBoundValue" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSServiceProjectedUtilizationMetric) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSServiceProjectedUtilizationMetric) GoString() string {
	return s.String()
}

// SetLowerBoundValue sets the LowerBoundValue field's value.
func (s *ECSServiceProjectedUtilizationMetric) SetLowerBoundValue(v float64) *ECSServiceProjectedUtilizationMetric {
	s.LowerBoundValue = &v
	return s
}

// SetName sets the Name field's value.
func (s *ECSServiceProjectedUtilizationMetric) SetName(v string) *ECSServiceProjectedUtilizationMetric {
	s.Name = &v
	return s
}

// SetStatistic sets the Statistic field's value.
func (s *ECSServiceProjectedUtilizationMetric) SetStatistic(v string) *ECSServiceProjectedUtilizationMetric {
	s.Statistic = &v
	return s
}

// SetUpperBoundValue sets the UpperBoundValue field's value.
func (s *ECSServiceProjectedUtilizationMetric) SetUpperBoundValue(v float64) *ECSServiceProjectedUtilizationMetric {
	s.UpperBoundValue = &v
	return s
}

// Describes an Amazon ECS service recommendation.
type ECSServiceRecommendation struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the Amazon ECS service.
	AccountId *string `locationName:"accountId" type:"string"`

	// The risk of the current Amazon ECS service not meeting the performance needs
	// of its workloads. The higher the risk, the more likely the current service
	// can't meet the performance requirements of its workload.
	CurrentPerformanceRisk *string `locationName:"currentPerformanceRisk" type:"string" enum:"CurrentPerformanceRisk"`

	// The configuration of the current Amazon ECS service.
	CurrentServiceConfiguration *ServiceConfiguration `locationName:"currentServiceConfiguration" type:"structure"`

	// Describes the effective recommendation preferences for Amazon ECS services.
	EffectiveRecommendationPreferences *ECSEffectiveRecommendationPreferences `locationName:"effectiveRecommendationPreferences" type:"structure"`

	// The finding classification of an Amazon ECS service.
	//
	// Findings for Amazon ECS services include:
	//
	//    * Underprovisioned — When Compute Optimizer detects that there’s not
	//    enough memory or CPU, an Amazon ECS service is considered under-provisioned.
	//    An under-provisioned service might result in poor application performance.
	//
	//    * Overprovisioned — When Compute Optimizer detects that there’s excessive
	//    memory or CPU, an Amazon ECS service is considered over-provisioned. An
	//    over-provisioned service might result in additional infrastructure costs.
	//
	//    * Optimized — When both the CPU and memory of your Amazon ECS service
	//    meet the performance requirements of your workload, the service is considered
	//    optimized.
	Finding *string `locationName:"finding" type:"string" enum:"ECSServiceRecommendationFinding"`

	// The reason for the finding classification of an Amazon ECS service.
	//
	// Finding reason codes for Amazon ECS services include:
	//
	//    * CPUUnderprovisioned — The service CPU configuration can be sized up
	//    to enhance the performance of your workload. This is identified by analyzing
	//    the CPUUtilization metric of the current service during the look-back
	//    period.
	//
	//    * CPUOverprovisioned — The service CPU configuration can be sized down
	//    while still meeting the performance requirements of your workload. This
	//    is identified by analyzing the CPUUtilization metric of the current service
	//    during the look-back period.
	//
	//    * MemoryUnderprovisioned — The service memory configuration can be sized
	//    up to enhance the performance of your workload. This is identified by
	//    analyzing the MemoryUtilization metric of the current service during the
	//    look-back period.
	//
	//    * MemoryOverprovisioned — The service memory configuration can be sized
	//    down while still meeting the performance requirements of your workload.
	//    This is identified by analyzing the MemoryUtilization metric of the current
	//    service during the look-back period.
	FindingReasonCodes []*string `locationName:"findingReasonCodes" type:"list" enum:"ECSServiceRecommendationFindingReasonCode"`

	// The timestamp of when the Amazon ECS service recommendation was last generated.
	LastRefreshTimestamp *time.Time `locationName:"lastRefreshTimestamp" type:"timestamp"`

	// The launch type the Amazon ECS service is using.
	//
	// Compute Optimizer only supports the Fargate launch type.
	LaunchType *string `locationName:"launchType" type:"string" enum:"ECSServiceLaunchType"`

	// The number of days the Amazon ECS service utilization metrics were analyzed.
	LookbackPeriodInDays *float64 `locationName:"lookbackPeriodInDays" type:"double"`

	// The Amazon Resource Name (ARN) of the current Amazon ECS service.
	//
	// The following is the format of the ARN:
	//
	// arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name
	ServiceArn *string `locationName:"serviceArn" type:"string"`

	// An array of objects that describe the recommendation options for the Amazon
	// ECS service.
	ServiceRecommendationOptions []*ECSServiceRecommendationOption `locationName:"serviceRecommendationOptions" type:"list"`

	// A list of tags assigned to your Amazon ECS service recommendations.
	Tags []*Tag `locationName:"tags" type:"list"`

	// An array of objects that describe the utilization metrics of the Amazon ECS
	// service.
	UtilizationMetrics []*ECSServiceUtilizationMetric `locationName:"utilizationMetrics" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSServiceRecommendation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSServiceRecommendation) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *ECSServiceRecommendation) SetAccountId(v string) *ECSServiceRecommendation {
	s.AccountId = &v
	return s
}

// SetCurrentPerformanceRisk sets the CurrentPerformanceRisk field's value.
func (s *ECSServiceRecommendation) SetCurrentPerformanceRisk(v string) *ECSServiceRecommendation {
	s.CurrentPerformanceRisk = &v
	return s
}

// SetCurrentServiceConfiguration sets the CurrentServiceConfiguration field's value.
func (s *ECSServiceRecommendation) SetCurrentServiceConfiguration(v *ServiceConfiguration) *ECSServiceRecommendation {
	s.CurrentServiceConfiguration = v
	return s
}

// SetEffectiveRecommendationPreferences sets the EffectiveRecommendationPreferences field's value.
func (s *ECSServiceRecommendation) SetEffectiveRecommendationPreferences(v *ECSEffectiveRecommendationPreferences) *ECSServiceRecommendation {
	s.EffectiveRecommendationPreferences = v
	return s
}

// SetFinding sets the Finding field's value.
func (s *ECSServiceRecommendation) SetFinding(v string) *ECSServiceRecommendation {
	s.Finding = &v
	return s
}

// SetFindingReasonCodes sets the FindingReasonCodes field's value.
func (s *ECSServiceRecommendation) SetFindingReasonCodes(v []*string) *ECSServiceRecommendation {
	s.FindingReasonCodes = v
	return s
}

// SetLastRefreshTimestamp sets the LastRefreshTimestamp field's value.
func (s *ECSServiceRecommendation) SetLastRefreshTimestamp(v time.Time) *ECSServiceRecommendation {
	s.LastRefreshTimestamp = &v
	return s
}

// SetLaunchType sets the LaunchType field's value.
func (s *ECSServiceRecommendation) SetLaunchType(v string) *ECSServiceRecommendation {
	s.LaunchType = &v
	return s
}

// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
func (s *ECSServiceRecommendation) SetLookbackPeriodInDays(v float64) *ECSServiceRecommendation {
	s.LookbackPeriodInDays = &v
	return s
}

// SetServiceArn sets the ServiceArn field's value.
func (s *ECSServiceRecommendation) SetServiceArn(v string) *ECSServiceRecommendation {
	s.ServiceArn = &v
	return s
}

// SetServiceRecommendationOptions sets the ServiceRecommendationOptions field's value.
func (s *ECSServiceRecommendation) SetServiceRecommendationOptions(v []*ECSServiceRecommendationOption) *ECSServiceRecommendation {
	s.ServiceRecommendationOptions = v
	return s
}

// SetTags sets the Tags field's value.
func (s *ECSServiceRecommendation) SetTags(v []*Tag) *ECSServiceRecommendation {
	s.Tags = v
	return s
}

// SetUtilizationMetrics sets the UtilizationMetrics field's value.
func (s *ECSServiceRecommendation) SetUtilizationMetrics(v []*ECSServiceUtilizationMetric) *ECSServiceRecommendation {
	s.UtilizationMetrics = v
	return s
}

// Describes a filter that returns a more specific list of Amazon ECS service
// recommendations. Use this filter with the GetECSServiceRecommendations action.
type ECSServiceRecommendationFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter.
	//
	// Specify Finding to return recommendations with a specific finding classification.
	//
	// Specify FindingReasonCode to return recommendations with a specific finding
	// reason code.
	//
	// You can filter your Amazon ECS service recommendations by tag:key and tag-key
	// tags.
	//
	// A tag:key is a key and value combination of a tag assigned to your Amazon
	// ECS service recommendations. Use the tag key in the filter name and the tag
	// value as the filter value. For example, to find all Amazon ECS service recommendations
	// that have a tag with the key of Owner and the value of TeamA, specify tag:Owner
	// for the filter name and TeamA for the filter value.
	//
	// A tag-key is the key of a tag assigned to your Amazon ECS service recommendations.
	// Use this filter to find all of your Amazon ECS service recommendations that
	// have a tag with a specific key. This doesn’t consider the tag value. For
	// example, you can find your Amazon ECS service recommendations with a tag
	// key value of Owner or without any tag keys assigned.
	Name *string `locationName:"name" type:"string" enum:"ECSServiceRecommendationFilterName"`

	// The value of the filter.
	//
	// The valid values for this parameter are as follows:
	//
	//    * If you specify the name parameter as Finding, specify Optimized, NotOptimized,
	//    or Unavailable.
	//
	//    * If you specify the name parameter as FindingReasonCode, specify CPUUnderprovisioned,
	//    CPUOverprovisioned, MemoryUnderprovisioned, or MemoryOverprovisioned.
	Values []*string `locationName:"values" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSServiceRecommendationFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSServiceRecommendationFilter) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *ECSServiceRecommendationFilter) SetName(v string) *ECSServiceRecommendationFilter {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *ECSServiceRecommendationFilter) SetValues(v []*string) *ECSServiceRecommendationFilter {
	s.Values = v
	return s
}

// Describes the recommendation options for an Amazon ECS service.
type ECSServiceRecommendationOption struct {
	_ struct{} `type:"structure"`

	// The CPU and memory size recommendations for the containers within the task
	// of your Amazon ECS service.
	ContainerRecommendations []*ContainerRecommendation `locationName:"containerRecommendations" type:"list"`

	// The CPU size of the Amazon ECS service recommendation option.
	Cpu *int64 `locationName:"cpu" type:"integer"`

	// The memory size of the Amazon ECS service recommendation option.
	Memory *int64 `locationName:"memory" type:"integer"`

	// An array of objects that describe the projected utilization metrics of the
	// Amazon ECS service recommendation option.
	ProjectedUtilizationMetrics []*ECSServiceProjectedUtilizationMetric `locationName:"projectedUtilizationMetrics" type:"list"`

	// Describes the savings opportunity for recommendations of a given resource
	// type or for the recommendation option of an individual resource.
	//
	// Savings opportunity represents the estimated monthly savings you can achieve
	// by implementing a given Compute Optimizer recommendation.
	//
	// Savings opportunity data requires that you opt in to Cost Explorer, as well
	// as activate Receive Amazon EC2 resource recommendations in the Cost Explorer
	// preferences page. That creates a connection between Cost Explorer and Compute
	// Optimizer. With this connection, Cost Explorer generates savings estimates
	// considering the price of existing resources, the price of recommended resources,
	// and historical usage data. Estimated monthly savings reflects the projected
	// dollar savings associated with each of the recommendations generated. For
	// more information, see Enabling Cost Explorer (https://docs.aws.amazon.com/cost-management/latest/userguide/ce-enable.html)
	// and Optimizing your cost with Rightsizing Recommendations (https://docs.aws.amazon.com/cost-management/latest/userguide/ce-rightsizing.html)
	// in the Cost Management User Guide.
	SavingsOpportunity *SavingsOpportunity `locationName:"savingsOpportunity" type:"structure"`

	// Describes the savings opportunity for Amazon ECS service recommendations
	// or for the recommendation option.
	//
	// Savings opportunity represents the estimated monthly savings after applying
	// Savings Plans discounts. You can achieve this by implementing a given Compute
	// Optimizer recommendation.
	SavingsOpportunityAfterDiscounts *ECSSavingsOpportunityAfterDiscounts `locationName:"savingsOpportunityAfterDiscounts" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSServiceRecommendationOption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSServiceRecommendationOption) GoString() string {
	return s.String()
}

// SetContainerRecommendations sets the ContainerRecommendations field's value.
func (s *ECSServiceRecommendationOption) SetContainerRecommendations(v []*ContainerRecommendation) *ECSServiceRecommendationOption {
	s.ContainerRecommendations = v
	return s
}

// SetCpu sets the Cpu field's value.
func (s *ECSServiceRecommendationOption) SetCpu(v int64) *ECSServiceRecommendationOption {
	s.Cpu = &v
	return s
}

// SetMemory sets the Memory field's value.
func (s *ECSServiceRecommendationOption) SetMemory(v int64) *ECSServiceRecommendationOption {
	s.Memory = &v
	return s
}

// SetProjectedUtilizationMetrics sets the ProjectedUtilizationMetrics field's value.
func (s *ECSServiceRecommendationOption) SetProjectedUtilizationMetrics(v []*ECSServiceProjectedUtilizationMetric) *ECSServiceRecommendationOption {
	s.ProjectedUtilizationMetrics = v
	return s
}

// SetSavingsOpportunity sets the SavingsOpportunity field's value.
func (s *ECSServiceRecommendationOption) SetSavingsOpportunity(v *SavingsOpportunity) *ECSServiceRecommendationOption {
	s.SavingsOpportunity = v
	return s
}

// SetSavingsOpportunityAfterDiscounts sets the SavingsOpportunityAfterDiscounts field's value.
func (s *ECSServiceRecommendationOption) SetSavingsOpportunityAfterDiscounts(v *ECSSavingsOpportunityAfterDiscounts) *ECSServiceRecommendationOption {
	s.SavingsOpportunityAfterDiscounts = v
	return s
}

// Describes the projected metrics of an Amazon ECS service recommendation option.
//
// To determine the performance difference between your current Amazon ECS service
// and the recommended option, compare the metric data of your service against
// its projected metric data.
type ECSServiceRecommendedOptionProjectedMetric struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the projected metric.
	ProjectedMetrics []*ECSServiceProjectedMetric `locationName:"projectedMetrics" type:"list"`

	// The recommended CPU size for the Amazon ECS service.
	RecommendedCpuUnits *int64 `locationName:"recommendedCpuUnits" type:"integer"`

	// The recommended memory size for the Amazon ECS service.
	RecommendedMemorySize *int64 `locationName:"recommendedMemorySize" type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSServiceRecommendedOptionProjectedMetric) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSServiceRecommendedOptionProjectedMetric) GoString() string {
	return s.String()
}

// SetProjectedMetrics sets the ProjectedMetrics field's value.
func (s *ECSServiceRecommendedOptionProjectedMetric) SetProjectedMetrics(v []*ECSServiceProjectedMetric) *ECSServiceRecommendedOptionProjectedMetric {
	s.ProjectedMetrics = v
	return s
}

// SetRecommendedCpuUnits sets the RecommendedCpuUnits field's value.
func (s *ECSServiceRecommendedOptionProjectedMetric) SetRecommendedCpuUnits(v int64) *ECSServiceRecommendedOptionProjectedMetric {
	s.RecommendedCpuUnits = &v
	return s
}

// SetRecommendedMemorySize sets the RecommendedMemorySize field's value.
func (s *ECSServiceRecommendedOptionProjectedMetric) SetRecommendedMemorySize(v int64) *ECSServiceRecommendedOptionProjectedMetric {
	s.RecommendedMemorySize = &v
	return s
}

// Describes the utilization metric of an Amazon ECS service.
//
// To determine the performance difference between your current Amazon ECS service
// and the recommended option, compare the utilization metric data of your service
// against its projected utilization metric data.
type ECSServiceUtilizationMetric struct {
	_ struct{} `type:"structure"`

	// The name of the utilization metric.
	//
	// The following utilization metrics are available:
	//
	//    * Cpu — The amount of CPU capacity that's used in the service.
	//
	//    * Memory — The amount of memory that's used in the service.
	Name *string `locationName:"name" type:"string" enum:"ECSServiceMetricName"`

	// The statistic of the utilization metric.
	//
	// The Compute Optimizer API, Command Line Interface (CLI), and SDKs return
	// utilization metrics using only the Maximum statistic, which is the highest
	// value observed during the specified period.
	//
	// The Compute Optimizer console displays graphs for some utilization metrics
	// using the Average statistic, which is the value of Sum / SampleCount during
	// the specified period. For more information, see Viewing resource recommendations
	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/viewing-recommendations.html)
	// in the Compute Optimizer User Guide. You can also get averaged utilization
	// metric data for your resources using Amazon CloudWatch. For more information,
	// see the Amazon CloudWatch User Guide (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html).
	Statistic *string `locationName:"statistic" type:"string" enum:"ECSServiceMetricStatistic"`

	// The value of the utilization metric.
	Value *float64 `locationName:"value" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSServiceUtilizationMetric) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ECSServiceUtilizationMetric) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *ECSServiceUtilizationMetric) SetName(v string) *ECSServiceUtilizationMetric {
	s.Name = &v
	return s
}

// SetStatistic sets the Statistic field's value.
func (s *ECSServiceUtilizationMetric) SetStatistic(v string) *ECSServiceUtilizationMetric {
	s.Statistic = &v
	return s
}

// SetValue sets the Value field's value.
func (s *ECSServiceUtilizationMetric) SetValue(v float64) *ECSServiceUtilizationMetric {
	s.Value = &v
	return s
}

// Describes the effective preferred resources that Compute Optimizer considers
// as rightsizing recommendation candidates.
//
// Compute Optimizer only supports Amazon EC2 instance types.
type EffectivePreferredResource struct {
	_ struct{} `type:"structure"`

	// The expanded version of your preferred resource's include list.
	EffectiveIncludeList []*string `locationName:"effectiveIncludeList" type:"list"`

	// The list of preferred resources values that you want excluded from rightsizing
	// recommendation candidates.
	ExcludeList []*string `locationName:"excludeList" type:"list"`

	// The list of preferred resource values that you want considered as rightsizing
	// recommendation candidates.
	IncludeList []*string `locationName:"includeList" type:"list"`

	// The name of the preferred resource list.
	Name *string `locationName:"name" type:"string" enum:"PreferredResourceName"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EffectivePreferredResource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EffectivePreferredResource) GoString() string {
	return s.String()
}

// SetEffectiveIncludeList sets the EffectiveIncludeList field's value.
func (s *EffectivePreferredResource) SetEffectiveIncludeList(v []*string) *EffectivePreferredResource {
	s.EffectiveIncludeList = v
	return s
}

// SetExcludeList sets the ExcludeList field's value.
func (s *EffectivePreferredResource) SetExcludeList(v []*string) *EffectivePreferredResource {
	s.ExcludeList = v
	return s
}

// SetIncludeList sets the IncludeList field's value.
func (s *EffectivePreferredResource) SetIncludeList(v []*string) *EffectivePreferredResource {
	s.IncludeList = v
	return s
}

// SetName sets the Name field's value.
func (s *EffectivePreferredResource) SetName(v string) *EffectivePreferredResource {
	s.Name = &v
	return s
}

// Describes the effective recommendation preferences for a resource.
type EffectiveRecommendationPreferences struct {
	_ struct{} `type:"structure"`

	// Describes the CPU vendor and architecture for an instance or Auto Scaling
	// group recommendations.
	//
	// For example, when you specify AWS_ARM64 with:
	//
	//    * A GetEC2InstanceRecommendations or GetAutoScalingGroupRecommendations
	//    request, Compute Optimizer returns recommendations that consist of Graviton2
	//    instance types only.
	//
	//    * A GetEC2RecommendationProjectedMetrics request, Compute Optimizer returns
	//    projected utilization metrics for Graviton2 instance type recommendations
	//    only.
	//
	//    * A ExportEC2InstanceRecommendations or ExportAutoScalingGroupRecommendations
	//    request, Compute Optimizer exports recommendations that consist of Graviton2
	//    instance types only.
	CpuVendorArchitectures []*string `locationName:"cpuVendorArchitectures" type:"list" enum:"CpuVendorArchitecture"`

	// Describes the activation status of the enhanced infrastructure metrics preference.
	//
	// A status of Active confirms that the preference is applied in the latest
	// recommendation refresh, and a status of Inactive confirms that it's not yet
	// applied to recommendations.
	//
	// For more information, see Enhanced infrastructure metrics (https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html)
	// in the Compute Optimizer User Guide.
	EnhancedInfrastructureMetrics *string `locationName:"enhancedInfrastructureMetrics" type:"string" enum:"EnhancedInfrastructureMetrics"`

	// An object that describes the external metrics recommendation preference.
	//
	// If the preference is applied in the latest recommendation refresh, an object
	// with a valid source value appears in the response. If the preference isn't
	// applied to the recommendations already, then this object doesn't appear in
	// the response.
	ExternalMetricsPreference *ExternalMetricsPreference `locationName:"externalMetricsPreference" type:"structure"`

	// Describes the activation status of the inferred workload types preference.
	//
	// A status of Active confirms that the preference is applied in the latest
	// recommendation refresh. A status of Inactive confirms that it's not yet applied
	// to recommendations.
	InferredWorkloadTypes *string `locationName:"inferredWorkloadTypes" type:"string" enum:"InferredWorkloadTypesPreference"`

	// The number of days the utilization metrics of the Amazon Web Services resource
	// are analyzed.
	LookBackPeriod *string `locationName:"lookBackPeriod" type:"string" enum:"LookBackPeriodPreference"`

	// The resource type values that are considered as candidates when generating
	// rightsizing recommendations.
	PreferredResources []*EffectivePreferredResource `locationName:"preferredResources" type:"list"`

	// Describes the savings estimation mode applied for calculating savings opportunity
	// for a resource.
	SavingsEstimationMode *InstanceSavingsEstimationMode `locationName:"savingsEstimationMode" type:"structure"`

	// The resource’s CPU utilization threshold preferences, such as threshold
	// and headroom, that are used to generate rightsizing recommendations.
	//
	// This preference is only available for the Amazon EC2 instance resource type.
	UtilizationPreferences []*UtilizationPreference `locationName:"utilizationPreferences" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EffectiveRecommendationPreferences) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EffectiveRecommendationPreferences) GoString() string {
	return s.String()
}

// SetCpuVendorArchitectures sets the CpuVendorArchitectures field's value.
func (s *EffectiveRecommendationPreferences) SetCpuVendorArchitectures(v []*string) *EffectiveRecommendationPreferences {
	s.CpuVendorArchitectures = v
	return s
}

// SetEnhancedInfrastructureMetrics sets the EnhancedInfrastructureMetrics field's value.
func (s *EffectiveRecommendationPreferences) SetEnhancedInfrastructureMetrics(v string) *EffectiveRecommendationPreferences {
	s.EnhancedInfrastructureMetrics = &v
	return s
}

// SetExternalMetricsPreference sets the ExternalMetricsPreference field's value.
func (s *EffectiveRecommendationPreferences) SetExternalMetricsPreference(v *ExternalMetricsPreference) *EffectiveRecommendationPreferences {
	s.ExternalMetricsPreference = v
	return s
}

// SetInferredWorkloadTypes sets the InferredWorkloadTypes field's value.
func (s *EffectiveRecommendationPreferences) SetInferredWorkloadTypes(v string) *EffectiveRecommendationPreferences {
	s.InferredWorkloadTypes = &v
	return s
}

// SetLookBackPeriod sets the LookBackPeriod field's value.
func (s *EffectiveRecommendationPreferences) SetLookBackPeriod(v string) *EffectiveRecommendationPreferences {
	s.LookBackPeriod = &v
	return s
}

// SetPreferredResources sets the PreferredResources field's value.
func (s *EffectiveRecommendationPreferences) SetPreferredResources(v []*EffectivePreferredResource) *EffectiveRecommendationPreferences {
	s.PreferredResources = v
	return s
}

// SetSavingsEstimationMode sets the SavingsEstimationMode field's value.
func (s *EffectiveRecommendationPreferences) SetSavingsEstimationMode(v *InstanceSavingsEstimationMode) *EffectiveRecommendationPreferences {
	s.SavingsEstimationMode = v
	return s
}

// SetUtilizationPreferences sets the UtilizationPreferences field's value.
func (s *EffectiveRecommendationPreferences) SetUtilizationPreferences(v []*UtilizationPreference) *EffectiveRecommendationPreferences {
	s.UtilizationPreferences = v
	return s
}

// Describes a filter that returns a more specific list of account enrollment
// statuses. Use this filter with the GetEnrollmentStatusesForOrganization action.
type EnrollmentFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter.
	//
	// Specify Status to return accounts with a specific enrollment status (for
	// example, Active).
	Name *string `locationName:"name" type:"string" enum:"EnrollmentFilterName"`

	// The value of the filter.
	//
	// The valid values are Active, Inactive, Pending, and Failed.
	Values []*string `locationName:"values" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnrollmentFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnrollmentFilter) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *EnrollmentFilter) SetName(v string) *EnrollmentFilter {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *EnrollmentFilter) SetValues(v []*string) *EnrollmentFilter {
	s.Values = v
	return s
}

// Describes the estimated monthly savings amount possible, based on On-Demand
// instance pricing, by adopting Compute Optimizer recommendations for a given
// resource.
//
// For more information, see Estimated monthly savings and savings opportunities
// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/view-ec2-recommendations.html#ec2-savings-calculation)
// in the Compute Optimizer User Guide.
type EstimatedMonthlySavings struct {
	_ struct{} `type:"structure"`

	// The currency of the estimated monthly savings.
	Currency *string `locationName:"currency" type:"string" enum:"Currency"`

	// The value of the estimated monthly savings.
	Value *float64 `locationName:"value" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EstimatedMonthlySavings) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EstimatedMonthlySavings) GoString() string {
	return s.String()
}

// SetCurrency sets the Currency field's value.
func (s *EstimatedMonthlySavings) SetCurrency(v string) *EstimatedMonthlySavings {
	s.Currency = &v
	return s
}

// SetValue sets the Value field's value.
func (s *EstimatedMonthlySavings) SetValue(v float64) *EstimatedMonthlySavings {
	s.Value = &v
	return s
}

type ExportAutoScalingGroupRecommendationsInput struct {
	_ struct{} `type:"structure"`

	// The IDs of the Amazon Web Services accounts for which to export Auto Scaling
	// group recommendations.
	//
	// If your account is the management account of an organization, use this parameter
	// to specify the member account for which you want to export recommendations.
	//
	// This parameter cannot be specified together with the include member accounts
	// parameter. The parameters are mutually exclusive.
	//
	// Recommendations for member accounts are not included in the export if this
	// parameter, or the include member accounts parameter, is omitted.
	//
	// You can specify multiple account IDs per request.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// The recommendations data to include in the export file. For more information
	// about the fields that can be exported, see Exported files (https://docs.aws.amazon.com/compute-optimizer/latest/ug/exporting-recommendations.html#exported-files)
	// in the Compute Optimizer User Guide.
	FieldsToExport []*string `locationName:"fieldsToExport" type:"list" enum:"ExportableAutoScalingGroupField"`

	// The format of the export file.
	//
	// The only export file format currently supported is Csv.
	FileFormat *string `locationName:"fileFormat" type:"string" enum:"FileFormat"`

	// An array of objects to specify a filter that exports a more specific set
	// of Auto Scaling group recommendations.
	Filters []*Filter `locationName:"filters" type:"list"`

	// Indicates whether to include recommendations for resources in all member
	// accounts of the organization if your account is the management account of
	// an organization.
	//
	// The member accounts must also be opted in to Compute Optimizer, and trusted
	// access for Compute Optimizer must be enabled in the organization account.
	// For more information, see Compute Optimizer and Amazon Web Services Organizations
	// trusted access (https://docs.aws.amazon.com/compute-optimizer/latest/ug/security-iam.html#trusted-service-access)
	// in the Compute Optimizer User Guide.
	//
	// Recommendations for member accounts of the organization are not included
	// in the export file if this parameter is omitted.
	//
	// This parameter cannot be specified together with the account IDs parameter.
	// The parameters are mutually exclusive.
	//
	// Recommendations for member accounts are not included in the export if this
	// parameter, or the account IDs parameter, is omitted.
	IncludeMemberAccounts *bool `locationName:"includeMemberAccounts" type:"boolean"`

	// An object to specify the preferences for the Auto Scaling group recommendations
	// to export.
	RecommendationPreferences *RecommendationPreferences `locationName:"recommendationPreferences" type:"structure"`

	// An object to specify the destination Amazon Simple Storage Service (Amazon
	// S3) bucket name and key prefix for the export job.
	//
	// You must create the destination Amazon S3 bucket for your recommendations
	// export before you create the export job. Compute Optimizer does not create
	// the S3 bucket for you. After you create the S3 bucket, ensure that it has
	// the required permissions policy to allow Compute Optimizer to write the export
	// file to it. If you plan to specify an object prefix when you create the export
	// job, you must include the object prefix in the policy that you add to the
	// S3 bucket. For more information, see Amazon S3 Bucket Policy for Compute
	// Optimizer (https://docs.aws.amazon.com/compute-optimizer/latest/ug/create-s3-bucket-policy-for-compute-optimizer.html)
	// in the Compute Optimizer User Guide.
	//
	// S3DestinationConfig is a required field
	S3DestinationConfig *S3DestinationConfig `locationName:"s3DestinationConfig" type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportAutoScalingGroupRecommendationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportAutoScalingGroupRecommendationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ExportAutoScalingGroupRecommendationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ExportAutoScalingGroupRecommendationsInput"}
	if s.S3DestinationConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("S3DestinationConfig"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *ExportAutoScalingGroupRecommendationsInput) SetAccountIds(v []*string) *ExportAutoScalingGroupRecommendationsInput {
	s.AccountIds = v
	return s
}

// SetFieldsToExport sets the FieldsToExport field's value.
func (s *ExportAutoScalingGroupRecommendationsInput) SetFieldsToExport(v []*string) *ExportAutoScalingGroupRecommendationsInput {
	s.FieldsToExport = v
	return s
}

// SetFileFormat sets the FileFormat field's value.
func (s *ExportAutoScalingGroupRecommendationsInput) SetFileFormat(v string) *ExportAutoScalingGroupRecommendationsInput {
	s.FileFormat = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *ExportAutoScalingGroupRecommendationsInput) SetFilters(v []*Filter) *ExportAutoScalingGroupRecommendationsInput {
	s.Filters = v
	return s
}

// SetIncludeMemberAccounts sets the IncludeMemberAccounts field's value.
func (s *ExportAutoScalingGroupRecommendationsInput) SetIncludeMemberAccounts(v bool) *ExportAutoScalingGroupRecommendationsInput {
	s.IncludeMemberAccounts = &v
	return s
}

// SetRecommendationPreferences sets the RecommendationPreferences field's value.
func (s *ExportAutoScalingGroupRecommendationsInput) SetRecommendationPreferences(v *RecommendationPreferences) *ExportAutoScalingGroupRecommendationsInput {
	s.RecommendationPreferences = v
	return s
}

// SetS3DestinationConfig sets the S3DestinationConfig field's value.
func (s *ExportAutoScalingGroupRecommendationsInput) SetS3DestinationConfig(v *S3DestinationConfig) *ExportAutoScalingGroupRecommendationsInput {
	s.S3DestinationConfig = v
	return s
}

type ExportAutoScalingGroupRecommendationsOutput struct {
	_ struct{} `type:"structure"`

	// The identification number of the export job.
	//
	// Use the DescribeRecommendationExportJobs action, and specify the job ID to
	// view the status of an export job.
	JobId *string `locationName:"jobId" type:"string"`

	// An object that describes the destination Amazon S3 bucket of a recommendations
	// export file.
	S3Destination *S3Destination `locationName:"s3Destination" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportAutoScalingGroupRecommendationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportAutoScalingGroupRecommendationsOutput) GoString() string {
	return s.String()
}

// SetJobId sets the JobId field's value.
func (s *ExportAutoScalingGroupRecommendationsOutput) SetJobId(v string) *ExportAutoScalingGroupRecommendationsOutput {
	s.JobId = &v
	return s
}

// SetS3Destination sets the S3Destination field's value.
func (s *ExportAutoScalingGroupRecommendationsOutput) SetS3Destination(v *S3Destination) *ExportAutoScalingGroupRecommendationsOutput {
	s.S3Destination = v
	return s
}

// Describes the destination of the recommendations export and metadata files.
type ExportDestination struct {
	_ struct{} `type:"structure"`

	// An object that describes the destination Amazon Simple Storage Service (Amazon
	// S3) bucket name and object keys of a recommendations export file, and its
	// associated metadata file.
	S3 *S3Destination `locationName:"s3" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportDestination) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportDestination) GoString() string {
	return s.String()
}

// SetS3 sets the S3 field's value.
func (s *ExportDestination) SetS3(v *S3Destination) *ExportDestination {
	s.S3 = v
	return s
}

type ExportEBSVolumeRecommendationsInput struct {
	_ struct{} `type:"structure"`

	// The IDs of the Amazon Web Services accounts for which to export Amazon EBS
	// volume recommendations.
	//
	// If your account is the management account of an organization, use this parameter
	// to specify the member account for which you want to export recommendations.
	//
	// This parameter cannot be specified together with the include member accounts
	// parameter. The parameters are mutually exclusive.
	//
	// Recommendations for member accounts are not included in the export if this
	// parameter, or the include member accounts parameter, is omitted.
	//
	// You can specify multiple account IDs per request.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// The recommendations data to include in the export file. For more information
	// about the fields that can be exported, see Exported files (https://docs.aws.amazon.com/compute-optimizer/latest/ug/exporting-recommendations.html#exported-files)
	// in the Compute Optimizer User Guide.
	FieldsToExport []*string `locationName:"fieldsToExport" type:"list" enum:"ExportableVolumeField"`

	// The format of the export file.
	//
	// The only export file format currently supported is Csv.
	FileFormat *string `locationName:"fileFormat" type:"string" enum:"FileFormat"`

	// An array of objects to specify a filter that exports a more specific set
	// of Amazon EBS volume recommendations.
	Filters []*EBSFilter `locationName:"filters" type:"list"`

	// Indicates whether to include recommendations for resources in all member
	// accounts of the organization if your account is the management account of
	// an organization.
	//
	// The member accounts must also be opted in to Compute Optimizer, and trusted
	// access for Compute Optimizer must be enabled in the organization account.
	// For more information, see Compute Optimizer and Amazon Web Services Organizations
	// trusted access (https://docs.aws.amazon.com/compute-optimizer/latest/ug/security-iam.html#trusted-service-access)
	// in the Compute Optimizer User Guide.
	//
	// Recommendations for member accounts of the organization are not included
	// in the export file if this parameter is omitted.
	//
	// This parameter cannot be specified together with the account IDs parameter.
	// The parameters are mutually exclusive.
	//
	// Recommendations for member accounts are not included in the export if this
	// parameter, or the account IDs parameter, is omitted.
	IncludeMemberAccounts *bool `locationName:"includeMemberAccounts" type:"boolean"`

	// Describes the destination Amazon Simple Storage Service (Amazon S3) bucket
	// name and key prefix for a recommendations export job.
	//
	// You must create the destination Amazon S3 bucket for your recommendations
	// export before you create the export job. Compute Optimizer does not create
	// the S3 bucket for you. After you create the S3 bucket, ensure that it has
	// the required permission policy to allow Compute Optimizer to write the export
	// file to it. If you plan to specify an object prefix when you create the export
	// job, you must include the object prefix in the policy that you add to the
	// S3 bucket. For more information, see Amazon S3 Bucket Policy for Compute
	// Optimizer (https://docs.aws.amazon.com/compute-optimizer/latest/ug/create-s3-bucket-policy-for-compute-optimizer.html)
	// in the Compute Optimizer User Guide.
	//
	// S3DestinationConfig is a required field
	S3DestinationConfig *S3DestinationConfig `locationName:"s3DestinationConfig" type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportEBSVolumeRecommendationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportEBSVolumeRecommendationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ExportEBSVolumeRecommendationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ExportEBSVolumeRecommendationsInput"}
	if s.S3DestinationConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("S3DestinationConfig"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *ExportEBSVolumeRecommendationsInput) SetAccountIds(v []*string) *ExportEBSVolumeRecommendationsInput {
	s.AccountIds = v
	return s
}

// SetFieldsToExport sets the FieldsToExport field's value.
func (s *ExportEBSVolumeRecommendationsInput) SetFieldsToExport(v []*string) *ExportEBSVolumeRecommendationsInput {
	s.FieldsToExport = v
	return s
}

// SetFileFormat sets the FileFormat field's value.
func (s *ExportEBSVolumeRecommendationsInput) SetFileFormat(v string) *ExportEBSVolumeRecommendationsInput {
	s.FileFormat = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *ExportEBSVolumeRecommendationsInput) SetFilters(v []*EBSFilter) *ExportEBSVolumeRecommendationsInput {
	s.Filters = v
	return s
}

// SetIncludeMemberAccounts sets the IncludeMemberAccounts field's value.
func (s *ExportEBSVolumeRecommendationsInput) SetIncludeMemberAccounts(v bool) *ExportEBSVolumeRecommendationsInput {
	s.IncludeMemberAccounts = &v
	return s
}

// SetS3DestinationConfig sets the S3DestinationConfig field's value.
func (s *ExportEBSVolumeRecommendationsInput) SetS3DestinationConfig(v *S3DestinationConfig) *ExportEBSVolumeRecommendationsInput {
	s.S3DestinationConfig = v
	return s
}

type ExportEBSVolumeRecommendationsOutput struct {
	_ struct{} `type:"structure"`

	// The identification number of the export job.
	//
	// Use the DescribeRecommendationExportJobs action, and specify the job ID to
	// view the status of an export job.
	JobId *string `locationName:"jobId" type:"string"`

	// Describes the destination Amazon Simple Storage Service (Amazon S3) bucket
	// name and object keys of a recommendations export file, and its associated
	// metadata file.
	S3Destination *S3Destination `locationName:"s3Destination" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportEBSVolumeRecommendationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportEBSVolumeRecommendationsOutput) GoString() string {
	return s.String()
}

// SetJobId sets the JobId field's value.
func (s *ExportEBSVolumeRecommendationsOutput) SetJobId(v string) *ExportEBSVolumeRecommendationsOutput {
	s.JobId = &v
	return s
}

// SetS3Destination sets the S3Destination field's value.
func (s *ExportEBSVolumeRecommendationsOutput) SetS3Destination(v *S3Destination) *ExportEBSVolumeRecommendationsOutput {
	s.S3Destination = v
	return s
}

type ExportEC2InstanceRecommendationsInput struct {
	_ struct{} `type:"structure"`

	// The IDs of the Amazon Web Services accounts for which to export instance
	// recommendations.
	//
	// If your account is the management account of an organization, use this parameter
	// to specify the member account for which you want to export recommendations.
	//
	// This parameter cannot be specified together with the include member accounts
	// parameter. The parameters are mutually exclusive.
	//
	// Recommendations for member accounts are not included in the export if this
	// parameter, or the include member accounts parameter, is omitted.
	//
	// You can specify multiple account IDs per request.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// The recommendations data to include in the export file. For more information
	// about the fields that can be exported, see Exported files (https://docs.aws.amazon.com/compute-optimizer/latest/ug/exporting-recommendations.html#exported-files)
	// in the Compute Optimizer User Guide.
	FieldsToExport []*string `locationName:"fieldsToExport" type:"list" enum:"ExportableInstanceField"`

	// The format of the export file.
	//
	// The only export file format currently supported is Csv.
	FileFormat *string `locationName:"fileFormat" type:"string" enum:"FileFormat"`

	// An array of objects to specify a filter that exports a more specific set
	// of instance recommendations.
	Filters []*Filter `locationName:"filters" type:"list"`

	// Indicates whether to include recommendations for resources in all member
	// accounts of the organization if your account is the management account of
	// an organization.
	//
	// The member accounts must also be opted in to Compute Optimizer, and trusted
	// access for Compute Optimizer must be enabled in the organization account.
	// For more information, see Compute Optimizer and Amazon Web Services Organizations
	// trusted access (https://docs.aws.amazon.com/compute-optimizer/latest/ug/security-iam.html#trusted-service-access)
	// in the Compute Optimizer User Guide.
	//
	// Recommendations for member accounts of the organization are not included
	// in the export file if this parameter is omitted.
	//
	// Recommendations for member accounts are not included in the export if this
	// parameter, or the account IDs parameter, is omitted.
	IncludeMemberAccounts *bool `locationName:"includeMemberAccounts" type:"boolean"`

	// An object to specify the preferences for the Amazon EC2 instance recommendations
	// to export.
	RecommendationPreferences *RecommendationPreferences `locationName:"recommendationPreferences" type:"structure"`

	// An object to specify the destination Amazon Simple Storage Service (Amazon
	// S3) bucket name and key prefix for the export job.
	//
	// You must create the destination Amazon S3 bucket for your recommendations
	// export before you create the export job. Compute Optimizer does not create
	// the S3 bucket for you. After you create the S3 bucket, ensure that it has
	// the required permissions policy to allow Compute Optimizer to write the export
	// file to it. If you plan to specify an object prefix when you create the export
	// job, you must include the object prefix in the policy that you add to the
	// S3 bucket. For more information, see Amazon S3 Bucket Policy for Compute
	// Optimizer (https://docs.aws.amazon.com/compute-optimizer/latest/ug/create-s3-bucket-policy-for-compute-optimizer.html)
	// in the Compute Optimizer User Guide.
	//
	// S3DestinationConfig is a required field
	S3DestinationConfig *S3DestinationConfig `locationName:"s3DestinationConfig" type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportEC2InstanceRecommendationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportEC2InstanceRecommendationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ExportEC2InstanceRecommendationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ExportEC2InstanceRecommendationsInput"}
	if s.S3DestinationConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("S3DestinationConfig"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *ExportEC2InstanceRecommendationsInput) SetAccountIds(v []*string) *ExportEC2InstanceRecommendationsInput {
	s.AccountIds = v
	return s
}

// SetFieldsToExport sets the FieldsToExport field's value.
func (s *ExportEC2InstanceRecommendationsInput) SetFieldsToExport(v []*string) *ExportEC2InstanceRecommendationsInput {
	s.FieldsToExport = v
	return s
}

// SetFileFormat sets the FileFormat field's value.
func (s *ExportEC2InstanceRecommendationsInput) SetFileFormat(v string) *ExportEC2InstanceRecommendationsInput {
	s.FileFormat = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *ExportEC2InstanceRecommendationsInput) SetFilters(v []*Filter) *ExportEC2InstanceRecommendationsInput {
	s.Filters = v
	return s
}

// SetIncludeMemberAccounts sets the IncludeMemberAccounts field's value.
func (s *ExportEC2InstanceRecommendationsInput) SetIncludeMemberAccounts(v bool) *ExportEC2InstanceRecommendationsInput {
	s.IncludeMemberAccounts = &v
	return s
}

// SetRecommendationPreferences sets the RecommendationPreferences field's value.
func (s *ExportEC2InstanceRecommendationsInput) SetRecommendationPreferences(v *RecommendationPreferences) *ExportEC2InstanceRecommendationsInput {
	s.RecommendationPreferences = v
	return s
}

// SetS3DestinationConfig sets the S3DestinationConfig field's value.
func (s *ExportEC2InstanceRecommendationsInput) SetS3DestinationConfig(v *S3DestinationConfig) *ExportEC2InstanceRecommendationsInput {
	s.S3DestinationConfig = v
	return s
}

type ExportEC2InstanceRecommendationsOutput struct {
	_ struct{} `type:"structure"`

	// The identification number of the export job.
	//
	// Use the DescribeRecommendationExportJobs action, and specify the job ID to
	// view the status of an export job.
	JobId *string `locationName:"jobId" type:"string"`

	// An object that describes the destination Amazon S3 bucket of a recommendations
	// export file.
	S3Destination *S3Destination `locationName:"s3Destination" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportEC2InstanceRecommendationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportEC2InstanceRecommendationsOutput) GoString() string {
	return s.String()
}

// SetJobId sets the JobId field's value.
func (s *ExportEC2InstanceRecommendationsOutput) SetJobId(v string) *ExportEC2InstanceRecommendationsOutput {
	s.JobId = &v
	return s
}

// SetS3Destination sets the S3Destination field's value.
func (s *ExportEC2InstanceRecommendationsOutput) SetS3Destination(v *S3Destination) *ExportEC2InstanceRecommendationsOutput {
	s.S3Destination = v
	return s
}

type ExportECSServiceRecommendationsInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account IDs for the export Amazon ECS service recommendations.
	//
	// If your account is the management account or the delegated administrator
	// of an organization, use this parameter to specify the member account you
	// want to export recommendations to.
	//
	// This parameter can't be specified together with the include member accounts
	// parameter. The parameters are mutually exclusive.
	//
	// If this parameter or the include member accounts parameter is omitted, the
	// recommendations for member accounts aren't included in the export.
	//
	// You can specify multiple account IDs per request.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// The recommendations data to include in the export file. For more information
	// about the fields that can be exported, see Exported files (https://docs.aws.amazon.com/compute-optimizer/latest/ug/exporting-recommendations.html#exported-files)
	// in the Compute Optimizer User Guide.
	FieldsToExport []*string `locationName:"fieldsToExport" type:"list" enum:"ExportableECSServiceField"`

	// The format of the export file.
	//
	// The CSV file is the only export file format currently supported.
	FileFormat *string `locationName:"fileFormat" type:"string" enum:"FileFormat"`

	// An array of objects to specify a filter that exports a more specific set
	// of Amazon ECS service recommendations.
	Filters []*ECSServiceRecommendationFilter `locationName:"filters" type:"list"`

	// If your account is the management account or the delegated administrator
	// of an organization, this parameter indicates whether to include recommendations
	// for resources in all member accounts of the organization.
	//
	// The member accounts must also be opted in to Compute Optimizer, and trusted
	// access for Compute Optimizer must be enabled in the organization account.
	// For more information, see Compute Optimizer and Amazon Web Services Organizations
	// trusted access (https://docs.aws.amazon.com/compute-optimizer/latest/ug/security-iam.html#trusted-service-access)
	// in the Compute Optimizer User Guide.
	//
	// If this parameter is omitted, recommendations for member accounts of the
	// organization aren't included in the export file.
	//
	// If this parameter or the account ID parameter is omitted, recommendations
	// for member accounts aren't included in the export.
	IncludeMemberAccounts *bool `locationName:"includeMemberAccounts" type:"boolean"`

	// Describes the destination Amazon Simple Storage Service (Amazon S3) bucket
	// name and key prefix for a recommendations export job.
	//
	// You must create the destination Amazon S3 bucket for your recommendations
	// export before you create the export job. Compute Optimizer does not create
	// the S3 bucket for you. After you create the S3 bucket, ensure that it has
	// the required permission policy to allow Compute Optimizer to write the export
	// file to it. If you plan to specify an object prefix when you create the export
	// job, you must include the object prefix in the policy that you add to the
	// S3 bucket. For more information, see Amazon S3 Bucket Policy for Compute
	// Optimizer (https://docs.aws.amazon.com/compute-optimizer/latest/ug/create-s3-bucket-policy-for-compute-optimizer.html)
	// in the Compute Optimizer User Guide.
	//
	// S3DestinationConfig is a required field
	S3DestinationConfig *S3DestinationConfig `locationName:"s3DestinationConfig" type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportECSServiceRecommendationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportECSServiceRecommendationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ExportECSServiceRecommendationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ExportECSServiceRecommendationsInput"}
	if s.S3DestinationConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("S3DestinationConfig"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *ExportECSServiceRecommendationsInput) SetAccountIds(v []*string) *ExportECSServiceRecommendationsInput {
	s.AccountIds = v
	return s
}

// SetFieldsToExport sets the FieldsToExport field's value.
func (s *ExportECSServiceRecommendationsInput) SetFieldsToExport(v []*string) *ExportECSServiceRecommendationsInput {
	s.FieldsToExport = v
	return s
}

// SetFileFormat sets the FileFormat field's value.
func (s *ExportECSServiceRecommendationsInput) SetFileFormat(v string) *ExportECSServiceRecommendationsInput {
	s.FileFormat = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *ExportECSServiceRecommendationsInput) SetFilters(v []*ECSServiceRecommendationFilter) *ExportECSServiceRecommendationsInput {
	s.Filters = v
	return s
}

// SetIncludeMemberAccounts sets the IncludeMemberAccounts field's value.
func (s *ExportECSServiceRecommendationsInput) SetIncludeMemberAccounts(v bool) *ExportECSServiceRecommendationsInput {
	s.IncludeMemberAccounts = &v
	return s
}

// SetS3DestinationConfig sets the S3DestinationConfig field's value.
func (s *ExportECSServiceRecommendationsInput) SetS3DestinationConfig(v *S3DestinationConfig) *ExportECSServiceRecommendationsInput {
	s.S3DestinationConfig = v
	return s
}

type ExportECSServiceRecommendationsOutput struct {
	_ struct{} `type:"structure"`

	// The identification number of the export job.
	//
	// To view the status of an export job, use the DescribeRecommendationExportJobs
	// action and specify the job ID.
	JobId *string `locationName:"jobId" type:"string"`

	// Describes the destination Amazon Simple Storage Service (Amazon S3) bucket
	// name and object keys of a recommendations export file, and its associated
	// metadata file.
	S3Destination *S3Destination `locationName:"s3Destination" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportECSServiceRecommendationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportECSServiceRecommendationsOutput) GoString() string {
	return s.String()
}

// SetJobId sets the JobId field's value.
func (s *ExportECSServiceRecommendationsOutput) SetJobId(v string) *ExportECSServiceRecommendationsOutput {
	s.JobId = &v
	return s
}

// SetS3Destination sets the S3Destination field's value.
func (s *ExportECSServiceRecommendationsOutput) SetS3Destination(v *S3Destination) *ExportECSServiceRecommendationsOutput {
	s.S3Destination = v
	return s
}

type ExportLambdaFunctionRecommendationsInput struct {
	_ struct{} `type:"structure"`

	// The IDs of the Amazon Web Services accounts for which to export Lambda function
	// recommendations.
	//
	// If your account is the management account of an organization, use this parameter
	// to specify the member account for which you want to export recommendations.
	//
	// This parameter cannot be specified together with the include member accounts
	// parameter. The parameters are mutually exclusive.
	//
	// Recommendations for member accounts are not included in the export if this
	// parameter, or the include member accounts parameter, is omitted.
	//
	// You can specify multiple account IDs per request.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// The recommendations data to include in the export file. For more information
	// about the fields that can be exported, see Exported files (https://docs.aws.amazon.com/compute-optimizer/latest/ug/exporting-recommendations.html#exported-files)
	// in the Compute Optimizer User Guide.
	FieldsToExport []*string `locationName:"fieldsToExport" type:"list" enum:"ExportableLambdaFunctionField"`

	// The format of the export file.
	//
	// The only export file format currently supported is Csv.
	FileFormat *string `locationName:"fileFormat" type:"string" enum:"FileFormat"`

	// An array of objects to specify a filter that exports a more specific set
	// of Lambda function recommendations.
	Filters []*LambdaFunctionRecommendationFilter `locationName:"filters" type:"list"`

	// Indicates whether to include recommendations for resources in all member
	// accounts of the organization if your account is the management account of
	// an organization.
	//
	// The member accounts must also be opted in to Compute Optimizer, and trusted
	// access for Compute Optimizer must be enabled in the organization account.
	// For more information, see Compute Optimizer and Amazon Web Services Organizations
	// trusted access (https://docs.aws.amazon.com/compute-optimizer/latest/ug/security-iam.html#trusted-service-access)
	// in the Compute Optimizer User Guide.
	//
	// Recommendations for member accounts of the organization are not included
	// in the export file if this parameter is omitted.
	//
	// This parameter cannot be specified together with the account IDs parameter.
	// The parameters are mutually exclusive.
	//
	// Recommendations for member accounts are not included in the export if this
	// parameter, or the account IDs parameter, is omitted.
	IncludeMemberAccounts *bool `locationName:"includeMemberAccounts" type:"boolean"`

	// Describes the destination Amazon Simple Storage Service (Amazon S3) bucket
	// name and key prefix for a recommendations export job.
	//
	// You must create the destination Amazon S3 bucket for your recommendations
	// export before you create the export job. Compute Optimizer does not create
	// the S3 bucket for you. After you create the S3 bucket, ensure that it has
	// the required permission policy to allow Compute Optimizer to write the export
	// file to it. If you plan to specify an object prefix when you create the export
	// job, you must include the object prefix in the policy that you add to the
	// S3 bucket. For more information, see Amazon S3 Bucket Policy for Compute
	// Optimizer (https://docs.aws.amazon.com/compute-optimizer/latest/ug/create-s3-bucket-policy-for-compute-optimizer.html)
	// in the Compute Optimizer User Guide.
	//
	// S3DestinationConfig is a required field
	S3DestinationConfig *S3DestinationConfig `locationName:"s3DestinationConfig" type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportLambdaFunctionRecommendationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportLambdaFunctionRecommendationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ExportLambdaFunctionRecommendationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ExportLambdaFunctionRecommendationsInput"}
	if s.S3DestinationConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("S3DestinationConfig"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *ExportLambdaFunctionRecommendationsInput) SetAccountIds(v []*string) *ExportLambdaFunctionRecommendationsInput {
	s.AccountIds = v
	return s
}

// SetFieldsToExport sets the FieldsToExport field's value.
func (s *ExportLambdaFunctionRecommendationsInput) SetFieldsToExport(v []*string) *ExportLambdaFunctionRecommendationsInput {
	s.FieldsToExport = v
	return s
}

// SetFileFormat sets the FileFormat field's value.
func (s *ExportLambdaFunctionRecommendationsInput) SetFileFormat(v string) *ExportLambdaFunctionRecommendationsInput {
	s.FileFormat = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *ExportLambdaFunctionRecommendationsInput) SetFilters(v []*LambdaFunctionRecommendationFilter) *ExportLambdaFunctionRecommendationsInput {
	s.Filters = v
	return s
}

// SetIncludeMemberAccounts sets the IncludeMemberAccounts field's value.
func (s *ExportLambdaFunctionRecommendationsInput) SetIncludeMemberAccounts(v bool) *ExportLambdaFunctionRecommendationsInput {
	s.IncludeMemberAccounts = &v
	return s
}

// SetS3DestinationConfig sets the S3DestinationConfig field's value.
func (s *ExportLambdaFunctionRecommendationsInput) SetS3DestinationConfig(v *S3DestinationConfig) *ExportLambdaFunctionRecommendationsInput {
	s.S3DestinationConfig = v
	return s
}

type ExportLambdaFunctionRecommendationsOutput struct {
	_ struct{} `type:"structure"`

	// The identification number of the export job.
	//
	// Use the DescribeRecommendationExportJobs action, and specify the job ID to
	// view the status of an export job.
	JobId *string `locationName:"jobId" type:"string"`

	// Describes the destination Amazon Simple Storage Service (Amazon S3) bucket
	// name and object keys of a recommendations export file, and its associated
	// metadata file.
	S3Destination *S3Destination `locationName:"s3Destination" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportLambdaFunctionRecommendationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportLambdaFunctionRecommendationsOutput) GoString() string {
	return s.String()
}

// SetJobId sets the JobId field's value.
func (s *ExportLambdaFunctionRecommendationsOutput) SetJobId(v string) *ExportLambdaFunctionRecommendationsOutput {
	s.JobId = &v
	return s
}

// SetS3Destination sets the S3Destination field's value.
func (s *ExportLambdaFunctionRecommendationsOutput) SetS3Destination(v *S3Destination) *ExportLambdaFunctionRecommendationsOutput {
	s.S3Destination = v
	return s
}

type ExportLicenseRecommendationsInput struct {
	_ struct{} `type:"structure"`

	// The IDs of the Amazon Web Services accounts for which to export license recommendations.
	//
	// If your account is the management account of an organization, use this parameter
	// to specify the member account for which you want to export recommendations.
	//
	// This parameter can't be specified together with the include member accounts
	// parameter. The parameters are mutually exclusive.
	//
	// If this parameter is omitted, recommendations for member accounts aren't
	// included in the export.
	//
	// You can specify multiple account IDs per request.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// The recommendations data to include in the export file. For more information
	// about the fields that can be exported, see Exported files (https://docs.aws.amazon.com/compute-optimizer/latest/ug/exporting-recommendations.html#exported-files)
	// in the Compute Optimizer User Guide.
	FieldsToExport []*string `locationName:"fieldsToExport" type:"list" enum:"ExportableLicenseField"`

	// The format of the export file.
	//
	// A CSV file is the only export format currently supported.
	FileFormat *string `locationName:"fileFormat" type:"string" enum:"FileFormat"`

	// An array of objects to specify a filter that exports a more specific set
	// of license recommendations.
	Filters []*LicenseRecommendationFilter `locationName:"filters" type:"list"`

	// Indicates whether to include recommendations for resources in all member
	// accounts of the organization if your account is the management account of
	// an organization.
	//
	// The member accounts must also be opted in to Compute Optimizer, and trusted
	// access for Compute Optimizer must be enabled in the organization account.
	// For more information, see Compute Optimizer and Amazon Web Services Organizations
	// trusted access (https://docs.aws.amazon.com/compute-optimizer/latest/ug/security-iam.html#trusted-service-access)
	// in the Compute Optimizer User Guide.
	//
	// If this parameter is omitted, recommendations for member accounts of the
	// organization aren't included in the export file .
	//
	// This parameter cannot be specified together with the account IDs parameter.
	// The parameters are mutually exclusive.
	IncludeMemberAccounts *bool `locationName:"includeMemberAccounts" type:"boolean"`

	// Describes the destination Amazon Simple Storage Service (Amazon S3) bucket
	// name and key prefix for a recommendations export job.
	//
	// You must create the destination Amazon S3 bucket for your recommendations
	// export before you create the export job. Compute Optimizer does not create
	// the S3 bucket for you. After you create the S3 bucket, ensure that it has
	// the required permission policy to allow Compute Optimizer to write the export
	// file to it. If you plan to specify an object prefix when you create the export
	// job, you must include the object prefix in the policy that you add to the
	// S3 bucket. For more information, see Amazon S3 Bucket Policy for Compute
	// Optimizer (https://docs.aws.amazon.com/compute-optimizer/latest/ug/create-s3-bucket-policy-for-compute-optimizer.html)
	// in the Compute Optimizer User Guide.
	//
	// S3DestinationConfig is a required field
	S3DestinationConfig *S3DestinationConfig `locationName:"s3DestinationConfig" type:"structure" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportLicenseRecommendationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportLicenseRecommendationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ExportLicenseRecommendationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ExportLicenseRecommendationsInput"}
	if s.S3DestinationConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("S3DestinationConfig"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountIds sets the AccountIds field's value.
func (s *ExportLicenseRecommendationsInput) SetAccountIds(v []*string) *ExportLicenseRecommendationsInput {
	s.AccountIds = v
	return s
}

// SetFieldsToExport sets the FieldsToExport field's value.
func (s *ExportLicenseRecommendationsInput) SetFieldsToExport(v []*string) *ExportLicenseRecommendationsInput {
	s.FieldsToExport = v
	return s
}

// SetFileFormat sets the FileFormat field's value.
func (s *ExportLicenseRecommendationsInput) SetFileFormat(v string) *ExportLicenseRecommendationsInput {
	s.FileFormat = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *ExportLicenseRecommendationsInput) SetFilters(v []*LicenseRecommendationFilter) *ExportLicenseRecommendationsInput {
	s.Filters = v
	return s
}

// SetIncludeMemberAccounts sets the IncludeMemberAccounts field's value.
func (s *ExportLicenseRecommendationsInput) SetIncludeMemberAccounts(v bool) *ExportLicenseRecommendationsInput {
	s.IncludeMemberAccounts = &v
	return s
}

// SetS3DestinationConfig sets the S3DestinationConfig field's value.
func (s *ExportLicenseRecommendationsInput) SetS3DestinationConfig(v *S3DestinationConfig) *ExportLicenseRecommendationsInput {
	s.S3DestinationConfig = v
	return s
}

type ExportLicenseRecommendationsOutput struct {
	_ struct{} `type:"structure"`

	// The identification number of the export job.
	//
	// To view the status of an export job, use the DescribeRecommendationExportJobs
	// action and specify the job ID.
	JobId *string `locationName:"jobId" type:"string"`

	// Describes the destination Amazon Simple Storage Service (Amazon S3) bucket
	// name and object keys of a recommendations export file, and its associated
	// metadata file.
	S3Destination *S3Destination `locationName:"s3Destination" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportLicenseRecommendationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportLicenseRecommendationsOutput) GoString() string {
	return s.String()
}

// SetJobId sets the JobId field's value.
func (s *ExportLicenseRecommendationsOutput) SetJobId(v string) *ExportLicenseRecommendationsOutput {
	s.JobId = &v
	return s
}

// SetS3Destination sets the S3Destination field's value.
func (s *ExportLicenseRecommendationsOutput) SetS3Destination(v *S3Destination) *ExportLicenseRecommendationsOutput {
	s.S3Destination = v
	return s
}

// Describes Compute Optimizer's integration status with your chosen external
// metric provider. For example, Datadog.
type ExternalMetricStatus struct {
	_ struct{} `type:"structure"`

	// The status code for Compute Optimizer's integration with an external metrics
	// provider.
	StatusCode *string `locationName:"statusCode" type:"string" enum:"ExternalMetricStatusCode"`

	// The reason for Compute Optimizer's integration status with your external
	// metric provider.
	StatusReason *string `locationName:"statusReason" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExternalMetricStatus) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExternalMetricStatus) GoString() string {
	return s.String()
}

// SetStatusCode sets the StatusCode field's value.
func (s *ExternalMetricStatus) SetStatusCode(v string) *ExternalMetricStatus {
	s.StatusCode = &v
	return s
}

// SetStatusReason sets the StatusReason field's value.
func (s *ExternalMetricStatus) SetStatusReason(v string) *ExternalMetricStatus {
	s.StatusReason = &v
	return s
}

// Describes the external metrics preferences for EC2 rightsizing recommendations.
type ExternalMetricsPreference struct {
	_ struct{} `type:"structure"`

	// Contains the source options for external metrics preferences.
	Source *string `locationName:"source" type:"string" enum:"ExternalMetricsSource"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExternalMetricsPreference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExternalMetricsPreference) GoString() string {
	return s.String()
}

// SetSource sets the Source field's value.
func (s *ExternalMetricsPreference) SetSource(v string) *ExternalMetricsPreference {
	s.Source = &v
	return s
}

// Describes a filter that returns a more specific list of recommendations.
// Use this filter with the GetAutoScalingGroupRecommendations and GetEC2InstanceRecommendations
// actions.
//
// You can use EBSFilter with the GetEBSVolumeRecommendations action, LambdaFunctionRecommendationFilter
// with the GetLambdaFunctionRecommendations action, and JobFilter with the
// DescribeRecommendationExportJobs action.
type Filter struct {
	_ struct{} `type:"structure"`

	// The name of the filter.
	//
	// Specify Finding to return recommendations with a specific finding classification.
	// For example, Underprovisioned.
	//
	// Specify RecommendationSourceType to return recommendations of a specific
	// resource type. For example, Ec2Instance.
	//
	// Specify FindingReasonCodes to return recommendations with a specific finding
	// reason code. For example, CPUUnderprovisioned.
	//
	// Specify InferredWorkloadTypes to return recommendations of a specific inferred
	// workload. For example, Redis.
	//
	// You can filter your EC2 instance recommendations by tag:key and tag-key tags.
	//
	// A tag:key is a key and value combination of a tag assigned to your recommendations.
	// Use the tag key in the filter name and the tag value as the filter value.
	// For example, to find all recommendations that have a tag with the key of
	// Owner and the value of TeamA, specify tag:Owner for the filter name and TeamA
	// for the filter value.
	//
	// A tag-key is the key of a tag assigned to your recommendations. Use this
	// filter to find all of your recommendations that have a tag with a specific
	// key. This doesn’t consider the tag value. For example, you can find your
	// recommendations with a tag key value of Owner or without any tag keys assigned.
	Name *string `locationName:"name" type:"string" enum:"FilterName"`

	// The value of the filter.
	//
	// The valid values for this parameter are as follows, depending on what you
	// specify for the name parameter and the resource type that you wish to filter
	// results for:
	//
	//    * Specify Optimized or NotOptimized if you specify the name parameter
	//    as Finding and you want to filter results for Auto Scaling groups.
	//
	//    * Specify Underprovisioned, Overprovisioned, or Optimized if you specify
	//    the name parameter as Finding and you want to filter results for EC2 instances.
	//
	//    * Specify Ec2Instance or AutoScalingGroup if you specify the name parameter
	//    as RecommendationSourceType.
	//
	//    * Specify one of the following options if you specify the name parameter
	//    as FindingReasonCodes: CPUOverprovisioned — The instance’s CPU configuration
	//    can be sized down while still meeting the performance requirements of
	//    your workload. CPUUnderprovisioned — The instance’s CPU configuration
	//    doesn't meet the performance requirements of your workload and there is
	//    an alternative instance type that provides better CPU performance. MemoryOverprovisioned
	//    — The instance’s memory configuration can be sized down while still
	//    meeting the performance requirements of your workload. MemoryUnderprovisioned
	//    — The instance’s memory configuration doesn't meet the performance
	//    requirements of your workload and there is an alternative instance type
	//    that provides better memory performance. EBSThroughputOverprovisioned
	//    — The instance’s EBS throughput configuration can be sized down while
	//    still meeting the performance requirements of your workload. EBSThroughputUnderprovisioned
	//    — The instance’s EBS throughput configuration doesn't meet the performance
	//    requirements of your workload and there is an alternative instance type
	//    that provides better EBS throughput performance. EBSIOPSOverprovisioned
	//    — The instance’s EBS IOPS configuration can be sized down while still
	//    meeting the performance requirements of your workload. EBSIOPSUnderprovisioned
	//    — The instance’s EBS IOPS configuration doesn't meet the performance
	//    requirements of your workload and there is an alternative instance type
	//    that provides better EBS IOPS performance. NetworkBandwidthOverprovisioned
	//    — The instance’s network bandwidth configuration can be sized down
	//    while still meeting the performance requirements of your workload. NetworkBandwidthUnderprovisioned
	//    — The instance’s network bandwidth configuration doesn't meet the
	//    performance requirements of your workload and there is an alternative
	//    instance type that provides better network bandwidth performance. This
	//    finding reason happens when the NetworkIn or NetworkOut performance of
	//    an instance is impacted. NetworkPPSOverprovisioned — The instance’s
	//    network PPS (packets per second) configuration can be sized down while
	//    still meeting the performance requirements of your workload. NetworkPPSUnderprovisioned
	//    — The instance’s network PPS (packets per second) configuration doesn't
	//    meet the performance requirements of your workload and there is an alternative
	//    instance type that provides better network PPS performance. DiskIOPSOverprovisioned
	//    — The instance’s disk IOPS configuration can be sized down while still
	//    meeting the performance requirements of your workload. DiskIOPSUnderprovisioned
	//    — The instance’s disk IOPS configuration doesn't meet the performance
	//    requirements of your workload and there is an alternative instance type
	//    that provides better disk IOPS performance. DiskThroughputOverprovisioned
	//    — The instance’s disk throughput configuration can be sized down while
	//    still meeting the performance requirements of your workload. DiskThroughputUnderprovisioned
	//    — The instance’s disk throughput configuration doesn't meet the performance
	//    requirements of your workload and there is an alternative instance type
	//    that provides better disk throughput performance.
	Values []*string `locationName:"values" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Filter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Filter) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *Filter) SetName(v string) *Filter {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *Filter) SetValues(v []*string) *Filter {
	s.Values = v
	return s
}

type GetAutoScalingGroupRecommendationsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account for which to return Auto Scaling
	// group recommendations.
	//
	// If your account is the management account of an organization, use this parameter
	// to specify the member account for which you want to return Auto Scaling group
	// recommendations.
	//
	// Only one account ID can be specified per request.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// The Amazon Resource Name (ARN) of the Auto Scaling groups for which to return
	// recommendations.
	AutoScalingGroupArns []*string `locationName:"autoScalingGroupArns" type:"list"`

	// An array of objects to specify a filter that returns a more specific list
	// of Auto Scaling group recommendations.
	Filters []*Filter `locationName:"filters" type:"list"`

	// The maximum number of Auto Scaling group recommendations to return with a
	// single request.
	//
	// To retrieve the remaining results, make another request with the returned
	// nextToken value.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The token to advance to the next page of Auto Scaling group recommendations.
	NextToken *string `locationName:"nextToken" type:"string"`

	// An object to specify the preferences for the Auto Scaling group recommendations
	// to return in the response.
	RecommendationPreferences *RecommendationPreferences `locationName:"recommendationPreferences" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAutoScalingGroupRecommendationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAutoScalingGroupRecommendationsInput) GoString() string {
	return s.String()
}

// SetAccountIds sets the AccountIds field's value.
func (s *GetAutoScalingGroupRecommendationsInput) SetAccountIds(v []*string) *GetAutoScalingGroupRecommendationsInput {
	s.AccountIds = v
	return s
}

// SetAutoScalingGroupArns sets the AutoScalingGroupArns field's value.
func (s *GetAutoScalingGroupRecommendationsInput) SetAutoScalingGroupArns(v []*string) *GetAutoScalingGroupRecommendationsInput {
	s.AutoScalingGroupArns = v
	return s
}

// SetFilters sets the Filters field's value.
func (s *GetAutoScalingGroupRecommendationsInput) SetFilters(v []*Filter) *GetAutoScalingGroupRecommendationsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetAutoScalingGroupRecommendationsInput) SetMaxResults(v int64) *GetAutoScalingGroupRecommendationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetAutoScalingGroupRecommendationsInput) SetNextToken(v string) *GetAutoScalingGroupRecommendationsInput {
	s.NextToken = &v
	return s
}

// SetRecommendationPreferences sets the RecommendationPreferences field's value.
func (s *GetAutoScalingGroupRecommendationsInput) SetRecommendationPreferences(v *RecommendationPreferences) *GetAutoScalingGroupRecommendationsInput {
	s.RecommendationPreferences = v
	return s
}

type GetAutoScalingGroupRecommendationsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe Auto Scaling group recommendations.
	AutoScalingGroupRecommendations []*AutoScalingGroupRecommendation `locationName:"autoScalingGroupRecommendations" type:"list"`

	// An array of objects that describe errors of the request.
	//
	// For example, an error is returned if you request recommendations for an unsupported
	// Auto Scaling group.
	Errors []*GetRecommendationError `locationName:"errors" type:"list"`

	// The token to use to advance to the next page of Auto Scaling group recommendations.
	//
	// This value is null when there are no more pages of Auto Scaling group recommendations
	// to return.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAutoScalingGroupRecommendationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAutoScalingGroupRecommendationsOutput) GoString() string {
	return s.String()
}

// SetAutoScalingGroupRecommendations sets the AutoScalingGroupRecommendations field's value.
func (s *GetAutoScalingGroupRecommendationsOutput) SetAutoScalingGroupRecommendations(v []*AutoScalingGroupRecommendation) *GetAutoScalingGroupRecommendationsOutput {
	s.AutoScalingGroupRecommendations = v
	return s
}

// SetErrors sets the Errors field's value.
func (s *GetAutoScalingGroupRecommendationsOutput) SetErrors(v []*GetRecommendationError) *GetAutoScalingGroupRecommendationsOutput {
	s.Errors = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetAutoScalingGroupRecommendationsOutput) SetNextToken(v string) *GetAutoScalingGroupRecommendationsOutput {
	s.NextToken = &v
	return s
}

type GetEBSVolumeRecommendationsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account for which to return volume recommendations.
	//
	// If your account is the management account of an organization, use this parameter
	// to specify the member account for which you want to return volume recommendations.
	//
	// Only one account ID can be specified per request.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// An array of objects to specify a filter that returns a more specific list
	// of volume recommendations.
	Filters []*EBSFilter `locationName:"filters" type:"list"`

	// The maximum number of volume recommendations to return with a single request.
	//
	// To retrieve the remaining results, make another request with the returned
	// nextToken value.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The token to advance to the next page of volume recommendations.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The Amazon Resource Name (ARN) of the volumes for which to return recommendations.
	VolumeArns []*string `locationName:"volumeArns" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEBSVolumeRecommendationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEBSVolumeRecommendationsInput) GoString() string {
	return s.String()
}

// SetAccountIds sets the AccountIds field's value.
func (s *GetEBSVolumeRecommendationsInput) SetAccountIds(v []*string) *GetEBSVolumeRecommendationsInput {
	s.AccountIds = v
	return s
}

// SetFilters sets the Filters field's value.
func (s *GetEBSVolumeRecommendationsInput) SetFilters(v []*EBSFilter) *GetEBSVolumeRecommendationsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetEBSVolumeRecommendationsInput) SetMaxResults(v int64) *GetEBSVolumeRecommendationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetEBSVolumeRecommendationsInput) SetNextToken(v string) *GetEBSVolumeRecommendationsInput {
	s.NextToken = &v
	return s
}

// SetVolumeArns sets the VolumeArns field's value.
func (s *GetEBSVolumeRecommendationsInput) SetVolumeArns(v []*string) *GetEBSVolumeRecommendationsInput {
	s.VolumeArns = v
	return s
}

type GetEBSVolumeRecommendationsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe errors of the request.
	//
	// For example, an error is returned if you request recommendations for an unsupported
	// volume.
	Errors []*GetRecommendationError `locationName:"errors" type:"list"`

	// The token to use to advance to the next page of volume recommendations.
	//
	// This value is null when there are no more pages of volume recommendations
	// to return.
	NextToken *string `locationName:"nextToken" type:"string"`

	// An array of objects that describe volume recommendations.
	VolumeRecommendations []*VolumeRecommendation `locationName:"volumeRecommendations" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEBSVolumeRecommendationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEBSVolumeRecommendationsOutput) GoString() string {
	return s.String()
}

// SetErrors sets the Errors field's value.
func (s *GetEBSVolumeRecommendationsOutput) SetErrors(v []*GetRecommendationError) *GetEBSVolumeRecommendationsOutput {
	s.Errors = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetEBSVolumeRecommendationsOutput) SetNextToken(v string) *GetEBSVolumeRecommendationsOutput {
	s.NextToken = &v
	return s
}

// SetVolumeRecommendations sets the VolumeRecommendations field's value.
func (s *GetEBSVolumeRecommendationsOutput) SetVolumeRecommendations(v []*VolumeRecommendation) *GetEBSVolumeRecommendationsOutput {
	s.VolumeRecommendations = v
	return s
}

type GetEC2InstanceRecommendationsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account for which to return instance recommendations.
	//
	// If your account is the management account of an organization, use this parameter
	// to specify the member account for which you want to return instance recommendations.
	//
	// Only one account ID can be specified per request.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// An array of objects to specify a filter that returns a more specific list
	// of instance recommendations.
	Filters []*Filter `locationName:"filters" type:"list"`

	// The Amazon Resource Name (ARN) of the instances for which to return recommendations.
	InstanceArns []*string `locationName:"instanceArns" type:"list"`

	// The maximum number of instance recommendations to return with a single request.
	//
	// To retrieve the remaining results, make another request with the returned
	// nextToken value.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The token to advance to the next page of instance recommendations.
	NextToken *string `locationName:"nextToken" type:"string"`

	// An object to specify the preferences for the Amazon EC2 instance recommendations
	// to return in the response.
	RecommendationPreferences *RecommendationPreferences `locationName:"recommendationPreferences" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEC2InstanceRecommendationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEC2InstanceRecommendationsInput) GoString() string {
	return s.String()
}

// SetAccountIds sets the AccountIds field's value.
func (s *GetEC2InstanceRecommendationsInput) SetAccountIds(v []*string) *GetEC2InstanceRecommendationsInput {
	s.AccountIds = v
	return s
}

// SetFilters sets the Filters field's value.
func (s *GetEC2InstanceRecommendationsInput) SetFilters(v []*Filter) *GetEC2InstanceRecommendationsInput {
	s.Filters = v
	return s
}

// SetInstanceArns sets the InstanceArns field's value.
func (s *GetEC2InstanceRecommendationsInput) SetInstanceArns(v []*string) *GetEC2InstanceRecommendationsInput {
	s.InstanceArns = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetEC2InstanceRecommendationsInput) SetMaxResults(v int64) *GetEC2InstanceRecommendationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetEC2InstanceRecommendationsInput) SetNextToken(v string) *GetEC2InstanceRecommendationsInput {
	s.NextToken = &v
	return s
}

// SetRecommendationPreferences sets the RecommendationPreferences field's value.
func (s *GetEC2InstanceRecommendationsInput) SetRecommendationPreferences(v *RecommendationPreferences) *GetEC2InstanceRecommendationsInput {
	s.RecommendationPreferences = v
	return s
}

type GetEC2InstanceRecommendationsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe errors of the request.
	//
	// For example, an error is returned if you request recommendations for an instance
	// of an unsupported instance family.
	Errors []*GetRecommendationError `locationName:"errors" type:"list"`

	// An array of objects that describe instance recommendations.
	InstanceRecommendations []*InstanceRecommendation `locationName:"instanceRecommendations" type:"list"`

	// The token to use to advance to the next page of instance recommendations.
	//
	// This value is null when there are no more pages of instance recommendations
	// to return.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEC2InstanceRecommendationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEC2InstanceRecommendationsOutput) GoString() string {
	return s.String()
}

// SetErrors sets the Errors field's value.
func (s *GetEC2InstanceRecommendationsOutput) SetErrors(v []*GetRecommendationError) *GetEC2InstanceRecommendationsOutput {
	s.Errors = v
	return s
}

// SetInstanceRecommendations sets the InstanceRecommendations field's value.
func (s *GetEC2InstanceRecommendationsOutput) SetInstanceRecommendations(v []*InstanceRecommendation) *GetEC2InstanceRecommendationsOutput {
	s.InstanceRecommendations = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetEC2InstanceRecommendationsOutput) SetNextToken(v string) *GetEC2InstanceRecommendationsOutput {
	s.NextToken = &v
	return s
}

type GetEC2RecommendationProjectedMetricsInput struct {
	_ struct{} `type:"structure"`

	// The timestamp of the last projected metrics data point to return.
	//
	// EndTime is a required field
	EndTime *time.Time `locationName:"endTime" type:"timestamp" required:"true"`

	// The Amazon Resource Name (ARN) of the instances for which to return recommendation
	// projected metrics.
	//
	// InstanceArn is a required field
	InstanceArn *string `locationName:"instanceArn" type:"string" required:"true"`

	// The granularity, in seconds, of the projected metrics data points.
	//
	// Period is a required field
	Period *int64 `locationName:"period" type:"integer" required:"true"`

	// An object to specify the preferences for the Amazon EC2 recommendation projected
	// metrics to return in the response.
	RecommendationPreferences *RecommendationPreferences `locationName:"recommendationPreferences" type:"structure"`

	// The timestamp of the first projected metrics data point to return.
	//
	// StartTime is a required field
	StartTime *time.Time `locationName:"startTime" type:"timestamp" required:"true"`

	// The statistic of the projected metrics.
	//
	// Stat is a required field
	Stat *string `locationName:"stat" type:"string" required:"true" enum:"MetricStatistic"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEC2RecommendationProjectedMetricsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEC2RecommendationProjectedMetricsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetEC2RecommendationProjectedMetricsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetEC2RecommendationProjectedMetricsInput"}
	if s.EndTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EndTime"))
	}
	if s.InstanceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceArn"))
	}
	if s.Period == nil {
		invalidParams.Add(request.NewErrParamRequired("Period"))
	}
	if s.StartTime == nil {
		invalidParams.Add(request.NewErrParamRequired("StartTime"))
	}
	if s.Stat == nil {
		invalidParams.Add(request.NewErrParamRequired("Stat"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndTime sets the EndTime field's value.
func (s *GetEC2RecommendationProjectedMetricsInput) SetEndTime(v time.Time) *GetEC2RecommendationProjectedMetricsInput {
	s.EndTime = &v
	return s
}

// SetInstanceArn sets the InstanceArn field's value.
func (s *GetEC2RecommendationProjectedMetricsInput) SetInstanceArn(v string) *GetEC2RecommendationProjectedMetricsInput {
	s.InstanceArn = &v
	return s
}

// SetPeriod sets the Period field's value.
func (s *GetEC2RecommendationProjectedMetricsInput) SetPeriod(v int64) *GetEC2RecommendationProjectedMetricsInput {
	s.Period = &v
	return s
}

// SetRecommendationPreferences sets the RecommendationPreferences field's value.
func (s *GetEC2RecommendationProjectedMetricsInput) SetRecommendationPreferences(v *RecommendationPreferences) *GetEC2RecommendationProjectedMetricsInput {
	s.RecommendationPreferences = v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetEC2RecommendationProjectedMetricsInput) SetStartTime(v time.Time) *GetEC2RecommendationProjectedMetricsInput {
	s.StartTime = &v
	return s
}

// SetStat sets the Stat field's value.
func (s *GetEC2RecommendationProjectedMetricsInput) SetStat(v string) *GetEC2RecommendationProjectedMetricsInput {
	s.Stat = &v
	return s
}

type GetEC2RecommendationProjectedMetricsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describes projected metrics.
	RecommendedOptionProjectedMetrics []*RecommendedOptionProjectedMetric `locationName:"recommendedOptionProjectedMetrics" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEC2RecommendationProjectedMetricsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEC2RecommendationProjectedMetricsOutput) GoString() string {
	return s.String()
}

// SetRecommendedOptionProjectedMetrics sets the RecommendedOptionProjectedMetrics field's value.
func (s *GetEC2RecommendationProjectedMetricsOutput) SetRecommendedOptionProjectedMetrics(v []*RecommendedOptionProjectedMetric) *GetEC2RecommendationProjectedMetricsOutput {
	s.RecommendedOptionProjectedMetrics = v
	return s
}

type GetECSServiceRecommendationProjectedMetricsInput struct {
	_ struct{} `type:"structure"`

	// The timestamp of the last projected metrics data point to return.
	//
	// EndTime is a required field
	EndTime *time.Time `locationName:"endTime" type:"timestamp" required:"true"`

	// The granularity, in seconds, of the projected metrics data points.
	//
	// Period is a required field
	Period *int64 `locationName:"period" type:"integer" required:"true"`

	// The ARN that identifies the Amazon ECS service.
	//
	// The following is the format of the ARN:
	//
	// arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name
	//
	// ServiceArn is a required field
	ServiceArn *string `locationName:"serviceArn" type:"string" required:"true"`

	// The timestamp of the first projected metrics data point to return.
	//
	// StartTime is a required field
	StartTime *time.Time `locationName:"startTime" type:"timestamp" required:"true"`

	// The statistic of the projected metrics.
	//
	// Stat is a required field
	Stat *string `locationName:"stat" type:"string" required:"true" enum:"MetricStatistic"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetECSServiceRecommendationProjectedMetricsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetECSServiceRecommendationProjectedMetricsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetECSServiceRecommendationProjectedMetricsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetECSServiceRecommendationProjectedMetricsInput"}
	if s.EndTime == nil {
		invalidParams.Add(request.NewErrParamRequired("EndTime"))
	}
	if s.Period == nil {
		invalidParams.Add(request.NewErrParamRequired("Period"))
	}
	if s.ServiceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ServiceArn"))
	}
	if s.StartTime == nil {
		invalidParams.Add(request.NewErrParamRequired("StartTime"))
	}
	if s.Stat == nil {
		invalidParams.Add(request.NewErrParamRequired("Stat"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndTime sets the EndTime field's value.
func (s *GetECSServiceRecommendationProjectedMetricsInput) SetEndTime(v time.Time) *GetECSServiceRecommendationProjectedMetricsInput {
	s.EndTime = &v
	return s
}

// SetPeriod sets the Period field's value.
func (s *GetECSServiceRecommendationProjectedMetricsInput) SetPeriod(v int64) *GetECSServiceRecommendationProjectedMetricsInput {
	s.Period = &v
	return s
}

// SetServiceArn sets the ServiceArn field's value.
func (s *GetECSServiceRecommendationProjectedMetricsInput) SetServiceArn(v string) *GetECSServiceRecommendationProjectedMetricsInput {
	s.ServiceArn = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *GetECSServiceRecommendationProjectedMetricsInput) SetStartTime(v time.Time) *GetECSServiceRecommendationProjectedMetricsInput {
	s.StartTime = &v
	return s
}

// SetStat sets the Stat field's value.
func (s *GetECSServiceRecommendationProjectedMetricsInput) SetStat(v string) *GetECSServiceRecommendationProjectedMetricsInput {
	s.Stat = &v
	return s
}

type GetECSServiceRecommendationProjectedMetricsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describes the projected metrics.
	RecommendedOptionProjectedMetrics []*ECSServiceRecommendedOptionProjectedMetric `locationName:"recommendedOptionProjectedMetrics" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetECSServiceRecommendationProjectedMetricsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetECSServiceRecommendationProjectedMetricsOutput) GoString() string {
	return s.String()
}

// SetRecommendedOptionProjectedMetrics sets the RecommendedOptionProjectedMetrics field's value.
func (s *GetECSServiceRecommendationProjectedMetricsOutput) SetRecommendedOptionProjectedMetrics(v []*ECSServiceRecommendedOptionProjectedMetric) *GetECSServiceRecommendationProjectedMetricsOutput {
	s.RecommendedOptionProjectedMetrics = v
	return s
}

type GetECSServiceRecommendationsInput struct {
	_ struct{} `type:"structure"`

	// Return the Amazon ECS service recommendations to the specified Amazon Web
	// Services account IDs.
	//
	// If your account is the management account or the delegated administrator
	// of an organization, use this parameter to return the Amazon ECS service recommendations
	// to specific member accounts.
	//
	// You can only specify one account ID per request.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// An array of objects to specify a filter that returns a more specific list
	// of Amazon ECS service recommendations.
	Filters []*ECSServiceRecommendationFilter `locationName:"filters" type:"list"`

	// The maximum number of Amazon ECS service recommendations to return with a
	// single request.
	//
	// To retrieve the remaining results, make another request with the returned
	// nextToken value.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The token to advance to the next page of Amazon ECS service recommendations.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The ARN that identifies the Amazon ECS service.
	//
	// The following is the format of the ARN:
	//
	// arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name
	ServiceArns []*string `locationName:"serviceArns" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetECSServiceRecommendationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetECSServiceRecommendationsInput) GoString() string {
	return s.String()
}

// SetAccountIds sets the AccountIds field's value.
func (s *GetECSServiceRecommendationsInput) SetAccountIds(v []*string) *GetECSServiceRecommendationsInput {
	s.AccountIds = v
	return s
}

// SetFilters sets the Filters field's value.
func (s *GetECSServiceRecommendationsInput) SetFilters(v []*ECSServiceRecommendationFilter) *GetECSServiceRecommendationsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetECSServiceRecommendationsInput) SetMaxResults(v int64) *GetECSServiceRecommendationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetECSServiceRecommendationsInput) SetNextToken(v string) *GetECSServiceRecommendationsInput {
	s.NextToken = &v
	return s
}

// SetServiceArns sets the ServiceArns field's value.
func (s *GetECSServiceRecommendationsInput) SetServiceArns(v []*string) *GetECSServiceRecommendationsInput {
	s.ServiceArns = v
	return s
}

type GetECSServiceRecommendationsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the Amazon ECS service recommendations.
	EcsServiceRecommendations []*ECSServiceRecommendation `locationName:"ecsServiceRecommendations" type:"list"`

	// An array of objects that describe errors of the request.
	Errors []*GetRecommendationError `locationName:"errors" type:"list"`

	// The token to advance to the next page of Amazon ECS service recommendations.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetECSServiceRecommendationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetECSServiceRecommendationsOutput) GoString() string {
	return s.String()
}

// SetEcsServiceRecommendations sets the EcsServiceRecommendations field's value.
func (s *GetECSServiceRecommendationsOutput) SetEcsServiceRecommendations(v []*ECSServiceRecommendation) *GetECSServiceRecommendationsOutput {
	s.EcsServiceRecommendations = v
	return s
}

// SetErrors sets the Errors field's value.
func (s *GetECSServiceRecommendationsOutput) SetErrors(v []*GetRecommendationError) *GetECSServiceRecommendationsOutput {
	s.Errors = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetECSServiceRecommendationsOutput) SetNextToken(v string) *GetECSServiceRecommendationsOutput {
	s.NextToken = &v
	return s
}

type GetEffectiveRecommendationPreferencesInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource for which to confirm effective
	// recommendation preferences. Only EC2 instance and Auto Scaling group ARNs
	// are currently supported.
	//
	// ResourceArn is a required field
	ResourceArn *string `locationName:"resourceArn" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEffectiveRecommendationPreferencesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEffectiveRecommendationPreferencesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetEffectiveRecommendationPreferencesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetEffectiveRecommendationPreferencesInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *GetEffectiveRecommendationPreferencesInput) SetResourceArn(v string) *GetEffectiveRecommendationPreferencesInput {
	s.ResourceArn = &v
	return s
}

type GetEffectiveRecommendationPreferencesOutput struct {
	_ struct{} `type:"structure"`

	// The status of the enhanced infrastructure metrics recommendation preference.
	// Considers all applicable preferences that you might have set at the resource,
	// account, and organization level.
	//
	// A status of Active confirms that the preference is applied in the latest
	// recommendation refresh, and a status of Inactive confirms that it's not yet
	// applied to recommendations.
	//
	// To validate whether the preference is applied to your last generated set
	// of recommendations, review the effectiveRecommendationPreferences value in
	// the response of the GetAutoScalingGroupRecommendations and GetEC2InstanceRecommendations
	// actions.
	//
	// For more information, see Enhanced infrastructure metrics (https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html)
	// in the Compute Optimizer User Guide.
	EnhancedInfrastructureMetrics *string `locationName:"enhancedInfrastructureMetrics" type:"string" enum:"EnhancedInfrastructureMetrics"`

	// The provider of the external metrics recommendation preference. Considers
	// all applicable preferences that you might have set at the account and organization
	// level.
	//
	// If the preference is applied in the latest recommendation refresh, an object
	// with a valid source value appears in the response. If the preference isn't
	// applied to the recommendations already, then this object doesn't appear in
	// the response.
	//
	// To validate whether the preference is applied to your last generated set
	// of recommendations, review the effectiveRecommendationPreferences value in
	// the response of the GetEC2InstanceRecommendations actions.
	//
	// For more information, see Enhanced infrastructure metrics (https://docs.aws.amazon.com/compute-optimizer/latest/ug/external-metrics-ingestion.html)
	// in the Compute Optimizer User Guide.
	ExternalMetricsPreference *ExternalMetricsPreference `locationName:"externalMetricsPreference" type:"structure"`

	// The number of days the utilization metrics of the Amazon Web Services resource
	// are analyzed.
	//
	// To validate that the preference is applied to your last generated set of
	// recommendations, review the effectiveRecommendationPreferences value in the
	// response of the GetAutoScalingGroupRecommendations or GetEC2InstanceRecommendations
	// actions.
	LookBackPeriod *string `locationName:"lookBackPeriod" type:"string" enum:"LookBackPeriodPreference"`

	// The resource type values that are considered as candidates when generating
	// rightsizing recommendations. This object resolves any wildcard expressions
	// and returns the effective list of candidate resource type values. It also
	// considers all applicable preferences that you set at the resource, account,
	// and organization level.
	//
	// To validate that the preference is applied to your last generated set of
	// recommendations, review the effectiveRecommendationPreferences value in the
	// response of the GetAutoScalingGroupRecommendations or GetEC2InstanceRecommendations
	// actions.
	PreferredResources []*EffectivePreferredResource `locationName:"preferredResources" type:"list"`

	// The resource’s CPU utilization threshold preferences, such as threshold
	// and headroom, that were used to generate rightsizing recommendations. It
	// considers all applicable preferences that you set at the resource, account,
	// and organization level.
	//
	// To validate that the preference is applied to your last generated set of
	// recommendations, review the effectiveRecommendationPreferences value in the
	// response of the GetAutoScalingGroupRecommendations or GetEC2InstanceRecommendations
	// actions.
	UtilizationPreferences []*UtilizationPreference `locationName:"utilizationPreferences" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEffectiveRecommendationPreferencesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEffectiveRecommendationPreferencesOutput) GoString() string {
	return s.String()
}

// SetEnhancedInfrastructureMetrics sets the EnhancedInfrastructureMetrics field's value.
func (s *GetEffectiveRecommendationPreferencesOutput) SetEnhancedInfrastructureMetrics(v string) *GetEffectiveRecommendationPreferencesOutput {
	s.EnhancedInfrastructureMetrics = &v
	return s
}

// SetExternalMetricsPreference sets the ExternalMetricsPreference field's value.
func (s *GetEffectiveRecommendationPreferencesOutput) SetExternalMetricsPreference(v *ExternalMetricsPreference) *GetEffectiveRecommendationPreferencesOutput {
	s.ExternalMetricsPreference = v
	return s
}

// SetLookBackPeriod sets the LookBackPeriod field's value.
func (s *GetEffectiveRecommendationPreferencesOutput) SetLookBackPeriod(v string) *GetEffectiveRecommendationPreferencesOutput {
	s.LookBackPeriod = &v
	return s
}

// SetPreferredResources sets the PreferredResources field's value.
func (s *GetEffectiveRecommendationPreferencesOutput) SetPreferredResources(v []*EffectivePreferredResource) *GetEffectiveRecommendationPreferencesOutput {
	s.PreferredResources = v
	return s
}

// SetUtilizationPreferences sets the UtilizationPreferences field's value.
func (s *GetEffectiveRecommendationPreferencesOutput) SetUtilizationPreferences(v []*UtilizationPreference) *GetEffectiveRecommendationPreferencesOutput {
	s.UtilizationPreferences = v
	return s
}

type GetEnrollmentStatusInput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnrollmentStatusInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnrollmentStatusInput) GoString() string {
	return s.String()
}

type GetEnrollmentStatusOutput struct {
	_ struct{} `type:"structure"`

	// The Unix epoch timestamp, in seconds, of when the account enrollment status
	// was last updated.
	LastUpdatedTimestamp *time.Time `locationName:"lastUpdatedTimestamp" type:"timestamp"`

	// Confirms the enrollment status of member accounts of the organization, if
	// the account is a management account of an organization.
	MemberAccountsEnrolled *bool `locationName:"memberAccountsEnrolled" type:"boolean"`

	// The count of organization member accounts that are opted in to the service,
	// if your account is an organization management account.
	NumberOfMemberAccountsOptedIn *int64 `locationName:"numberOfMemberAccountsOptedIn" type:"integer"`

	// The enrollment status of the account.
	Status *string `locationName:"status" type:"string" enum:"Status"`

	// The reason for the enrollment status of the account.
	//
	// For example, an account might show a status of Pending because member accounts
	// of an organization require more time to be enrolled in the service.
	StatusReason *string `locationName:"statusReason" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnrollmentStatusOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnrollmentStatusOutput) GoString() string {
	return s.String()
}

// SetLastUpdatedTimestamp sets the LastUpdatedTimestamp field's value.
func (s *GetEnrollmentStatusOutput) SetLastUpdatedTimestamp(v time.Time) *GetEnrollmentStatusOutput {
	s.LastUpdatedTimestamp = &v
	return s
}

// SetMemberAccountsEnrolled sets the MemberAccountsEnrolled field's value.
func (s *GetEnrollmentStatusOutput) SetMemberAccountsEnrolled(v bool) *GetEnrollmentStatusOutput {
	s.MemberAccountsEnrolled = &v
	return s
}

// SetNumberOfMemberAccountsOptedIn sets the NumberOfMemberAccountsOptedIn field's value.
func (s *GetEnrollmentStatusOutput) SetNumberOfMemberAccountsOptedIn(v int64) *GetEnrollmentStatusOutput {
	s.NumberOfMemberAccountsOptedIn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetEnrollmentStatusOutput) SetStatus(v string) *GetEnrollmentStatusOutput {
	s.Status = &v
	return s
}

// SetStatusReason sets the StatusReason field's value.
func (s *GetEnrollmentStatusOutput) SetStatusReason(v string) *GetEnrollmentStatusOutput {
	s.StatusReason = &v
	return s
}

type GetEnrollmentStatusesForOrganizationInput struct {
	_ struct{} `type:"structure"`

	// An array of objects to specify a filter that returns a more specific list
	// of account enrollment statuses.
	Filters []*EnrollmentFilter `locationName:"filters" type:"list"`

	// The maximum number of account enrollment statuses to return with a single
	// request. You can specify up to 100 statuses to return with each request.
	//
	// To retrieve the remaining results, make another request with the returned
	// nextToken value.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The token to advance to the next page of account enrollment statuses.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnrollmentStatusesForOrganizationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnrollmentStatusesForOrganizationInput) GoString() string {
	return s.String()
}

// SetFilters sets the Filters field's value.
func (s *GetEnrollmentStatusesForOrganizationInput) SetFilters(v []*EnrollmentFilter) *GetEnrollmentStatusesForOrganizationInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetEnrollmentStatusesForOrganizationInput) SetMaxResults(v int64) *GetEnrollmentStatusesForOrganizationInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetEnrollmentStatusesForOrganizationInput) SetNextToken(v string) *GetEnrollmentStatusesForOrganizationInput {
	s.NextToken = &v
	return s
}

type GetEnrollmentStatusesForOrganizationOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe the enrollment statuses of organization
	// member accounts.
	AccountEnrollmentStatuses []*AccountEnrollmentStatus `locationName:"accountEnrollmentStatuses" type:"list"`

	// The token to use to advance to the next page of account enrollment statuses.
	//
	// This value is null when there are no more pages of account enrollment statuses
	// to return.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnrollmentStatusesForOrganizationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnrollmentStatusesForOrganizationOutput) GoString() string {
	return s.String()
}

// SetAccountEnrollmentStatuses sets the AccountEnrollmentStatuses field's value.
func (s *GetEnrollmentStatusesForOrganizationOutput) SetAccountEnrollmentStatuses(v []*AccountEnrollmentStatus) *GetEnrollmentStatusesForOrganizationOutput {
	s.AccountEnrollmentStatuses = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetEnrollmentStatusesForOrganizationOutput) SetNextToken(v string) *GetEnrollmentStatusesForOrganizationOutput {
	s.NextToken = &v
	return s
}

type GetLambdaFunctionRecommendationsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account for which to return function recommendations.
	//
	// If your account is the management account of an organization, use this parameter
	// to specify the member account for which you want to return function recommendations.
	//
	// Only one account ID can be specified per request.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// An array of objects to specify a filter that returns a more specific list
	// of function recommendations.
	Filters []*LambdaFunctionRecommendationFilter `locationName:"filters" type:"list"`

	// The Amazon Resource Name (ARN) of the functions for which to return recommendations.
	//
	// You can specify a qualified or unqualified ARN. If you specify an unqualified
	// ARN without a function version suffix, Compute Optimizer will return recommendations
	// for the latest ($LATEST) version of the function. If you specify a qualified
	// ARN with a version suffix, Compute Optimizer will return recommendations
	// for the specified function version. For more information about using function
	// versions, see Using versions (https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html#versioning-versions-using)
	// in the Lambda Developer Guide.
	FunctionArns []*string `locationName:"functionArns" type:"list"`

	// The maximum number of function recommendations to return with a single request.
	//
	// To retrieve the remaining results, make another request with the returned
	// nextToken value.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The token to advance to the next page of function recommendations.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLambdaFunctionRecommendationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLambdaFunctionRecommendationsInput) GoString() string {
	return s.String()
}

// SetAccountIds sets the AccountIds field's value.
func (s *GetLambdaFunctionRecommendationsInput) SetAccountIds(v []*string) *GetLambdaFunctionRecommendationsInput {
	s.AccountIds = v
	return s
}

// SetFilters sets the Filters field's value.
func (s *GetLambdaFunctionRecommendationsInput) SetFilters(v []*LambdaFunctionRecommendationFilter) *GetLambdaFunctionRecommendationsInput {
	s.Filters = v
	return s
}

// SetFunctionArns sets the FunctionArns field's value.
func (s *GetLambdaFunctionRecommendationsInput) SetFunctionArns(v []*string) *GetLambdaFunctionRecommendationsInput {
	s.FunctionArns = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetLambdaFunctionRecommendationsInput) SetMaxResults(v int64) *GetLambdaFunctionRecommendationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetLambdaFunctionRecommendationsInput) SetNextToken(v string) *GetLambdaFunctionRecommendationsInput {
	s.NextToken = &v
	return s
}

type GetLambdaFunctionRecommendationsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe function recommendations.
	LambdaFunctionRecommendations []*LambdaFunctionRecommendation `locationName:"lambdaFunctionRecommendations" type:"list"`

	// The token to use to advance to the next page of function recommendations.
	//
	// This value is null when there are no more pages of function recommendations
	// to return.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLambdaFunctionRecommendationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLambdaFunctionRecommendationsOutput) GoString() string {
	return s.String()
}

// SetLambdaFunctionRecommendations sets the LambdaFunctionRecommendations field's value.
func (s *GetLambdaFunctionRecommendationsOutput) SetLambdaFunctionRecommendations(v []*LambdaFunctionRecommendation) *GetLambdaFunctionRecommendationsOutput {
	s.LambdaFunctionRecommendations = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetLambdaFunctionRecommendationsOutput) SetNextToken(v string) *GetLambdaFunctionRecommendationsOutput {
	s.NextToken = &v
	return s
}

type GetLicenseRecommendationsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account for which to return license recommendations.
	//
	// If your account is the management account of an organization, use this parameter
	// to specify the member account for which you want to return license recommendations.
	//
	// Only one account ID can be specified per request.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// An array of objects to specify a filter that returns a more specific list
	// of license recommendations.
	Filters []*LicenseRecommendationFilter `locationName:"filters" type:"list"`

	// The maximum number of license recommendations to return with a single request.
	//
	// To retrieve the remaining results, make another request with the returned
	// nextToken value.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The token to advance to the next page of license recommendations.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The ARN that identifies the Amazon EC2 instance.
	//
	// The following is the format of the ARN:
	//
	// arn:aws:ec2:region:aws_account_id:instance/instance-id
	ResourceArns []*string `locationName:"resourceArns" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLicenseRecommendationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLicenseRecommendationsInput) GoString() string {
	return s.String()
}

// SetAccountIds sets the AccountIds field's value.
func (s *GetLicenseRecommendationsInput) SetAccountIds(v []*string) *GetLicenseRecommendationsInput {
	s.AccountIds = v
	return s
}

// SetFilters sets the Filters field's value.
func (s *GetLicenseRecommendationsInput) SetFilters(v []*LicenseRecommendationFilter) *GetLicenseRecommendationsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetLicenseRecommendationsInput) SetMaxResults(v int64) *GetLicenseRecommendationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetLicenseRecommendationsInput) SetNextToken(v string) *GetLicenseRecommendationsInput {
	s.NextToken = &v
	return s
}

// SetResourceArns sets the ResourceArns field's value.
func (s *GetLicenseRecommendationsInput) SetResourceArns(v []*string) *GetLicenseRecommendationsInput {
	s.ResourceArns = v
	return s
}

type GetLicenseRecommendationsOutput struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe errors of the request.
	Errors []*GetRecommendationError `locationName:"errors" type:"list"`

	// An array of objects that describe license recommendations.
	LicenseRecommendations []*LicenseRecommendation `locationName:"licenseRecommendations" type:"list"`

	// The token to use to advance to the next page of license recommendations.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLicenseRecommendationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetLicenseRecommendationsOutput) GoString() string {
	return s.String()
}

// SetErrors sets the Errors field's value.
func (s *GetLicenseRecommendationsOutput) SetErrors(v []*GetRecommendationError) *GetLicenseRecommendationsOutput {
	s.Errors = v
	return s
}

// SetLicenseRecommendations sets the LicenseRecommendations field's value.
func (s *GetLicenseRecommendationsOutput) SetLicenseRecommendations(v []*LicenseRecommendation) *GetLicenseRecommendationsOutput {
	s.LicenseRecommendations = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetLicenseRecommendationsOutput) SetNextToken(v string) *GetLicenseRecommendationsOutput {
	s.NextToken = &v
	return s
}

// Describes an error experienced when getting recommendations.
//
// For example, an error is returned if you request recommendations for an unsupported
// Auto Scaling group, or if you request recommendations for an instance of
// an unsupported instance family.
type GetRecommendationError struct {
	_ struct{} `type:"structure"`

	// The error code.
	Code *string `locationName:"code" type:"string"`

	// The ID of the error.
	Identifier *string `locationName:"identifier" type:"string"`

	// The message, or reason, for the error.
	Message *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRecommendationError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRecommendationError) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *GetRecommendationError) SetCode(v string) *GetRecommendationError {
	s.Code = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetRecommendationError) SetIdentifier(v string) *GetRecommendationError {
	s.Identifier = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *GetRecommendationError) SetMessage(v string) *GetRecommendationError {
	s.Message = &v
	return s
}

type GetRecommendationPreferencesInput struct {
	_ struct{} `type:"structure"`

	// The maximum number of recommendation preferences to return with a single
	// request.
	//
	// To retrieve the remaining results, make another request with the returned
	// nextToken value.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The token to advance to the next page of recommendation preferences.
	NextToken *string `locationName:"nextToken" type:"string"`

	// The target resource type of the recommendation preference for which to return
	// preferences.
	//
	// The Ec2Instance option encompasses standalone instances and instances that
	// are part of Auto Scaling groups. The AutoScalingGroup option encompasses
	// only instances that are part of an Auto Scaling group.
	//
	// The valid values for this parameter are Ec2Instance and AutoScalingGroup.
	//
	// ResourceType is a required field
	ResourceType *string `locationName:"resourceType" type:"string" required:"true" enum:"ResourceType"`

	// An object that describes the scope of the recommendation preference to return.
	//
	// You can return recommendation preferences that are created at the organization
	// level (for management accounts of an organization only), account level, and
	// resource level. For more information, see Activating enhanced infrastructure
	// metrics (https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html)
	// in the Compute Optimizer User Guide.
	Scope *Scope `locationName:"scope" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRecommendationPreferencesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRecommendationPreferencesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetRecommendationPreferencesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetRecommendationPreferencesInput"}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetRecommendationPreferencesInput) SetMaxResults(v int64) *GetRecommendationPreferencesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetRecommendationPreferencesInput) SetNextToken(v string) *GetRecommendationPreferencesInput {
	s.NextToken = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *GetRecommendationPreferencesInput) SetResourceType(v string) *GetRecommendationPreferencesInput {
	s.ResourceType = &v
	return s
}

// SetScope sets the Scope field's value.
func (s *GetRecommendationPreferencesInput) SetScope(v *Scope) *GetRecommendationPreferencesInput {
	s.Scope = v
	return s
}

type GetRecommendationPreferencesOutput struct {
	_ struct{} `type:"structure"`

	// The token to use to advance to the next page of recommendation preferences.
	//
	// This value is null when there are no more pages of recommendation preferences
	// to return.
	NextToken *string `locationName:"nextToken" type:"string"`

	// An array of objects that describe recommendation preferences.
	RecommendationPreferencesDetails []*RecommendationPreferencesDetail `locationName:"recommendationPreferencesDetails" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRecommendationPreferencesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRecommendationPreferencesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetRecommendationPreferencesOutput) SetNextToken(v string) *GetRecommendationPreferencesOutput {
	s.NextToken = &v
	return s
}

// SetRecommendationPreferencesDetails sets the RecommendationPreferencesDetails field's value.
func (s *GetRecommendationPreferencesOutput) SetRecommendationPreferencesDetails(v []*RecommendationPreferencesDetail) *GetRecommendationPreferencesOutput {
	s.RecommendationPreferencesDetails = v
	return s
}

type GetRecommendationSummariesInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account for which to return recommendation
	// summaries.
	//
	// If your account is the management account of an organization, use this parameter
	// to specify the member account for which you want to return recommendation
	// summaries.
	//
	// Only one account ID can be specified per request.
	AccountIds []*string `locationName:"accountIds" type:"list"`

	// The maximum number of recommendation summaries to return with a single request.
	//
	// To retrieve the remaining results, make another request with the returned
	// nextToken value.
	MaxResults *int64 `locationName:"maxResults" type:"integer"`

	// The token to advance to the next page of recommendation summaries.
	NextToken *string `locationName:"nextToken" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRecommendationSummariesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRecommendationSummariesInput) GoString() string {
	return s.String()
}

// SetAccountIds sets the AccountIds field's value.
func (s *GetRecommendationSummariesInput) SetAccountIds(v []*string) *GetRecommendationSummariesInput {
	s.AccountIds = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetRecommendationSummariesInput) SetMaxResults(v int64) *GetRecommendationSummariesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetRecommendationSummariesInput) SetNextToken(v string) *GetRecommendationSummariesInput {
	s.NextToken = &v
	return s
}

type GetRecommendationSummariesOutput struct {
	_ struct{} `type:"structure"`

	// The token to use to advance to the next page of recommendation summaries.
	//
	// This value is null when there are no more pages of recommendation summaries
	// to return.
	NextToken *string `locationName:"nextToken" type:"string"`

	// An array of objects that summarize a recommendation.
	RecommendationSummaries []*RecommendationSummary `locationName:"recommendationSummaries" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRecommendationSummariesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRecommendationSummariesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetRecommendationSummariesOutput) SetNextToken(v string) *GetRecommendationSummariesOutput {
	s.NextToken = &v
	return s
}

// SetRecommendationSummaries sets the RecommendationSummaries field's value.
func (s *GetRecommendationSummariesOutput) SetRecommendationSummaries(v []*RecommendationSummary) *GetRecommendationSummariesOutput {
	s.RecommendationSummaries = v
	return s
}

// Describes the GPU accelerators for the instance type.
type Gpu struct {
	_ struct{} `type:"structure"`

	// The number of GPUs for the instance type.
	GpuCount *int64 `locationName:"gpuCount" type:"integer"`

	// The total size of the memory for the GPU accelerators for the instance type,
	// in MiB.
	GpuMemorySizeInMiB *int64 `locationName:"gpuMemorySizeInMiB" type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Gpu) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Gpu) GoString() string {
	return s.String()
}

// SetGpuCount sets the GpuCount field's value.
func (s *Gpu) SetGpuCount(v int64) *Gpu {
	s.GpuCount = &v
	return s
}

// SetGpuMemorySizeInMiB sets the GpuMemorySizeInMiB field's value.
func (s *Gpu) SetGpuMemorySizeInMiB(v int64) *Gpu {
	s.GpuMemorySizeInMiB = &v
	return s
}

// Describes the GPU accelerator settings for the instance type.
type GpuInfo struct {
	_ struct{} `type:"structure"`

	// Describes the GPU accelerators for the instance type.
	Gpus []*Gpu `locationName:"gpus" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GpuInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GpuInfo) GoString() string {
	return s.String()
}

// SetGpus sets the Gpus field's value.
func (s *GpuInfo) SetGpus(v []*Gpu) *GpuInfo {
	s.Gpus = v
	return s
}

// The estimated monthly savings after you adjust the configurations of your
// instances running on the inferred workload types to the recommended configurations.
// If the inferredWorkloadTypes list contains multiple entries, then the savings
// are the sum of the monthly savings from instances that run the exact combination
// of the inferred workload types.
type InferredWorkloadSaving struct {
	_ struct{} `type:"structure"`

	// An object that describes the estimated monthly savings amount possible by
	// adopting Compute Optimizer recommendations for a given resource. This is
	// based on the On-Demand instance pricing.
	EstimatedMonthlySavings *EstimatedMonthlySavings `locationName:"estimatedMonthlySavings" type:"structure"`

	// The applications that might be running on the instance as inferred by Compute
	// Optimizer.
	//
	// Compute Optimizer can infer if one of the following applications might be
	// running on the instance:
	//
	//    * AmazonEmr - Infers that Amazon EMR might be running on the instance.
	//
	//    * ApacheCassandra - Infers that Apache Cassandra might be running on the
	//    instance.
	//
	//    * ApacheHadoop - Infers that Apache Hadoop might be running on the instance.
	//
	//    * Memcached - Infers that Memcached might be running on the instance.
	//
	//    * NGINX - Infers that NGINX might be running on the instance.
	//
	//    * PostgreSql - Infers that PostgreSQL might be running on the instance.
	//
	//    * Redis - Infers that Redis might be running on the instance.
	//
	//    * Kafka - Infers that Kafka might be running on the instance.
	//
	//    * SQLServer - Infers that SQLServer might be running on the instance.
	InferredWorkloadTypes []*string `locationName:"inferredWorkloadTypes" type:"list" enum:"InferredWorkloadType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InferredWorkloadSaving) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InferredWorkloadSaving) GoString() string {
	return s.String()
}

// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
func (s *InferredWorkloadSaving) SetEstimatedMonthlySavings(v *EstimatedMonthlySavings) *InferredWorkloadSaving {
	s.EstimatedMonthlySavings = v
	return s
}

// SetInferredWorkloadTypes sets the InferredWorkloadTypes field's value.
func (s *InferredWorkloadSaving) SetInferredWorkloadTypes(v []*string) *InferredWorkloadSaving {
	s.InferredWorkloadTypes = v
	return s
}

// An object that describes the estimated monthly savings possible by adopting
// Compute Optimizer’s Amazon EC2 instance recommendations. This is based
// on the Savings Plans and Reserved Instances pricing discounts.
type InstanceEstimatedMonthlySavings struct {
	_ struct{} `type:"structure"`

	// The currency of the estimated monthly savings.
	Currency *string `locationName:"currency" type:"string" enum:"Currency"`

	// The value of the estimated monthly savings.
	Value *float64 `locationName:"value" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceEstimatedMonthlySavings) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceEstimatedMonthlySavings) GoString() string {
	return s.String()
}

// SetCurrency sets the Currency field's value.
func (s *InstanceEstimatedMonthlySavings) SetCurrency(v string) *InstanceEstimatedMonthlySavings {
	s.Currency = &v
	return s
}

// SetValue sets the Value field's value.
func (s *InstanceEstimatedMonthlySavings) SetValue(v float64) *InstanceEstimatedMonthlySavings {
	s.Value = &v
	return s
}

// Describes an Amazon EC2 instance recommendation.
type InstanceRecommendation struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the instance.
	AccountId *string `locationName:"accountId" type:"string"`

	// Describes the GPU accelerator settings for the current instance type.
	CurrentInstanceGpuInfo *GpuInfo `locationName:"currentInstanceGpuInfo" type:"structure"`

	// The instance type of the current instance.
	CurrentInstanceType *string `locationName:"currentInstanceType" type:"string"`

	// The risk of the current instance not meeting the performance needs of its
	// workloads. The higher the risk, the more likely the current instance cannot
	// meet the performance requirements of its workload.
	CurrentPerformanceRisk *string `locationName:"currentPerformanceRisk" type:"string" enum:"CurrentPerformanceRisk"`

	// An object that describes the effective recommendation preferences for the
	// instance.
	EffectiveRecommendationPreferences *EffectiveRecommendationPreferences `locationName:"effectiveRecommendationPreferences" type:"structure"`

	// An object that describes Compute Optimizer's integration status with your
	// external metrics provider.
	ExternalMetricStatus *ExternalMetricStatus `locationName:"externalMetricStatus" type:"structure"`

	// The finding classification of the instance.
	//
	// Findings for instances include:
	//
	//    * Underprovisioned —An instance is considered under-provisioned when
	//    at least one specification of your instance, such as CPU, memory, or network,
	//    does not meet the performance requirements of your workload. Under-provisioned
	//    instances may lead to poor application performance.
	//
	//    * Overprovisioned —An instance is considered over-provisioned when at
	//    least one specification of your instance, such as CPU, memory, or network,
	//    can be sized down while still meeting the performance requirements of
	//    your workload, and no specification is under-provisioned. Over-provisioned
	//    instances may lead to unnecessary infrastructure cost.
	//
	//    * Optimized —An instance is considered optimized when all specifications
	//    of your instance, such as CPU, memory, and network, meet the performance
	//    requirements of your workload and is not over provisioned. For optimized
	//    resources, Compute Optimizer might recommend a new generation instance
	//    type.
	Finding *string `locationName:"finding" type:"string" enum:"Finding"`

	// The reason for the finding classification of the instance.
	//
	// Finding reason codes for instances include:
	//
	//    * CPUOverprovisioned — The instance’s CPU configuration can be sized
	//    down while still meeting the performance requirements of your workload.
	//    This is identified by analyzing the CPUUtilization metric of the current
	//    instance during the look-back period.
	//
	//    * CPUUnderprovisioned — The instance’s CPU configuration doesn't meet
	//    the performance requirements of your workload and there is an alternative
	//    instance type that provides better CPU performance. This is identified
	//    by analyzing the CPUUtilization metric of the current instance during
	//    the look-back period.
	//
	//    * MemoryOverprovisioned — The instance’s memory configuration can
	//    be sized down while still meeting the performance requirements of your
	//    workload. This is identified by analyzing the memory utilization metric
	//    of the current instance during the look-back period.
	//
	//    * MemoryUnderprovisioned — The instance’s memory configuration doesn't
	//    meet the performance requirements of your workload and there is an alternative
	//    instance type that provides better memory performance. This is identified
	//    by analyzing the memory utilization metric of the current instance during
	//    the look-back period. Memory utilization is analyzed only for resources
	//    that have the unified CloudWatch agent installed on them. For more information,
	//    see Enabling memory utilization with the Amazon CloudWatch Agent (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent)
	//    in the Compute Optimizer User Guide. On Linux instances, Compute Optimizer
	//    analyses the mem_used_percent metric in the CWAgent namespace, or the
	//    legacy MemoryUtilization metric in the System/Linux namespace. On Windows
	//    instances, Compute Optimizer analyses the Memory % Committed Bytes In
	//    Use metric in the CWAgent namespace.
	//
	//    * EBSThroughputOverprovisioned — The instance’s EBS throughput configuration
	//    can be sized down while still meeting the performance requirements of
	//    your workload. This is identified by analyzing the VolumeReadBytes and
	//    VolumeWriteBytes metrics of EBS volumes attached to the current instance
	//    during the look-back period.
	//
	//    * EBSThroughputUnderprovisioned — The instance’s EBS throughput configuration
	//    doesn't meet the performance requirements of your workload and there is
	//    an alternative instance type that provides better EBS throughput performance.
	//    This is identified by analyzing the VolumeReadBytes and VolumeWriteBytes
	//    metrics of EBS volumes attached to the current instance during the look-back
	//    period.
	//
	//    * EBSIOPSOverprovisioned — The instance’s EBS IOPS configuration can
	//    be sized down while still meeting the performance requirements of your
	//    workload. This is identified by analyzing the VolumeReadOps and VolumeWriteOps
	//    metric of EBS volumes attached to the current instance during the look-back
	//    period.
	//
	//    * EBSIOPSUnderprovisioned — The instance’s EBS IOPS configuration
	//    doesn't meet the performance requirements of your workload and there is
	//    an alternative instance type that provides better EBS IOPS performance.
	//    This is identified by analyzing the VolumeReadOps and VolumeWriteOps metric
	//    of EBS volumes attached to the current instance during the look-back period.
	//
	//    * NetworkBandwidthOverprovisioned — The instance’s network bandwidth
	//    configuration can be sized down while still meeting the performance requirements
	//    of your workload. This is identified by analyzing the NetworkIn and NetworkOut
	//    metrics of the current instance during the look-back period.
	//
	//    * NetworkBandwidthUnderprovisioned — The instance’s network bandwidth
	//    configuration doesn't meet the performance requirements of your workload
	//    and there is an alternative instance type that provides better network
	//    bandwidth performance. This is identified by analyzing the NetworkIn and
	//    NetworkOut metrics of the current instance during the look-back period.
	//    This finding reason happens when the NetworkIn or NetworkOut performance
	//    of an instance is impacted.
	//
	//    * NetworkPPSOverprovisioned — The instance’s network PPS (packets
	//    per second) configuration can be sized down while still meeting the performance
	//    requirements of your workload. This is identified by analyzing the NetworkPacketsIn
	//    and NetworkPacketsIn metrics of the current instance during the look-back
	//    period.
	//
	//    * NetworkPPSUnderprovisioned — The instance’s network PPS (packets
	//    per second) configuration doesn't meet the performance requirements of
	//    your workload and there is an alternative instance type that provides
	//    better network PPS performance. This is identified by analyzing the NetworkPacketsIn
	//    and NetworkPacketsIn metrics of the current instance during the look-back
	//    period.
	//
	//    * DiskIOPSOverprovisioned — The instance’s disk IOPS configuration
	//    can be sized down while still meeting the performance requirements of
	//    your workload. This is identified by analyzing the DiskReadOps and DiskWriteOps
	//    metrics of the current instance during the look-back period.
	//
	//    * DiskIOPSUnderprovisioned — The instance’s disk IOPS configuration
	//    doesn't meet the performance requirements of your workload and there is
	//    an alternative instance type that provides better disk IOPS performance.
	//    This is identified by analyzing the DiskReadOps and DiskWriteOps metrics
	//    of the current instance during the look-back period.
	//
	//    * DiskThroughputOverprovisioned — The instance’s disk throughput configuration
	//    can be sized down while still meeting the performance requirements of
	//    your workload. This is identified by analyzing the DiskReadBytes and DiskWriteBytes
	//    metrics of the current instance during the look-back period.
	//
	//    * DiskThroughputUnderprovisioned — The instance’s disk throughput
	//    configuration doesn't meet the performance requirements of your workload
	//    and there is an alternative instance type that provides better disk throughput
	//    performance. This is identified by analyzing the DiskReadBytes and DiskWriteBytes
	//    metrics of the current instance during the look-back period.
	//
	// For more information about instance metrics, see List the available CloudWatch
	// metrics for your instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)
	// in the Amazon Elastic Compute Cloud User Guide. For more information about
	// EBS volume metrics, see Amazon CloudWatch metrics for Amazon EBS (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cloudwatch_ebs.html)
	// in the Amazon Elastic Compute Cloud User Guide.
	FindingReasonCodes []*string `locationName:"findingReasonCodes" type:"list" enum:"InstanceRecommendationFindingReasonCode"`

	// Describes if an Amazon EC2 instance is idle.
	Idle *string `locationName:"idle" type:"string" enum:"InstanceIdle"`

	// The applications that might be running on the instance as inferred by Compute
	// Optimizer.
	//
	// Compute Optimizer can infer if one of the following applications might be
	// running on the instance:
	//
	//    * AmazonEmr - Infers that Amazon EMR might be running on the instance.
	//
	//    * ApacheCassandra - Infers that Apache Cassandra might be running on the
	//    instance.
	//
	//    * ApacheHadoop - Infers that Apache Hadoop might be running on the instance.
	//
	//    * Memcached - Infers that Memcached might be running on the instance.
	//
	//    * NGINX - Infers that NGINX might be running on the instance.
	//
	//    * PostgreSql - Infers that PostgreSQL might be running on the instance.
	//
	//    * Redis - Infers that Redis might be running on the instance.
	//
	//    * Kafka - Infers that Kafka might be running on the instance.
	//
	//    * SQLServer - Infers that SQLServer might be running on the instance.
	InferredWorkloadTypes []*string `locationName:"inferredWorkloadTypes" type:"list" enum:"InferredWorkloadType"`

	// The Amazon Resource Name (ARN) of the current instance.
	InstanceArn *string `locationName:"instanceArn" type:"string"`

	// The name of the current instance.
	InstanceName *string `locationName:"instanceName" type:"string"`

	// The state of the instance when the recommendation was generated.
	InstanceState *string `locationName:"instanceState" type:"string" enum:"InstanceState"`

	// The timestamp of when the instance recommendation was last generated.
	LastRefreshTimestamp *time.Time `locationName:"lastRefreshTimestamp" type:"timestamp"`

	// The number of days for which utilization metrics were analyzed for the instance.
	LookBackPeriodInDays *float64 `locationName:"lookBackPeriodInDays" type:"double"`

	// An array of objects that describe the recommendation options for the instance.
	RecommendationOptions []*InstanceRecommendationOption `locationName:"recommendationOptions" type:"list"`

	// An array of objects that describe the source resource of the recommendation.
	RecommendationSources []*RecommendationSource `locationName:"recommendationSources" type:"list"`

	// A list of tags assigned to your Amazon EC2 instance recommendations.
	Tags []*Tag `locationName:"tags" type:"list"`

	// An array of objects that describe the utilization metrics of the instance.
	UtilizationMetrics []*UtilizationMetric `locationName:"utilizationMetrics" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceRecommendation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceRecommendation) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *InstanceRecommendation) SetAccountId(v string) *InstanceRecommendation {
	s.AccountId = &v
	return s
}

// SetCurrentInstanceGpuInfo sets the CurrentInstanceGpuInfo field's value.
func (s *InstanceRecommendation) SetCurrentInstanceGpuInfo(v *GpuInfo) *InstanceRecommendation {
	s.CurrentInstanceGpuInfo = v
	return s
}

// SetCurrentInstanceType sets the CurrentInstanceType field's value.
func (s *InstanceRecommendation) SetCurrentInstanceType(v string) *InstanceRecommendation {
	s.CurrentInstanceType = &v
	return s
}

// SetCurrentPerformanceRisk sets the CurrentPerformanceRisk field's value.
func (s *InstanceRecommendation) SetCurrentPerformanceRisk(v string) *InstanceRecommendation {
	s.CurrentPerformanceRisk = &v
	return s
}

// SetEffectiveRecommendationPreferences sets the EffectiveRecommendationPreferences field's value.
func (s *InstanceRecommendation) SetEffectiveRecommendationPreferences(v *EffectiveRecommendationPreferences) *InstanceRecommendation {
	s.EffectiveRecommendationPreferences = v
	return s
}

// SetExternalMetricStatus sets the ExternalMetricStatus field's value.
func (s *InstanceRecommendation) SetExternalMetricStatus(v *ExternalMetricStatus) *InstanceRecommendation {
	s.ExternalMetricStatus = v
	return s
}

// SetFinding sets the Finding field's value.
func (s *InstanceRecommendation) SetFinding(v string) *InstanceRecommendation {
	s.Finding = &v
	return s
}

// SetFindingReasonCodes sets the FindingReasonCodes field's value.
func (s *InstanceRecommendation) SetFindingReasonCodes(v []*string) *InstanceRecommendation {
	s.FindingReasonCodes = v
	return s
}

// SetIdle sets the Idle field's value.
func (s *InstanceRecommendation) SetIdle(v string) *InstanceRecommendation {
	s.Idle = &v
	return s
}

// SetInferredWorkloadTypes sets the InferredWorkloadTypes field's value.
func (s *InstanceRecommendation) SetInferredWorkloadTypes(v []*string) *InstanceRecommendation {
	s.InferredWorkloadTypes = v
	return s
}

// SetInstanceArn sets the InstanceArn field's value.
func (s *InstanceRecommendation) SetInstanceArn(v string) *InstanceRecommendation {
	s.InstanceArn = &v
	return s
}

// SetInstanceName sets the InstanceName field's value.
func (s *InstanceRecommendation) SetInstanceName(v string) *InstanceRecommendation {
	s.InstanceName = &v
	return s
}

// SetInstanceState sets the InstanceState field's value.
func (s *InstanceRecommendation) SetInstanceState(v string) *InstanceRecommendation {
	s.InstanceState = &v
	return s
}

// SetLastRefreshTimestamp sets the LastRefreshTimestamp field's value.
func (s *InstanceRecommendation) SetLastRefreshTimestamp(v time.Time) *InstanceRecommendation {
	s.LastRefreshTimestamp = &v
	return s
}

// SetLookBackPeriodInDays sets the LookBackPeriodInDays field's value.
func (s *InstanceRecommendation) SetLookBackPeriodInDays(v float64) *InstanceRecommendation {
	s.LookBackPeriodInDays = &v
	return s
}

// SetRecommendationOptions sets the RecommendationOptions field's value.
func (s *InstanceRecommendation) SetRecommendationOptions(v []*InstanceRecommendationOption) *InstanceRecommendation {
	s.RecommendationOptions = v
	return s
}

// SetRecommendationSources sets the RecommendationSources field's value.
func (s *InstanceRecommendation) SetRecommendationSources(v []*RecommendationSource) *InstanceRecommendation {
	s.RecommendationSources = v
	return s
}

// SetTags sets the Tags field's value.
func (s *InstanceRecommendation) SetTags(v []*Tag) *InstanceRecommendation {
	s.Tags = v
	return s
}

// SetUtilizationMetrics sets the UtilizationMetrics field's value.
func (s *InstanceRecommendation) SetUtilizationMetrics(v []*UtilizationMetric) *InstanceRecommendation {
	s.UtilizationMetrics = v
	return s
}

// Describes a recommendation option for an Amazon EC2 instance.
type InstanceRecommendationOption struct {
	_ struct{} `type:"structure"`

	// Describes the GPU accelerator settings for the recommended instance type.
	InstanceGpuInfo *GpuInfo `locationName:"instanceGpuInfo" type:"structure"`

	// The instance type of the instance recommendation.
	InstanceType *string `locationName:"instanceType" type:"string"`

	// The level of effort required to migrate from the current instance type to
	// the recommended instance type.
	//
	// For example, the migration effort is Low if Amazon EMR is the inferred workload
	// type and an Amazon Web Services Graviton instance type is recommended. The
	// migration effort is Medium if a workload type couldn't be inferred but an
	// Amazon Web Services Graviton instance type is recommended. The migration
	// effort is VeryLow if both the current and recommended instance types are
	// of the same CPU architecture.
	MigrationEffort *string `locationName:"migrationEffort" type:"string" enum:"MigrationEffort"`

	// The performance risk of the instance recommendation option.
	//
	// Performance risk indicates the likelihood of the recommended instance type
	// not meeting the resource needs of your workload. Compute Optimizer calculates
	// an individual performance risk score for each specification of the recommended
	// instance, including CPU, memory, EBS throughput, EBS IOPS, disk throughput,
	// disk IOPS, network throughput, and network PPS. The performance risk of the
	// recommended instance is calculated as the maximum performance risk score
	// across the analyzed resource specifications.
	//
	// The value ranges from 0 - 4, with 0 meaning that the recommended resource
	// is predicted to always provide enough hardware capability. The higher the
	// performance risk is, the more likely you should validate whether the recommendation
	// will meet the performance requirements of your workload before migrating
	// your resource.
	PerformanceRisk *float64 `locationName:"performanceRisk" type:"double"`

	// Describes the configuration differences between the current instance and
	// the recommended instance type. You should consider the configuration differences
	// before migrating your workloads from the current instance to the recommended
	// instance type. The Change the instance type guide for Linux (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-resize.html)
	// and Change the instance type guide for Windows (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-resize.html)
	// provide general guidance for getting started with an instance migration.
	//
	// Platform differences include:
	//
	//    * Hypervisor — The hypervisor of the recommended instance type is different
	//    than that of the current instance. For example, the recommended instance
	//    type uses a Nitro hypervisor and the current instance uses a Xen hypervisor.
	//    The differences that you should consider between these hypervisors are
	//    covered in the Nitro Hypervisor (http://aws.amazon.com/ec2/faqs/#Nitro_Hypervisor)
	//    section of the Amazon EC2 frequently asked questions. For more information,
	//    see Instances built on the Nitro System (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances)
	//    in the Amazon EC2 User Guide for Linux, or Instances built on the Nitro
	//    System (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html#ec2-nitro-instances)
	//    in the Amazon EC2 User Guide for Windows.
	//
	//    * NetworkInterface — The network interface of the recommended instance
	//    type is different than that of the current instance. For example, the
	//    recommended instance type supports enhanced networking and the current
	//    instance might not. To enable enhanced networking for the recommended
	//    instance type, you must install the Elastic Network Adapter (ENA) driver
	//    or the Intel 82599 Virtual Function driver. For more information, see
	//    Networking and storage features (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#instance-networking-storage)
	//    and Enhanced networking on Linux (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html)
	//    in the Amazon EC2 User Guide for Linux, or Networking and storage features
	//    (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html#instance-networking-storage)
	//    and Enhanced networking on Windows (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/enhanced-networking.html)
	//    in the Amazon EC2 User Guide for Windows.
	//
	//    * StorageInterface — The storage interface of the recommended instance
	//    type is different than that of the current instance. For example, the
	//    recommended instance type uses an NVMe storage interface and the current
	//    instance does not. To access NVMe volumes for the recommended instance
	//    type, you will need to install or upgrade the NVMe driver. For more information,
	//    see Networking and storage features (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#instance-networking-storage)
	//    and Amazon EBS and NVMe on Linux instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html)
	//    in the Amazon EC2 User Guide for Linux, or Networking and storage features
	//    (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html#instance-networking-storage)
	//    and Amazon EBS and NVMe on Windows instances (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/nvme-ebs-volumes.html)
	//    in the Amazon EC2 User Guide for Windows.
	//
	//    * InstanceStoreAvailability — The recommended instance type does not
	//    support instance store volumes and the current instance does. Before migrating,
	//    you might need to back up the data on your instance store volumes if you
	//    want to preserve them. For more information, see How do I back up an instance
	//    store volume on my Amazon EC2 instance to Amazon EBS? (https://aws.amazon.com/premiumsupport/knowledge-center/back-up-instance-store-ebs/)
	//    in the Amazon Web Services Premium Support Knowledge Base. For more information,
	//    see Networking and storage features (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#instance-networking-storage)
	//    and Amazon EC2 instance store (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)
	//    in the Amazon EC2 User Guide for Linux, or see Networking and storage
	//    features (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html#instance-networking-storage)
	//    and Amazon EC2 instance store (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/InstanceStorage.html)
	//    in the Amazon EC2 User Guide for Windows.
	//
	//    * VirtualizationType — The recommended instance type uses the hardware
	//    virtual machine (HVM) virtualization type and the current instance uses
	//    the paravirtual (PV) virtualization type. For more information about the
	//    differences between these virtualization types, see Linux AMI virtualization
	//    types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html)
	//    in the Amazon EC2 User Guide for Linux, or Windows AMI virtualization
	//    types (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/windows-ami-version-history.html#virtualization-types)
	//    in the Amazon EC2 User Guide for Windows.
	//
	//    * Architecture — The CPU architecture between the recommended instance
	//    type and the current instance is different. For example, the recommended
	//    instance type might use an Arm CPU architecture and the current instance
	//    type might use a different one, such as x86. Before migrating, you should
	//    consider recompiling the software on your instance for the new architecture.
	//    Alternatively, you might switch to an Amazon Machine Image (AMI) that
	//    supports the new architecture. For more information about the CPU architecture
	//    for each instance type, see Amazon EC2 Instance Types (http://aws.amazon.com/ec2/instance-types/).
	PlatformDifferences []*string `locationName:"platformDifferences" type:"list" enum:"PlatformDifference"`

	// An array of objects that describe the projected utilization metrics of the
	// instance recommendation option.
	//
	// The Cpu and Memory metrics are the only projected utilization metrics returned.
	// Additionally, the Memory metric is returned only for resources that have
	// the unified CloudWatch agent installed on them. For more information, see
	// Enabling Memory Utilization with the CloudWatch Agent (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent).
	ProjectedUtilizationMetrics []*UtilizationMetric `locationName:"projectedUtilizationMetrics" type:"list"`

	// The rank of the instance recommendation option.
	//
	// The top recommendation option is ranked as 1.
	Rank *int64 `locationName:"rank" type:"integer"`

	// An object that describes the savings opportunity for the instance recommendation
	// option. Savings opportunity includes the estimated monthly savings amount
	// and percentage.
	SavingsOpportunity *SavingsOpportunity `locationName:"savingsOpportunity" type:"structure"`

	// An object that describes the savings opportunity for the instance recommendation
	// option that includes Savings Plans and Reserved Instances discounts. Savings
	// opportunity includes the estimated monthly savings and percentage.
	SavingsOpportunityAfterDiscounts *InstanceSavingsOpportunityAfterDiscounts `locationName:"savingsOpportunityAfterDiscounts" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceRecommendationOption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceRecommendationOption) GoString() string {
	return s.String()
}

// SetInstanceGpuInfo sets the InstanceGpuInfo field's value.
func (s *InstanceRecommendationOption) SetInstanceGpuInfo(v *GpuInfo) *InstanceRecommendationOption {
	s.InstanceGpuInfo = v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *InstanceRecommendationOption) SetInstanceType(v string) *InstanceRecommendationOption {
	s.InstanceType = &v
	return s
}

// SetMigrationEffort sets the MigrationEffort field's value.
func (s *InstanceRecommendationOption) SetMigrationEffort(v string) *InstanceRecommendationOption {
	s.MigrationEffort = &v
	return s
}

// SetPerformanceRisk sets the PerformanceRisk field's value.
func (s *InstanceRecommendationOption) SetPerformanceRisk(v float64) *InstanceRecommendationOption {
	s.PerformanceRisk = &v
	return s
}

// SetPlatformDifferences sets the PlatformDifferences field's value.
func (s *InstanceRecommendationOption) SetPlatformDifferences(v []*string) *InstanceRecommendationOption {
	s.PlatformDifferences = v
	return s
}

// SetProjectedUtilizationMetrics sets the ProjectedUtilizationMetrics field's value.
func (s *InstanceRecommendationOption) SetProjectedUtilizationMetrics(v []*UtilizationMetric) *InstanceRecommendationOption {
	s.ProjectedUtilizationMetrics = v
	return s
}

// SetRank sets the Rank field's value.
func (s *InstanceRecommendationOption) SetRank(v int64) *InstanceRecommendationOption {
	s.Rank = &v
	return s
}

// SetSavingsOpportunity sets the SavingsOpportunity field's value.
func (s *InstanceRecommendationOption) SetSavingsOpportunity(v *SavingsOpportunity) *InstanceRecommendationOption {
	s.SavingsOpportunity = v
	return s
}

// SetSavingsOpportunityAfterDiscounts sets the SavingsOpportunityAfterDiscounts field's value.
func (s *InstanceRecommendationOption) SetSavingsOpportunityAfterDiscounts(v *InstanceSavingsOpportunityAfterDiscounts) *InstanceRecommendationOption {
	s.SavingsOpportunityAfterDiscounts = v
	return s
}

// Describes the savings estimation mode used for calculating savings opportunity
// for Amazon EC2 instances.
type InstanceSavingsEstimationMode struct {
	_ struct{} `type:"structure"`

	// Describes the source for calculating the savings opportunity for Amazon EC2
	// instances.
	Source *string `locationName:"source" type:"string" enum:"InstanceSavingsEstimationModeSource"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceSavingsEstimationMode) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceSavingsEstimationMode) GoString() string {
	return s.String()
}

// SetSource sets the Source field's value.
func (s *InstanceSavingsEstimationMode) SetSource(v string) *InstanceSavingsEstimationMode {
	s.Source = &v
	return s
}

// Describes the savings opportunity for instance recommendations after applying
// the Savings Plans and Reserved Instances discounts.
//
// Savings opportunity after discounts represents the estimated monthly savings
// you can achieve by implementing Compute Optimizer recommendations.
type InstanceSavingsOpportunityAfterDiscounts struct {
	_ struct{} `type:"structure"`

	// An object that describes the estimated monthly savings possible by adopting
	// Compute Optimizer’s Amazon EC2 instance recommendations. This is based
	// on pricing after applying the Savings Plans and Reserved Instances discounts.
	EstimatedMonthlySavings *InstanceEstimatedMonthlySavings `locationName:"estimatedMonthlySavings" type:"structure"`

	// The estimated monthly savings possible as a percentage of monthly cost after
	// applying the Savings Plans and Reserved Instances discounts. This saving
	// can be achieved by adopting Compute Optimizer’s EC2 instance recommendations.
	SavingsOpportunityPercentage *float64 `locationName:"savingsOpportunityPercentage" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceSavingsOpportunityAfterDiscounts) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InstanceSavingsOpportunityAfterDiscounts) GoString() string {
	return s.String()
}

// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
func (s *InstanceSavingsOpportunityAfterDiscounts) SetEstimatedMonthlySavings(v *InstanceEstimatedMonthlySavings) *InstanceSavingsOpportunityAfterDiscounts {
	s.EstimatedMonthlySavings = v
	return s
}

// SetSavingsOpportunityPercentage sets the SavingsOpportunityPercentage field's value.
func (s *InstanceSavingsOpportunityAfterDiscounts) SetSavingsOpportunityPercentage(v float64) *InstanceSavingsOpportunityAfterDiscounts {
	s.SavingsOpportunityPercentage = &v
	return s
}

// An internal error has occurred. Try your call again.
type InternalServerException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InternalServerException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InternalServerException) GoString() string {
	return s.String()
}

func newErrorInternalServerException(v protocol.ResponseMetadata) error {
	return &InternalServerException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InternalServerException) Code() string {
	return "InternalServerException"
}

// Message returns the exception's message.
func (s *InternalServerException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InternalServerException) OrigErr() error {
	return nil
}

func (s *InternalServerException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *InternalServerException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InternalServerException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The value supplied for the input parameter is out of range or not valid.
type InvalidParameterValueException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidParameterValueException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidParameterValueException) GoString() string {
	return s.String()
}

func newErrorInvalidParameterValueException(v protocol.ResponseMetadata) error {
	return &InvalidParameterValueException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidParameterValueException) Code() string {
	return "InvalidParameterValueException"
}

// Message returns the exception's message.
func (s *InvalidParameterValueException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidParameterValueException) OrigErr() error {
	return nil
}

func (s *InvalidParameterValueException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *InvalidParameterValueException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidParameterValueException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Describes a filter that returns a more specific list of recommendation export
// jobs. Use this filter with the DescribeRecommendationExportJobs action.
//
// You can use EBSFilter with the GetEBSVolumeRecommendations action, LambdaFunctionRecommendationFilter
// with the GetLambdaFunctionRecommendations action, and Filter with the GetAutoScalingGroupRecommendations
// and GetEC2InstanceRecommendations actions.
type JobFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter.
	//
	// Specify ResourceType to return export jobs of a specific resource type (for
	// example, Ec2Instance).
	//
	// Specify JobStatus to return export jobs with a specific status (e.g, Complete).
	Name *string `locationName:"name" type:"string" enum:"JobFilterName"`

	// The value of the filter.
	//
	// The valid values for this parameter are as follows, depending on what you
	// specify for the name parameter:
	//
	//    * Specify Ec2Instance or AutoScalingGroup if you specify the name parameter
	//    as ResourceType. There is no filter for EBS volumes because volume recommendations
	//    cannot be exported at this time.
	//
	//    * Specify Queued, InProgress, Complete, or Failed if you specify the name
	//    parameter as JobStatus.
	Values []*string `locationName:"values" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JobFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JobFilter) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *JobFilter) SetName(v string) *JobFilter {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *JobFilter) SetValues(v []*string) *JobFilter {
	s.Values = v
	return s
}

// Describes the effective recommendation preferences for Lambda functions.
type LambdaEffectiveRecommendationPreferences struct {
	_ struct{} `type:"structure"`

	// Describes the savings estimation mode applied for calculating savings opportunity
	// for Lambda functions.
	SavingsEstimationMode *LambdaSavingsEstimationMode `locationName:"savingsEstimationMode" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaEffectiveRecommendationPreferences) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaEffectiveRecommendationPreferences) GoString() string {
	return s.String()
}

// SetSavingsEstimationMode sets the SavingsEstimationMode field's value.
func (s *LambdaEffectiveRecommendationPreferences) SetSavingsEstimationMode(v *LambdaSavingsEstimationMode) *LambdaEffectiveRecommendationPreferences {
	s.SavingsEstimationMode = v
	return s
}

// Describes the estimated monthly savings possible for Lambda functions by
// adopting Compute Optimizer recommendations. This is based on Lambda functions
// pricing after applying Savings Plans discounts.
type LambdaEstimatedMonthlySavings struct {
	_ struct{} `type:"structure"`

	// The currency of the estimated monthly savings.
	Currency *string `locationName:"currency" type:"string" enum:"Currency"`

	// The value of the estimated monthly savings.
	Value *float64 `locationName:"value" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaEstimatedMonthlySavings) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaEstimatedMonthlySavings) GoString() string {
	return s.String()
}

// SetCurrency sets the Currency field's value.
func (s *LambdaEstimatedMonthlySavings) SetCurrency(v string) *LambdaEstimatedMonthlySavings {
	s.Currency = &v
	return s
}

// SetValue sets the Value field's value.
func (s *LambdaEstimatedMonthlySavings) SetValue(v float64) *LambdaEstimatedMonthlySavings {
	s.Value = &v
	return s
}

// Describes a projected utilization metric of an Lambda function recommendation
// option.
type LambdaFunctionMemoryProjectedMetric struct {
	_ struct{} `type:"structure"`

	// The name of the projected utilization metric.
	Name *string `locationName:"name" type:"string" enum:"LambdaFunctionMemoryMetricName"`

	// The statistic of the projected utilization metric.
	Statistic *string `locationName:"statistic" type:"string" enum:"LambdaFunctionMemoryMetricStatistic"`

	// The values of the projected utilization metrics.
	Value *float64 `locationName:"value" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaFunctionMemoryProjectedMetric) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaFunctionMemoryProjectedMetric) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *LambdaFunctionMemoryProjectedMetric) SetName(v string) *LambdaFunctionMemoryProjectedMetric {
	s.Name = &v
	return s
}

// SetStatistic sets the Statistic field's value.
func (s *LambdaFunctionMemoryProjectedMetric) SetStatistic(v string) *LambdaFunctionMemoryProjectedMetric {
	s.Statistic = &v
	return s
}

// SetValue sets the Value field's value.
func (s *LambdaFunctionMemoryProjectedMetric) SetValue(v float64) *LambdaFunctionMemoryProjectedMetric {
	s.Value = &v
	return s
}

// Describes a recommendation option for an Lambda function.
type LambdaFunctionMemoryRecommendationOption struct {
	_ struct{} `type:"structure"`

	// The memory size, in MB, of the function recommendation option.
	MemorySize *int64 `locationName:"memorySize" type:"integer"`

	// An array of objects that describe the projected utilization metrics of the
	// function recommendation option.
	ProjectedUtilizationMetrics []*LambdaFunctionMemoryProjectedMetric `locationName:"projectedUtilizationMetrics" type:"list"`

	// The rank of the function recommendation option.
	//
	// The top recommendation option is ranked as 1.
	Rank *int64 `locationName:"rank" type:"integer"`

	// An object that describes the savings opportunity for the Lambda function
	// recommendation option. Savings opportunity includes the estimated monthly
	// savings amount and percentage.
	SavingsOpportunity *SavingsOpportunity `locationName:"savingsOpportunity" type:"structure"`

	// An object that describes the savings opportunity for the Lambda recommendation
	// option which includes Saving Plans discounts. Savings opportunity includes
	// the estimated monthly savings and percentage.
	SavingsOpportunityAfterDiscounts *LambdaSavingsOpportunityAfterDiscounts `locationName:"savingsOpportunityAfterDiscounts" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaFunctionMemoryRecommendationOption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaFunctionMemoryRecommendationOption) GoString() string {
	return s.String()
}

// SetMemorySize sets the MemorySize field's value.
func (s *LambdaFunctionMemoryRecommendationOption) SetMemorySize(v int64) *LambdaFunctionMemoryRecommendationOption {
	s.MemorySize = &v
	return s
}

// SetProjectedUtilizationMetrics sets the ProjectedUtilizationMetrics field's value.
func (s *LambdaFunctionMemoryRecommendationOption) SetProjectedUtilizationMetrics(v []*LambdaFunctionMemoryProjectedMetric) *LambdaFunctionMemoryRecommendationOption {
	s.ProjectedUtilizationMetrics = v
	return s
}

// SetRank sets the Rank field's value.
func (s *LambdaFunctionMemoryRecommendationOption) SetRank(v int64) *LambdaFunctionMemoryRecommendationOption {
	s.Rank = &v
	return s
}

// SetSavingsOpportunity sets the SavingsOpportunity field's value.
func (s *LambdaFunctionMemoryRecommendationOption) SetSavingsOpportunity(v *SavingsOpportunity) *LambdaFunctionMemoryRecommendationOption {
	s.SavingsOpportunity = v
	return s
}

// SetSavingsOpportunityAfterDiscounts sets the SavingsOpportunityAfterDiscounts field's value.
func (s *LambdaFunctionMemoryRecommendationOption) SetSavingsOpportunityAfterDiscounts(v *LambdaSavingsOpportunityAfterDiscounts) *LambdaFunctionMemoryRecommendationOption {
	s.SavingsOpportunityAfterDiscounts = v
	return s
}

// Describes an Lambda function recommendation.
type LambdaFunctionRecommendation struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the function.
	AccountId *string `locationName:"accountId" type:"string"`

	// The amount of memory, in MB, that's allocated to the current function.
	CurrentMemorySize *int64 `locationName:"currentMemorySize" type:"integer"`

	// The risk of the current Lambda function not meeting the performance needs
	// of its workloads. The higher the risk, the more likely the current Lambda
	// function requires more memory.
	CurrentPerformanceRisk *string `locationName:"currentPerformanceRisk" type:"string" enum:"CurrentPerformanceRisk"`

	// Describes the effective recommendation preferences for Lambda functions.
	EffectiveRecommendationPreferences *LambdaEffectiveRecommendationPreferences `locationName:"effectiveRecommendationPreferences" type:"structure"`

	// The finding classification of the function.
	//
	// Findings for functions include:
	//
	//    * Optimized — The function is correctly provisioned to run your workload
	//    based on its current configuration and its utilization history. This finding
	//    classification does not include finding reason codes.
	//
	//    * NotOptimized — The function is performing at a higher level (over-provisioned)
	//    or at a lower level (under-provisioned) than required for your workload
	//    because its current configuration is not optimal. Over-provisioned resources
	//    might lead to unnecessary infrastructure cost, and under-provisioned resources
	//    might lead to poor application performance. This finding classification
	//    can include the MemoryUnderprovisioned and MemoryUnderprovisioned finding
	//    reason codes.
	//
	//    * Unavailable — Compute Optimizer was unable to generate a recommendation
	//    for the function. This could be because the function has not accumulated
	//    sufficient metric data, or the function does not qualify for a recommendation.
	//    This finding classification can include the InsufficientData and Inconclusive
	//    finding reason codes. Functions with a finding of unavailable are not
	//    returned unless you specify the filter parameter with a value of Unavailable
	//    in your GetLambdaFunctionRecommendations request.
	Finding *string `locationName:"finding" type:"string" enum:"LambdaFunctionRecommendationFinding"`

	// The reason for the finding classification of the function.
	//
	// Functions that have a finding classification of Optimized don't have a finding
	// reason code.
	//
	// Finding reason codes for functions include:
	//
	//    * MemoryOverprovisioned — The function is over-provisioned when its
	//    memory configuration can be sized down while still meeting the performance
	//    requirements of your workload. An over-provisioned function might lead
	//    to unnecessary infrastructure cost. This finding reason code is part of
	//    the NotOptimized finding classification.
	//
	//    * MemoryUnderprovisioned — The function is under-provisioned when its
	//    memory configuration doesn't meet the performance requirements of the
	//    workload. An under-provisioned function might lead to poor application
	//    performance. This finding reason code is part of the NotOptimized finding
	//    classification.
	//
	//    * InsufficientData — The function does not have sufficient metric data
	//    for Compute Optimizer to generate a recommendation. For more information,
	//    see the Supported resources and requirements (https://docs.aws.amazon.com/compute-optimizer/latest/ug/requirements.html)
	//    in the Compute Optimizer User Guide. This finding reason code is part
	//    of the Unavailable finding classification.
	//
	//    * Inconclusive — The function does not qualify for a recommendation
	//    because Compute Optimizer cannot generate a recommendation with a high
	//    degree of confidence. This finding reason code is part of the Unavailable
	//    finding classification.
	FindingReasonCodes []*string `locationName:"findingReasonCodes" type:"list" enum:"LambdaFunctionRecommendationFindingReasonCode"`

	// The Amazon Resource Name (ARN) of the current function.
	FunctionArn *string `locationName:"functionArn" type:"string"`

	// The version number of the current function.
	FunctionVersion *string `locationName:"functionVersion" type:"string"`

	// The timestamp of when the function recommendation was last generated.
	LastRefreshTimestamp *time.Time `locationName:"lastRefreshTimestamp" type:"timestamp"`

	// The number of days for which utilization metrics were analyzed for the function.
	LookbackPeriodInDays *float64 `locationName:"lookbackPeriodInDays" type:"double"`

	// An array of objects that describe the memory configuration recommendation
	// options for the function.
	MemorySizeRecommendationOptions []*LambdaFunctionMemoryRecommendationOption `locationName:"memorySizeRecommendationOptions" type:"list"`

	// The number of times your function code was applied during the look-back period.
	NumberOfInvocations *int64 `locationName:"numberOfInvocations" type:"long"`

	// A list of tags assigned to your Lambda function recommendations.
	Tags []*Tag `locationName:"tags" type:"list"`

	// An array of objects that describe the utilization metrics of the function.
	UtilizationMetrics []*LambdaFunctionUtilizationMetric `locationName:"utilizationMetrics" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaFunctionRecommendation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaFunctionRecommendation) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *LambdaFunctionRecommendation) SetAccountId(v string) *LambdaFunctionRecommendation {
	s.AccountId = &v
	return s
}

// SetCurrentMemorySize sets the CurrentMemorySize field's value.
func (s *LambdaFunctionRecommendation) SetCurrentMemorySize(v int64) *LambdaFunctionRecommendation {
	s.CurrentMemorySize = &v
	return s
}

// SetCurrentPerformanceRisk sets the CurrentPerformanceRisk field's value.
func (s *LambdaFunctionRecommendation) SetCurrentPerformanceRisk(v string) *LambdaFunctionRecommendation {
	s.CurrentPerformanceRisk = &v
	return s
}

// SetEffectiveRecommendationPreferences sets the EffectiveRecommendationPreferences field's value.
func (s *LambdaFunctionRecommendation) SetEffectiveRecommendationPreferences(v *LambdaEffectiveRecommendationPreferences) *LambdaFunctionRecommendation {
	s.EffectiveRecommendationPreferences = v
	return s
}

// SetFinding sets the Finding field's value.
func (s *LambdaFunctionRecommendation) SetFinding(v string) *LambdaFunctionRecommendation {
	s.Finding = &v
	return s
}

// SetFindingReasonCodes sets the FindingReasonCodes field's value.
func (s *LambdaFunctionRecommendation) SetFindingReasonCodes(v []*string) *LambdaFunctionRecommendation {
	s.FindingReasonCodes = v
	return s
}

// SetFunctionArn sets the FunctionArn field's value.
func (s *LambdaFunctionRecommendation) SetFunctionArn(v string) *LambdaFunctionRecommendation {
	s.FunctionArn = &v
	return s
}

// SetFunctionVersion sets the FunctionVersion field's value.
func (s *LambdaFunctionRecommendation) SetFunctionVersion(v string) *LambdaFunctionRecommendation {
	s.FunctionVersion = &v
	return s
}

// SetLastRefreshTimestamp sets the LastRefreshTimestamp field's value.
func (s *LambdaFunctionRecommendation) SetLastRefreshTimestamp(v time.Time) *LambdaFunctionRecommendation {
	s.LastRefreshTimestamp = &v
	return s
}

// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
func (s *LambdaFunctionRecommendation) SetLookbackPeriodInDays(v float64) *LambdaFunctionRecommendation {
	s.LookbackPeriodInDays = &v
	return s
}

// SetMemorySizeRecommendationOptions sets the MemorySizeRecommendationOptions field's value.
func (s *LambdaFunctionRecommendation) SetMemorySizeRecommendationOptions(v []*LambdaFunctionMemoryRecommendationOption) *LambdaFunctionRecommendation {
	s.MemorySizeRecommendationOptions = v
	return s
}

// SetNumberOfInvocations sets the NumberOfInvocations field's value.
func (s *LambdaFunctionRecommendation) SetNumberOfInvocations(v int64) *LambdaFunctionRecommendation {
	s.NumberOfInvocations = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *LambdaFunctionRecommendation) SetTags(v []*Tag) *LambdaFunctionRecommendation {
	s.Tags = v
	return s
}

// SetUtilizationMetrics sets the UtilizationMetrics field's value.
func (s *LambdaFunctionRecommendation) SetUtilizationMetrics(v []*LambdaFunctionUtilizationMetric) *LambdaFunctionRecommendation {
	s.UtilizationMetrics = v
	return s
}

// Describes a filter that returns a more specific list of Lambda function recommendations.
// Use this filter with the GetLambdaFunctionRecommendations action.
//
// You can use EBSFilter with the GetEBSVolumeRecommendations action, JobFilter
// with the DescribeRecommendationExportJobs action, and Filter with the GetAutoScalingGroupRecommendations
// and GetEC2InstanceRecommendations actions.
type LambdaFunctionRecommendationFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter.
	//
	// Specify Finding to return recommendations with a specific finding classification
	// (for example, NotOptimized).
	//
	// Specify FindingReasonCode to return recommendations with a specific finding
	// reason code (for example, MemoryUnderprovisioned).
	//
	// You can filter your Lambda function recommendations by tag:key and tag-key
	// tags.
	//
	// A tag:key is a key and value combination of a tag assigned to your Lambda
	// function recommendations. Use the tag key in the filter name and the tag
	// value as the filter value. For example, to find all Lambda function recommendations
	// that have a tag with the key of Owner and the value of TeamA, specify tag:Owner
	// for the filter name and TeamA for the filter value.
	//
	// A tag-key is the key of a tag assigned to your Lambda function recommendations.
	// Use this filter to find all of your Lambda function recommendations that
	// have a tag with a specific key. This doesn’t consider the tag value. For
	// example, you can find your Lambda function recommendations with a tag key
	// value of Owner or without any tag keys assigned.
	Name *string `locationName:"name" type:"string" enum:"LambdaFunctionRecommendationFilterName"`

	// The value of the filter.
	//
	// The valid values for this parameter are as follows, depending on what you
	// specify for the name parameter:
	//
	//    * Specify Optimized, NotOptimized, or Unavailable if you specify the name
	//    parameter as Finding.
	//
	//    * Specify MemoryOverprovisioned, MemoryUnderprovisioned, InsufficientData,
	//    or Inconclusive if you specify the name parameter as FindingReasonCode.
	Values []*string `locationName:"values" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaFunctionRecommendationFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaFunctionRecommendationFilter) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *LambdaFunctionRecommendationFilter) SetName(v string) *LambdaFunctionRecommendationFilter {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *LambdaFunctionRecommendationFilter) SetValues(v []*string) *LambdaFunctionRecommendationFilter {
	s.Values = v
	return s
}

// Describes a utilization metric of an Lambda function.
type LambdaFunctionUtilizationMetric struct {
	_ struct{} `type:"structure"`

	// The name of the utilization metric.
	//
	// The following utilization metrics are available:
	//
	//    * Duration - The amount of time that your function code spends processing
	//    an event.
	//
	//    * Memory - The amount of memory used per invocation.
	Name *string `locationName:"name" type:"string" enum:"LambdaFunctionMetricName"`

	// The statistic of the utilization metric.
	//
	// The Compute Optimizer API, Command Line Interface (CLI), and SDKs return
	// utilization metrics using only the Maximum statistic, which is the highest
	// value observed during the specified period.
	//
	// The Compute Optimizer console displays graphs for some utilization metrics
	// using the Average statistic, which is the value of Sum / SampleCount during
	// the specified period. For more information, see Viewing resource recommendations
	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/viewing-recommendations.html)
	// in the Compute Optimizer User Guide. You can also get averaged utilization
	// metric data for your resources using Amazon CloudWatch. For more information,
	// see the Amazon CloudWatch User Guide (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html).
	Statistic *string `locationName:"statistic" type:"string" enum:"LambdaFunctionMetricStatistic"`

	// The value of the utilization metric.
	Value *float64 `locationName:"value" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaFunctionUtilizationMetric) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaFunctionUtilizationMetric) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *LambdaFunctionUtilizationMetric) SetName(v string) *LambdaFunctionUtilizationMetric {
	s.Name = &v
	return s
}

// SetStatistic sets the Statistic field's value.
func (s *LambdaFunctionUtilizationMetric) SetStatistic(v string) *LambdaFunctionUtilizationMetric {
	s.Statistic = &v
	return s
}

// SetValue sets the Value field's value.
func (s *LambdaFunctionUtilizationMetric) SetValue(v float64) *LambdaFunctionUtilizationMetric {
	s.Value = &v
	return s
}

// Describes the savings estimation used for calculating savings opportunity
// for Lambda functions.
type LambdaSavingsEstimationMode struct {
	_ struct{} `type:"structure"`

	// Describes the source for calculation of savings opportunity for Lambda functions.
	Source *string `locationName:"source" type:"string" enum:"LambdaSavingsEstimationModeSource"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaSavingsEstimationMode) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaSavingsEstimationMode) GoString() string {
	return s.String()
}

// SetSource sets the Source field's value.
func (s *LambdaSavingsEstimationMode) SetSource(v string) *LambdaSavingsEstimationMode {
	s.Source = &v
	return s
}

// Describes the savings opportunity for Lambda functions recommendations after
// applying Savings Plans discounts.
//
// Savings opportunity represents the estimated monthly savings after applying
// Savings Plans discounts. You can achieve this by implementing a given Compute
// Optimizer recommendation.
type LambdaSavingsOpportunityAfterDiscounts struct {
	_ struct{} `type:"structure"`

	// The estimated monthly savings possible by adopting Compute Optimizer’s
	// Lambda function recommendations. This includes any applicable Savings Plans
	// discounts.
	EstimatedMonthlySavings *LambdaEstimatedMonthlySavings `locationName:"estimatedMonthlySavings" type:"structure"`

	// The estimated monthly savings possible as a percentage of monthly cost by
	// adopting Compute Optimizer’s Lambda function recommendations. This includes
	// any applicable Savings Plans discounts.
	SavingsOpportunityPercentage *float64 `locationName:"savingsOpportunityPercentage" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaSavingsOpportunityAfterDiscounts) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LambdaSavingsOpportunityAfterDiscounts) GoString() string {
	return s.String()
}

// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
func (s *LambdaSavingsOpportunityAfterDiscounts) SetEstimatedMonthlySavings(v *LambdaEstimatedMonthlySavings) *LambdaSavingsOpportunityAfterDiscounts {
	s.EstimatedMonthlySavings = v
	return s
}

// SetSavingsOpportunityPercentage sets the SavingsOpportunityPercentage field's value.
func (s *LambdaSavingsOpportunityAfterDiscounts) SetSavingsOpportunityPercentage(v float64) *LambdaSavingsOpportunityAfterDiscounts {
	s.SavingsOpportunityPercentage = &v
	return s
}

// Describes the configuration of a license for an Amazon EC2 instance.
type LicenseConfiguration struct {
	_ struct{} `type:"structure"`

	// The instance type used in the license.
	InstanceType *string `locationName:"instanceType" type:"string"`

	// The edition of the license for the application that runs on the instance.
	LicenseEdition *string `locationName:"licenseEdition" type:"string" enum:"LicenseEdition"`

	// The license type associated with the instance.
	LicenseModel *string `locationName:"licenseModel" type:"string" enum:"LicenseModel"`

	// The name of the license for the application that runs on the instance.
	LicenseName *string `locationName:"licenseName" type:"string" enum:"LicenseName"`

	// The version of the license for the application that runs on the instance.
	LicenseVersion *string `locationName:"licenseVersion" type:"string"`

	// The list of metric sources required to generate recommendations for commercial
	// software licenses.
	MetricsSource []*MetricSource `locationName:"metricsSource" type:"list"`

	// The current number of cores associated with the instance.
	NumberOfCores *int64 `locationName:"numberOfCores" type:"integer"`

	// The operating system of the instance.
	OperatingSystem *string `locationName:"operatingSystem" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LicenseConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LicenseConfiguration) GoString() string {
	return s.String()
}

// SetInstanceType sets the InstanceType field's value.
func (s *LicenseConfiguration) SetInstanceType(v string) *LicenseConfiguration {
	s.InstanceType = &v
	return s
}

// SetLicenseEdition sets the LicenseEdition field's value.
func (s *LicenseConfiguration) SetLicenseEdition(v string) *LicenseConfiguration {
	s.LicenseEdition = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *LicenseConfiguration) SetLicenseModel(v string) *LicenseConfiguration {
	s.LicenseModel = &v
	return s
}

// SetLicenseName sets the LicenseName field's value.
func (s *LicenseConfiguration) SetLicenseName(v string) *LicenseConfiguration {
	s.LicenseName = &v
	return s
}

// SetLicenseVersion sets the LicenseVersion field's value.
func (s *LicenseConfiguration) SetLicenseVersion(v string) *LicenseConfiguration {
	s.LicenseVersion = &v
	return s
}

// SetMetricsSource sets the MetricsSource field's value.
func (s *LicenseConfiguration) SetMetricsSource(v []*MetricSource) *LicenseConfiguration {
	s.MetricsSource = v
	return s
}

// SetNumberOfCores sets the NumberOfCores field's value.
func (s *LicenseConfiguration) SetNumberOfCores(v int64) *LicenseConfiguration {
	s.NumberOfCores = &v
	return s
}

// SetOperatingSystem sets the OperatingSystem field's value.
func (s *LicenseConfiguration) SetOperatingSystem(v string) *LicenseConfiguration {
	s.OperatingSystem = &v
	return s
}

// Describes a license recommendation for an EC2 instance.
type LicenseRecommendation struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the license.
	AccountId *string `locationName:"accountId" type:"string"`

	// An object that describes the current configuration of an instance that runs
	// on a license.
	CurrentLicenseConfiguration *LicenseConfiguration `locationName:"currentLicenseConfiguration" type:"structure"`

	// The finding classification for an instance that runs on a license.
	//
	// Findings include:
	//
	//    * InsufficentMetrics — When Compute Optimizer detects that your CloudWatch
	//    Application Insights isn't enabled or is enabled with insufficient permissions.
	//
	//    * NotOptimized — When Compute Optimizer detects that your EC2 infrastructure
	//    isn't using any of the SQL server license features you're paying for,
	//    a license is considered not optimized.
	//
	//    * Optimized — When Compute Optimizer detects that all specifications
	//    of your license meet the performance requirements of your workload.
	Finding *string `locationName:"finding" type:"string" enum:"LicenseFinding"`

	// The reason for the finding classification for an instance that runs on a
	// license.
	//
	// Finding reason codes include:
	//
	//    * Optimized — All specifications of your license meet the performance
	//    requirements of your workload.
	//
	//    * LicenseOverprovisioned — A license is considered over-provisioned
	//    when your license can be downgraded while still meeting the performance
	//    requirements of your workload.
	//
	//    * InvalidCloudwatchApplicationInsights — CloudWatch Application Insights
	//    isn't configured properly.
	//
	//    * CloudwatchApplicationInsightsError — There is a CloudWatch Application
	//    Insights error.
	FindingReasonCodes []*string `locationName:"findingReasonCodes" type:"list" enum:"LicenseFindingReasonCode"`

	// The timestamp of when the license recommendation was last generated.
	LastRefreshTimestamp *time.Time `locationName:"lastRefreshTimestamp" type:"timestamp"`

	// An array of objects that describe the license recommendation options.
	LicenseRecommendationOptions []*LicenseRecommendationOption `locationName:"licenseRecommendationOptions" type:"list"`

	// The number of days for which utilization metrics were analyzed for an instance
	// that runs on a license.
	LookbackPeriodInDays *float64 `locationName:"lookbackPeriodInDays" type:"double"`

	// The ARN that identifies the Amazon EC2 instance.
	ResourceArn *string `locationName:"resourceArn" type:"string"`

	// A list of tags assigned to an EC2 instance.
	Tags []*Tag `locationName:"tags" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LicenseRecommendation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LicenseRecommendation) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *LicenseRecommendation) SetAccountId(v string) *LicenseRecommendation {
	s.AccountId = &v
	return s
}

// SetCurrentLicenseConfiguration sets the CurrentLicenseConfiguration field's value.
func (s *LicenseRecommendation) SetCurrentLicenseConfiguration(v *LicenseConfiguration) *LicenseRecommendation {
	s.CurrentLicenseConfiguration = v
	return s
}

// SetFinding sets the Finding field's value.
func (s *LicenseRecommendation) SetFinding(v string) *LicenseRecommendation {
	s.Finding = &v
	return s
}

// SetFindingReasonCodes sets the FindingReasonCodes field's value.
func (s *LicenseRecommendation) SetFindingReasonCodes(v []*string) *LicenseRecommendation {
	s.FindingReasonCodes = v
	return s
}

// SetLastRefreshTimestamp sets the LastRefreshTimestamp field's value.
func (s *LicenseRecommendation) SetLastRefreshTimestamp(v time.Time) *LicenseRecommendation {
	s.LastRefreshTimestamp = &v
	return s
}

// SetLicenseRecommendationOptions sets the LicenseRecommendationOptions field's value.
func (s *LicenseRecommendation) SetLicenseRecommendationOptions(v []*LicenseRecommendationOption) *LicenseRecommendation {
	s.LicenseRecommendationOptions = v
	return s
}

// SetLookbackPeriodInDays sets the LookbackPeriodInDays field's value.
func (s *LicenseRecommendation) SetLookbackPeriodInDays(v float64) *LicenseRecommendation {
	s.LookbackPeriodInDays = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *LicenseRecommendation) SetResourceArn(v string) *LicenseRecommendation {
	s.ResourceArn = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *LicenseRecommendation) SetTags(v []*Tag) *LicenseRecommendation {
	s.Tags = v
	return s
}

// Describes a filter that returns a more specific list of license recommendations.
// Use this filter with the GetLicenseRecommendation action.
type LicenseRecommendationFilter struct {
	_ struct{} `type:"structure"`

	// The name of the filter.
	//
	// Specify Finding to return recommendations with a specific finding classification.
	//
	// Specify FindingReasonCode to return recommendations with a specific finding
	// reason code.
	//
	// You can filter your license recommendations by tag:key and tag-key tags.
	//
	// A tag:key is a key and value combination of a tag assigned to your license
	// recommendations. Use the tag key in the filter name and the tag value as
	// the filter value. For example, to find all license recommendations that have
	// a tag with the key of Owner and the value of TeamA, specify tag:Owner for
	// the filter name and TeamA for the filter value.
	//
	// A tag-key is the key of a tag assigned to your license recommendations. Use
	// this filter to find all of your license recommendations that have a tag with
	// a specific key. This doesn’t consider the tag value. For example, you can
	// find your license recommendations with a tag key value of Owner or without
	// any tag keys assigned.
	Name *string `locationName:"name" type:"string" enum:"LicenseRecommendationFilterName"`

	// The value of the filter.
	//
	// The valid values for this parameter are as follows, depending on what you
	// specify for the name parameter:
	//
	//    * If you specify the name parameter as Finding, then specify Optimized,
	//    NotOptimized, or InsufficentMetrics.
	//
	//    * If you specify the name parameter as FindingReasonCode, then specify
	//    Optimized, LicenseOverprovisioned, InvalidCloudwatchApplicationInsights,
	//    or CloudwatchApplicationInsightsError.
	Values []*string `locationName:"values" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LicenseRecommendationFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LicenseRecommendationFilter) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *LicenseRecommendationFilter) SetName(v string) *LicenseRecommendationFilter {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *LicenseRecommendationFilter) SetValues(v []*string) *LicenseRecommendationFilter {
	s.Values = v
	return s
}

// Describes the recommendation options for licenses.
type LicenseRecommendationOption struct {
	_ struct{} `type:"structure"`

	// The recommended edition of the license for the application that runs on the
	// instance.
	LicenseEdition *string `locationName:"licenseEdition" type:"string" enum:"LicenseEdition"`

	// The recommended license type associated with the instance.
	LicenseModel *string `locationName:"licenseModel" type:"string" enum:"LicenseModel"`

	// The operating system of a license recommendation option.
	OperatingSystem *string `locationName:"operatingSystem" type:"string"`

	// The rank of the license recommendation option.
	//
	// The top recommendation option is ranked as 1.
	Rank *int64 `locationName:"rank" type:"integer"`

	// Describes the savings opportunity for recommendations of a given resource
	// type or for the recommendation option of an individual resource.
	//
	// Savings opportunity represents the estimated monthly savings you can achieve
	// by implementing a given Compute Optimizer recommendation.
	//
	// Savings opportunity data requires that you opt in to Cost Explorer, as well
	// as activate Receive Amazon EC2 resource recommendations in the Cost Explorer
	// preferences page. That creates a connection between Cost Explorer and Compute
	// Optimizer. With this connection, Cost Explorer generates savings estimates
	// considering the price of existing resources, the price of recommended resources,
	// and historical usage data. Estimated monthly savings reflects the projected
	// dollar savings associated with each of the recommendations generated. For
	// more information, see Enabling Cost Explorer (https://docs.aws.amazon.com/cost-management/latest/userguide/ce-enable.html)
	// and Optimizing your cost with Rightsizing Recommendations (https://docs.aws.amazon.com/cost-management/latest/userguide/ce-rightsizing.html)
	// in the Cost Management User Guide.
	SavingsOpportunity *SavingsOpportunity `locationName:"savingsOpportunity" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LicenseRecommendationOption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LicenseRecommendationOption) GoString() string {
	return s.String()
}

// SetLicenseEdition sets the LicenseEdition field's value.
func (s *LicenseRecommendationOption) SetLicenseEdition(v string) *LicenseRecommendationOption {
	s.LicenseEdition = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *LicenseRecommendationOption) SetLicenseModel(v string) *LicenseRecommendationOption {
	s.LicenseModel = &v
	return s
}

// SetOperatingSystem sets the OperatingSystem field's value.
func (s *LicenseRecommendationOption) SetOperatingSystem(v string) *LicenseRecommendationOption {
	s.OperatingSystem = &v
	return s
}

// SetRank sets the Rank field's value.
func (s *LicenseRecommendationOption) SetRank(v int64) *LicenseRecommendationOption {
	s.Rank = &v
	return s
}

// SetSavingsOpportunity sets the SavingsOpportunity field's value.
func (s *LicenseRecommendationOption) SetSavingsOpportunity(v *SavingsOpportunity) *LicenseRecommendationOption {
	s.SavingsOpportunity = v
	return s
}

// The request exceeds a limit of the service.
type LimitExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LimitExceededException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LimitExceededException) GoString() string {
	return s.String()
}

func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
	return &LimitExceededException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *LimitExceededException) Code() string {
	return "LimitExceededException"
}

// Message returns the exception's message.
func (s *LimitExceededException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *LimitExceededException) OrigErr() error {
	return nil
}

func (s *LimitExceededException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *LimitExceededException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *LimitExceededException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The memory size configurations of a container.
type MemorySizeConfiguration struct {
	_ struct{} `type:"structure"`

	// The amount of memory in the container.
	Memory *int64 `locationName:"memory" type:"integer"`

	// The limit of memory reserve for the container.
	MemoryReservation *int64 `locationName:"memoryReservation" type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MemorySizeConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MemorySizeConfiguration) GoString() string {
	return s.String()
}

// SetMemory sets the Memory field's value.
func (s *MemorySizeConfiguration) SetMemory(v int64) *MemorySizeConfiguration {
	s.Memory = &v
	return s
}

// SetMemoryReservation sets the MemoryReservation field's value.
func (s *MemorySizeConfiguration) SetMemoryReservation(v int64) *MemorySizeConfiguration {
	s.MemoryReservation = &v
	return s
}

// The list of metric sources required to generate recommendations for commercial
// software licenses.
type MetricSource struct {
	_ struct{} `type:"structure"`

	// The name of the metric source provider.
	Provider *string `locationName:"provider" type:"string" enum:"MetricSourceProvider"`

	// The ARN of the metric source provider.
	ProviderArn *string `locationName:"providerArn" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MetricSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MetricSource) GoString() string {
	return s.String()
}

// SetProvider sets the Provider field's value.
func (s *MetricSource) SetProvider(v string) *MetricSource {
	s.Provider = &v
	return s
}

// SetProviderArn sets the ProviderArn field's value.
func (s *MetricSource) SetProviderArn(v string) *MetricSource {
	s.ProviderArn = &v
	return s
}

// The request must contain either a valid (registered) Amazon Web Services
// access key ID or X.509 certificate.
type MissingAuthenticationToken struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MissingAuthenticationToken) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MissingAuthenticationToken) GoString() string {
	return s.String()
}

func newErrorMissingAuthenticationToken(v protocol.ResponseMetadata) error {
	return &MissingAuthenticationToken{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *MissingAuthenticationToken) Code() string {
	return "MissingAuthenticationToken"
}

// Message returns the exception's message.
func (s *MissingAuthenticationToken) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *MissingAuthenticationToken) OrigErr() error {
	return nil
}

func (s *MissingAuthenticationToken) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *MissingAuthenticationToken) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *MissingAuthenticationToken) RequestID() string {
	return s.RespMetadata.RequestID
}

// The account is not opted in to Compute Optimizer.
type OptInRequiredException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OptInRequiredException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OptInRequiredException) GoString() string {
	return s.String()
}

func newErrorOptInRequiredException(v protocol.ResponseMetadata) error {
	return &OptInRequiredException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *OptInRequiredException) Code() string {
	return "OptInRequiredException"
}

// Message returns the exception's message.
func (s *OptInRequiredException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *OptInRequiredException) OrigErr() error {
	return nil
}

func (s *OptInRequiredException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *OptInRequiredException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *OptInRequiredException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The preference to control which resource type values are considered when
// generating rightsizing recommendations. You can specify this preference as
// a combination of include and exclude lists. You must specify either an includeList
// or excludeList. If the preference is an empty set of resource type values,
// an error occurs. For more information, see Rightsizing recommendation preferences
// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/rightsizing-preferences.html)
// in the Compute Optimizer User Guide.
//
//   - This preference is only available for the Amazon EC2 instance and Auto
//     Scaling group resource types.
//
//   - Compute Optimizer only supports the customization of Ec2InstanceTypes.
type PreferredResource struct {
	_ struct{} `type:"structure"`

	// The preferred resource type values to exclude from the recommendation candidates.
	// If this isn’t specified, all supported resources are included by default.
	// You can specify up to 1000 values in this list.
	ExcludeList []*string `locationName:"excludeList" type:"list"`

	// The preferred resource type values to include in the recommendation candidates.
	// You can specify the exact resource type value, such as m5.large, or use wild
	// card expressions, such as m5. If this isn’t specified, all supported resources
	// are included by default. You can specify up to 1000 values in this list.
	IncludeList []*string `locationName:"includeList" type:"list"`

	// The type of preferred resource to customize.
	//
	// Compute Optimizer only supports the customization of Ec2InstanceTypes.
	Name *string `locationName:"name" type:"string" enum:"PreferredResourceName"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PreferredResource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PreferredResource) GoString() string {
	return s.String()
}

// SetExcludeList sets the ExcludeList field's value.
func (s *PreferredResource) SetExcludeList(v []*string) *PreferredResource {
	s.ExcludeList = v
	return s
}

// SetIncludeList sets the IncludeList field's value.
func (s *PreferredResource) SetIncludeList(v []*string) *PreferredResource {
	s.IncludeList = v
	return s
}

// SetName sets the Name field's value.
func (s *PreferredResource) SetName(v string) *PreferredResource {
	s.Name = &v
	return s
}

// Describes a projected utilization metric of a recommendation option, such
// as an Amazon EC2 instance. This represents the projected utilization of a
// recommendation option had you used that resource during the analyzed period.
//
// Compare the utilization metric data of your resource against its projected
// utilization metric data to determine the performance difference between your
// current resource and the recommended option.
//
// The Cpu, Memory, GPU, and GPU_MEMORY metrics are the only projected utilization
// metrics returned when you run the GetEC2RecommendationProjectedMetrics action.
// Additionally, these metrics are only returned for resources with the unified
// CloudWatch agent installed on them. For more information, see Enabling Memory
// Utilization with the CloudWatch Agent (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent)
// and Enabling NVIDIA GPU utilization with the CloudWatch Agent (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#nvidia-cw-agent).
type ProjectedMetric struct {
	_ struct{} `type:"structure"`

	// The name of the projected utilization metric.
	//
	// The following projected utilization metrics are returned:
	//
	//    * Cpu - The projected percentage of allocated EC2 compute units that would
	//    be in use on the recommendation option had you used that resource during
	//    the analyzed period. This metric identifies the processing power required
	//    to run an application on the recommendation option. Depending on the instance
	//    type, tools in your operating system can show a lower percentage than
	//    CloudWatch when the instance is not allocated a full processor core.
	//
	//    * Memory - The percentage of memory that would be in use on the recommendation
	//    option had you used that resource during the analyzed period. This metric
	//    identifies the amount of memory required to run an application on the
	//    recommendation option. Units: Percent The Memory metric is only returned
	//    for resources with the unified CloudWatch agent installed on them. For
	//    more information, see Enabling Memory Utilization with the CloudWatch
	//    Agent (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent).
	//
	//    * GPU - The projected percentage of allocated GPUs if you adjust your
	//    configurations to Compute Optimizer's recommendation option.
	//
	//    * GPU_MEMORY - The projected percentage of total GPU memory if you adjust
	//    your configurations to Compute Optimizer's recommendation option. The
	//    GPU and GPU_MEMORY metrics are only returned for resources with the unified
	//    CloudWatch Agent installed on them. For more information, see Enabling
	//    NVIDIA GPU utilization with the CloudWatch Agent (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#nvidia-cw-agent).
	Name *string `locationName:"name" type:"string" enum:"MetricName"`

	// The timestamps of the projected utilization metric.
	Timestamps []*time.Time `locationName:"timestamps" type:"list"`

	// The values of the projected utilization metrics.
	Values []*float64 `locationName:"values" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProjectedMetric) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProjectedMetric) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *ProjectedMetric) SetName(v string) *ProjectedMetric {
	s.Name = &v
	return s
}

// SetTimestamps sets the Timestamps field's value.
func (s *ProjectedMetric) SetTimestamps(v []*time.Time) *ProjectedMetric {
	s.Timestamps = v
	return s
}

// SetValues sets the Values field's value.
func (s *ProjectedMetric) SetValues(v []*float64) *ProjectedMetric {
	s.Values = v
	return s
}

type PutRecommendationPreferencesInput struct {
	_ struct{} `type:"structure"`

	// The status of the enhanced infrastructure metrics recommendation preference
	// to create or update.
	//
	// Specify the Active status to activate the preference, or specify Inactive
	// to deactivate the preference.
	//
	// For more information, see Enhanced infrastructure metrics (https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html)
	// in the Compute Optimizer User Guide.
	EnhancedInfrastructureMetrics *string `locationName:"enhancedInfrastructureMetrics" type:"string" enum:"EnhancedInfrastructureMetrics"`

	// The provider of the external metrics recommendation preference to create
	// or update.
	//
	// Specify a valid provider in the source field to activate the preference.
	// To delete this preference, see the DeleteRecommendationPreferences action.
	//
	// This preference can only be set for the Ec2Instance resource type.
	//
	// For more information, see External metrics ingestion (https://docs.aws.amazon.com/compute-optimizer/latest/ug/external-metrics-ingestion.html)
	// in the Compute Optimizer User Guide.
	ExternalMetricsPreference *ExternalMetricsPreference `locationName:"externalMetricsPreference" type:"structure"`

	// The status of the inferred workload types recommendation preference to create
	// or update.
	//
	// The inferred workload type feature is active by default. To deactivate it,
	// create a recommendation preference.
	//
	// Specify the Inactive status to deactivate the feature, or specify Active
	// to activate it.
	//
	// For more information, see Inferred workload types (https://docs.aws.amazon.com/compute-optimizer/latest/ug/inferred-workload-types.html)
	// in the Compute Optimizer User Guide.
	InferredWorkloadTypes *string `locationName:"inferredWorkloadTypes" type:"string" enum:"InferredWorkloadTypesPreference"`

	// The preference to control the number of days the utilization metrics of the
	// Amazon Web Services resource are analyzed. When this preference isn't specified,
	// we use the default value DAYS_14.
	//
	// You can only set this preference for the Amazon EC2 instance and Auto Scaling
	// group resource types.
	LookBackPeriod *string `locationName:"lookBackPeriod" type:"string" enum:"LookBackPeriodPreference"`

	// The preference to control which resource type values are considered when
	// generating rightsizing recommendations. You can specify this preference as
	// a combination of include and exclude lists. You must specify either an includeList
	// or excludeList. If the preference is an empty set of resource type values,
	// an error occurs.
	//
	// You can only set this preference for the Amazon EC2 instance and Auto Scaling
	// group resource types.
	PreferredResources []*PreferredResource `locationName:"preferredResources" type:"list"`

	// The target resource type of the recommendation preference to create.
	//
	// The Ec2Instance option encompasses standalone instances and instances that
	// are part of Auto Scaling groups. The AutoScalingGroup option encompasses
	// only instances that are part of an Auto Scaling group.
	//
	// The valid values for this parameter are Ec2Instance and AutoScalingGroup.
	//
	// ResourceType is a required field
	ResourceType *string `locationName:"resourceType" type:"string" required:"true" enum:"ResourceType"`

	// The status of the savings estimation mode preference to create or update.
	//
	// Specify the AfterDiscounts status to activate the preference, or specify
	// BeforeDiscounts to deactivate the preference.
	//
	// Only the account manager or delegated administrator of your organization
	// can activate this preference.
	//
	// For more information, see Savings estimation mode (https://docs.aws.amazon.com/compute-optimizer/latest/ug/savings-estimation-mode.html)
	// in the Compute Optimizer User Guide.
	SavingsEstimationMode *string `locationName:"savingsEstimationMode" type:"string" enum:"SavingsEstimationMode"`

	// An object that describes the scope of the recommendation preference to create.
	//
	// You can create recommendation preferences at the organization level (for
	// management accounts of an organization only), account level, and resource
	// level. For more information, see Activating enhanced infrastructure metrics
	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html)
	// in the Compute Optimizer User Guide.
	//
	// You cannot create recommendation preferences for Auto Scaling groups at the
	// organization and account levels. You can create recommendation preferences
	// for Auto Scaling groups only at the resource level by specifying a scope
	// name of ResourceArn and a scope value of the Auto Scaling group Amazon Resource
	// Name (ARN). This will configure the preference for all instances that are
	// part of the specified Auto Scaling group. You also cannot create recommendation
	// preferences at the resource level for instances that are part of an Auto
	// Scaling group. You can create recommendation preferences at the resource
	// level only for standalone instances.
	Scope *Scope `locationName:"scope" type:"structure"`

	// The preference to control the resource’s CPU utilization thresholds - threshold
	// and headroom. When this preference isn't specified, we use the following
	// default values:
	//
	//    * P99_5 for threshold
	//
	//    * PERCENT_17 for headroom
	//
	// You can only set this preference for the Amazon EC2 instance resource type.
	UtilizationPreferences []*UtilizationPreference `locationName:"utilizationPreferences" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutRecommendationPreferencesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutRecommendationPreferencesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutRecommendationPreferencesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutRecommendationPreferencesInput"}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEnhancedInfrastructureMetrics sets the EnhancedInfrastructureMetrics field's value.
func (s *PutRecommendationPreferencesInput) SetEnhancedInfrastructureMetrics(v string) *PutRecommendationPreferencesInput {
	s.EnhancedInfrastructureMetrics = &v
	return s
}

// SetExternalMetricsPreference sets the ExternalMetricsPreference field's value.
func (s *PutRecommendationPreferencesInput) SetExternalMetricsPreference(v *ExternalMetricsPreference) *PutRecommendationPreferencesInput {
	s.ExternalMetricsPreference = v
	return s
}

// SetInferredWorkloadTypes sets the InferredWorkloadTypes field's value.
func (s *PutRecommendationPreferencesInput) SetInferredWorkloadTypes(v string) *PutRecommendationPreferencesInput {
	s.InferredWorkloadTypes = &v
	return s
}

// SetLookBackPeriod sets the LookBackPeriod field's value.
func (s *PutRecommendationPreferencesInput) SetLookBackPeriod(v string) *PutRecommendationPreferencesInput {
	s.LookBackPeriod = &v
	return s
}

// SetPreferredResources sets the PreferredResources field's value.
func (s *PutRecommendationPreferencesInput) SetPreferredResources(v []*PreferredResource) *PutRecommendationPreferencesInput {
	s.PreferredResources = v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *PutRecommendationPreferencesInput) SetResourceType(v string) *PutRecommendationPreferencesInput {
	s.ResourceType = &v
	return s
}

// SetSavingsEstimationMode sets the SavingsEstimationMode field's value.
func (s *PutRecommendationPreferencesInput) SetSavingsEstimationMode(v string) *PutRecommendationPreferencesInput {
	s.SavingsEstimationMode = &v
	return s
}

// SetScope sets the Scope field's value.
func (s *PutRecommendationPreferencesInput) SetScope(v *Scope) *PutRecommendationPreferencesInput {
	s.Scope = v
	return s
}

// SetUtilizationPreferences sets the UtilizationPreferences field's value.
func (s *PutRecommendationPreferencesInput) SetUtilizationPreferences(v []*UtilizationPreference) *PutRecommendationPreferencesInput {
	s.UtilizationPreferences = v
	return s
}

type PutRecommendationPreferencesOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutRecommendationPreferencesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutRecommendationPreferencesOutput) GoString() string {
	return s.String()
}

// A summary of a finding reason code.
type ReasonCodeSummary struct {
	_ struct{} `type:"structure"`

	// The name of the finding reason code.
	Name *string `locationName:"name" type:"string" enum:"FindingReasonCode"`

	// The value of the finding reason code summary.
	Value *float64 `locationName:"value" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReasonCodeSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReasonCodeSummary) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *ReasonCodeSummary) SetName(v string) *ReasonCodeSummary {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *ReasonCodeSummary) SetValue(v float64) *ReasonCodeSummary {
	s.Value = &v
	return s
}

// Describes a recommendation export job.
//
// Use the DescribeRecommendationExportJobs action to view your recommendation
// export jobs.
//
// Use the ExportAutoScalingGroupRecommendations or ExportEC2InstanceRecommendations
// actions to request an export of your recommendations.
type RecommendationExportJob struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the export job was created.
	CreationTimestamp *time.Time `locationName:"creationTimestamp" type:"timestamp"`

	// An object that describes the destination of the export file.
	Destination *ExportDestination `locationName:"destination" type:"structure"`

	// The reason for an export job failure.
	FailureReason *string `locationName:"failureReason" type:"string"`

	// The identification number of the export job.
	JobId *string `locationName:"jobId" type:"string"`

	// The timestamp of when the export job was last updated.
	LastUpdatedTimestamp *time.Time `locationName:"lastUpdatedTimestamp" type:"timestamp"`

	// The resource type of the exported recommendations.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// The status of the export job.
	Status *string `locationName:"status" type:"string" enum:"JobStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecommendationExportJob) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecommendationExportJob) GoString() string {
	return s.String()
}

// SetCreationTimestamp sets the CreationTimestamp field's value.
func (s *RecommendationExportJob) SetCreationTimestamp(v time.Time) *RecommendationExportJob {
	s.CreationTimestamp = &v
	return s
}

// SetDestination sets the Destination field's value.
func (s *RecommendationExportJob) SetDestination(v *ExportDestination) *RecommendationExportJob {
	s.Destination = v
	return s
}

// SetFailureReason sets the FailureReason field's value.
func (s *RecommendationExportJob) SetFailureReason(v string) *RecommendationExportJob {
	s.FailureReason = &v
	return s
}

// SetJobId sets the JobId field's value.
func (s *RecommendationExportJob) SetJobId(v string) *RecommendationExportJob {
	s.JobId = &v
	return s
}

// SetLastUpdatedTimestamp sets the LastUpdatedTimestamp field's value.
func (s *RecommendationExportJob) SetLastUpdatedTimestamp(v time.Time) *RecommendationExportJob {
	s.LastUpdatedTimestamp = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *RecommendationExportJob) SetResourceType(v string) *RecommendationExportJob {
	s.ResourceType = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *RecommendationExportJob) SetStatus(v string) *RecommendationExportJob {
	s.Status = &v
	return s
}

// Describes the recommendation preferences to return in the response of a GetAutoScalingGroupRecommendations,
// GetEC2InstanceRecommendations, and GetEC2RecommendationProjectedMetrics request.
type RecommendationPreferences struct {
	_ struct{} `type:"structure"`

	// Specifies the CPU vendor and architecture for Amazon EC2 instance and Auto
	// Scaling group recommendations.
	//
	// For example, when you specify AWS_ARM64 with:
	//
	//    * A GetEC2InstanceRecommendations or GetAutoScalingGroupRecommendations
	//    request, Compute Optimizer returns recommendations that consist of Graviton2
	//    instance types only.
	//
	//    * A GetEC2RecommendationProjectedMetrics request, Compute Optimizer returns
	//    projected utilization metrics for Graviton2 instance type recommendations
	//    only.
	//
	//    * A ExportEC2InstanceRecommendations or ExportAutoScalingGroupRecommendations
	//    request, Compute Optimizer exports recommendations that consist of Graviton2
	//    instance types only.
	CpuVendorArchitectures []*string `locationName:"cpuVendorArchitectures" type:"list" enum:"CpuVendorArchitecture"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecommendationPreferences) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecommendationPreferences) GoString() string {
	return s.String()
}

// SetCpuVendorArchitectures sets the CpuVendorArchitectures field's value.
func (s *RecommendationPreferences) SetCpuVendorArchitectures(v []*string) *RecommendationPreferences {
	s.CpuVendorArchitectures = v
	return s
}

// Describes a recommendation preference.
type RecommendationPreferencesDetail struct {
	_ struct{} `type:"structure"`

	// The status of the enhanced infrastructure metrics recommendation preference.
	//
	// When the recommendations page is refreshed, a status of Active confirms that
	// the preference is applied to the recommendations, and a status of Inactive
	// confirms that the preference isn't yet applied to recommendations.
	//
	// For more information, see Enhanced infrastructure metrics (https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html)
	// in the Compute Optimizer User Guide.
	EnhancedInfrastructureMetrics *string `locationName:"enhancedInfrastructureMetrics" type:"string" enum:"EnhancedInfrastructureMetrics"`

	// An object that describes the external metrics recommendation preference.
	//
	// If the preference is applied in the latest recommendation refresh, an object
	// with a valid source value appears in the response. If the preference isn't
	// applied to the recommendations already, then this object doesn't appear in
	// the response.
	ExternalMetricsPreference *ExternalMetricsPreference `locationName:"externalMetricsPreference" type:"structure"`

	// The status of the inferred workload types recommendation preference.
	//
	// When the recommendations page is refreshed, a status of Active confirms that
	// the preference is applied to the recommendations, and a status of Inactive
	// confirms that the preference isn't yet applied to recommendations.
	InferredWorkloadTypes *string `locationName:"inferredWorkloadTypes" type:"string" enum:"InferredWorkloadTypesPreference"`

	// The preference to control the number of days the utilization metrics of the
	// Amazon Web Services resource are analyzed. If the preference isn’t set,
	// this object is null.
	LookBackPeriod *string `locationName:"lookBackPeriod" type:"string" enum:"LookBackPeriodPreference"`

	// The preference to control which resource type values are considered when
	// generating rightsizing recommendations. This object resolves any wildcard
	// expressions and returns the effective list of candidate resource type values.
	// If the preference isn’t set, this object is null.
	PreferredResources []*EffectivePreferredResource `locationName:"preferredResources" type:"list"`

	// The target resource type of the recommendation preference to create.
	//
	// The Ec2Instance option encompasses standalone instances and instances that
	// are part of Auto Scaling groups. The AutoScalingGroup option encompasses
	// only instances that are part of an Auto Scaling group.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`

	// Describes the savings estimation mode used for calculating savings opportunity.
	//
	// Only the account manager or delegated administrator of your organization
	// can activate this preference.
	SavingsEstimationMode *string `locationName:"savingsEstimationMode" type:"string" enum:"SavingsEstimationMode"`

	// An object that describes the scope of the recommendation preference.
	//
	// Recommendation preferences can be created at the organization level (for
	// management accounts of an organization only), account level, and resource
	// level. For more information, see Activating enhanced infrastructure metrics
	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html)
	// in the Compute Optimizer User Guide.
	Scope *Scope `locationName:"scope" type:"structure"`

	// The preference to control the resource’s CPU utilization thresholds - threshold
	// and headroom. If the preference isn’t set, this object is null.
	//
	// This preference is only available for the Amazon EC2 instance resource type.
	UtilizationPreferences []*UtilizationPreference `locationName:"utilizationPreferences" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecommendationPreferencesDetail) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecommendationPreferencesDetail) GoString() string {
	return s.String()
}

// SetEnhancedInfrastructureMetrics sets the EnhancedInfrastructureMetrics field's value.
func (s *RecommendationPreferencesDetail) SetEnhancedInfrastructureMetrics(v string) *RecommendationPreferencesDetail {
	s.EnhancedInfrastructureMetrics = &v
	return s
}

// SetExternalMetricsPreference sets the ExternalMetricsPreference field's value.
func (s *RecommendationPreferencesDetail) SetExternalMetricsPreference(v *ExternalMetricsPreference) *RecommendationPreferencesDetail {
	s.ExternalMetricsPreference = v
	return s
}

// SetInferredWorkloadTypes sets the InferredWorkloadTypes field's value.
func (s *RecommendationPreferencesDetail) SetInferredWorkloadTypes(v string) *RecommendationPreferencesDetail {
	s.InferredWorkloadTypes = &v
	return s
}

// SetLookBackPeriod sets the LookBackPeriod field's value.
func (s *RecommendationPreferencesDetail) SetLookBackPeriod(v string) *RecommendationPreferencesDetail {
	s.LookBackPeriod = &v
	return s
}

// SetPreferredResources sets the PreferredResources field's value.
func (s *RecommendationPreferencesDetail) SetPreferredResources(v []*EffectivePreferredResource) *RecommendationPreferencesDetail {
	s.PreferredResources = v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *RecommendationPreferencesDetail) SetResourceType(v string) *RecommendationPreferencesDetail {
	s.ResourceType = &v
	return s
}

// SetSavingsEstimationMode sets the SavingsEstimationMode field's value.
func (s *RecommendationPreferencesDetail) SetSavingsEstimationMode(v string) *RecommendationPreferencesDetail {
	s.SavingsEstimationMode = &v
	return s
}

// SetScope sets the Scope field's value.
func (s *RecommendationPreferencesDetail) SetScope(v *Scope) *RecommendationPreferencesDetail {
	s.Scope = v
	return s
}

// SetUtilizationPreferences sets the UtilizationPreferences field's value.
func (s *RecommendationPreferencesDetail) SetUtilizationPreferences(v []*UtilizationPreference) *RecommendationPreferencesDetail {
	s.UtilizationPreferences = v
	return s
}

// Describes the source of a recommendation, such as an Amazon EC2 instance
// or Auto Scaling group.
type RecommendationSource struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the recommendation source.
	RecommendationSourceArn *string `locationName:"recommendationSourceArn" type:"string"`

	// The resource type of the recommendation source.
	RecommendationSourceType *string `locationName:"recommendationSourceType" type:"string" enum:"RecommendationSourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecommendationSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecommendationSource) GoString() string {
	return s.String()
}

// SetRecommendationSourceArn sets the RecommendationSourceArn field's value.
func (s *RecommendationSource) SetRecommendationSourceArn(v string) *RecommendationSource {
	s.RecommendationSourceArn = &v
	return s
}

// SetRecommendationSourceType sets the RecommendationSourceType field's value.
func (s *RecommendationSource) SetRecommendationSourceType(v string) *RecommendationSource {
	s.RecommendationSourceType = &v
	return s
}

// A summary of a recommendation.
type RecommendationSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the recommendation summary.
	AccountId *string `locationName:"accountId" type:"string"`

	// An object that describes the performance risk ratings for a given resource
	// type.
	CurrentPerformanceRiskRatings *CurrentPerformanceRiskRatings `locationName:"currentPerformanceRiskRatings" type:"structure"`

	// An array of objects that describes the estimated monthly saving amounts for
	// the instances running on the specified inferredWorkloadTypes. The array contains
	// the top five savings opportunites for the instances that run inferred workload
	// types.
	InferredWorkloadSavings []*InferredWorkloadSaving `locationName:"inferredWorkloadSavings" type:"list"`

	// The resource type that the recommendation summary applies to.
	RecommendationResourceType *string `locationName:"recommendationResourceType" type:"string" enum:"RecommendationSourceType"`

	// An object that describes the savings opportunity for a given resource type.
	// Savings opportunity includes the estimated monthly savings amount and percentage.
	SavingsOpportunity *SavingsOpportunity `locationName:"savingsOpportunity" type:"structure"`

	// An array of objects that describe a recommendation summary.
	Summaries []*Summary `locationName:"summaries" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecommendationSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecommendationSummary) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *RecommendationSummary) SetAccountId(v string) *RecommendationSummary {
	s.AccountId = &v
	return s
}

// SetCurrentPerformanceRiskRatings sets the CurrentPerformanceRiskRatings field's value.
func (s *RecommendationSummary) SetCurrentPerformanceRiskRatings(v *CurrentPerformanceRiskRatings) *RecommendationSummary {
	s.CurrentPerformanceRiskRatings = v
	return s
}

// SetInferredWorkloadSavings sets the InferredWorkloadSavings field's value.
func (s *RecommendationSummary) SetInferredWorkloadSavings(v []*InferredWorkloadSaving) *RecommendationSummary {
	s.InferredWorkloadSavings = v
	return s
}

// SetRecommendationResourceType sets the RecommendationResourceType field's value.
func (s *RecommendationSummary) SetRecommendationResourceType(v string) *RecommendationSummary {
	s.RecommendationResourceType = &v
	return s
}

// SetSavingsOpportunity sets the SavingsOpportunity field's value.
func (s *RecommendationSummary) SetSavingsOpportunity(v *SavingsOpportunity) *RecommendationSummary {
	s.SavingsOpportunity = v
	return s
}

// SetSummaries sets the Summaries field's value.
func (s *RecommendationSummary) SetSummaries(v []*Summary) *RecommendationSummary {
	s.Summaries = v
	return s
}

// Describes a projected utilization metric of a recommendation option.
//
// The Cpu and Memory metrics are the only projected utilization metrics returned
// when you run the GetEC2RecommendationProjectedMetrics action. Additionally,
// the Memory metric is returned only for resources that have the unified CloudWatch
// agent installed on them. For more information, see Enabling Memory Utilization
// with the CloudWatch Agent (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent).
type RecommendedOptionProjectedMetric struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe a projected utilization metric.
	ProjectedMetrics []*ProjectedMetric `locationName:"projectedMetrics" type:"list"`

	// The rank of the recommendation option projected metric.
	//
	// The top recommendation option is ranked as 1.
	//
	// The projected metric rank correlates to the recommendation option rank. For
	// example, the projected metric ranked as 1 is related to the recommendation
	// option that is also ranked as 1 in the same response.
	Rank *int64 `locationName:"rank" type:"integer"`

	// The recommended instance type.
	RecommendedInstanceType *string `locationName:"recommendedInstanceType" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecommendedOptionProjectedMetric) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecommendedOptionProjectedMetric) GoString() string {
	return s.String()
}

// SetProjectedMetrics sets the ProjectedMetrics field's value.
func (s *RecommendedOptionProjectedMetric) SetProjectedMetrics(v []*ProjectedMetric) *RecommendedOptionProjectedMetric {
	s.ProjectedMetrics = v
	return s
}

// SetRank sets the Rank field's value.
func (s *RecommendedOptionProjectedMetric) SetRank(v int64) *RecommendedOptionProjectedMetric {
	s.Rank = &v
	return s
}

// SetRecommendedInstanceType sets the RecommendedInstanceType field's value.
func (s *RecommendedOptionProjectedMetric) SetRecommendedInstanceType(v string) *RecommendedOptionProjectedMetric {
	s.RecommendedInstanceType = &v
	return s
}

// A resource that is required for the action doesn't exist.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) GoString() string {
	return s.String()
}

func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
	return &ResourceNotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceNotFoundException) Code() string {
	return "ResourceNotFoundException"
}

// Message returns the exception's message.
func (s *ResourceNotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceNotFoundException) OrigErr() error {
	return nil
}

func (s *ResourceNotFoundException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ResourceNotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceNotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Describes the destination Amazon Simple Storage Service (Amazon S3) bucket
// name and object keys of a recommendations export file, and its associated
// metadata file.
type S3Destination struct {
	_ struct{} `type:"structure"`

	// The name of the Amazon S3 bucket used as the destination of an export file.
	Bucket *string `locationName:"bucket" type:"string"`

	// The Amazon S3 bucket key of an export file.
	//
	// The key uniquely identifies the object, or export file, in the S3 bucket.
	Key *string `locationName:"key" type:"string"`

	// The Amazon S3 bucket key of a metadata file.
	//
	// The key uniquely identifies the object, or metadata file, in the S3 bucket.
	MetadataKey *string `locationName:"metadataKey" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3Destination) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3Destination) GoString() string {
	return s.String()
}

// SetBucket sets the Bucket field's value.
func (s *S3Destination) SetBucket(v string) *S3Destination {
	s.Bucket = &v
	return s
}

// SetKey sets the Key field's value.
func (s *S3Destination) SetKey(v string) *S3Destination {
	s.Key = &v
	return s
}

// SetMetadataKey sets the MetadataKey field's value.
func (s *S3Destination) SetMetadataKey(v string) *S3Destination {
	s.MetadataKey = &v
	return s
}

// Describes the destination Amazon Simple Storage Service (Amazon S3) bucket
// name and key prefix for a recommendations export job.
//
// You must create the destination Amazon S3 bucket for your recommendations
// export before you create the export job. Compute Optimizer does not create
// the S3 bucket for you. After you create the S3 bucket, ensure that it has
// the required permission policy to allow Compute Optimizer to write the export
// file to it. If you plan to specify an object prefix when you create the export
// job, you must include the object prefix in the policy that you add to the
// S3 bucket. For more information, see Amazon S3 Bucket Policy for Compute
// Optimizer (https://docs.aws.amazon.com/compute-optimizer/latest/ug/create-s3-bucket-policy-for-compute-optimizer.html)
// in the Compute Optimizer User Guide.
type S3DestinationConfig struct {
	_ struct{} `type:"structure"`

	// The name of the Amazon S3 bucket to use as the destination for an export
	// job.
	Bucket *string `locationName:"bucket" type:"string"`

	// The Amazon S3 bucket prefix for an export job.
	KeyPrefix *string `locationName:"keyPrefix" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3DestinationConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3DestinationConfig) GoString() string {
	return s.String()
}

// SetBucket sets the Bucket field's value.
func (s *S3DestinationConfig) SetBucket(v string) *S3DestinationConfig {
	s.Bucket = &v
	return s
}

// SetKeyPrefix sets the KeyPrefix field's value.
func (s *S3DestinationConfig) SetKeyPrefix(v string) *S3DestinationConfig {
	s.KeyPrefix = &v
	return s
}

// Describes the savings opportunity for recommendations of a given resource
// type or for the recommendation option of an individual resource.
//
// Savings opportunity represents the estimated monthly savings you can achieve
// by implementing a given Compute Optimizer recommendation.
//
// Savings opportunity data requires that you opt in to Cost Explorer, as well
// as activate Receive Amazon EC2 resource recommendations in the Cost Explorer
// preferences page. That creates a connection between Cost Explorer and Compute
// Optimizer. With this connection, Cost Explorer generates savings estimates
// considering the price of existing resources, the price of recommended resources,
// and historical usage data. Estimated monthly savings reflects the projected
// dollar savings associated with each of the recommendations generated. For
// more information, see Enabling Cost Explorer (https://docs.aws.amazon.com/cost-management/latest/userguide/ce-enable.html)
// and Optimizing your cost with Rightsizing Recommendations (https://docs.aws.amazon.com/cost-management/latest/userguide/ce-rightsizing.html)
// in the Cost Management User Guide.
type SavingsOpportunity struct {
	_ struct{} `type:"structure"`

	// An object that describes the estimated monthly savings amount possible by
	// adopting Compute Optimizer recommendations for a given resource. This is
	// based on the On-Demand instance pricing..
	EstimatedMonthlySavings *EstimatedMonthlySavings `locationName:"estimatedMonthlySavings" type:"structure"`

	// The estimated monthly savings possible as a percentage of monthly cost by
	// adopting Compute Optimizer recommendations for a given resource.
	SavingsOpportunityPercentage *float64 `locationName:"savingsOpportunityPercentage" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SavingsOpportunity) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SavingsOpportunity) GoString() string {
	return s.String()
}

// SetEstimatedMonthlySavings sets the EstimatedMonthlySavings field's value.
func (s *SavingsOpportunity) SetEstimatedMonthlySavings(v *EstimatedMonthlySavings) *SavingsOpportunity {
	s.EstimatedMonthlySavings = v
	return s
}

// SetSavingsOpportunityPercentage sets the SavingsOpportunityPercentage field's value.
func (s *SavingsOpportunity) SetSavingsOpportunityPercentage(v float64) *SavingsOpportunity {
	s.SavingsOpportunityPercentage = &v
	return s
}

// Describes the scope of a recommendation preference.
//
// Recommendation preferences can be created at the organization level (for
// management accounts of an organization only), account level, and resource
// level. For more information, see Activating enhanced infrastructure metrics
// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/enhanced-infrastructure-metrics.html)
// in the Compute Optimizer User Guide.
//
// You cannot create recommendation preferences for Auto Scaling groups at the
// organization and account levels. You can create recommendation preferences
// for Auto Scaling groups only at the resource level by specifying a scope
// name of ResourceArn and a scope value of the Auto Scaling group Amazon Resource
// Name (ARN). This will configure the preference for all instances that are
// part of the specified Auto Scaling group. You also cannot create recommendation
// preferences at the resource level for instances that are part of an Auto
// Scaling group. You can create recommendation preferences at the resource
// level only for standalone instances.
type Scope struct {
	_ struct{} `type:"structure"`

	// The name of the scope.
	//
	// The following scopes are possible:
	//
	//    * Organization - Specifies that the recommendation preference applies
	//    at the organization level, for all member accounts of an organization.
	//
	//    * AccountId - Specifies that the recommendation preference applies at
	//    the account level, for all resources of a given resource type in an account.
	//
	//    * ResourceArn - Specifies that the recommendation preference applies at
	//    the individual resource level.
	Name *string `locationName:"name" type:"string" enum:"ScopeName"`

	// The value of the scope.
	//
	// If you specified the name of the scope as:
	//
	//    * Organization - The value must be ALL_ACCOUNTS.
	//
	//    * AccountId - The value must be a 12-digit Amazon Web Services account
	//    ID.
	//
	//    * ResourceArn - The value must be the Amazon Resource Name (ARN) of an
	//    EC2 instance or an Auto Scaling group.
	//
	// Only EC2 instance and Auto Scaling group ARNs are currently supported.
	Value *string `locationName:"value" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Scope) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Scope) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *Scope) SetName(v string) *Scope {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Scope) SetValue(v string) *Scope {
	s.Value = &v
	return s
}

// The Amazon ECS service configurations used for recommendations.
type ServiceConfiguration struct {
	_ struct{} `type:"structure"`

	// Describes the Auto Scaling configuration methods for an Amazon ECS service.
	// This affects the generated recommendations. For example, if Auto Scaling
	// is configured on a service’s CPU, then Compute Optimizer doesn’t generate
	// CPU size recommendations.
	//
	// The Auto Scaling configuration methods include:
	//
	//    * TARGET_TRACKING_SCALING_CPU — If the Amazon ECS service is configured
	//    to use target scaling on CPU, Compute Optimizer doesn't generate CPU recommendations.
	//
	//    * TARGET_TRACKING_SCALING_MEMORY — If the Amazon ECS service is configured
	//    to use target scaling on memory, Compute Optimizer doesn't generate memory
	//    recommendations.
	//
	// For more information about step scaling and target scaling, see Step scaling
	// policies for Application Auto Scaling (https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html)
	// and Target tracking scaling policies for Application Auto Scaling (https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)
	// in the Application Auto Scaling User Guide.
	AutoScalingConfiguration *string `locationName:"autoScalingConfiguration" type:"string" enum:"AutoScalingConfiguration"`

	// The container configurations within a task of an Amazon ECS service.
	ContainerConfigurations []*ContainerConfiguration `locationName:"containerConfigurations" type:"list"`

	// The number of CPU units used by the tasks in the Amazon ECS service.
	Cpu *int64 `locationName:"cpu" type:"integer"`

	// The amount of memory used by the tasks in the Amazon ECS service.
	Memory *int64 `locationName:"memory" type:"integer"`

	// The task definition ARN used by the tasks in the Amazon ECS service.
	TaskDefinitionArn *string `locationName:"taskDefinitionArn" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceConfiguration) GoString() string {
	return s.String()
}

// SetAutoScalingConfiguration sets the AutoScalingConfiguration field's value.
func (s *ServiceConfiguration) SetAutoScalingConfiguration(v string) *ServiceConfiguration {
	s.AutoScalingConfiguration = &v
	return s
}

// SetContainerConfigurations sets the ContainerConfigurations field's value.
func (s *ServiceConfiguration) SetContainerConfigurations(v []*ContainerConfiguration) *ServiceConfiguration {
	s.ContainerConfigurations = v
	return s
}

// SetCpu sets the Cpu field's value.
func (s *ServiceConfiguration) SetCpu(v int64) *ServiceConfiguration {
	s.Cpu = &v
	return s
}

// SetMemory sets the Memory field's value.
func (s *ServiceConfiguration) SetMemory(v int64) *ServiceConfiguration {
	s.Memory = &v
	return s
}

// SetTaskDefinitionArn sets the TaskDefinitionArn field's value.
func (s *ServiceConfiguration) SetTaskDefinitionArn(v string) *ServiceConfiguration {
	s.TaskDefinitionArn = &v
	return s
}

// The request has failed due to a temporary failure of the server.
type ServiceUnavailableException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceUnavailableException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceUnavailableException) GoString() string {
	return s.String()
}

func newErrorServiceUnavailableException(v protocol.ResponseMetadata) error {
	return &ServiceUnavailableException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ServiceUnavailableException) Code() string {
	return "ServiceUnavailableException"
}

// Message returns the exception's message.
func (s *ServiceUnavailableException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ServiceUnavailableException) OrigErr() error {
	return nil
}

func (s *ServiceUnavailableException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ServiceUnavailableException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ServiceUnavailableException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The summary of a recommendation.
type Summary struct {
	_ struct{} `type:"structure"`

	// The finding classification of the recommendation.
	Name *string `locationName:"name" type:"string" enum:"Finding"`

	// An array of objects that summarize a finding reason code.
	ReasonCodeSummaries []*ReasonCodeSummary `locationName:"reasonCodeSummaries" type:"list"`

	// The value of the recommendation summary.
	Value *float64 `locationName:"value" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Summary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Summary) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *Summary) SetName(v string) *Summary {
	s.Name = &v
	return s
}

// SetReasonCodeSummaries sets the ReasonCodeSummaries field's value.
func (s *Summary) SetReasonCodeSummaries(v []*ReasonCodeSummary) *Summary {
	s.ReasonCodeSummaries = v
	return s
}

// SetValue sets the Value field's value.
func (s *Summary) SetValue(v float64) *Summary {
	s.Value = &v
	return s
}

// A list of tag key and value pairs that you define.
type Tag struct {
	_ struct{} `type:"structure"`

	// One part of a key-value pair that makes up a tag. A key is a general label
	// that acts like a category for more specific tag values.
	Key *string `locationName:"key" type:"string"`

	// One part of a key-value pair that make up a tag. A value acts as a descriptor
	// within a tag category (key). The value can be empty or null.
	Value *string `locationName:"value" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Tag) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Tag) GoString() string {
	return s.String()
}

// SetKey sets the Key field's value.
func (s *Tag) SetKey(v string) *Tag {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Tag) SetValue(v string) *Tag {
	s.Value = &v
	return s
}

// The request was denied due to request throttling.
type ThrottlingException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThrottlingException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThrottlingException) GoString() string {
	return s.String()
}

func newErrorThrottlingException(v protocol.ResponseMetadata) error {
	return &ThrottlingException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ThrottlingException) Code() string {
	return "ThrottlingException"
}

// Message returns the exception's message.
func (s *ThrottlingException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ThrottlingException) OrigErr() error {
	return nil
}

func (s *ThrottlingException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ThrottlingException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ThrottlingException) RequestID() string {
	return s.RespMetadata.RequestID
}

type UpdateEnrollmentStatusInput struct {
	_ struct{} `type:"structure"`

	// Indicates whether to enroll member accounts of the organization if the account
	// is the management account of an organization.
	IncludeMemberAccounts *bool `locationName:"includeMemberAccounts" type:"boolean"`

	// The new enrollment status of the account.
	//
	// The following status options are available:
	//
	//    * Active - Opts in your account to the Compute Optimizer service. Compute
	//    Optimizer begins analyzing the configuration and utilization metrics of
	//    your Amazon Web Services resources after you opt in. For more information,
	//    see Metrics analyzed by Compute Optimizer (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html)
	//    in the Compute Optimizer User Guide.
	//
	//    * Inactive - Opts out your account from the Compute Optimizer service.
	//    Your account's recommendations and related metrics data will be deleted
	//    from Compute Optimizer after you opt out.
	//
	// The Pending and Failed options cannot be used to update the enrollment status
	// of an account. They are returned in the response of a request to update the
	// enrollment status of an account.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"Status"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEnrollmentStatusInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEnrollmentStatusInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateEnrollmentStatusInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateEnrollmentStatusInput"}
	if s.Status == nil {
		invalidParams.Add(request.NewErrParamRequired("Status"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIncludeMemberAccounts sets the IncludeMemberAccounts field's value.
func (s *UpdateEnrollmentStatusInput) SetIncludeMemberAccounts(v bool) *UpdateEnrollmentStatusInput {
	s.IncludeMemberAccounts = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateEnrollmentStatusInput) SetStatus(v string) *UpdateEnrollmentStatusInput {
	s.Status = &v
	return s
}

type UpdateEnrollmentStatusOutput struct {
	_ struct{} `type:"structure"`

	// The enrollment status of the account.
	Status *string `locationName:"status" type:"string" enum:"Status"`

	// The reason for the enrollment status of the account. For example, an account
	// might show a status of Pending because member accounts of an organization
	// require more time to be enrolled in the service.
	StatusReason *string `locationName:"statusReason" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEnrollmentStatusOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEnrollmentStatusOutput) GoString() string {
	return s.String()
}

// SetStatus sets the Status field's value.
func (s *UpdateEnrollmentStatusOutput) SetStatus(v string) *UpdateEnrollmentStatusOutput {
	s.Status = &v
	return s
}

// SetStatusReason sets the StatusReason field's value.
func (s *UpdateEnrollmentStatusOutput) SetStatusReason(v string) *UpdateEnrollmentStatusOutput {
	s.StatusReason = &v
	return s
}

// Describes a utilization metric of a resource, such as an Amazon EC2 instance.
//
// Compare the utilization metric data of your resource against its projected
// utilization metric data to determine the performance difference between your
// current resource and the recommended option.
type UtilizationMetric struct {
	_ struct{} `type:"structure"`

	// The name of the utilization metric.
	//
	// The following utilization metrics are available:
	//
	//    * Cpu - The percentage of allocated EC2 compute units that are currently
	//    in use on the instance. This metric identifies the processing power required
	//    to run an application on the instance. Depending on the instance type,
	//    tools in your operating system can show a lower percentage than CloudWatch
	//    when the instance is not allocated a full processor core. Units: Percent
	//
	//    * Memory - The percentage of memory that is currently in use on the instance.
	//    This metric identifies the amount of memory required to run an application
	//    on the instance. Units: Percent The Memory metric is returned only for
	//    resources that have the unified CloudWatch agent installed on them. For
	//    more information, see Enabling Memory Utilization with the CloudWatch
	//    Agent (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent).
	//
	//    * GPU - The percentage of allocated GPUs that currently run on the instance.
	//
	//    * GPU_MEMORY - The percentage of total GPU memory that currently runs
	//    on the instance. The GPU and GPU_MEMORY metrics are only returned for
	//    resources with the unified CloudWatch Agent installed on them. For more
	//    information, see Enabling NVIDIA GPU utilization with the CloudWatch Agent
	//    (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#nvidia-cw-agent).
	//
	//    * EBS_READ_OPS_PER_SECOND - The completed read operations from all EBS
	//    volumes attached to the instance in a specified period of time. Unit:
	//    Count
	//
	//    * EBS_WRITE_OPS_PER_SECOND - The completed write operations to all EBS
	//    volumes attached to the instance in a specified period of time. Unit:
	//    Count
	//
	//    * EBS_READ_BYTES_PER_SECOND - The bytes read from all EBS volumes attached
	//    to the instance in a specified period of time. Unit: Bytes
	//
	//    * EBS_WRITE_BYTES_PER_SECOND - The bytes written to all EBS volumes attached
	//    to the instance in a specified period of time. Unit: Bytes
	//
	//    * DISK_READ_OPS_PER_SECOND - The completed read operations from all instance
	//    store volumes available to the instance in a specified period of time.
	//    If there are no instance store volumes, either the value is 0 or the metric
	//    is not reported.
	//
	//    * DISK_WRITE_OPS_PER_SECOND - The completed write operations from all
	//    instance store volumes available to the instance in a specified period
	//    of time. If there are no instance store volumes, either the value is 0
	//    or the metric is not reported.
	//
	//    * DISK_READ_BYTES_PER_SECOND - The bytes read from all instance store
	//    volumes available to the instance. This metric is used to determine the
	//    volume of the data the application reads from the disk of the instance.
	//    This can be used to determine the speed of the application. If there are
	//    no instance store volumes, either the value is 0 or the metric is not
	//    reported.
	//
	//    * DISK_WRITE_BYTES_PER_SECOND - The bytes written to all instance store
	//    volumes available to the instance. This metric is used to determine the
	//    volume of the data the application writes onto the disk of the instance.
	//    This can be used to determine the speed of the application. If there are
	//    no instance store volumes, either the value is 0 or the metric is not
	//    reported.
	//
	//    * NETWORK_IN_BYTES_PER_SECOND - The number of bytes received by the instance
	//    on all network interfaces. This metric identifies the volume of incoming
	//    network traffic to a single instance.
	//
	//    * NETWORK_OUT_BYTES_PER_SECOND - The number of bytes sent out by the instance
	//    on all network interfaces. This metric identifies the volume of outgoing
	//    network traffic from a single instance.
	//
	//    * NETWORK_PACKETS_IN_PER_SECOND - The number of packets received by the
	//    instance on all network interfaces. This metric identifies the volume
	//    of incoming traffic in terms of the number of packets on a single instance.
	//
	//    * NETWORK_PACKETS_OUT_PER_SECOND - The number of packets sent out by the
	//    instance on all network interfaces. This metric identifies the volume
	//    of outgoing traffic in terms of the number of packets on a single instance.
	Name *string `locationName:"name" type:"string" enum:"MetricName"`

	// The statistic of the utilization metric.
	//
	// The Compute Optimizer API, Command Line Interface (CLI), and SDKs return
	// utilization metrics using only the Maximum statistic, which is the highest
	// value observed during the specified period.
	//
	// The Compute Optimizer console displays graphs for some utilization metrics
	// using the Average statistic, which is the value of Sum / SampleCount during
	// the specified period. For more information, see Viewing resource recommendations
	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/viewing-recommendations.html)
	// in the Compute Optimizer User Guide. You can also get averaged utilization
	// metric data for your resources using Amazon CloudWatch. For more information,
	// see the Amazon CloudWatch User Guide (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html).
	Statistic *string `locationName:"statistic" type:"string" enum:"MetricStatistic"`

	// The value of the utilization metric.
	Value *float64 `locationName:"value" type:"double"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UtilizationMetric) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UtilizationMetric) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *UtilizationMetric) SetName(v string) *UtilizationMetric {
	s.Name = &v
	return s
}

// SetStatistic sets the Statistic field's value.
func (s *UtilizationMetric) SetStatistic(v string) *UtilizationMetric {
	s.Statistic = &v
	return s
}

// SetValue sets the Value field's value.
func (s *UtilizationMetric) SetValue(v float64) *UtilizationMetric {
	s.Value = &v
	return s
}

// The preference to control the resource’s CPU utilization thresholds - threshold
// and headroom.
//
// This preference is only available for the Amazon EC2 instance resource type.
type UtilizationPreference struct {
	_ struct{} `type:"structure"`

	// The name of the resource utilization metric name to customize.
	//
	// Compute Optimizer only supports CpuUtilization.
	MetricName *string `locationName:"metricName" type:"string" enum:"CustomizableMetricName"`

	// The parameters to set when customizing the resource utilization thresholds.
	MetricParameters *CustomizableMetricParameters `locationName:"metricParameters" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UtilizationPreference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UtilizationPreference) GoString() string {
	return s.String()
}

// SetMetricName sets the MetricName field's value.
func (s *UtilizationPreference) SetMetricName(v string) *UtilizationPreference {
	s.MetricName = &v
	return s
}

// SetMetricParameters sets the MetricParameters field's value.
func (s *UtilizationPreference) SetMetricParameters(v *CustomizableMetricParameters) *UtilizationPreference {
	s.MetricParameters = v
	return s
}

// Describes the configuration of an Amazon Elastic Block Store (Amazon EBS)
// volume.
type VolumeConfiguration struct {
	_ struct{} `type:"structure"`

	// Contains the image used to boot the instance during launch.
	RootVolume *bool `locationName:"rootVolume" type:"boolean"`

	// The baseline IOPS of the volume.
	VolumeBaselineIOPS *int64 `locationName:"volumeBaselineIOPS" type:"integer"`

	// The baseline throughput of the volume.
	VolumeBaselineThroughput *int64 `locationName:"volumeBaselineThroughput" type:"integer"`

	// The burst IOPS of the volume.
	VolumeBurstIOPS *int64 `locationName:"volumeBurstIOPS" type:"integer"`

	// The burst throughput of the volume.
	VolumeBurstThroughput *int64 `locationName:"volumeBurstThroughput" type:"integer"`

	// The size of the volume, in GiB.
	VolumeSize *int64 `locationName:"volumeSize" type:"integer"`

	// The volume type.
	//
	// This can be gp2 for General Purpose SSD, io1 or io2 for Provisioned IOPS
	// SSD, st1 for Throughput Optimized HDD, sc1 for Cold HDD, or standard for
	// Magnetic volumes.
	VolumeType *string `locationName:"volumeType" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VolumeConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VolumeConfiguration) GoString() string {
	return s.String()
}

// SetRootVolume sets the RootVolume field's value.
func (s *VolumeConfiguration) SetRootVolume(v bool) *VolumeConfiguration {
	s.RootVolume = &v
	return s
}

// SetVolumeBaselineIOPS sets the VolumeBaselineIOPS field's value.
func (s *VolumeConfiguration) SetVolumeBaselineIOPS(v int64) *VolumeConfiguration {
	s.VolumeBaselineIOPS = &v
	return s
}

// SetVolumeBaselineThroughput sets the VolumeBaselineThroughput field's value.
func (s *VolumeConfiguration) SetVolumeBaselineThroughput(v int64) *VolumeConfiguration {
	s.VolumeBaselineThroughput = &v
	return s
}

// SetVolumeBurstIOPS sets the VolumeBurstIOPS field's value.
func (s *VolumeConfiguration) SetVolumeBurstIOPS(v int64) *VolumeConfiguration {
	s.VolumeBurstIOPS = &v
	return s
}

// SetVolumeBurstThroughput sets the VolumeBurstThroughput field's value.
func (s *VolumeConfiguration) SetVolumeBurstThroughput(v int64) *VolumeConfiguration {
	s.VolumeBurstThroughput = &v
	return s
}

// SetVolumeSize sets the VolumeSize field's value.
func (s *VolumeConfiguration) SetVolumeSize(v int64) *VolumeConfiguration {
	s.VolumeSize = &v
	return s
}

// SetVolumeType sets the VolumeType field's value.
func (s *VolumeConfiguration) SetVolumeType(v string) *VolumeConfiguration {
	s.VolumeType = &v
	return s
}

// Describes an Amazon Elastic Block Store (Amazon EBS) volume recommendation.
type VolumeRecommendation struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the volume.
	AccountId *string `locationName:"accountId" type:"string"`

	// An array of objects that describe the current configuration of the volume.
	CurrentConfiguration *VolumeConfiguration `locationName:"currentConfiguration" type:"structure"`

	// The risk of the current EBS volume not meeting the performance needs of its
	// workloads. The higher the risk, the more likely the current EBS volume doesn't
	// have sufficient capacity.
	CurrentPerformanceRisk *string `locationName:"currentPerformanceRisk" type:"string" enum:"CurrentPerformanceRisk"`

	// Describes the effective recommendation preferences for Amazon EBS volume.
	EffectiveRecommendationPreferences *EBSEffectiveRecommendationPreferences `locationName:"effectiveRecommendationPreferences" type:"structure"`

	// The finding classification of the volume.
	//
	// Findings for volumes include:
	//
	//    * NotOptimized —A volume is considered not optimized when Compute Optimizer
	//    identifies a recommendation that can provide better performance for your
	//    workload.
	//
	//    * Optimized —An volume is considered optimized when Compute Optimizer
	//    determines that the volume is correctly provisioned to run your workload
	//    based on the chosen volume type. For optimized resources, Compute Optimizer
	//    might recommend a new generation volume type.
	Finding *string `locationName:"finding" type:"string" enum:"EBSFinding"`

	// The timestamp of when the volume recommendation was last generated.
	LastRefreshTimestamp *time.Time `locationName:"lastRefreshTimestamp" type:"timestamp"`

	// The number of days for which utilization metrics were analyzed for the volume.
	LookBackPeriodInDays *float64 `locationName:"lookBackPeriodInDays" type:"double"`

	// A list of tags assigned to your Amazon EBS volume recommendations.
	Tags []*Tag `locationName:"tags" type:"list"`

	// An array of objects that describe the utilization metrics of the volume.
	UtilizationMetrics []*EBSUtilizationMetric `locationName:"utilizationMetrics" type:"list"`

	// The Amazon Resource Name (ARN) of the current volume.
	VolumeArn *string `locationName:"volumeArn" type:"string"`

	// An array of objects that describe the recommendation options for the volume.
	VolumeRecommendationOptions []*VolumeRecommendationOption `locationName:"volumeRecommendationOptions" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VolumeRecommendation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VolumeRecommendation) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *VolumeRecommendation) SetAccountId(v string) *VolumeRecommendation {
	s.AccountId = &v
	return s
}

// SetCurrentConfiguration sets the CurrentConfiguration field's value.
func (s *VolumeRecommendation) SetCurrentConfiguration(v *VolumeConfiguration) *VolumeRecommendation {
	s.CurrentConfiguration = v
	return s
}

// SetCurrentPerformanceRisk sets the CurrentPerformanceRisk field's value.
func (s *VolumeRecommendation) SetCurrentPerformanceRisk(v string) *VolumeRecommendation {
	s.CurrentPerformanceRisk = &v
	return s
}

// SetEffectiveRecommendationPreferences sets the EffectiveRecommendationPreferences field's value.
func (s *VolumeRecommendation) SetEffectiveRecommendationPreferences(v *EBSEffectiveRecommendationPreferences) *VolumeRecommendation {
	s.EffectiveRecommendationPreferences = v
	return s
}

// SetFinding sets the Finding field's value.
func (s *VolumeRecommendation) SetFinding(v string) *VolumeRecommendation {
	s.Finding = &v
	return s
}

// SetLastRefreshTimestamp sets the LastRefreshTimestamp field's value.
func (s *VolumeRecommendation) SetLastRefreshTimestamp(v time.Time) *VolumeRecommendation {
	s.LastRefreshTimestamp = &v
	return s
}

// SetLookBackPeriodInDays sets the LookBackPeriodInDays field's value.
func (s *VolumeRecommendation) SetLookBackPeriodInDays(v float64) *VolumeRecommendation {
	s.LookBackPeriodInDays = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *VolumeRecommendation) SetTags(v []*Tag) *VolumeRecommendation {
	s.Tags = v
	return s
}

// SetUtilizationMetrics sets the UtilizationMetrics field's value.
func (s *VolumeRecommendation) SetUtilizationMetrics(v []*EBSUtilizationMetric) *VolumeRecommendation {
	s.UtilizationMetrics = v
	return s
}

// SetVolumeArn sets the VolumeArn field's value.
func (s *VolumeRecommendation) SetVolumeArn(v string) *VolumeRecommendation {
	s.VolumeArn = &v
	return s
}

// SetVolumeRecommendationOptions sets the VolumeRecommendationOptions field's value.
func (s *VolumeRecommendation) SetVolumeRecommendationOptions(v []*VolumeRecommendationOption) *VolumeRecommendation {
	s.VolumeRecommendationOptions = v
	return s
}

// Describes a recommendation option for an Amazon Elastic Block Store (Amazon
// EBS) instance.
type VolumeRecommendationOption struct {
	_ struct{} `type:"structure"`

	// An array of objects that describe a volume configuration.
	Configuration *VolumeConfiguration `locationName:"configuration" type:"structure"`

	// The performance risk of the volume recommendation option.
	//
	// Performance risk is the likelihood of the recommended volume type meeting
	// the performance requirement of your workload.
	//
	// The value ranges from 0 - 4, with 0 meaning that the recommended resource
	// is predicted to always provide enough hardware capability. The higher the
	// performance risk is, the more likely you should validate whether the recommendation
	// will meet the performance requirements of your workload before migrating
	// your resource.
	PerformanceRisk *float64 `locationName:"performanceRisk" type:"double"`

	// The rank of the volume recommendation option.
	//
	// The top recommendation option is ranked as 1.
	Rank *int64 `locationName:"rank" type:"integer"`

	// An object that describes the savings opportunity for the EBS volume recommendation
	// option. Savings opportunity includes the estimated monthly savings amount
	// and percentage.
	SavingsOpportunity *SavingsOpportunity `locationName:"savingsOpportunity" type:"structure"`

	// An object that describes the savings opportunity for the Amazon EBS volume
	// recommendation option with specific discounts. Savings opportunity includes
	// the estimated monthly savings and percentage.
	SavingsOpportunityAfterDiscounts *EBSSavingsOpportunityAfterDiscounts `locationName:"savingsOpportunityAfterDiscounts" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VolumeRecommendationOption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VolumeRecommendationOption) GoString() string {
	return s.String()
}

// SetConfiguration sets the Configuration field's value.
func (s *VolumeRecommendationOption) SetConfiguration(v *VolumeConfiguration) *VolumeRecommendationOption {
	s.Configuration = v
	return s
}

// SetPerformanceRisk sets the PerformanceRisk field's value.
func (s *VolumeRecommendationOption) SetPerformanceRisk(v float64) *VolumeRecommendationOption {
	s.PerformanceRisk = &v
	return s
}

// SetRank sets the Rank field's value.
func (s *VolumeRecommendationOption) SetRank(v int64) *VolumeRecommendationOption {
	s.Rank = &v
	return s
}

// SetSavingsOpportunity sets the SavingsOpportunity field's value.
func (s *VolumeRecommendationOption) SetSavingsOpportunity(v *SavingsOpportunity) *VolumeRecommendationOption {
	s.SavingsOpportunity = v
	return s
}

// SetSavingsOpportunityAfterDiscounts sets the SavingsOpportunityAfterDiscounts field's value.
func (s *VolumeRecommendationOption) SetSavingsOpportunityAfterDiscounts(v *EBSSavingsOpportunityAfterDiscounts) *VolumeRecommendationOption {
	s.SavingsOpportunityAfterDiscounts = v
	return s
}

const (
	// AutoScalingConfigurationTargetTrackingScalingCpu is a AutoScalingConfiguration enum value
	AutoScalingConfigurationTargetTrackingScalingCpu = "TargetTrackingScalingCpu"

	// AutoScalingConfigurationTargetTrackingScalingMemory is a AutoScalingConfiguration enum value
	AutoScalingConfigurationTargetTrackingScalingMemory = "TargetTrackingScalingMemory"
)

// AutoScalingConfiguration_Values returns all elements of the AutoScalingConfiguration enum
func AutoScalingConfiguration_Values() []string {
	return []string{
		AutoScalingConfigurationTargetTrackingScalingCpu,
		AutoScalingConfigurationTargetTrackingScalingMemory,
	}
}

const (
	// CpuVendorArchitectureAwsArm64 is a CpuVendorArchitecture enum value
	CpuVendorArchitectureAwsArm64 = "AWS_ARM64"

	// CpuVendorArchitectureCurrent is a CpuVendorArchitecture enum value
	CpuVendorArchitectureCurrent = "CURRENT"
)

// CpuVendorArchitecture_Values returns all elements of the CpuVendorArchitecture enum
func CpuVendorArchitecture_Values() []string {
	return []string{
		CpuVendorArchitectureAwsArm64,
		CpuVendorArchitectureCurrent,
	}
}

const (
	// CurrencyUsd is a Currency enum value
	CurrencyUsd = "USD"

	// CurrencyCny is a Currency enum value
	CurrencyCny = "CNY"
)

// Currency_Values returns all elements of the Currency enum
func Currency_Values() []string {
	return []string{
		CurrencyUsd,
		CurrencyCny,
	}
}

const (
	// CurrentPerformanceRiskVeryLow is a CurrentPerformanceRisk enum value
	CurrentPerformanceRiskVeryLow = "VeryLow"

	// CurrentPerformanceRiskLow is a CurrentPerformanceRisk enum value
	CurrentPerformanceRiskLow = "Low"

	// CurrentPerformanceRiskMedium is a CurrentPerformanceRisk enum value
	CurrentPerformanceRiskMedium = "Medium"

	// CurrentPerformanceRiskHigh is a CurrentPerformanceRisk enum value
	CurrentPerformanceRiskHigh = "High"
)

// CurrentPerformanceRisk_Values returns all elements of the CurrentPerformanceRisk enum
func CurrentPerformanceRisk_Values() []string {
	return []string{
		CurrentPerformanceRiskVeryLow,
		CurrentPerformanceRiskLow,
		CurrentPerformanceRiskMedium,
		CurrentPerformanceRiskHigh,
	}
}

const (
	// CustomizableMetricHeadroomPercent30 is a CustomizableMetricHeadroom enum value
	CustomizableMetricHeadroomPercent30 = "PERCENT_30"

	// CustomizableMetricHeadroomPercent20 is a CustomizableMetricHeadroom enum value
	CustomizableMetricHeadroomPercent20 = "PERCENT_20"

	// CustomizableMetricHeadroomPercent0 is a CustomizableMetricHeadroom enum value
	CustomizableMetricHeadroomPercent0 = "PERCENT_0"
)

// CustomizableMetricHeadroom_Values returns all elements of the CustomizableMetricHeadroom enum
func CustomizableMetricHeadroom_Values() []string {
	return []string{
		CustomizableMetricHeadroomPercent30,
		CustomizableMetricHeadroomPercent20,
		CustomizableMetricHeadroomPercent0,
	}
}

const (
	// CustomizableMetricNameCpuUtilization is a CustomizableMetricName enum value
	CustomizableMetricNameCpuUtilization = "CpuUtilization"
)

// CustomizableMetricName_Values returns all elements of the CustomizableMetricName enum
func CustomizableMetricName_Values() []string {
	return []string{
		CustomizableMetricNameCpuUtilization,
	}
}

const (
	// CustomizableMetricThresholdP90 is a CustomizableMetricThreshold enum value
	CustomizableMetricThresholdP90 = "P90"

	// CustomizableMetricThresholdP95 is a CustomizableMetricThreshold enum value
	CustomizableMetricThresholdP95 = "P95"

	// CustomizableMetricThresholdP995 is a CustomizableMetricThreshold enum value
	CustomizableMetricThresholdP995 = "P99_5"
)

// CustomizableMetricThreshold_Values returns all elements of the CustomizableMetricThreshold enum
func CustomizableMetricThreshold_Values() []string {
	return []string{
		CustomizableMetricThresholdP90,
		CustomizableMetricThresholdP95,
		CustomizableMetricThresholdP995,
	}
}

const (
	// EBSFilterNameFinding is a EBSFilterName enum value
	EBSFilterNameFinding = "Finding"
)

// EBSFilterName_Values returns all elements of the EBSFilterName enum
func EBSFilterName_Values() []string {
	return []string{
		EBSFilterNameFinding,
	}
}

const (
	// EBSFindingOptimized is a EBSFinding enum value
	EBSFindingOptimized = "Optimized"

	// EBSFindingNotOptimized is a EBSFinding enum value
	EBSFindingNotOptimized = "NotOptimized"
)

// EBSFinding_Values returns all elements of the EBSFinding enum
func EBSFinding_Values() []string {
	return []string{
		EBSFindingOptimized,
		EBSFindingNotOptimized,
	}
}

const (
	// EBSMetricNameVolumeReadOpsPerSecond is a EBSMetricName enum value
	EBSMetricNameVolumeReadOpsPerSecond = "VolumeReadOpsPerSecond"

	// EBSMetricNameVolumeWriteOpsPerSecond is a EBSMetricName enum value
	EBSMetricNameVolumeWriteOpsPerSecond = "VolumeWriteOpsPerSecond"

	// EBSMetricNameVolumeReadBytesPerSecond is a EBSMetricName enum value
	EBSMetricNameVolumeReadBytesPerSecond = "VolumeReadBytesPerSecond"

	// EBSMetricNameVolumeWriteBytesPerSecond is a EBSMetricName enum value
	EBSMetricNameVolumeWriteBytesPerSecond = "VolumeWriteBytesPerSecond"
)

// EBSMetricName_Values returns all elements of the EBSMetricName enum
func EBSMetricName_Values() []string {
	return []string{
		EBSMetricNameVolumeReadOpsPerSecond,
		EBSMetricNameVolumeWriteOpsPerSecond,
		EBSMetricNameVolumeReadBytesPerSecond,
		EBSMetricNameVolumeWriteBytesPerSecond,
	}
}

const (
	// EBSSavingsEstimationModeSourcePublicPricing is a EBSSavingsEstimationModeSource enum value
	EBSSavingsEstimationModeSourcePublicPricing = "PublicPricing"

	// EBSSavingsEstimationModeSourceCostExplorerRightsizing is a EBSSavingsEstimationModeSource enum value
	EBSSavingsEstimationModeSourceCostExplorerRightsizing = "CostExplorerRightsizing"

	// EBSSavingsEstimationModeSourceCostOptimizationHub is a EBSSavingsEstimationModeSource enum value
	EBSSavingsEstimationModeSourceCostOptimizationHub = "CostOptimizationHub"
)

// EBSSavingsEstimationModeSource_Values returns all elements of the EBSSavingsEstimationModeSource enum
func EBSSavingsEstimationModeSource_Values() []string {
	return []string{
		EBSSavingsEstimationModeSourcePublicPricing,
		EBSSavingsEstimationModeSourceCostExplorerRightsizing,
		EBSSavingsEstimationModeSourceCostOptimizationHub,
	}
}

const (
	// ECSSavingsEstimationModeSourcePublicPricing is a ECSSavingsEstimationModeSource enum value
	ECSSavingsEstimationModeSourcePublicPricing = "PublicPricing"

	// ECSSavingsEstimationModeSourceCostExplorerRightsizing is a ECSSavingsEstimationModeSource enum value
	ECSSavingsEstimationModeSourceCostExplorerRightsizing = "CostExplorerRightsizing"

	// ECSSavingsEstimationModeSourceCostOptimizationHub is a ECSSavingsEstimationModeSource enum value
	ECSSavingsEstimationModeSourceCostOptimizationHub = "CostOptimizationHub"
)

// ECSSavingsEstimationModeSource_Values returns all elements of the ECSSavingsEstimationModeSource enum
func ECSSavingsEstimationModeSource_Values() []string {
	return []string{
		ECSSavingsEstimationModeSourcePublicPricing,
		ECSSavingsEstimationModeSourceCostExplorerRightsizing,
		ECSSavingsEstimationModeSourceCostOptimizationHub,
	}
}

const (
	// ECSServiceLaunchTypeEc2 is a ECSServiceLaunchType enum value
	ECSServiceLaunchTypeEc2 = "EC2"

	// ECSServiceLaunchTypeFargate is a ECSServiceLaunchType enum value
	ECSServiceLaunchTypeFargate = "Fargate"
)

// ECSServiceLaunchType_Values returns all elements of the ECSServiceLaunchType enum
func ECSServiceLaunchType_Values() []string {
	return []string{
		ECSServiceLaunchTypeEc2,
		ECSServiceLaunchTypeFargate,
	}
}

const (
	// ECSServiceMetricNameCpu is a ECSServiceMetricName enum value
	ECSServiceMetricNameCpu = "Cpu"

	// ECSServiceMetricNameMemory is a ECSServiceMetricName enum value
	ECSServiceMetricNameMemory = "Memory"
)

// ECSServiceMetricName_Values returns all elements of the ECSServiceMetricName enum
func ECSServiceMetricName_Values() []string {
	return []string{
		ECSServiceMetricNameCpu,
		ECSServiceMetricNameMemory,
	}
}

const (
	// ECSServiceMetricStatisticMaximum is a ECSServiceMetricStatistic enum value
	ECSServiceMetricStatisticMaximum = "Maximum"

	// ECSServiceMetricStatisticAverage is a ECSServiceMetricStatistic enum value
	ECSServiceMetricStatisticAverage = "Average"
)

// ECSServiceMetricStatistic_Values returns all elements of the ECSServiceMetricStatistic enum
func ECSServiceMetricStatistic_Values() []string {
	return []string{
		ECSServiceMetricStatisticMaximum,
		ECSServiceMetricStatisticAverage,
	}
}

const (
	// ECSServiceRecommendationFilterNameFinding is a ECSServiceRecommendationFilterName enum value
	ECSServiceRecommendationFilterNameFinding = "Finding"

	// ECSServiceRecommendationFilterNameFindingReasonCode is a ECSServiceRecommendationFilterName enum value
	ECSServiceRecommendationFilterNameFindingReasonCode = "FindingReasonCode"
)

// ECSServiceRecommendationFilterName_Values returns all elements of the ECSServiceRecommendationFilterName enum
func ECSServiceRecommendationFilterName_Values() []string {
	return []string{
		ECSServiceRecommendationFilterNameFinding,
		ECSServiceRecommendationFilterNameFindingReasonCode,
	}
}

const (
	// ECSServiceRecommendationFindingOptimized is a ECSServiceRecommendationFinding enum value
	ECSServiceRecommendationFindingOptimized = "Optimized"

	// ECSServiceRecommendationFindingUnderprovisioned is a ECSServiceRecommendationFinding enum value
	ECSServiceRecommendationFindingUnderprovisioned = "Underprovisioned"

	// ECSServiceRecommendationFindingOverprovisioned is a ECSServiceRecommendationFinding enum value
	ECSServiceRecommendationFindingOverprovisioned = "Overprovisioned"
)

// ECSServiceRecommendationFinding_Values returns all elements of the ECSServiceRecommendationFinding enum
func ECSServiceRecommendationFinding_Values() []string {
	return []string{
		ECSServiceRecommendationFindingOptimized,
		ECSServiceRecommendationFindingUnderprovisioned,
		ECSServiceRecommendationFindingOverprovisioned,
	}
}

const (
	// ECSServiceRecommendationFindingReasonCodeMemoryOverprovisioned is a ECSServiceRecommendationFindingReasonCode enum value
	ECSServiceRecommendationFindingReasonCodeMemoryOverprovisioned = "MemoryOverprovisioned"

	// ECSServiceRecommendationFindingReasonCodeMemoryUnderprovisioned is a ECSServiceRecommendationFindingReasonCode enum value
	ECSServiceRecommendationFindingReasonCodeMemoryUnderprovisioned = "MemoryUnderprovisioned"

	// ECSServiceRecommendationFindingReasonCodeCpuoverprovisioned is a ECSServiceRecommendationFindingReasonCode enum value
	ECSServiceRecommendationFindingReasonCodeCpuoverprovisioned = "CPUOverprovisioned"

	// ECSServiceRecommendationFindingReasonCodeCpuunderprovisioned is a ECSServiceRecommendationFindingReasonCode enum value
	ECSServiceRecommendationFindingReasonCodeCpuunderprovisioned = "CPUUnderprovisioned"
)

// ECSServiceRecommendationFindingReasonCode_Values returns all elements of the ECSServiceRecommendationFindingReasonCode enum
func ECSServiceRecommendationFindingReasonCode_Values() []string {
	return []string{
		ECSServiceRecommendationFindingReasonCodeMemoryOverprovisioned,
		ECSServiceRecommendationFindingReasonCodeMemoryUnderprovisioned,
		ECSServiceRecommendationFindingReasonCodeCpuoverprovisioned,
		ECSServiceRecommendationFindingReasonCodeCpuunderprovisioned,
	}
}

const (
	// EnhancedInfrastructureMetricsActive is a EnhancedInfrastructureMetrics enum value
	EnhancedInfrastructureMetricsActive = "Active"

	// EnhancedInfrastructureMetricsInactive is a EnhancedInfrastructureMetrics enum value
	EnhancedInfrastructureMetricsInactive = "Inactive"
)

// EnhancedInfrastructureMetrics_Values returns all elements of the EnhancedInfrastructureMetrics enum
func EnhancedInfrastructureMetrics_Values() []string {
	return []string{
		EnhancedInfrastructureMetricsActive,
		EnhancedInfrastructureMetricsInactive,
	}
}

const (
	// EnrollmentFilterNameStatus is a EnrollmentFilterName enum value
	EnrollmentFilterNameStatus = "Status"
)

// EnrollmentFilterName_Values returns all elements of the EnrollmentFilterName enum
func EnrollmentFilterName_Values() []string {
	return []string{
		EnrollmentFilterNameStatus,
	}
}

const (
	// ExportableAutoScalingGroupFieldAccountId is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldAccountId = "AccountId"

	// ExportableAutoScalingGroupFieldAutoScalingGroupArn is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldAutoScalingGroupArn = "AutoScalingGroupArn"

	// ExportableAutoScalingGroupFieldAutoScalingGroupName is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldAutoScalingGroupName = "AutoScalingGroupName"

	// ExportableAutoScalingGroupFieldFinding is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldFinding = "Finding"

	// ExportableAutoScalingGroupFieldUtilizationMetricsCpuMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsCpuMaximum = "UtilizationMetricsCpuMaximum"

	// ExportableAutoScalingGroupFieldUtilizationMetricsMemoryMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsMemoryMaximum = "UtilizationMetricsMemoryMaximum"

	// ExportableAutoScalingGroupFieldUtilizationMetricsEbsReadOpsPerSecondMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsEbsReadOpsPerSecondMaximum = "UtilizationMetricsEbsReadOpsPerSecondMaximum"

	// ExportableAutoScalingGroupFieldUtilizationMetricsEbsWriteOpsPerSecondMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsEbsWriteOpsPerSecondMaximum = "UtilizationMetricsEbsWriteOpsPerSecondMaximum"

	// ExportableAutoScalingGroupFieldUtilizationMetricsEbsReadBytesPerSecondMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsEbsReadBytesPerSecondMaximum = "UtilizationMetricsEbsReadBytesPerSecondMaximum"

	// ExportableAutoScalingGroupFieldUtilizationMetricsEbsWriteBytesPerSecondMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsEbsWriteBytesPerSecondMaximum = "UtilizationMetricsEbsWriteBytesPerSecondMaximum"

	// ExportableAutoScalingGroupFieldUtilizationMetricsDiskReadOpsPerSecondMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsDiskReadOpsPerSecondMaximum = "UtilizationMetricsDiskReadOpsPerSecondMaximum"

	// ExportableAutoScalingGroupFieldUtilizationMetricsDiskWriteOpsPerSecondMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsDiskWriteOpsPerSecondMaximum = "UtilizationMetricsDiskWriteOpsPerSecondMaximum"

	// ExportableAutoScalingGroupFieldUtilizationMetricsDiskReadBytesPerSecondMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsDiskReadBytesPerSecondMaximum = "UtilizationMetricsDiskReadBytesPerSecondMaximum"

	// ExportableAutoScalingGroupFieldUtilizationMetricsDiskWriteBytesPerSecondMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsDiskWriteBytesPerSecondMaximum = "UtilizationMetricsDiskWriteBytesPerSecondMaximum"

	// ExportableAutoScalingGroupFieldUtilizationMetricsNetworkInBytesPerSecondMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsNetworkInBytesPerSecondMaximum = "UtilizationMetricsNetworkInBytesPerSecondMaximum"

	// ExportableAutoScalingGroupFieldUtilizationMetricsNetworkOutBytesPerSecondMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsNetworkOutBytesPerSecondMaximum = "UtilizationMetricsNetworkOutBytesPerSecondMaximum"

	// ExportableAutoScalingGroupFieldUtilizationMetricsNetworkPacketsInPerSecondMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsNetworkPacketsInPerSecondMaximum = "UtilizationMetricsNetworkPacketsInPerSecondMaximum"

	// ExportableAutoScalingGroupFieldUtilizationMetricsNetworkPacketsOutPerSecondMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsNetworkPacketsOutPerSecondMaximum = "UtilizationMetricsNetworkPacketsOutPerSecondMaximum"

	// ExportableAutoScalingGroupFieldLookbackPeriodInDays is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldLookbackPeriodInDays = "LookbackPeriodInDays"

	// ExportableAutoScalingGroupFieldCurrentConfigurationInstanceType is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldCurrentConfigurationInstanceType = "CurrentConfigurationInstanceType"

	// ExportableAutoScalingGroupFieldCurrentConfigurationDesiredCapacity is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldCurrentConfigurationDesiredCapacity = "CurrentConfigurationDesiredCapacity"

	// ExportableAutoScalingGroupFieldCurrentConfigurationMinSize is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldCurrentConfigurationMinSize = "CurrentConfigurationMinSize"

	// ExportableAutoScalingGroupFieldCurrentConfigurationMaxSize is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldCurrentConfigurationMaxSize = "CurrentConfigurationMaxSize"

	// ExportableAutoScalingGroupFieldCurrentOnDemandPrice is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldCurrentOnDemandPrice = "CurrentOnDemandPrice"

	// ExportableAutoScalingGroupFieldCurrentStandardOneYearNoUpfrontReservedPrice is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldCurrentStandardOneYearNoUpfrontReservedPrice = "CurrentStandardOneYearNoUpfrontReservedPrice"

	// ExportableAutoScalingGroupFieldCurrentStandardThreeYearNoUpfrontReservedPrice is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldCurrentStandardThreeYearNoUpfrontReservedPrice = "CurrentStandardThreeYearNoUpfrontReservedPrice"

	// ExportableAutoScalingGroupFieldCurrentVcpus is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldCurrentVcpus = "CurrentVCpus"

	// ExportableAutoScalingGroupFieldCurrentMemory is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldCurrentMemory = "CurrentMemory"

	// ExportableAutoScalingGroupFieldCurrentStorage is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldCurrentStorage = "CurrentStorage"

	// ExportableAutoScalingGroupFieldCurrentNetwork is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldCurrentNetwork = "CurrentNetwork"

	// ExportableAutoScalingGroupFieldRecommendationOptionsConfigurationInstanceType is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsConfigurationInstanceType = "RecommendationOptionsConfigurationInstanceType"

	// ExportableAutoScalingGroupFieldRecommendationOptionsConfigurationDesiredCapacity is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsConfigurationDesiredCapacity = "RecommendationOptionsConfigurationDesiredCapacity"

	// ExportableAutoScalingGroupFieldRecommendationOptionsConfigurationMinSize is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsConfigurationMinSize = "RecommendationOptionsConfigurationMinSize"

	// ExportableAutoScalingGroupFieldRecommendationOptionsConfigurationMaxSize is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsConfigurationMaxSize = "RecommendationOptionsConfigurationMaxSize"

	// ExportableAutoScalingGroupFieldRecommendationOptionsProjectedUtilizationMetricsCpuMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsProjectedUtilizationMetricsCpuMaximum = "RecommendationOptionsProjectedUtilizationMetricsCpuMaximum"

	// ExportableAutoScalingGroupFieldRecommendationOptionsProjectedUtilizationMetricsMemoryMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsProjectedUtilizationMetricsMemoryMaximum = "RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum"

	// ExportableAutoScalingGroupFieldRecommendationOptionsPerformanceRisk is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsPerformanceRisk = "RecommendationOptionsPerformanceRisk"

	// ExportableAutoScalingGroupFieldRecommendationOptionsOnDemandPrice is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsOnDemandPrice = "RecommendationOptionsOnDemandPrice"

	// ExportableAutoScalingGroupFieldRecommendationOptionsStandardOneYearNoUpfrontReservedPrice is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsStandardOneYearNoUpfrontReservedPrice = "RecommendationOptionsStandardOneYearNoUpfrontReservedPrice"

	// ExportableAutoScalingGroupFieldRecommendationOptionsStandardThreeYearNoUpfrontReservedPrice is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsStandardThreeYearNoUpfrontReservedPrice = "RecommendationOptionsStandardThreeYearNoUpfrontReservedPrice"

	// ExportableAutoScalingGroupFieldRecommendationOptionsVcpus is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsVcpus = "RecommendationOptionsVcpus"

	// ExportableAutoScalingGroupFieldRecommendationOptionsMemory is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsMemory = "RecommendationOptionsMemory"

	// ExportableAutoScalingGroupFieldRecommendationOptionsStorage is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsStorage = "RecommendationOptionsStorage"

	// ExportableAutoScalingGroupFieldRecommendationOptionsNetwork is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsNetwork = "RecommendationOptionsNetwork"

	// ExportableAutoScalingGroupFieldLastRefreshTimestamp is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldLastRefreshTimestamp = "LastRefreshTimestamp"

	// ExportableAutoScalingGroupFieldCurrentPerformanceRisk is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldCurrentPerformanceRisk = "CurrentPerformanceRisk"

	// ExportableAutoScalingGroupFieldRecommendationOptionsSavingsOpportunityPercentage is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsSavingsOpportunityPercentage = "RecommendationOptionsSavingsOpportunityPercentage"

	// ExportableAutoScalingGroupFieldRecommendationOptionsEstimatedMonthlySavingsCurrency is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsEstimatedMonthlySavingsCurrency = "RecommendationOptionsEstimatedMonthlySavingsCurrency"

	// ExportableAutoScalingGroupFieldRecommendationOptionsEstimatedMonthlySavingsValue is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsEstimatedMonthlySavingsValue = "RecommendationOptionsEstimatedMonthlySavingsValue"

	// ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesCpuVendorArchitectures is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesCpuVendorArchitectures = "EffectiveRecommendationPreferencesCpuVendorArchitectures"

	// ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesEnhancedInfrastructureMetrics is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesEnhancedInfrastructureMetrics = "EffectiveRecommendationPreferencesEnhancedInfrastructureMetrics"

	// ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesInferredWorkloadTypes is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesInferredWorkloadTypes = "EffectiveRecommendationPreferencesInferredWorkloadTypes"

	// ExportableAutoScalingGroupFieldInferredWorkloadTypes is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldInferredWorkloadTypes = "InferredWorkloadTypes"

	// ExportableAutoScalingGroupFieldRecommendationOptionsMigrationEffort is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsMigrationEffort = "RecommendationOptionsMigrationEffort"

	// ExportableAutoScalingGroupFieldCurrentInstanceGpuInfo is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldCurrentInstanceGpuInfo = "CurrentInstanceGpuInfo"

	// ExportableAutoScalingGroupFieldRecommendationOptionsInstanceGpuInfo is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsInstanceGpuInfo = "RecommendationOptionsInstanceGpuInfo"

	// ExportableAutoScalingGroupFieldUtilizationMetricsGpuPercentageMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsGpuPercentageMaximum = "UtilizationMetricsGpuPercentageMaximum"

	// ExportableAutoScalingGroupFieldUtilizationMetricsGpuMemoryPercentageMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldUtilizationMetricsGpuMemoryPercentageMaximum = "UtilizationMetricsGpuMemoryPercentageMaximum"

	// ExportableAutoScalingGroupFieldRecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum = "RecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum"

	// ExportableAutoScalingGroupFieldRecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum = "RecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum"

	// ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesSavingsEstimationMode is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesSavingsEstimationMode = "EffectiveRecommendationPreferencesSavingsEstimationMode"

	// ExportableAutoScalingGroupFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage = "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage"

	// ExportableAutoScalingGroupFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts = "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts"

	// ExportableAutoScalingGroupFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts = "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts"

	// ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesPreferredResources is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesPreferredResources = "EffectiveRecommendationPreferencesPreferredResources"

	// ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesLookBackPeriod is a ExportableAutoScalingGroupField enum value
	ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesLookBackPeriod = "EffectiveRecommendationPreferencesLookBackPeriod"
)

// ExportableAutoScalingGroupField_Values returns all elements of the ExportableAutoScalingGroupField enum
func ExportableAutoScalingGroupField_Values() []string {
	return []string{
		ExportableAutoScalingGroupFieldAccountId,
		ExportableAutoScalingGroupFieldAutoScalingGroupArn,
		ExportableAutoScalingGroupFieldAutoScalingGroupName,
		ExportableAutoScalingGroupFieldFinding,
		ExportableAutoScalingGroupFieldUtilizationMetricsCpuMaximum,
		ExportableAutoScalingGroupFieldUtilizationMetricsMemoryMaximum,
		ExportableAutoScalingGroupFieldUtilizationMetricsEbsReadOpsPerSecondMaximum,
		ExportableAutoScalingGroupFieldUtilizationMetricsEbsWriteOpsPerSecondMaximum,
		ExportableAutoScalingGroupFieldUtilizationMetricsEbsReadBytesPerSecondMaximum,
		ExportableAutoScalingGroupFieldUtilizationMetricsEbsWriteBytesPerSecondMaximum,
		ExportableAutoScalingGroupFieldUtilizationMetricsDiskReadOpsPerSecondMaximum,
		ExportableAutoScalingGroupFieldUtilizationMetricsDiskWriteOpsPerSecondMaximum,
		ExportableAutoScalingGroupFieldUtilizationMetricsDiskReadBytesPerSecondMaximum,
		ExportableAutoScalingGroupFieldUtilizationMetricsDiskWriteBytesPerSecondMaximum,
		ExportableAutoScalingGroupFieldUtilizationMetricsNetworkInBytesPerSecondMaximum,
		ExportableAutoScalingGroupFieldUtilizationMetricsNetworkOutBytesPerSecondMaximum,
		ExportableAutoScalingGroupFieldUtilizationMetricsNetworkPacketsInPerSecondMaximum,
		ExportableAutoScalingGroupFieldUtilizationMetricsNetworkPacketsOutPerSecondMaximum,
		ExportableAutoScalingGroupFieldLookbackPeriodInDays,
		ExportableAutoScalingGroupFieldCurrentConfigurationInstanceType,
		ExportableAutoScalingGroupFieldCurrentConfigurationDesiredCapacity,
		ExportableAutoScalingGroupFieldCurrentConfigurationMinSize,
		ExportableAutoScalingGroupFieldCurrentConfigurationMaxSize,
		ExportableAutoScalingGroupFieldCurrentOnDemandPrice,
		ExportableAutoScalingGroupFieldCurrentStandardOneYearNoUpfrontReservedPrice,
		ExportableAutoScalingGroupFieldCurrentStandardThreeYearNoUpfrontReservedPrice,
		ExportableAutoScalingGroupFieldCurrentVcpus,
		ExportableAutoScalingGroupFieldCurrentMemory,
		ExportableAutoScalingGroupFieldCurrentStorage,
		ExportableAutoScalingGroupFieldCurrentNetwork,
		ExportableAutoScalingGroupFieldRecommendationOptionsConfigurationInstanceType,
		ExportableAutoScalingGroupFieldRecommendationOptionsConfigurationDesiredCapacity,
		ExportableAutoScalingGroupFieldRecommendationOptionsConfigurationMinSize,
		ExportableAutoScalingGroupFieldRecommendationOptionsConfigurationMaxSize,
		ExportableAutoScalingGroupFieldRecommendationOptionsProjectedUtilizationMetricsCpuMaximum,
		ExportableAutoScalingGroupFieldRecommendationOptionsProjectedUtilizationMetricsMemoryMaximum,
		ExportableAutoScalingGroupFieldRecommendationOptionsPerformanceRisk,
		ExportableAutoScalingGroupFieldRecommendationOptionsOnDemandPrice,
		ExportableAutoScalingGroupFieldRecommendationOptionsStandardOneYearNoUpfrontReservedPrice,
		ExportableAutoScalingGroupFieldRecommendationOptionsStandardThreeYearNoUpfrontReservedPrice,
		ExportableAutoScalingGroupFieldRecommendationOptionsVcpus,
		ExportableAutoScalingGroupFieldRecommendationOptionsMemory,
		ExportableAutoScalingGroupFieldRecommendationOptionsStorage,
		ExportableAutoScalingGroupFieldRecommendationOptionsNetwork,
		ExportableAutoScalingGroupFieldLastRefreshTimestamp,
		ExportableAutoScalingGroupFieldCurrentPerformanceRisk,
		ExportableAutoScalingGroupFieldRecommendationOptionsSavingsOpportunityPercentage,
		ExportableAutoScalingGroupFieldRecommendationOptionsEstimatedMonthlySavingsCurrency,
		ExportableAutoScalingGroupFieldRecommendationOptionsEstimatedMonthlySavingsValue,
		ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesCpuVendorArchitectures,
		ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesEnhancedInfrastructureMetrics,
		ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesInferredWorkloadTypes,
		ExportableAutoScalingGroupFieldInferredWorkloadTypes,
		ExportableAutoScalingGroupFieldRecommendationOptionsMigrationEffort,
		ExportableAutoScalingGroupFieldCurrentInstanceGpuInfo,
		ExportableAutoScalingGroupFieldRecommendationOptionsInstanceGpuInfo,
		ExportableAutoScalingGroupFieldUtilizationMetricsGpuPercentageMaximum,
		ExportableAutoScalingGroupFieldUtilizationMetricsGpuMemoryPercentageMaximum,
		ExportableAutoScalingGroupFieldRecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum,
		ExportableAutoScalingGroupFieldRecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum,
		ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesSavingsEstimationMode,
		ExportableAutoScalingGroupFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage,
		ExportableAutoScalingGroupFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts,
		ExportableAutoScalingGroupFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts,
		ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesPreferredResources,
		ExportableAutoScalingGroupFieldEffectiveRecommendationPreferencesLookBackPeriod,
	}
}

const (
	// ExportableECSServiceFieldAccountId is a ExportableECSServiceField enum value
	ExportableECSServiceFieldAccountId = "AccountId"

	// ExportableECSServiceFieldServiceArn is a ExportableECSServiceField enum value
	ExportableECSServiceFieldServiceArn = "ServiceArn"

	// ExportableECSServiceFieldLookbackPeriodInDays is a ExportableECSServiceField enum value
	ExportableECSServiceFieldLookbackPeriodInDays = "LookbackPeriodInDays"

	// ExportableECSServiceFieldLastRefreshTimestamp is a ExportableECSServiceField enum value
	ExportableECSServiceFieldLastRefreshTimestamp = "LastRefreshTimestamp"

	// ExportableECSServiceFieldLaunchType is a ExportableECSServiceField enum value
	ExportableECSServiceFieldLaunchType = "LaunchType"

	// ExportableECSServiceFieldCurrentPerformanceRisk is a ExportableECSServiceField enum value
	ExportableECSServiceFieldCurrentPerformanceRisk = "CurrentPerformanceRisk"

	// ExportableECSServiceFieldCurrentServiceConfigurationMemory is a ExportableECSServiceField enum value
	ExportableECSServiceFieldCurrentServiceConfigurationMemory = "CurrentServiceConfigurationMemory"

	// ExportableECSServiceFieldCurrentServiceConfigurationCpu is a ExportableECSServiceField enum value
	ExportableECSServiceFieldCurrentServiceConfigurationCpu = "CurrentServiceConfigurationCpu"

	// ExportableECSServiceFieldCurrentServiceConfigurationTaskDefinitionArn is a ExportableECSServiceField enum value
	ExportableECSServiceFieldCurrentServiceConfigurationTaskDefinitionArn = "CurrentServiceConfigurationTaskDefinitionArn"

	// ExportableECSServiceFieldCurrentServiceConfigurationAutoScalingConfiguration is a ExportableECSServiceField enum value
	ExportableECSServiceFieldCurrentServiceConfigurationAutoScalingConfiguration = "CurrentServiceConfigurationAutoScalingConfiguration"

	// ExportableECSServiceFieldCurrentServiceContainerConfigurations is a ExportableECSServiceField enum value
	ExportableECSServiceFieldCurrentServiceContainerConfigurations = "CurrentServiceContainerConfigurations"

	// ExportableECSServiceFieldUtilizationMetricsCpuMaximum is a ExportableECSServiceField enum value
	ExportableECSServiceFieldUtilizationMetricsCpuMaximum = "UtilizationMetricsCpuMaximum"

	// ExportableECSServiceFieldUtilizationMetricsMemoryMaximum is a ExportableECSServiceField enum value
	ExportableECSServiceFieldUtilizationMetricsMemoryMaximum = "UtilizationMetricsMemoryMaximum"

	// ExportableECSServiceFieldFinding is a ExportableECSServiceField enum value
	ExportableECSServiceFieldFinding = "Finding"

	// ExportableECSServiceFieldFindingReasonCodes is a ExportableECSServiceField enum value
	ExportableECSServiceFieldFindingReasonCodes = "FindingReasonCodes"

	// ExportableECSServiceFieldRecommendationOptionsMemory is a ExportableECSServiceField enum value
	ExportableECSServiceFieldRecommendationOptionsMemory = "RecommendationOptionsMemory"

	// ExportableECSServiceFieldRecommendationOptionsCpu is a ExportableECSServiceField enum value
	ExportableECSServiceFieldRecommendationOptionsCpu = "RecommendationOptionsCpu"

	// ExportableECSServiceFieldRecommendationOptionsSavingsOpportunityPercentage is a ExportableECSServiceField enum value
	ExportableECSServiceFieldRecommendationOptionsSavingsOpportunityPercentage = "RecommendationOptionsSavingsOpportunityPercentage"

	// ExportableECSServiceFieldRecommendationOptionsEstimatedMonthlySavingsCurrency is a ExportableECSServiceField enum value
	ExportableECSServiceFieldRecommendationOptionsEstimatedMonthlySavingsCurrency = "RecommendationOptionsEstimatedMonthlySavingsCurrency"

	// ExportableECSServiceFieldRecommendationOptionsEstimatedMonthlySavingsValue is a ExportableECSServiceField enum value
	ExportableECSServiceFieldRecommendationOptionsEstimatedMonthlySavingsValue = "RecommendationOptionsEstimatedMonthlySavingsValue"

	// ExportableECSServiceFieldRecommendationOptionsContainerRecommendations is a ExportableECSServiceField enum value
	ExportableECSServiceFieldRecommendationOptionsContainerRecommendations = "RecommendationOptionsContainerRecommendations"

	// ExportableECSServiceFieldRecommendationOptionsProjectedUtilizationMetricsCpuMaximum is a ExportableECSServiceField enum value
	ExportableECSServiceFieldRecommendationOptionsProjectedUtilizationMetricsCpuMaximum = "RecommendationOptionsProjectedUtilizationMetricsCpuMaximum"

	// ExportableECSServiceFieldRecommendationOptionsProjectedUtilizationMetricsMemoryMaximum is a ExportableECSServiceField enum value
	ExportableECSServiceFieldRecommendationOptionsProjectedUtilizationMetricsMemoryMaximum = "RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum"

	// ExportableECSServiceFieldTags is a ExportableECSServiceField enum value
	ExportableECSServiceFieldTags = "Tags"

	// ExportableECSServiceFieldEffectiveRecommendationPreferencesSavingsEstimationMode is a ExportableECSServiceField enum value
	ExportableECSServiceFieldEffectiveRecommendationPreferencesSavingsEstimationMode = "EffectiveRecommendationPreferencesSavingsEstimationMode"

	// ExportableECSServiceFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage is a ExportableECSServiceField enum value
	ExportableECSServiceFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage = "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage"

	// ExportableECSServiceFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts is a ExportableECSServiceField enum value
	ExportableECSServiceFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts = "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts"

	// ExportableECSServiceFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts is a ExportableECSServiceField enum value
	ExportableECSServiceFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts = "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts"
)

// ExportableECSServiceField_Values returns all elements of the ExportableECSServiceField enum
func ExportableECSServiceField_Values() []string {
	return []string{
		ExportableECSServiceFieldAccountId,
		ExportableECSServiceFieldServiceArn,
		ExportableECSServiceFieldLookbackPeriodInDays,
		ExportableECSServiceFieldLastRefreshTimestamp,
		ExportableECSServiceFieldLaunchType,
		ExportableECSServiceFieldCurrentPerformanceRisk,
		ExportableECSServiceFieldCurrentServiceConfigurationMemory,
		ExportableECSServiceFieldCurrentServiceConfigurationCpu,
		ExportableECSServiceFieldCurrentServiceConfigurationTaskDefinitionArn,
		ExportableECSServiceFieldCurrentServiceConfigurationAutoScalingConfiguration,
		ExportableECSServiceFieldCurrentServiceContainerConfigurations,
		ExportableECSServiceFieldUtilizationMetricsCpuMaximum,
		ExportableECSServiceFieldUtilizationMetricsMemoryMaximum,
		ExportableECSServiceFieldFinding,
		ExportableECSServiceFieldFindingReasonCodes,
		ExportableECSServiceFieldRecommendationOptionsMemory,
		ExportableECSServiceFieldRecommendationOptionsCpu,
		ExportableECSServiceFieldRecommendationOptionsSavingsOpportunityPercentage,
		ExportableECSServiceFieldRecommendationOptionsEstimatedMonthlySavingsCurrency,
		ExportableECSServiceFieldRecommendationOptionsEstimatedMonthlySavingsValue,
		ExportableECSServiceFieldRecommendationOptionsContainerRecommendations,
		ExportableECSServiceFieldRecommendationOptionsProjectedUtilizationMetricsCpuMaximum,
		ExportableECSServiceFieldRecommendationOptionsProjectedUtilizationMetricsMemoryMaximum,
		ExportableECSServiceFieldTags,
		ExportableECSServiceFieldEffectiveRecommendationPreferencesSavingsEstimationMode,
		ExportableECSServiceFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage,
		ExportableECSServiceFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts,
		ExportableECSServiceFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts,
	}
}

const (
	// ExportableInstanceFieldAccountId is a ExportableInstanceField enum value
	ExportableInstanceFieldAccountId = "AccountId"

	// ExportableInstanceFieldInstanceArn is a ExportableInstanceField enum value
	ExportableInstanceFieldInstanceArn = "InstanceArn"

	// ExportableInstanceFieldInstanceName is a ExportableInstanceField enum value
	ExportableInstanceFieldInstanceName = "InstanceName"

	// ExportableInstanceFieldFinding is a ExportableInstanceField enum value
	ExportableInstanceFieldFinding = "Finding"

	// ExportableInstanceFieldFindingReasonCodes is a ExportableInstanceField enum value
	ExportableInstanceFieldFindingReasonCodes = "FindingReasonCodes"

	// ExportableInstanceFieldLookbackPeriodInDays is a ExportableInstanceField enum value
	ExportableInstanceFieldLookbackPeriodInDays = "LookbackPeriodInDays"

	// ExportableInstanceFieldCurrentInstanceType is a ExportableInstanceField enum value
	ExportableInstanceFieldCurrentInstanceType = "CurrentInstanceType"

	// ExportableInstanceFieldUtilizationMetricsCpuMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsCpuMaximum = "UtilizationMetricsCpuMaximum"

	// ExportableInstanceFieldUtilizationMetricsMemoryMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsMemoryMaximum = "UtilizationMetricsMemoryMaximum"

	// ExportableInstanceFieldUtilizationMetricsEbsReadOpsPerSecondMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsEbsReadOpsPerSecondMaximum = "UtilizationMetricsEbsReadOpsPerSecondMaximum"

	// ExportableInstanceFieldUtilizationMetricsEbsWriteOpsPerSecondMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsEbsWriteOpsPerSecondMaximum = "UtilizationMetricsEbsWriteOpsPerSecondMaximum"

	// ExportableInstanceFieldUtilizationMetricsEbsReadBytesPerSecondMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsEbsReadBytesPerSecondMaximum = "UtilizationMetricsEbsReadBytesPerSecondMaximum"

	// ExportableInstanceFieldUtilizationMetricsEbsWriteBytesPerSecondMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsEbsWriteBytesPerSecondMaximum = "UtilizationMetricsEbsWriteBytesPerSecondMaximum"

	// ExportableInstanceFieldUtilizationMetricsDiskReadOpsPerSecondMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsDiskReadOpsPerSecondMaximum = "UtilizationMetricsDiskReadOpsPerSecondMaximum"

	// ExportableInstanceFieldUtilizationMetricsDiskWriteOpsPerSecondMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsDiskWriteOpsPerSecondMaximum = "UtilizationMetricsDiskWriteOpsPerSecondMaximum"

	// ExportableInstanceFieldUtilizationMetricsDiskReadBytesPerSecondMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsDiskReadBytesPerSecondMaximum = "UtilizationMetricsDiskReadBytesPerSecondMaximum"

	// ExportableInstanceFieldUtilizationMetricsDiskWriteBytesPerSecondMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsDiskWriteBytesPerSecondMaximum = "UtilizationMetricsDiskWriteBytesPerSecondMaximum"

	// ExportableInstanceFieldUtilizationMetricsNetworkInBytesPerSecondMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsNetworkInBytesPerSecondMaximum = "UtilizationMetricsNetworkInBytesPerSecondMaximum"

	// ExportableInstanceFieldUtilizationMetricsNetworkOutBytesPerSecondMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsNetworkOutBytesPerSecondMaximum = "UtilizationMetricsNetworkOutBytesPerSecondMaximum"

	// ExportableInstanceFieldUtilizationMetricsNetworkPacketsInPerSecondMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsNetworkPacketsInPerSecondMaximum = "UtilizationMetricsNetworkPacketsInPerSecondMaximum"

	// ExportableInstanceFieldUtilizationMetricsNetworkPacketsOutPerSecondMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsNetworkPacketsOutPerSecondMaximum = "UtilizationMetricsNetworkPacketsOutPerSecondMaximum"

	// ExportableInstanceFieldCurrentOnDemandPrice is a ExportableInstanceField enum value
	ExportableInstanceFieldCurrentOnDemandPrice = "CurrentOnDemandPrice"

	// ExportableInstanceFieldCurrentStandardOneYearNoUpfrontReservedPrice is a ExportableInstanceField enum value
	ExportableInstanceFieldCurrentStandardOneYearNoUpfrontReservedPrice = "CurrentStandardOneYearNoUpfrontReservedPrice"

	// ExportableInstanceFieldCurrentStandardThreeYearNoUpfrontReservedPrice is a ExportableInstanceField enum value
	ExportableInstanceFieldCurrentStandardThreeYearNoUpfrontReservedPrice = "CurrentStandardThreeYearNoUpfrontReservedPrice"

	// ExportableInstanceFieldCurrentVcpus is a ExportableInstanceField enum value
	ExportableInstanceFieldCurrentVcpus = "CurrentVCpus"

	// ExportableInstanceFieldCurrentMemory is a ExportableInstanceField enum value
	ExportableInstanceFieldCurrentMemory = "CurrentMemory"

	// ExportableInstanceFieldCurrentStorage is a ExportableInstanceField enum value
	ExportableInstanceFieldCurrentStorage = "CurrentStorage"

	// ExportableInstanceFieldCurrentNetwork is a ExportableInstanceField enum value
	ExportableInstanceFieldCurrentNetwork = "CurrentNetwork"

	// ExportableInstanceFieldRecommendationOptionsInstanceType is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsInstanceType = "RecommendationOptionsInstanceType"

	// ExportableInstanceFieldRecommendationOptionsProjectedUtilizationMetricsCpuMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsProjectedUtilizationMetricsCpuMaximum = "RecommendationOptionsProjectedUtilizationMetricsCpuMaximum"

	// ExportableInstanceFieldRecommendationOptionsProjectedUtilizationMetricsMemoryMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsProjectedUtilizationMetricsMemoryMaximum = "RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum"

	// ExportableInstanceFieldRecommendationOptionsPlatformDifferences is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsPlatformDifferences = "RecommendationOptionsPlatformDifferences"

	// ExportableInstanceFieldRecommendationOptionsPerformanceRisk is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsPerformanceRisk = "RecommendationOptionsPerformanceRisk"

	// ExportableInstanceFieldRecommendationOptionsVcpus is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsVcpus = "RecommendationOptionsVcpus"

	// ExportableInstanceFieldRecommendationOptionsMemory is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsMemory = "RecommendationOptionsMemory"

	// ExportableInstanceFieldRecommendationOptionsStorage is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsStorage = "RecommendationOptionsStorage"

	// ExportableInstanceFieldRecommendationOptionsNetwork is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsNetwork = "RecommendationOptionsNetwork"

	// ExportableInstanceFieldRecommendationOptionsOnDemandPrice is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsOnDemandPrice = "RecommendationOptionsOnDemandPrice"

	// ExportableInstanceFieldRecommendationOptionsStandardOneYearNoUpfrontReservedPrice is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsStandardOneYearNoUpfrontReservedPrice = "RecommendationOptionsStandardOneYearNoUpfrontReservedPrice"

	// ExportableInstanceFieldRecommendationOptionsStandardThreeYearNoUpfrontReservedPrice is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsStandardThreeYearNoUpfrontReservedPrice = "RecommendationOptionsStandardThreeYearNoUpfrontReservedPrice"

	// ExportableInstanceFieldRecommendationsSourcesRecommendationSourceArn is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationsSourcesRecommendationSourceArn = "RecommendationsSourcesRecommendationSourceArn"

	// ExportableInstanceFieldRecommendationsSourcesRecommendationSourceType is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationsSourcesRecommendationSourceType = "RecommendationsSourcesRecommendationSourceType"

	// ExportableInstanceFieldLastRefreshTimestamp is a ExportableInstanceField enum value
	ExportableInstanceFieldLastRefreshTimestamp = "LastRefreshTimestamp"

	// ExportableInstanceFieldCurrentPerformanceRisk is a ExportableInstanceField enum value
	ExportableInstanceFieldCurrentPerformanceRisk = "CurrentPerformanceRisk"

	// ExportableInstanceFieldRecommendationOptionsSavingsOpportunityPercentage is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsSavingsOpportunityPercentage = "RecommendationOptionsSavingsOpportunityPercentage"

	// ExportableInstanceFieldRecommendationOptionsEstimatedMonthlySavingsCurrency is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsEstimatedMonthlySavingsCurrency = "RecommendationOptionsEstimatedMonthlySavingsCurrency"

	// ExportableInstanceFieldRecommendationOptionsEstimatedMonthlySavingsValue is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsEstimatedMonthlySavingsValue = "RecommendationOptionsEstimatedMonthlySavingsValue"

	// ExportableInstanceFieldEffectiveRecommendationPreferencesCpuVendorArchitectures is a ExportableInstanceField enum value
	ExportableInstanceFieldEffectiveRecommendationPreferencesCpuVendorArchitectures = "EffectiveRecommendationPreferencesCpuVendorArchitectures"

	// ExportableInstanceFieldEffectiveRecommendationPreferencesEnhancedInfrastructureMetrics is a ExportableInstanceField enum value
	ExportableInstanceFieldEffectiveRecommendationPreferencesEnhancedInfrastructureMetrics = "EffectiveRecommendationPreferencesEnhancedInfrastructureMetrics"

	// ExportableInstanceFieldEffectiveRecommendationPreferencesInferredWorkloadTypes is a ExportableInstanceField enum value
	ExportableInstanceFieldEffectiveRecommendationPreferencesInferredWorkloadTypes = "EffectiveRecommendationPreferencesInferredWorkloadTypes"

	// ExportableInstanceFieldInferredWorkloadTypes is a ExportableInstanceField enum value
	ExportableInstanceFieldInferredWorkloadTypes = "InferredWorkloadTypes"

	// ExportableInstanceFieldRecommendationOptionsMigrationEffort is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsMigrationEffort = "RecommendationOptionsMigrationEffort"

	// ExportableInstanceFieldEffectiveRecommendationPreferencesExternalMetricsSource is a ExportableInstanceField enum value
	ExportableInstanceFieldEffectiveRecommendationPreferencesExternalMetricsSource = "EffectiveRecommendationPreferencesExternalMetricsSource"

	// ExportableInstanceFieldInstanceState is a ExportableInstanceField enum value
	ExportableInstanceFieldInstanceState = "InstanceState"

	// ExportableInstanceFieldTags is a ExportableInstanceField enum value
	ExportableInstanceFieldTags = "Tags"

	// ExportableInstanceFieldExternalMetricStatusCode is a ExportableInstanceField enum value
	ExportableInstanceFieldExternalMetricStatusCode = "ExternalMetricStatusCode"

	// ExportableInstanceFieldExternalMetricStatusReason is a ExportableInstanceField enum value
	ExportableInstanceFieldExternalMetricStatusReason = "ExternalMetricStatusReason"

	// ExportableInstanceFieldCurrentInstanceGpuInfo is a ExportableInstanceField enum value
	ExportableInstanceFieldCurrentInstanceGpuInfo = "CurrentInstanceGpuInfo"

	// ExportableInstanceFieldRecommendationOptionsInstanceGpuInfo is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsInstanceGpuInfo = "RecommendationOptionsInstanceGpuInfo"

	// ExportableInstanceFieldUtilizationMetricsGpuPercentageMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsGpuPercentageMaximum = "UtilizationMetricsGpuPercentageMaximum"

	// ExportableInstanceFieldUtilizationMetricsGpuMemoryPercentageMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldUtilizationMetricsGpuMemoryPercentageMaximum = "UtilizationMetricsGpuMemoryPercentageMaximum"

	// ExportableInstanceFieldRecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum = "RecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum"

	// ExportableInstanceFieldRecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum = "RecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum"

	// ExportableInstanceFieldIdle is a ExportableInstanceField enum value
	ExportableInstanceFieldIdle = "Idle"

	// ExportableInstanceFieldEffectiveRecommendationPreferencesPreferredResources is a ExportableInstanceField enum value
	ExportableInstanceFieldEffectiveRecommendationPreferencesPreferredResources = "EffectiveRecommendationPreferencesPreferredResources"

	// ExportableInstanceFieldEffectiveRecommendationPreferencesLookBackPeriod is a ExportableInstanceField enum value
	ExportableInstanceFieldEffectiveRecommendationPreferencesLookBackPeriod = "EffectiveRecommendationPreferencesLookBackPeriod"

	// ExportableInstanceFieldEffectiveRecommendationPreferencesUtilizationPreferences is a ExportableInstanceField enum value
	ExportableInstanceFieldEffectiveRecommendationPreferencesUtilizationPreferences = "EffectiveRecommendationPreferencesUtilizationPreferences"

	// ExportableInstanceFieldEffectiveRecommendationPreferencesSavingsEstimationMode is a ExportableInstanceField enum value
	ExportableInstanceFieldEffectiveRecommendationPreferencesSavingsEstimationMode = "EffectiveRecommendationPreferencesSavingsEstimationMode"

	// ExportableInstanceFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage = "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage"

	// ExportableInstanceFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts = "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts"

	// ExportableInstanceFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts is a ExportableInstanceField enum value
	ExportableInstanceFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts = "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts"
)

// ExportableInstanceField_Values returns all elements of the ExportableInstanceField enum
func ExportableInstanceField_Values() []string {
	return []string{
		ExportableInstanceFieldAccountId,
		ExportableInstanceFieldInstanceArn,
		ExportableInstanceFieldInstanceName,
		ExportableInstanceFieldFinding,
		ExportableInstanceFieldFindingReasonCodes,
		ExportableInstanceFieldLookbackPeriodInDays,
		ExportableInstanceFieldCurrentInstanceType,
		ExportableInstanceFieldUtilizationMetricsCpuMaximum,
		ExportableInstanceFieldUtilizationMetricsMemoryMaximum,
		ExportableInstanceFieldUtilizationMetricsEbsReadOpsPerSecondMaximum,
		ExportableInstanceFieldUtilizationMetricsEbsWriteOpsPerSecondMaximum,
		ExportableInstanceFieldUtilizationMetricsEbsReadBytesPerSecondMaximum,
		ExportableInstanceFieldUtilizationMetricsEbsWriteBytesPerSecondMaximum,
		ExportableInstanceFieldUtilizationMetricsDiskReadOpsPerSecondMaximum,
		ExportableInstanceFieldUtilizationMetricsDiskWriteOpsPerSecondMaximum,
		ExportableInstanceFieldUtilizationMetricsDiskReadBytesPerSecondMaximum,
		ExportableInstanceFieldUtilizationMetricsDiskWriteBytesPerSecondMaximum,
		ExportableInstanceFieldUtilizationMetricsNetworkInBytesPerSecondMaximum,
		ExportableInstanceFieldUtilizationMetricsNetworkOutBytesPerSecondMaximum,
		ExportableInstanceFieldUtilizationMetricsNetworkPacketsInPerSecondMaximum,
		ExportableInstanceFieldUtilizationMetricsNetworkPacketsOutPerSecondMaximum,
		ExportableInstanceFieldCurrentOnDemandPrice,
		ExportableInstanceFieldCurrentStandardOneYearNoUpfrontReservedPrice,
		ExportableInstanceFieldCurrentStandardThreeYearNoUpfrontReservedPrice,
		ExportableInstanceFieldCurrentVcpus,
		ExportableInstanceFieldCurrentMemory,
		ExportableInstanceFieldCurrentStorage,
		ExportableInstanceFieldCurrentNetwork,
		ExportableInstanceFieldRecommendationOptionsInstanceType,
		ExportableInstanceFieldRecommendationOptionsProjectedUtilizationMetricsCpuMaximum,
		ExportableInstanceFieldRecommendationOptionsProjectedUtilizationMetricsMemoryMaximum,
		ExportableInstanceFieldRecommendationOptionsPlatformDifferences,
		ExportableInstanceFieldRecommendationOptionsPerformanceRisk,
		ExportableInstanceFieldRecommendationOptionsVcpus,
		ExportableInstanceFieldRecommendationOptionsMemory,
		ExportableInstanceFieldRecommendationOptionsStorage,
		ExportableInstanceFieldRecommendationOptionsNetwork,
		ExportableInstanceFieldRecommendationOptionsOnDemandPrice,
		ExportableInstanceFieldRecommendationOptionsStandardOneYearNoUpfrontReservedPrice,
		ExportableInstanceFieldRecommendationOptionsStandardThreeYearNoUpfrontReservedPrice,
		ExportableInstanceFieldRecommendationsSourcesRecommendationSourceArn,
		ExportableInstanceFieldRecommendationsSourcesRecommendationSourceType,
		ExportableInstanceFieldLastRefreshTimestamp,
		ExportableInstanceFieldCurrentPerformanceRisk,
		ExportableInstanceFieldRecommendationOptionsSavingsOpportunityPercentage,
		ExportableInstanceFieldRecommendationOptionsEstimatedMonthlySavingsCurrency,
		ExportableInstanceFieldRecommendationOptionsEstimatedMonthlySavingsValue,
		ExportableInstanceFieldEffectiveRecommendationPreferencesCpuVendorArchitectures,
		ExportableInstanceFieldEffectiveRecommendationPreferencesEnhancedInfrastructureMetrics,
		ExportableInstanceFieldEffectiveRecommendationPreferencesInferredWorkloadTypes,
		ExportableInstanceFieldInferredWorkloadTypes,
		ExportableInstanceFieldRecommendationOptionsMigrationEffort,
		ExportableInstanceFieldEffectiveRecommendationPreferencesExternalMetricsSource,
		ExportableInstanceFieldInstanceState,
		ExportableInstanceFieldTags,
		ExportableInstanceFieldExternalMetricStatusCode,
		ExportableInstanceFieldExternalMetricStatusReason,
		ExportableInstanceFieldCurrentInstanceGpuInfo,
		ExportableInstanceFieldRecommendationOptionsInstanceGpuInfo,
		ExportableInstanceFieldUtilizationMetricsGpuPercentageMaximum,
		ExportableInstanceFieldUtilizationMetricsGpuMemoryPercentageMaximum,
		ExportableInstanceFieldRecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum,
		ExportableInstanceFieldRecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum,
		ExportableInstanceFieldIdle,
		ExportableInstanceFieldEffectiveRecommendationPreferencesPreferredResources,
		ExportableInstanceFieldEffectiveRecommendationPreferencesLookBackPeriod,
		ExportableInstanceFieldEffectiveRecommendationPreferencesUtilizationPreferences,
		ExportableInstanceFieldEffectiveRecommendationPreferencesSavingsEstimationMode,
		ExportableInstanceFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage,
		ExportableInstanceFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts,
		ExportableInstanceFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts,
	}
}

const (
	// ExportableLambdaFunctionFieldAccountId is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldAccountId = "AccountId"

	// ExportableLambdaFunctionFieldFunctionArn is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldFunctionArn = "FunctionArn"

	// ExportableLambdaFunctionFieldFunctionVersion is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldFunctionVersion = "FunctionVersion"

	// ExportableLambdaFunctionFieldFinding is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldFinding = "Finding"

	// ExportableLambdaFunctionFieldFindingReasonCodes is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldFindingReasonCodes = "FindingReasonCodes"

	// ExportableLambdaFunctionFieldNumberOfInvocations is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldNumberOfInvocations = "NumberOfInvocations"

	// ExportableLambdaFunctionFieldUtilizationMetricsDurationMaximum is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldUtilizationMetricsDurationMaximum = "UtilizationMetricsDurationMaximum"

	// ExportableLambdaFunctionFieldUtilizationMetricsDurationAverage is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldUtilizationMetricsDurationAverage = "UtilizationMetricsDurationAverage"

	// ExportableLambdaFunctionFieldUtilizationMetricsMemoryMaximum is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldUtilizationMetricsMemoryMaximum = "UtilizationMetricsMemoryMaximum"

	// ExportableLambdaFunctionFieldUtilizationMetricsMemoryAverage is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldUtilizationMetricsMemoryAverage = "UtilizationMetricsMemoryAverage"

	// ExportableLambdaFunctionFieldLookbackPeriodInDays is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldLookbackPeriodInDays = "LookbackPeriodInDays"

	// ExportableLambdaFunctionFieldCurrentConfigurationMemorySize is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldCurrentConfigurationMemorySize = "CurrentConfigurationMemorySize"

	// ExportableLambdaFunctionFieldCurrentConfigurationTimeout is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldCurrentConfigurationTimeout = "CurrentConfigurationTimeout"

	// ExportableLambdaFunctionFieldCurrentCostTotal is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldCurrentCostTotal = "CurrentCostTotal"

	// ExportableLambdaFunctionFieldCurrentCostAverage is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldCurrentCostAverage = "CurrentCostAverage"

	// ExportableLambdaFunctionFieldRecommendationOptionsConfigurationMemorySize is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldRecommendationOptionsConfigurationMemorySize = "RecommendationOptionsConfigurationMemorySize"

	// ExportableLambdaFunctionFieldRecommendationOptionsCostLow is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldRecommendationOptionsCostLow = "RecommendationOptionsCostLow"

	// ExportableLambdaFunctionFieldRecommendationOptionsCostHigh is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldRecommendationOptionsCostHigh = "RecommendationOptionsCostHigh"

	// ExportableLambdaFunctionFieldRecommendationOptionsProjectedUtilizationMetricsDurationLowerBound is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldRecommendationOptionsProjectedUtilizationMetricsDurationLowerBound = "RecommendationOptionsProjectedUtilizationMetricsDurationLowerBound"

	// ExportableLambdaFunctionFieldRecommendationOptionsProjectedUtilizationMetricsDurationUpperBound is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldRecommendationOptionsProjectedUtilizationMetricsDurationUpperBound = "RecommendationOptionsProjectedUtilizationMetricsDurationUpperBound"

	// ExportableLambdaFunctionFieldRecommendationOptionsProjectedUtilizationMetricsDurationExpected is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldRecommendationOptionsProjectedUtilizationMetricsDurationExpected = "RecommendationOptionsProjectedUtilizationMetricsDurationExpected"

	// ExportableLambdaFunctionFieldLastRefreshTimestamp is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldLastRefreshTimestamp = "LastRefreshTimestamp"

	// ExportableLambdaFunctionFieldCurrentPerformanceRisk is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldCurrentPerformanceRisk = "CurrentPerformanceRisk"

	// ExportableLambdaFunctionFieldRecommendationOptionsSavingsOpportunityPercentage is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldRecommendationOptionsSavingsOpportunityPercentage = "RecommendationOptionsSavingsOpportunityPercentage"

	// ExportableLambdaFunctionFieldRecommendationOptionsEstimatedMonthlySavingsCurrency is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldRecommendationOptionsEstimatedMonthlySavingsCurrency = "RecommendationOptionsEstimatedMonthlySavingsCurrency"

	// ExportableLambdaFunctionFieldRecommendationOptionsEstimatedMonthlySavingsValue is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldRecommendationOptionsEstimatedMonthlySavingsValue = "RecommendationOptionsEstimatedMonthlySavingsValue"

	// ExportableLambdaFunctionFieldTags is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldTags = "Tags"

	// ExportableLambdaFunctionFieldEffectiveRecommendationPreferencesSavingsEstimationMode is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldEffectiveRecommendationPreferencesSavingsEstimationMode = "EffectiveRecommendationPreferencesSavingsEstimationMode"

	// ExportableLambdaFunctionFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage = "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage"

	// ExportableLambdaFunctionFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts = "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts"

	// ExportableLambdaFunctionFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts is a ExportableLambdaFunctionField enum value
	ExportableLambdaFunctionFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts = "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts"
)

// ExportableLambdaFunctionField_Values returns all elements of the ExportableLambdaFunctionField enum
func ExportableLambdaFunctionField_Values() []string {
	return []string{
		ExportableLambdaFunctionFieldAccountId,
		ExportableLambdaFunctionFieldFunctionArn,
		ExportableLambdaFunctionFieldFunctionVersion,
		ExportableLambdaFunctionFieldFinding,
		ExportableLambdaFunctionFieldFindingReasonCodes,
		ExportableLambdaFunctionFieldNumberOfInvocations,
		ExportableLambdaFunctionFieldUtilizationMetricsDurationMaximum,
		ExportableLambdaFunctionFieldUtilizationMetricsDurationAverage,
		ExportableLambdaFunctionFieldUtilizationMetricsMemoryMaximum,
		ExportableLambdaFunctionFieldUtilizationMetricsMemoryAverage,
		ExportableLambdaFunctionFieldLookbackPeriodInDays,
		ExportableLambdaFunctionFieldCurrentConfigurationMemorySize,
		ExportableLambdaFunctionFieldCurrentConfigurationTimeout,
		ExportableLambdaFunctionFieldCurrentCostTotal,
		ExportableLambdaFunctionFieldCurrentCostAverage,
		ExportableLambdaFunctionFieldRecommendationOptionsConfigurationMemorySize,
		ExportableLambdaFunctionFieldRecommendationOptionsCostLow,
		ExportableLambdaFunctionFieldRecommendationOptionsCostHigh,
		ExportableLambdaFunctionFieldRecommendationOptionsProjectedUtilizationMetricsDurationLowerBound,
		ExportableLambdaFunctionFieldRecommendationOptionsProjectedUtilizationMetricsDurationUpperBound,
		ExportableLambdaFunctionFieldRecommendationOptionsProjectedUtilizationMetricsDurationExpected,
		ExportableLambdaFunctionFieldLastRefreshTimestamp,
		ExportableLambdaFunctionFieldCurrentPerformanceRisk,
		ExportableLambdaFunctionFieldRecommendationOptionsSavingsOpportunityPercentage,
		ExportableLambdaFunctionFieldRecommendationOptionsEstimatedMonthlySavingsCurrency,
		ExportableLambdaFunctionFieldRecommendationOptionsEstimatedMonthlySavingsValue,
		ExportableLambdaFunctionFieldTags,
		ExportableLambdaFunctionFieldEffectiveRecommendationPreferencesSavingsEstimationMode,
		ExportableLambdaFunctionFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage,
		ExportableLambdaFunctionFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts,
		ExportableLambdaFunctionFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts,
	}
}

const (
	// ExportableLicenseFieldAccountId is a ExportableLicenseField enum value
	ExportableLicenseFieldAccountId = "AccountId"

	// ExportableLicenseFieldResourceArn is a ExportableLicenseField enum value
	ExportableLicenseFieldResourceArn = "ResourceArn"

	// ExportableLicenseFieldLookbackPeriodInDays is a ExportableLicenseField enum value
	ExportableLicenseFieldLookbackPeriodInDays = "LookbackPeriodInDays"

	// ExportableLicenseFieldLastRefreshTimestamp is a ExportableLicenseField enum value
	ExportableLicenseFieldLastRefreshTimestamp = "LastRefreshTimestamp"

	// ExportableLicenseFieldFinding is a ExportableLicenseField enum value
	ExportableLicenseFieldFinding = "Finding"

	// ExportableLicenseFieldFindingReasonCodes is a ExportableLicenseField enum value
	ExportableLicenseFieldFindingReasonCodes = "FindingReasonCodes"

	// ExportableLicenseFieldCurrentLicenseConfigurationNumberOfCores is a ExportableLicenseField enum value
	ExportableLicenseFieldCurrentLicenseConfigurationNumberOfCores = "CurrentLicenseConfigurationNumberOfCores"

	// ExportableLicenseFieldCurrentLicenseConfigurationInstanceType is a ExportableLicenseField enum value
	ExportableLicenseFieldCurrentLicenseConfigurationInstanceType = "CurrentLicenseConfigurationInstanceType"

	// ExportableLicenseFieldCurrentLicenseConfigurationOperatingSystem is a ExportableLicenseField enum value
	ExportableLicenseFieldCurrentLicenseConfigurationOperatingSystem = "CurrentLicenseConfigurationOperatingSystem"

	// ExportableLicenseFieldCurrentLicenseConfigurationLicenseName is a ExportableLicenseField enum value
	ExportableLicenseFieldCurrentLicenseConfigurationLicenseName = "CurrentLicenseConfigurationLicenseName"

	// ExportableLicenseFieldCurrentLicenseConfigurationLicenseEdition is a ExportableLicenseField enum value
	ExportableLicenseFieldCurrentLicenseConfigurationLicenseEdition = "CurrentLicenseConfigurationLicenseEdition"

	// ExportableLicenseFieldCurrentLicenseConfigurationLicenseModel is a ExportableLicenseField enum value
	ExportableLicenseFieldCurrentLicenseConfigurationLicenseModel = "CurrentLicenseConfigurationLicenseModel"

	// ExportableLicenseFieldCurrentLicenseConfigurationLicenseVersion is a ExportableLicenseField enum value
	ExportableLicenseFieldCurrentLicenseConfigurationLicenseVersion = "CurrentLicenseConfigurationLicenseVersion"

	// ExportableLicenseFieldCurrentLicenseConfigurationMetricsSource is a ExportableLicenseField enum value
	ExportableLicenseFieldCurrentLicenseConfigurationMetricsSource = "CurrentLicenseConfigurationMetricsSource"

	// ExportableLicenseFieldRecommendationOptionsOperatingSystem is a ExportableLicenseField enum value
	ExportableLicenseFieldRecommendationOptionsOperatingSystem = "RecommendationOptionsOperatingSystem"

	// ExportableLicenseFieldRecommendationOptionsLicenseEdition is a ExportableLicenseField enum value
	ExportableLicenseFieldRecommendationOptionsLicenseEdition = "RecommendationOptionsLicenseEdition"

	// ExportableLicenseFieldRecommendationOptionsLicenseModel is a ExportableLicenseField enum value
	ExportableLicenseFieldRecommendationOptionsLicenseModel = "RecommendationOptionsLicenseModel"

	// ExportableLicenseFieldRecommendationOptionsSavingsOpportunityPercentage is a ExportableLicenseField enum value
	ExportableLicenseFieldRecommendationOptionsSavingsOpportunityPercentage = "RecommendationOptionsSavingsOpportunityPercentage"

	// ExportableLicenseFieldRecommendationOptionsEstimatedMonthlySavingsCurrency is a ExportableLicenseField enum value
	ExportableLicenseFieldRecommendationOptionsEstimatedMonthlySavingsCurrency = "RecommendationOptionsEstimatedMonthlySavingsCurrency"

	// ExportableLicenseFieldRecommendationOptionsEstimatedMonthlySavingsValue is a ExportableLicenseField enum value
	ExportableLicenseFieldRecommendationOptionsEstimatedMonthlySavingsValue = "RecommendationOptionsEstimatedMonthlySavingsValue"

	// ExportableLicenseFieldTags is a ExportableLicenseField enum value
	ExportableLicenseFieldTags = "Tags"
)

// ExportableLicenseField_Values returns all elements of the ExportableLicenseField enum
func ExportableLicenseField_Values() []string {
	return []string{
		ExportableLicenseFieldAccountId,
		ExportableLicenseFieldResourceArn,
		ExportableLicenseFieldLookbackPeriodInDays,
		ExportableLicenseFieldLastRefreshTimestamp,
		ExportableLicenseFieldFinding,
		ExportableLicenseFieldFindingReasonCodes,
		ExportableLicenseFieldCurrentLicenseConfigurationNumberOfCores,
		ExportableLicenseFieldCurrentLicenseConfigurationInstanceType,
		ExportableLicenseFieldCurrentLicenseConfigurationOperatingSystem,
		ExportableLicenseFieldCurrentLicenseConfigurationLicenseName,
		ExportableLicenseFieldCurrentLicenseConfigurationLicenseEdition,
		ExportableLicenseFieldCurrentLicenseConfigurationLicenseModel,
		ExportableLicenseFieldCurrentLicenseConfigurationLicenseVersion,
		ExportableLicenseFieldCurrentLicenseConfigurationMetricsSource,
		ExportableLicenseFieldRecommendationOptionsOperatingSystem,
		ExportableLicenseFieldRecommendationOptionsLicenseEdition,
		ExportableLicenseFieldRecommendationOptionsLicenseModel,
		ExportableLicenseFieldRecommendationOptionsSavingsOpportunityPercentage,
		ExportableLicenseFieldRecommendationOptionsEstimatedMonthlySavingsCurrency,
		ExportableLicenseFieldRecommendationOptionsEstimatedMonthlySavingsValue,
		ExportableLicenseFieldTags,
	}
}

const (
	// ExportableVolumeFieldAccountId is a ExportableVolumeField enum value
	ExportableVolumeFieldAccountId = "AccountId"

	// ExportableVolumeFieldVolumeArn is a ExportableVolumeField enum value
	ExportableVolumeFieldVolumeArn = "VolumeArn"

	// ExportableVolumeFieldFinding is a ExportableVolumeField enum value
	ExportableVolumeFieldFinding = "Finding"

	// ExportableVolumeFieldUtilizationMetricsVolumeReadOpsPerSecondMaximum is a ExportableVolumeField enum value
	ExportableVolumeFieldUtilizationMetricsVolumeReadOpsPerSecondMaximum = "UtilizationMetricsVolumeReadOpsPerSecondMaximum"

	// ExportableVolumeFieldUtilizationMetricsVolumeWriteOpsPerSecondMaximum is a ExportableVolumeField enum value
	ExportableVolumeFieldUtilizationMetricsVolumeWriteOpsPerSecondMaximum = "UtilizationMetricsVolumeWriteOpsPerSecondMaximum"

	// ExportableVolumeFieldUtilizationMetricsVolumeReadBytesPerSecondMaximum is a ExportableVolumeField enum value
	ExportableVolumeFieldUtilizationMetricsVolumeReadBytesPerSecondMaximum = "UtilizationMetricsVolumeReadBytesPerSecondMaximum"

	// ExportableVolumeFieldUtilizationMetricsVolumeWriteBytesPerSecondMaximum is a ExportableVolumeField enum value
	ExportableVolumeFieldUtilizationMetricsVolumeWriteBytesPerSecondMaximum = "UtilizationMetricsVolumeWriteBytesPerSecondMaximum"

	// ExportableVolumeFieldLookbackPeriodInDays is a ExportableVolumeField enum value
	ExportableVolumeFieldLookbackPeriodInDays = "LookbackPeriodInDays"

	// ExportableVolumeFieldCurrentConfigurationVolumeType is a ExportableVolumeField enum value
	ExportableVolumeFieldCurrentConfigurationVolumeType = "CurrentConfigurationVolumeType"

	// ExportableVolumeFieldCurrentConfigurationVolumeBaselineIops is a ExportableVolumeField enum value
	ExportableVolumeFieldCurrentConfigurationVolumeBaselineIops = "CurrentConfigurationVolumeBaselineIOPS"

	// ExportableVolumeFieldCurrentConfigurationVolumeBaselineThroughput is a ExportableVolumeField enum value
	ExportableVolumeFieldCurrentConfigurationVolumeBaselineThroughput = "CurrentConfigurationVolumeBaselineThroughput"

	// ExportableVolumeFieldCurrentConfigurationVolumeBurstIops is a ExportableVolumeField enum value
	ExportableVolumeFieldCurrentConfigurationVolumeBurstIops = "CurrentConfigurationVolumeBurstIOPS"

	// ExportableVolumeFieldCurrentConfigurationVolumeBurstThroughput is a ExportableVolumeField enum value
	ExportableVolumeFieldCurrentConfigurationVolumeBurstThroughput = "CurrentConfigurationVolumeBurstThroughput"

	// ExportableVolumeFieldCurrentConfigurationVolumeSize is a ExportableVolumeField enum value
	ExportableVolumeFieldCurrentConfigurationVolumeSize = "CurrentConfigurationVolumeSize"

	// ExportableVolumeFieldCurrentMonthlyPrice is a ExportableVolumeField enum value
	ExportableVolumeFieldCurrentMonthlyPrice = "CurrentMonthlyPrice"

	// ExportableVolumeFieldRecommendationOptionsConfigurationVolumeType is a ExportableVolumeField enum value
	ExportableVolumeFieldRecommendationOptionsConfigurationVolumeType = "RecommendationOptionsConfigurationVolumeType"

	// ExportableVolumeFieldRecommendationOptionsConfigurationVolumeBaselineIops is a ExportableVolumeField enum value
	ExportableVolumeFieldRecommendationOptionsConfigurationVolumeBaselineIops = "RecommendationOptionsConfigurationVolumeBaselineIOPS"

	// ExportableVolumeFieldRecommendationOptionsConfigurationVolumeBaselineThroughput is a ExportableVolumeField enum value
	ExportableVolumeFieldRecommendationOptionsConfigurationVolumeBaselineThroughput = "RecommendationOptionsConfigurationVolumeBaselineThroughput"

	// ExportableVolumeFieldRecommendationOptionsConfigurationVolumeBurstIops is a ExportableVolumeField enum value
	ExportableVolumeFieldRecommendationOptionsConfigurationVolumeBurstIops = "RecommendationOptionsConfigurationVolumeBurstIOPS"

	// ExportableVolumeFieldRecommendationOptionsConfigurationVolumeBurstThroughput is a ExportableVolumeField enum value
	ExportableVolumeFieldRecommendationOptionsConfigurationVolumeBurstThroughput = "RecommendationOptionsConfigurationVolumeBurstThroughput"

	// ExportableVolumeFieldRecommendationOptionsConfigurationVolumeSize is a ExportableVolumeField enum value
	ExportableVolumeFieldRecommendationOptionsConfigurationVolumeSize = "RecommendationOptionsConfigurationVolumeSize"

	// ExportableVolumeFieldRecommendationOptionsMonthlyPrice is a ExportableVolumeField enum value
	ExportableVolumeFieldRecommendationOptionsMonthlyPrice = "RecommendationOptionsMonthlyPrice"

	// ExportableVolumeFieldRecommendationOptionsPerformanceRisk is a ExportableVolumeField enum value
	ExportableVolumeFieldRecommendationOptionsPerformanceRisk = "RecommendationOptionsPerformanceRisk"

	// ExportableVolumeFieldLastRefreshTimestamp is a ExportableVolumeField enum value
	ExportableVolumeFieldLastRefreshTimestamp = "LastRefreshTimestamp"

	// ExportableVolumeFieldCurrentPerformanceRisk is a ExportableVolumeField enum value
	ExportableVolumeFieldCurrentPerformanceRisk = "CurrentPerformanceRisk"

	// ExportableVolumeFieldRecommendationOptionsSavingsOpportunityPercentage is a ExportableVolumeField enum value
	ExportableVolumeFieldRecommendationOptionsSavingsOpportunityPercentage = "RecommendationOptionsSavingsOpportunityPercentage"

	// ExportableVolumeFieldRecommendationOptionsEstimatedMonthlySavingsCurrency is a ExportableVolumeField enum value
	ExportableVolumeFieldRecommendationOptionsEstimatedMonthlySavingsCurrency = "RecommendationOptionsEstimatedMonthlySavingsCurrency"

	// ExportableVolumeFieldRecommendationOptionsEstimatedMonthlySavingsValue is a ExportableVolumeField enum value
	ExportableVolumeFieldRecommendationOptionsEstimatedMonthlySavingsValue = "RecommendationOptionsEstimatedMonthlySavingsValue"

	// ExportableVolumeFieldRootVolume is a ExportableVolumeField enum value
	ExportableVolumeFieldRootVolume = "RootVolume"

	// ExportableVolumeFieldTags is a ExportableVolumeField enum value
	ExportableVolumeFieldTags = "Tags"

	// ExportableVolumeFieldCurrentConfigurationRootVolume is a ExportableVolumeField enum value
	ExportableVolumeFieldCurrentConfigurationRootVolume = "CurrentConfigurationRootVolume"

	// ExportableVolumeFieldEffectiveRecommendationPreferencesSavingsEstimationMode is a ExportableVolumeField enum value
	ExportableVolumeFieldEffectiveRecommendationPreferencesSavingsEstimationMode = "EffectiveRecommendationPreferencesSavingsEstimationMode"

	// ExportableVolumeFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage is a ExportableVolumeField enum value
	ExportableVolumeFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage = "RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage"

	// ExportableVolumeFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts is a ExportableVolumeField enum value
	ExportableVolumeFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts = "RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts"

	// ExportableVolumeFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts is a ExportableVolumeField enum value
	ExportableVolumeFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts = "RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts"
)

// ExportableVolumeField_Values returns all elements of the ExportableVolumeField enum
func ExportableVolumeField_Values() []string {
	return []string{
		ExportableVolumeFieldAccountId,
		ExportableVolumeFieldVolumeArn,
		ExportableVolumeFieldFinding,
		ExportableVolumeFieldUtilizationMetricsVolumeReadOpsPerSecondMaximum,
		ExportableVolumeFieldUtilizationMetricsVolumeWriteOpsPerSecondMaximum,
		ExportableVolumeFieldUtilizationMetricsVolumeReadBytesPerSecondMaximum,
		ExportableVolumeFieldUtilizationMetricsVolumeWriteBytesPerSecondMaximum,
		ExportableVolumeFieldLookbackPeriodInDays,
		ExportableVolumeFieldCurrentConfigurationVolumeType,
		ExportableVolumeFieldCurrentConfigurationVolumeBaselineIops,
		ExportableVolumeFieldCurrentConfigurationVolumeBaselineThroughput,
		ExportableVolumeFieldCurrentConfigurationVolumeBurstIops,
		ExportableVolumeFieldCurrentConfigurationVolumeBurstThroughput,
		ExportableVolumeFieldCurrentConfigurationVolumeSize,
		ExportableVolumeFieldCurrentMonthlyPrice,
		ExportableVolumeFieldRecommendationOptionsConfigurationVolumeType,
		ExportableVolumeFieldRecommendationOptionsConfigurationVolumeBaselineIops,
		ExportableVolumeFieldRecommendationOptionsConfigurationVolumeBaselineThroughput,
		ExportableVolumeFieldRecommendationOptionsConfigurationVolumeBurstIops,
		ExportableVolumeFieldRecommendationOptionsConfigurationVolumeBurstThroughput,
		ExportableVolumeFieldRecommendationOptionsConfigurationVolumeSize,
		ExportableVolumeFieldRecommendationOptionsMonthlyPrice,
		ExportableVolumeFieldRecommendationOptionsPerformanceRisk,
		ExportableVolumeFieldLastRefreshTimestamp,
		ExportableVolumeFieldCurrentPerformanceRisk,
		ExportableVolumeFieldRecommendationOptionsSavingsOpportunityPercentage,
		ExportableVolumeFieldRecommendationOptionsEstimatedMonthlySavingsCurrency,
		ExportableVolumeFieldRecommendationOptionsEstimatedMonthlySavingsValue,
		ExportableVolumeFieldRootVolume,
		ExportableVolumeFieldTags,
		ExportableVolumeFieldCurrentConfigurationRootVolume,
		ExportableVolumeFieldEffectiveRecommendationPreferencesSavingsEstimationMode,
		ExportableVolumeFieldRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage,
		ExportableVolumeFieldRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts,
		ExportableVolumeFieldRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts,
	}
}

const (
	// ExternalMetricStatusCodeNoExternalMetricSet is a ExternalMetricStatusCode enum value
	ExternalMetricStatusCodeNoExternalMetricSet = "NO_EXTERNAL_METRIC_SET"

	// ExternalMetricStatusCodeIntegrationSuccess is a ExternalMetricStatusCode enum value
	ExternalMetricStatusCodeIntegrationSuccess = "INTEGRATION_SUCCESS"

	// ExternalMetricStatusCodeDatadogIntegrationError is a ExternalMetricStatusCode enum value
	ExternalMetricStatusCodeDatadogIntegrationError = "DATADOG_INTEGRATION_ERROR"

	// ExternalMetricStatusCodeDynatraceIntegrationError is a ExternalMetricStatusCode enum value
	ExternalMetricStatusCodeDynatraceIntegrationError = "DYNATRACE_INTEGRATION_ERROR"

	// ExternalMetricStatusCodeNewrelicIntegrationError is a ExternalMetricStatusCode enum value
	ExternalMetricStatusCodeNewrelicIntegrationError = "NEWRELIC_INTEGRATION_ERROR"

	// ExternalMetricStatusCodeInstanaIntegrationError is a ExternalMetricStatusCode enum value
	ExternalMetricStatusCodeInstanaIntegrationError = "INSTANA_INTEGRATION_ERROR"

	// ExternalMetricStatusCodeInsufficientDatadogMetrics is a ExternalMetricStatusCode enum value
	ExternalMetricStatusCodeInsufficientDatadogMetrics = "INSUFFICIENT_DATADOG_METRICS"

	// ExternalMetricStatusCodeInsufficientDynatraceMetrics is a ExternalMetricStatusCode enum value
	ExternalMetricStatusCodeInsufficientDynatraceMetrics = "INSUFFICIENT_DYNATRACE_METRICS"

	// ExternalMetricStatusCodeInsufficientNewrelicMetrics is a ExternalMetricStatusCode enum value
	ExternalMetricStatusCodeInsufficientNewrelicMetrics = "INSUFFICIENT_NEWRELIC_METRICS"

	// ExternalMetricStatusCodeInsufficientInstanaMetrics is a ExternalMetricStatusCode enum value
	ExternalMetricStatusCodeInsufficientInstanaMetrics = "INSUFFICIENT_INSTANA_METRICS"
)

// ExternalMetricStatusCode_Values returns all elements of the ExternalMetricStatusCode enum
func ExternalMetricStatusCode_Values() []string {
	return []string{
		ExternalMetricStatusCodeNoExternalMetricSet,
		ExternalMetricStatusCodeIntegrationSuccess,
		ExternalMetricStatusCodeDatadogIntegrationError,
		ExternalMetricStatusCodeDynatraceIntegrationError,
		ExternalMetricStatusCodeNewrelicIntegrationError,
		ExternalMetricStatusCodeInstanaIntegrationError,
		ExternalMetricStatusCodeInsufficientDatadogMetrics,
		ExternalMetricStatusCodeInsufficientDynatraceMetrics,
		ExternalMetricStatusCodeInsufficientNewrelicMetrics,
		ExternalMetricStatusCodeInsufficientInstanaMetrics,
	}
}

const (
	// ExternalMetricsSourceDatadog is a ExternalMetricsSource enum value
	ExternalMetricsSourceDatadog = "Datadog"

	// ExternalMetricsSourceDynatrace is a ExternalMetricsSource enum value
	ExternalMetricsSourceDynatrace = "Dynatrace"

	// ExternalMetricsSourceNewRelic is a ExternalMetricsSource enum value
	ExternalMetricsSourceNewRelic = "NewRelic"

	// ExternalMetricsSourceInstana is a ExternalMetricsSource enum value
	ExternalMetricsSourceInstana = "Instana"
)

// ExternalMetricsSource_Values returns all elements of the ExternalMetricsSource enum
func ExternalMetricsSource_Values() []string {
	return []string{
		ExternalMetricsSourceDatadog,
		ExternalMetricsSourceDynatrace,
		ExternalMetricsSourceNewRelic,
		ExternalMetricsSourceInstana,
	}
}

const (
	// FileFormatCsv is a FileFormat enum value
	FileFormatCsv = "Csv"
)

// FileFormat_Values returns all elements of the FileFormat enum
func FileFormat_Values() []string {
	return []string{
		FileFormatCsv,
	}
}

const (
	// FilterNameFinding is a FilterName enum value
	FilterNameFinding = "Finding"

	// FilterNameFindingReasonCodes is a FilterName enum value
	FilterNameFindingReasonCodes = "FindingReasonCodes"

	// FilterNameRecommendationSourceType is a FilterName enum value
	FilterNameRecommendationSourceType = "RecommendationSourceType"

	// FilterNameInferredWorkloadTypes is a FilterName enum value
	FilterNameInferredWorkloadTypes = "InferredWorkloadTypes"
)

// FilterName_Values returns all elements of the FilterName enum
func FilterName_Values() []string {
	return []string{
		FilterNameFinding,
		FilterNameFindingReasonCodes,
		FilterNameRecommendationSourceType,
		FilterNameInferredWorkloadTypes,
	}
}

const (
	// FindingUnderprovisioned is a Finding enum value
	FindingUnderprovisioned = "Underprovisioned"

	// FindingOverprovisioned is a Finding enum value
	FindingOverprovisioned = "Overprovisioned"

	// FindingOptimized is a Finding enum value
	FindingOptimized = "Optimized"

	// FindingNotOptimized is a Finding enum value
	FindingNotOptimized = "NotOptimized"
)

// Finding_Values returns all elements of the Finding enum
func Finding_Values() []string {
	return []string{
		FindingUnderprovisioned,
		FindingOverprovisioned,
		FindingOptimized,
		FindingNotOptimized,
	}
}

const (
	// FindingReasonCodeMemoryOverprovisioned is a FindingReasonCode enum value
	FindingReasonCodeMemoryOverprovisioned = "MemoryOverprovisioned"

	// FindingReasonCodeMemoryUnderprovisioned is a FindingReasonCode enum value
	FindingReasonCodeMemoryUnderprovisioned = "MemoryUnderprovisioned"
)

// FindingReasonCode_Values returns all elements of the FindingReasonCode enum
func FindingReasonCode_Values() []string {
	return []string{
		FindingReasonCodeMemoryOverprovisioned,
		FindingReasonCodeMemoryUnderprovisioned,
	}
}

const (
	// InferredWorkloadTypeAmazonEmr is a InferredWorkloadType enum value
	InferredWorkloadTypeAmazonEmr = "AmazonEmr"

	// InferredWorkloadTypeApacheCassandra is a InferredWorkloadType enum value
	InferredWorkloadTypeApacheCassandra = "ApacheCassandra"

	// InferredWorkloadTypeApacheHadoop is a InferredWorkloadType enum value
	InferredWorkloadTypeApacheHadoop = "ApacheHadoop"

	// InferredWorkloadTypeMemcached is a InferredWorkloadType enum value
	InferredWorkloadTypeMemcached = "Memcached"

	// InferredWorkloadTypeNginx is a InferredWorkloadType enum value
	InferredWorkloadTypeNginx = "Nginx"

	// InferredWorkloadTypePostgreSql is a InferredWorkloadType enum value
	InferredWorkloadTypePostgreSql = "PostgreSql"

	// InferredWorkloadTypeRedis is a InferredWorkloadType enum value
	InferredWorkloadTypeRedis = "Redis"

	// InferredWorkloadTypeKafka is a InferredWorkloadType enum value
	InferredWorkloadTypeKafka = "Kafka"

	// InferredWorkloadTypeSqlserver is a InferredWorkloadType enum value
	InferredWorkloadTypeSqlserver = "SQLServer"
)

// InferredWorkloadType_Values returns all elements of the InferredWorkloadType enum
func InferredWorkloadType_Values() []string {
	return []string{
		InferredWorkloadTypeAmazonEmr,
		InferredWorkloadTypeApacheCassandra,
		InferredWorkloadTypeApacheHadoop,
		InferredWorkloadTypeMemcached,
		InferredWorkloadTypeNginx,
		InferredWorkloadTypePostgreSql,
		InferredWorkloadTypeRedis,
		InferredWorkloadTypeKafka,
		InferredWorkloadTypeSqlserver,
	}
}

const (
	// InferredWorkloadTypesPreferenceActive is a InferredWorkloadTypesPreference enum value
	InferredWorkloadTypesPreferenceActive = "Active"

	// InferredWorkloadTypesPreferenceInactive is a InferredWorkloadTypesPreference enum value
	InferredWorkloadTypesPreferenceInactive = "Inactive"
)

// InferredWorkloadTypesPreference_Values returns all elements of the InferredWorkloadTypesPreference enum
func InferredWorkloadTypesPreference_Values() []string {
	return []string{
		InferredWorkloadTypesPreferenceActive,
		InferredWorkloadTypesPreferenceInactive,
	}
}

const (
	// InstanceIdleTrue is a InstanceIdle enum value
	InstanceIdleTrue = "True"

	// InstanceIdleFalse is a InstanceIdle enum value
	InstanceIdleFalse = "False"
)

// InstanceIdle_Values returns all elements of the InstanceIdle enum
func InstanceIdle_Values() []string {
	return []string{
		InstanceIdleTrue,
		InstanceIdleFalse,
	}
}

const (
	// InstanceRecommendationFindingReasonCodeCpuoverprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeCpuoverprovisioned = "CPUOverprovisioned"

	// InstanceRecommendationFindingReasonCodeCpuunderprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeCpuunderprovisioned = "CPUUnderprovisioned"

	// InstanceRecommendationFindingReasonCodeMemoryOverprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeMemoryOverprovisioned = "MemoryOverprovisioned"

	// InstanceRecommendationFindingReasonCodeMemoryUnderprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeMemoryUnderprovisioned = "MemoryUnderprovisioned"

	// InstanceRecommendationFindingReasonCodeEbsthroughputOverprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeEbsthroughputOverprovisioned = "EBSThroughputOverprovisioned"

	// InstanceRecommendationFindingReasonCodeEbsthroughputUnderprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeEbsthroughputUnderprovisioned = "EBSThroughputUnderprovisioned"

	// InstanceRecommendationFindingReasonCodeEbsiopsoverprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeEbsiopsoverprovisioned = "EBSIOPSOverprovisioned"

	// InstanceRecommendationFindingReasonCodeEbsiopsunderprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeEbsiopsunderprovisioned = "EBSIOPSUnderprovisioned"

	// InstanceRecommendationFindingReasonCodeNetworkBandwidthOverprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeNetworkBandwidthOverprovisioned = "NetworkBandwidthOverprovisioned"

	// InstanceRecommendationFindingReasonCodeNetworkBandwidthUnderprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeNetworkBandwidthUnderprovisioned = "NetworkBandwidthUnderprovisioned"

	// InstanceRecommendationFindingReasonCodeNetworkPpsoverprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeNetworkPpsoverprovisioned = "NetworkPPSOverprovisioned"

	// InstanceRecommendationFindingReasonCodeNetworkPpsunderprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeNetworkPpsunderprovisioned = "NetworkPPSUnderprovisioned"

	// InstanceRecommendationFindingReasonCodeDiskIopsoverprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeDiskIopsoverprovisioned = "DiskIOPSOverprovisioned"

	// InstanceRecommendationFindingReasonCodeDiskIopsunderprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeDiskIopsunderprovisioned = "DiskIOPSUnderprovisioned"

	// InstanceRecommendationFindingReasonCodeDiskThroughputOverprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeDiskThroughputOverprovisioned = "DiskThroughputOverprovisioned"

	// InstanceRecommendationFindingReasonCodeDiskThroughputUnderprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeDiskThroughputUnderprovisioned = "DiskThroughputUnderprovisioned"

	// InstanceRecommendationFindingReasonCodeGpuunderprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeGpuunderprovisioned = "GPUUnderprovisioned"

	// InstanceRecommendationFindingReasonCodeGpuoverprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeGpuoverprovisioned = "GPUOverprovisioned"

	// InstanceRecommendationFindingReasonCodeGpumemoryUnderprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeGpumemoryUnderprovisioned = "GPUMemoryUnderprovisioned"

	// InstanceRecommendationFindingReasonCodeGpumemoryOverprovisioned is a InstanceRecommendationFindingReasonCode enum value
	InstanceRecommendationFindingReasonCodeGpumemoryOverprovisioned = "GPUMemoryOverprovisioned"
)

// InstanceRecommendationFindingReasonCode_Values returns all elements of the InstanceRecommendationFindingReasonCode enum
func InstanceRecommendationFindingReasonCode_Values() []string {
	return []string{
		InstanceRecommendationFindingReasonCodeCpuoverprovisioned,
		InstanceRecommendationFindingReasonCodeCpuunderprovisioned,
		InstanceRecommendationFindingReasonCodeMemoryOverprovisioned,
		InstanceRecommendationFindingReasonCodeMemoryUnderprovisioned,
		InstanceRecommendationFindingReasonCodeEbsthroughputOverprovisioned,
		InstanceRecommendationFindingReasonCodeEbsthroughputUnderprovisioned,
		InstanceRecommendationFindingReasonCodeEbsiopsoverprovisioned,
		InstanceRecommendationFindingReasonCodeEbsiopsunderprovisioned,
		InstanceRecommendationFindingReasonCodeNetworkBandwidthOverprovisioned,
		InstanceRecommendationFindingReasonCodeNetworkBandwidthUnderprovisioned,
		InstanceRecommendationFindingReasonCodeNetworkPpsoverprovisioned,
		InstanceRecommendationFindingReasonCodeNetworkPpsunderprovisioned,
		InstanceRecommendationFindingReasonCodeDiskIopsoverprovisioned,
		InstanceRecommendationFindingReasonCodeDiskIopsunderprovisioned,
		InstanceRecommendationFindingReasonCodeDiskThroughputOverprovisioned,
		InstanceRecommendationFindingReasonCodeDiskThroughputUnderprovisioned,
		InstanceRecommendationFindingReasonCodeGpuunderprovisioned,
		InstanceRecommendationFindingReasonCodeGpuoverprovisioned,
		InstanceRecommendationFindingReasonCodeGpumemoryUnderprovisioned,
		InstanceRecommendationFindingReasonCodeGpumemoryOverprovisioned,
	}
}

const (
	// InstanceSavingsEstimationModeSourcePublicPricing is a InstanceSavingsEstimationModeSource enum value
	InstanceSavingsEstimationModeSourcePublicPricing = "PublicPricing"

	// InstanceSavingsEstimationModeSourceCostExplorerRightsizing is a InstanceSavingsEstimationModeSource enum value
	InstanceSavingsEstimationModeSourceCostExplorerRightsizing = "CostExplorerRightsizing"

	// InstanceSavingsEstimationModeSourceCostOptimizationHub is a InstanceSavingsEstimationModeSource enum value
	InstanceSavingsEstimationModeSourceCostOptimizationHub = "CostOptimizationHub"
)

// InstanceSavingsEstimationModeSource_Values returns all elements of the InstanceSavingsEstimationModeSource enum
func InstanceSavingsEstimationModeSource_Values() []string {
	return []string{
		InstanceSavingsEstimationModeSourcePublicPricing,
		InstanceSavingsEstimationModeSourceCostExplorerRightsizing,
		InstanceSavingsEstimationModeSourceCostOptimizationHub,
	}
}

const (
	// InstanceStatePending is a InstanceState enum value
	InstanceStatePending = "pending"

	// InstanceStateRunning is a InstanceState enum value
	InstanceStateRunning = "running"

	// InstanceStateShuttingDown is a InstanceState enum value
	InstanceStateShuttingDown = "shutting-down"

	// InstanceStateTerminated is a InstanceState enum value
	InstanceStateTerminated = "terminated"

	// InstanceStateStopping is a InstanceState enum value
	InstanceStateStopping = "stopping"

	// InstanceStateStopped is a InstanceState enum value
	InstanceStateStopped = "stopped"
)

// InstanceState_Values returns all elements of the InstanceState enum
func InstanceState_Values() []string {
	return []string{
		InstanceStatePending,
		InstanceStateRunning,
		InstanceStateShuttingDown,
		InstanceStateTerminated,
		InstanceStateStopping,
		InstanceStateStopped,
	}
}

const (
	// JobFilterNameResourceType is a JobFilterName enum value
	JobFilterNameResourceType = "ResourceType"

	// JobFilterNameJobStatus is a JobFilterName enum value
	JobFilterNameJobStatus = "JobStatus"
)

// JobFilterName_Values returns all elements of the JobFilterName enum
func JobFilterName_Values() []string {
	return []string{
		JobFilterNameResourceType,
		JobFilterNameJobStatus,
	}
}

const (
	// JobStatusQueued is a JobStatus enum value
	JobStatusQueued = "Queued"

	// JobStatusInProgress is a JobStatus enum value
	JobStatusInProgress = "InProgress"

	// JobStatusComplete is a JobStatus enum value
	JobStatusComplete = "Complete"

	// JobStatusFailed is a JobStatus enum value
	JobStatusFailed = "Failed"
)

// JobStatus_Values returns all elements of the JobStatus enum
func JobStatus_Values() []string {
	return []string{
		JobStatusQueued,
		JobStatusInProgress,
		JobStatusComplete,
		JobStatusFailed,
	}
}

const (
	// LambdaFunctionMemoryMetricNameDuration is a LambdaFunctionMemoryMetricName enum value
	LambdaFunctionMemoryMetricNameDuration = "Duration"
)

// LambdaFunctionMemoryMetricName_Values returns all elements of the LambdaFunctionMemoryMetricName enum
func LambdaFunctionMemoryMetricName_Values() []string {
	return []string{
		LambdaFunctionMemoryMetricNameDuration,
	}
}

const (
	// LambdaFunctionMemoryMetricStatisticLowerBound is a LambdaFunctionMemoryMetricStatistic enum value
	LambdaFunctionMemoryMetricStatisticLowerBound = "LowerBound"

	// LambdaFunctionMemoryMetricStatisticUpperBound is a LambdaFunctionMemoryMetricStatistic enum value
	LambdaFunctionMemoryMetricStatisticUpperBound = "UpperBound"

	// LambdaFunctionMemoryMetricStatisticExpected is a LambdaFunctionMemoryMetricStatistic enum value
	LambdaFunctionMemoryMetricStatisticExpected = "Expected"
)

// LambdaFunctionMemoryMetricStatistic_Values returns all elements of the LambdaFunctionMemoryMetricStatistic enum
func LambdaFunctionMemoryMetricStatistic_Values() []string {
	return []string{
		LambdaFunctionMemoryMetricStatisticLowerBound,
		LambdaFunctionMemoryMetricStatisticUpperBound,
		LambdaFunctionMemoryMetricStatisticExpected,
	}
}

const (
	// LambdaFunctionMetricNameDuration is a LambdaFunctionMetricName enum value
	LambdaFunctionMetricNameDuration = "Duration"

	// LambdaFunctionMetricNameMemory is a LambdaFunctionMetricName enum value
	LambdaFunctionMetricNameMemory = "Memory"
)

// LambdaFunctionMetricName_Values returns all elements of the LambdaFunctionMetricName enum
func LambdaFunctionMetricName_Values() []string {
	return []string{
		LambdaFunctionMetricNameDuration,
		LambdaFunctionMetricNameMemory,
	}
}

const (
	// LambdaFunctionMetricStatisticMaximum is a LambdaFunctionMetricStatistic enum value
	LambdaFunctionMetricStatisticMaximum = "Maximum"

	// LambdaFunctionMetricStatisticAverage is a LambdaFunctionMetricStatistic enum value
	LambdaFunctionMetricStatisticAverage = "Average"
)

// LambdaFunctionMetricStatistic_Values returns all elements of the LambdaFunctionMetricStatistic enum
func LambdaFunctionMetricStatistic_Values() []string {
	return []string{
		LambdaFunctionMetricStatisticMaximum,
		LambdaFunctionMetricStatisticAverage,
	}
}

const (
	// LambdaFunctionRecommendationFilterNameFinding is a LambdaFunctionRecommendationFilterName enum value
	LambdaFunctionRecommendationFilterNameFinding = "Finding"

	// LambdaFunctionRecommendationFilterNameFindingReasonCode is a LambdaFunctionRecommendationFilterName enum value
	LambdaFunctionRecommendationFilterNameFindingReasonCode = "FindingReasonCode"
)

// LambdaFunctionRecommendationFilterName_Values returns all elements of the LambdaFunctionRecommendationFilterName enum
func LambdaFunctionRecommendationFilterName_Values() []string {
	return []string{
		LambdaFunctionRecommendationFilterNameFinding,
		LambdaFunctionRecommendationFilterNameFindingReasonCode,
	}
}

const (
	// LambdaFunctionRecommendationFindingOptimized is a LambdaFunctionRecommendationFinding enum value
	LambdaFunctionRecommendationFindingOptimized = "Optimized"

	// LambdaFunctionRecommendationFindingNotOptimized is a LambdaFunctionRecommendationFinding enum value
	LambdaFunctionRecommendationFindingNotOptimized = "NotOptimized"

	// LambdaFunctionRecommendationFindingUnavailable is a LambdaFunctionRecommendationFinding enum value
	LambdaFunctionRecommendationFindingUnavailable = "Unavailable"
)

// LambdaFunctionRecommendationFinding_Values returns all elements of the LambdaFunctionRecommendationFinding enum
func LambdaFunctionRecommendationFinding_Values() []string {
	return []string{
		LambdaFunctionRecommendationFindingOptimized,
		LambdaFunctionRecommendationFindingNotOptimized,
		LambdaFunctionRecommendationFindingUnavailable,
	}
}

const (
	// LambdaFunctionRecommendationFindingReasonCodeMemoryOverprovisioned is a LambdaFunctionRecommendationFindingReasonCode enum value
	LambdaFunctionRecommendationFindingReasonCodeMemoryOverprovisioned = "MemoryOverprovisioned"

	// LambdaFunctionRecommendationFindingReasonCodeMemoryUnderprovisioned is a LambdaFunctionRecommendationFindingReasonCode enum value
	LambdaFunctionRecommendationFindingReasonCodeMemoryUnderprovisioned = "MemoryUnderprovisioned"

	// LambdaFunctionRecommendationFindingReasonCodeInsufficientData is a LambdaFunctionRecommendationFindingReasonCode enum value
	LambdaFunctionRecommendationFindingReasonCodeInsufficientData = "InsufficientData"

	// LambdaFunctionRecommendationFindingReasonCodeInconclusive is a LambdaFunctionRecommendationFindingReasonCode enum value
	LambdaFunctionRecommendationFindingReasonCodeInconclusive = "Inconclusive"
)

// LambdaFunctionRecommendationFindingReasonCode_Values returns all elements of the LambdaFunctionRecommendationFindingReasonCode enum
func LambdaFunctionRecommendationFindingReasonCode_Values() []string {
	return []string{
		LambdaFunctionRecommendationFindingReasonCodeMemoryOverprovisioned,
		LambdaFunctionRecommendationFindingReasonCodeMemoryUnderprovisioned,
		LambdaFunctionRecommendationFindingReasonCodeInsufficientData,
		LambdaFunctionRecommendationFindingReasonCodeInconclusive,
	}
}

const (
	// LambdaSavingsEstimationModeSourcePublicPricing is a LambdaSavingsEstimationModeSource enum value
	LambdaSavingsEstimationModeSourcePublicPricing = "PublicPricing"

	// LambdaSavingsEstimationModeSourceCostExplorerRightsizing is a LambdaSavingsEstimationModeSource enum value
	LambdaSavingsEstimationModeSourceCostExplorerRightsizing = "CostExplorerRightsizing"

	// LambdaSavingsEstimationModeSourceCostOptimizationHub is a LambdaSavingsEstimationModeSource enum value
	LambdaSavingsEstimationModeSourceCostOptimizationHub = "CostOptimizationHub"
)

// LambdaSavingsEstimationModeSource_Values returns all elements of the LambdaSavingsEstimationModeSource enum
func LambdaSavingsEstimationModeSource_Values() []string {
	return []string{
		LambdaSavingsEstimationModeSourcePublicPricing,
		LambdaSavingsEstimationModeSourceCostExplorerRightsizing,
		LambdaSavingsEstimationModeSourceCostOptimizationHub,
	}
}

const (
	// LicenseEditionEnterprise is a LicenseEdition enum value
	LicenseEditionEnterprise = "Enterprise"

	// LicenseEditionStandard is a LicenseEdition enum value
	LicenseEditionStandard = "Standard"

	// LicenseEditionFree is a LicenseEdition enum value
	LicenseEditionFree = "Free"

	// LicenseEditionNoLicenseEditionFound is a LicenseEdition enum value
	LicenseEditionNoLicenseEditionFound = "NoLicenseEditionFound"
)

// LicenseEdition_Values returns all elements of the LicenseEdition enum
func LicenseEdition_Values() []string {
	return []string{
		LicenseEditionEnterprise,
		LicenseEditionStandard,
		LicenseEditionFree,
		LicenseEditionNoLicenseEditionFound,
	}
}

const (
	// LicenseFindingInsufficientMetrics is a LicenseFinding enum value
	LicenseFindingInsufficientMetrics = "InsufficientMetrics"

	// LicenseFindingOptimized is a LicenseFinding enum value
	LicenseFindingOptimized = "Optimized"

	// LicenseFindingNotOptimized is a LicenseFinding enum value
	LicenseFindingNotOptimized = "NotOptimized"
)

// LicenseFinding_Values returns all elements of the LicenseFinding enum
func LicenseFinding_Values() []string {
	return []string{
		LicenseFindingInsufficientMetrics,
		LicenseFindingOptimized,
		LicenseFindingNotOptimized,
	}
}

const (
	// LicenseFindingReasonCodeInvalidCloudWatchApplicationInsightsSetup is a LicenseFindingReasonCode enum value
	LicenseFindingReasonCodeInvalidCloudWatchApplicationInsightsSetup = "InvalidCloudWatchApplicationInsightsSetup"

	// LicenseFindingReasonCodeCloudWatchApplicationInsightsError is a LicenseFindingReasonCode enum value
	LicenseFindingReasonCodeCloudWatchApplicationInsightsError = "CloudWatchApplicationInsightsError"

	// LicenseFindingReasonCodeLicenseOverprovisioned is a LicenseFindingReasonCode enum value
	LicenseFindingReasonCodeLicenseOverprovisioned = "LicenseOverprovisioned"

	// LicenseFindingReasonCodeOptimized is a LicenseFindingReasonCode enum value
	LicenseFindingReasonCodeOptimized = "Optimized"
)

// LicenseFindingReasonCode_Values returns all elements of the LicenseFindingReasonCode enum
func LicenseFindingReasonCode_Values() []string {
	return []string{
		LicenseFindingReasonCodeInvalidCloudWatchApplicationInsightsSetup,
		LicenseFindingReasonCodeCloudWatchApplicationInsightsError,
		LicenseFindingReasonCodeLicenseOverprovisioned,
		LicenseFindingReasonCodeOptimized,
	}
}

const (
	// LicenseModelLicenseIncluded is a LicenseModel enum value
	LicenseModelLicenseIncluded = "LicenseIncluded"

	// LicenseModelBringYourOwnLicense is a LicenseModel enum value
	LicenseModelBringYourOwnLicense = "BringYourOwnLicense"
)

// LicenseModel_Values returns all elements of the LicenseModel enum
func LicenseModel_Values() []string {
	return []string{
		LicenseModelLicenseIncluded,
		LicenseModelBringYourOwnLicense,
	}
}

const (
	// LicenseNameSqlserver is a LicenseName enum value
	LicenseNameSqlserver = "SQLServer"
)

// LicenseName_Values returns all elements of the LicenseName enum
func LicenseName_Values() []string {
	return []string{
		LicenseNameSqlserver,
	}
}

const (
	// LicenseRecommendationFilterNameFinding is a LicenseRecommendationFilterName enum value
	LicenseRecommendationFilterNameFinding = "Finding"

	// LicenseRecommendationFilterNameFindingReasonCode is a LicenseRecommendationFilterName enum value
	LicenseRecommendationFilterNameFindingReasonCode = "FindingReasonCode"

	// LicenseRecommendationFilterNameLicenseName is a LicenseRecommendationFilterName enum value
	LicenseRecommendationFilterNameLicenseName = "LicenseName"
)

// LicenseRecommendationFilterName_Values returns all elements of the LicenseRecommendationFilterName enum
func LicenseRecommendationFilterName_Values() []string {
	return []string{
		LicenseRecommendationFilterNameFinding,
		LicenseRecommendationFilterNameFindingReasonCode,
		LicenseRecommendationFilterNameLicenseName,
	}
}

const (
	// LookBackPeriodPreferenceDays14 is a LookBackPeriodPreference enum value
	LookBackPeriodPreferenceDays14 = "DAYS_14"

	// LookBackPeriodPreferenceDays32 is a LookBackPeriodPreference enum value
	LookBackPeriodPreferenceDays32 = "DAYS_32"

	// LookBackPeriodPreferenceDays93 is a LookBackPeriodPreference enum value
	LookBackPeriodPreferenceDays93 = "DAYS_93"
)

// LookBackPeriodPreference_Values returns all elements of the LookBackPeriodPreference enum
func LookBackPeriodPreference_Values() []string {
	return []string{
		LookBackPeriodPreferenceDays14,
		LookBackPeriodPreferenceDays32,
		LookBackPeriodPreferenceDays93,
	}
}

const (
	// MetricNameCpu is a MetricName enum value
	MetricNameCpu = "Cpu"

	// MetricNameMemory is a MetricName enum value
	MetricNameMemory = "Memory"

	// MetricNameEbsReadOpsPerSecond is a MetricName enum value
	MetricNameEbsReadOpsPerSecond = "EBS_READ_OPS_PER_SECOND"

	// MetricNameEbsWriteOpsPerSecond is a MetricName enum value
	MetricNameEbsWriteOpsPerSecond = "EBS_WRITE_OPS_PER_SECOND"

	// MetricNameEbsReadBytesPerSecond is a MetricName enum value
	MetricNameEbsReadBytesPerSecond = "EBS_READ_BYTES_PER_SECOND"

	// MetricNameEbsWriteBytesPerSecond is a MetricName enum value
	MetricNameEbsWriteBytesPerSecond = "EBS_WRITE_BYTES_PER_SECOND"

	// MetricNameDiskReadOpsPerSecond is a MetricName enum value
	MetricNameDiskReadOpsPerSecond = "DISK_READ_OPS_PER_SECOND"

	// MetricNameDiskWriteOpsPerSecond is a MetricName enum value
	MetricNameDiskWriteOpsPerSecond = "DISK_WRITE_OPS_PER_SECOND"

	// MetricNameDiskReadBytesPerSecond is a MetricName enum value
	MetricNameDiskReadBytesPerSecond = "DISK_READ_BYTES_PER_SECOND"

	// MetricNameDiskWriteBytesPerSecond is a MetricName enum value
	MetricNameDiskWriteBytesPerSecond = "DISK_WRITE_BYTES_PER_SECOND"

	// MetricNameNetworkInBytesPerSecond is a MetricName enum value
	MetricNameNetworkInBytesPerSecond = "NETWORK_IN_BYTES_PER_SECOND"

	// MetricNameNetworkOutBytesPerSecond is a MetricName enum value
	MetricNameNetworkOutBytesPerSecond = "NETWORK_OUT_BYTES_PER_SECOND"

	// MetricNameNetworkPacketsInPerSecond is a MetricName enum value
	MetricNameNetworkPacketsInPerSecond = "NETWORK_PACKETS_IN_PER_SECOND"

	// MetricNameNetworkPacketsOutPerSecond is a MetricName enum value
	MetricNameNetworkPacketsOutPerSecond = "NETWORK_PACKETS_OUT_PER_SECOND"

	// MetricNameGpuPercentage is a MetricName enum value
	MetricNameGpuPercentage = "GPU_PERCENTAGE"

	// MetricNameGpuMemoryPercentage is a MetricName enum value
	MetricNameGpuMemoryPercentage = "GPU_MEMORY_PERCENTAGE"
)

// MetricName_Values returns all elements of the MetricName enum
func MetricName_Values() []string {
	return []string{
		MetricNameCpu,
		MetricNameMemory,
		MetricNameEbsReadOpsPerSecond,
		MetricNameEbsWriteOpsPerSecond,
		MetricNameEbsReadBytesPerSecond,
		MetricNameEbsWriteBytesPerSecond,
		MetricNameDiskReadOpsPerSecond,
		MetricNameDiskWriteOpsPerSecond,
		MetricNameDiskReadBytesPerSecond,
		MetricNameDiskWriteBytesPerSecond,
		MetricNameNetworkInBytesPerSecond,
		MetricNameNetworkOutBytesPerSecond,
		MetricNameNetworkPacketsInPerSecond,
		MetricNameNetworkPacketsOutPerSecond,
		MetricNameGpuPercentage,
		MetricNameGpuMemoryPercentage,
	}
}

const (
	// MetricSourceProviderCloudWatchApplicationInsights is a MetricSourceProvider enum value
	MetricSourceProviderCloudWatchApplicationInsights = "CloudWatchApplicationInsights"
)

// MetricSourceProvider_Values returns all elements of the MetricSourceProvider enum
func MetricSourceProvider_Values() []string {
	return []string{
		MetricSourceProviderCloudWatchApplicationInsights,
	}
}

const (
	// MetricStatisticMaximum is a MetricStatistic enum value
	MetricStatisticMaximum = "Maximum"

	// MetricStatisticAverage is a MetricStatistic enum value
	MetricStatisticAverage = "Average"
)

// MetricStatistic_Values returns all elements of the MetricStatistic enum
func MetricStatistic_Values() []string {
	return []string{
		MetricStatisticMaximum,
		MetricStatisticAverage,
	}
}

const (
	// MigrationEffortVeryLow is a MigrationEffort enum value
	MigrationEffortVeryLow = "VeryLow"

	// MigrationEffortLow is a MigrationEffort enum value
	MigrationEffortLow = "Low"

	// MigrationEffortMedium is a MigrationEffort enum value
	MigrationEffortMedium = "Medium"

	// MigrationEffortHigh is a MigrationEffort enum value
	MigrationEffortHigh = "High"
)

// MigrationEffort_Values returns all elements of the MigrationEffort enum
func MigrationEffort_Values() []string {
	return []string{
		MigrationEffortVeryLow,
		MigrationEffortLow,
		MigrationEffortMedium,
		MigrationEffortHigh,
	}
}

const (
	// PlatformDifferenceHypervisor is a PlatformDifference enum value
	PlatformDifferenceHypervisor = "Hypervisor"

	// PlatformDifferenceNetworkInterface is a PlatformDifference enum value
	PlatformDifferenceNetworkInterface = "NetworkInterface"

	// PlatformDifferenceStorageInterface is a PlatformDifference enum value
	PlatformDifferenceStorageInterface = "StorageInterface"

	// PlatformDifferenceInstanceStoreAvailability is a PlatformDifference enum value
	PlatformDifferenceInstanceStoreAvailability = "InstanceStoreAvailability"

	// PlatformDifferenceVirtualizationType is a PlatformDifference enum value
	PlatformDifferenceVirtualizationType = "VirtualizationType"

	// PlatformDifferenceArchitecture is a PlatformDifference enum value
	PlatformDifferenceArchitecture = "Architecture"
)

// PlatformDifference_Values returns all elements of the PlatformDifference enum
func PlatformDifference_Values() []string {
	return []string{
		PlatformDifferenceHypervisor,
		PlatformDifferenceNetworkInterface,
		PlatformDifferenceStorageInterface,
		PlatformDifferenceInstanceStoreAvailability,
		PlatformDifferenceVirtualizationType,
		PlatformDifferenceArchitecture,
	}
}

const (
	// PreferredResourceNameEc2instanceTypes is a PreferredResourceName enum value
	PreferredResourceNameEc2instanceTypes = "Ec2InstanceTypes"
)

// PreferredResourceName_Values returns all elements of the PreferredResourceName enum
func PreferredResourceName_Values() []string {
	return []string{
		PreferredResourceNameEc2instanceTypes,
	}
}

const (
	// RecommendationPreferenceNameEnhancedInfrastructureMetrics is a RecommendationPreferenceName enum value
	RecommendationPreferenceNameEnhancedInfrastructureMetrics = "EnhancedInfrastructureMetrics"

	// RecommendationPreferenceNameInferredWorkloadTypes is a RecommendationPreferenceName enum value
	RecommendationPreferenceNameInferredWorkloadTypes = "InferredWorkloadTypes"

	// RecommendationPreferenceNameExternalMetricsPreference is a RecommendationPreferenceName enum value
	RecommendationPreferenceNameExternalMetricsPreference = "ExternalMetricsPreference"

	// RecommendationPreferenceNameLookBackPeriodPreference is a RecommendationPreferenceName enum value
	RecommendationPreferenceNameLookBackPeriodPreference = "LookBackPeriodPreference"

	// RecommendationPreferenceNamePreferredResources is a RecommendationPreferenceName enum value
	RecommendationPreferenceNamePreferredResources = "PreferredResources"

	// RecommendationPreferenceNameUtilizationPreferences is a RecommendationPreferenceName enum value
	RecommendationPreferenceNameUtilizationPreferences = "UtilizationPreferences"
)

// RecommendationPreferenceName_Values returns all elements of the RecommendationPreferenceName enum
func RecommendationPreferenceName_Values() []string {
	return []string{
		RecommendationPreferenceNameEnhancedInfrastructureMetrics,
		RecommendationPreferenceNameInferredWorkloadTypes,
		RecommendationPreferenceNameExternalMetricsPreference,
		RecommendationPreferenceNameLookBackPeriodPreference,
		RecommendationPreferenceNamePreferredResources,
		RecommendationPreferenceNameUtilizationPreferences,
	}
}

const (
	// RecommendationSourceTypeEc2instance is a RecommendationSourceType enum value
	RecommendationSourceTypeEc2instance = "Ec2Instance"

	// RecommendationSourceTypeAutoScalingGroup is a RecommendationSourceType enum value
	RecommendationSourceTypeAutoScalingGroup = "AutoScalingGroup"

	// RecommendationSourceTypeEbsVolume is a RecommendationSourceType enum value
	RecommendationSourceTypeEbsVolume = "EbsVolume"

	// RecommendationSourceTypeLambdaFunction is a RecommendationSourceType enum value
	RecommendationSourceTypeLambdaFunction = "LambdaFunction"

	// RecommendationSourceTypeEcsService is a RecommendationSourceType enum value
	RecommendationSourceTypeEcsService = "EcsService"

	// RecommendationSourceTypeLicense is a RecommendationSourceType enum value
	RecommendationSourceTypeLicense = "License"
)

// RecommendationSourceType_Values returns all elements of the RecommendationSourceType enum
func RecommendationSourceType_Values() []string {
	return []string{
		RecommendationSourceTypeEc2instance,
		RecommendationSourceTypeAutoScalingGroup,
		RecommendationSourceTypeEbsVolume,
		RecommendationSourceTypeLambdaFunction,
		RecommendationSourceTypeEcsService,
		RecommendationSourceTypeLicense,
	}
}

const (
	// ResourceTypeEc2instance is a ResourceType enum value
	ResourceTypeEc2instance = "Ec2Instance"

	// ResourceTypeAutoScalingGroup is a ResourceType enum value
	ResourceTypeAutoScalingGroup = "AutoScalingGroup"

	// ResourceTypeEbsVolume is a ResourceType enum value
	ResourceTypeEbsVolume = "EbsVolume"

	// ResourceTypeLambdaFunction is a ResourceType enum value
	ResourceTypeLambdaFunction = "LambdaFunction"

	// ResourceTypeNotApplicable is a ResourceType enum value
	ResourceTypeNotApplicable = "NotApplicable"

	// ResourceTypeEcsService is a ResourceType enum value
	ResourceTypeEcsService = "EcsService"

	// ResourceTypeLicense is a ResourceType enum value
	ResourceTypeLicense = "License"
)

// ResourceType_Values returns all elements of the ResourceType enum
func ResourceType_Values() []string {
	return []string{
		ResourceTypeEc2instance,
		ResourceTypeAutoScalingGroup,
		ResourceTypeEbsVolume,
		ResourceTypeLambdaFunction,
		ResourceTypeNotApplicable,
		ResourceTypeEcsService,
		ResourceTypeLicense,
	}
}

const (
	// SavingsEstimationModeAfterDiscounts is a SavingsEstimationMode enum value
	SavingsEstimationModeAfterDiscounts = "AfterDiscounts"

	// SavingsEstimationModeBeforeDiscounts is a SavingsEstimationMode enum value
	SavingsEstimationModeBeforeDiscounts = "BeforeDiscounts"
)

// SavingsEstimationMode_Values returns all elements of the SavingsEstimationMode enum
func SavingsEstimationMode_Values() []string {
	return []string{
		SavingsEstimationModeAfterDiscounts,
		SavingsEstimationModeBeforeDiscounts,
	}
}

const (
	// ScopeNameOrganization is a ScopeName enum value
	ScopeNameOrganization = "Organization"

	// ScopeNameAccountId is a ScopeName enum value
	ScopeNameAccountId = "AccountId"

	// ScopeNameResourceArn is a ScopeName enum value
	ScopeNameResourceArn = "ResourceArn"
)

// ScopeName_Values returns all elements of the ScopeName enum
func ScopeName_Values() []string {
	return []string{
		ScopeNameOrganization,
		ScopeNameAccountId,
		ScopeNameResourceArn,
	}
}

const (
	// StatusActive is a Status enum value
	StatusActive = "Active"

	// StatusInactive is a Status enum value
	StatusInactive = "Inactive"

	// StatusPending is a Status enum value
	StatusPending = "Pending"

	// StatusFailed is a Status enum value
	StatusFailed = "Failed"
)

// Status_Values returns all elements of the Status enum
func Status_Values() []string {
	return []string{
		StatusActive,
		StatusInactive,
		StatusPending,
		StatusFailed,
	}
}
© 2026 GrazzMean
Beegazpacho


Let’s  Start  Your  Online  Journey  with  Beegazpacho 

Welcome to Beegazpacho,
where creativity meets strategy,
and innovation drives success.


Contact
Now


OUR CLIENTS

WhatsApp-Image-2021-12-06.png
Untitled-design-11.png
niaf-logo.png
20220406-163308-scaled.jpg
karchi-logo.png
20220405-171252.png
20220405-171309.png
20220321-161603.png
20220321-161611.png
20220321-161628.png
20220321-161244.png
20220321-161256.png
20220321-161450.png
20220321-161205.png
20220226-170222.png
20220321-161051.png
20211202-170852.png
Untitled-design-9
pidilite-png-logo-colour
logo-black-e1706125740216-qisosldqhzgcaerhdt6n4t3m4s50jr0iik48z0h5vk
Fraikin-Dayim-logo-1
hpcl-logo-2-1
services

Transforming Ideas into
Success

.01
Digital Marketing

We drive growth through data-driven strategies and cutting-edge techniques.

Learn More

.02
SEO

Improve your online visibility and rank higher on search engines with our expert SEO services.

Learn More

.03
Website Designing

We design websites that are not only visually stunning but also user-centric, ensuring seamless navigation and enhanced user experience.

Learn More

.04
App Development

Our apps are crafted to be intuitive, engaging, and functional, providing your users with an exceptional mobile experience.

Learn More

.05
Social Media Ads

Target the right audience with precision and creativity to maximize engagement and conversions.

Learn More

.06
Google Ads

Maximize ROI with precision-targeted campaigns on Google’s powerful ad platform.

Learn More

.07
Google My Business

Optimize your local presence with strategies that put your business on the map and attract more customers.

Learn More

.08
Graphic Designing

Our designs tell your brand’s story in a visually compelling way.

Learn More

.09
3D Videos

Bring your product to life with immersive and dynamic 3D explainer videos.

Learn More

about BEEGAZPACHO

creating special Things
For special brands

Join the ranks of successful brands by partnering with Beegazpacho

00+

Happy Customer

00+

Continents

Our vision is not just to be a service provider but to be your partner in growth. We see ourselves as an extension of your team, working tirelessly to ensure that your brand not only meets its goals but surpasses them.

Explore
more

Our Recent Work

Crafted with Passion and Precision

Connect now


Web Design
Design, Development & Identity

Logo Design
Design, Development & Identity

Creative Brand design
Design, Development & Identity

Product Design Marketing
Design, Development & Identity

DIGITAL MARKETING
SEO
WEBSITE DESIGNING
APP DEVELOPMENT
SOCIAL MEDIA ADS
GOOGLE ADS
GOOGLE MY BUSINESS
GRAPHIC DESINING
3D VIDEOS
Client Stories

Hear It from Those Who Know Us Best

Our clients’ success stories speak volumes about our commitment to excellence. Don’t just take our word for it—hear directly from the brands we’ve partnered with. Their testimonials highlight our ability to bring visions to life and create a lasting impact on their businesses.

“Beegazpacho feels like an extension of our team. Their content marketing and social media expertise have elevated our brand. They listen, adapt, and always deliver on time. We look forward to continuing this partnership.”

— Sarah Williams

Head of Marketing, GreenPlanet Apparel

“Beegazpacho’s data-driven strategies helped us improve our online ads, optimize our website, and enhance branding. We’ve seen great ROI and increased visibility. Their professionalism is unmatched.”

— Arvind Shah

CEO, InnovateTech Solutions

“Partnering with Beegazpacho has been a game-changer for our brand. Their creative ad campaigns and SEO services have boosted our online presence and significantly increased leads and sales. We couldn’t ask for a better partner!”

— Rina Kapoor

Marketing Director, Luxury Home Interiors

“Beegazpacho feels like an extension of our team. Their content marketing and social media expertise have elevated our brand. They listen, adapt, and always deliver on time. We look forward to continuing this partnership.”

— Sarah Williams

Head of Marketing, GreenPlanet Apparel

“Beegazpacho’s data-driven strategies helped us improve our online ads, optimize our website, and enhance branding. We’ve seen great ROI and increased visibility. Their professionalism is unmatched.”

— Arvind Shah

CEO, InnovateTech Solutions

“Partnering with Beegazpacho has been a game-changer for our brand. Their creative ad campaigns and SEO services have boosted our online presence and significantly increased leads and sales. We couldn’t ask for a better partner!”

— Rina Kapoor

Marketing Director, Luxury Home Interiors