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

package rds

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/query"
)

const opAddRoleToDBCluster = "AddRoleToDBCluster"

// AddRoleToDBClusterRequest generates a "aws/request.Request" representing the
// client's request for the AddRoleToDBCluster 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 AddRoleToDBCluster for more information on using the AddRoleToDBCluster
// 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 AddRoleToDBClusterRequest method.
//	req, resp := client.AddRoleToDBClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/AddRoleToDBCluster
func (c *RDS) AddRoleToDBClusterRequest(input *AddRoleToDBClusterInput) (req *request.Request, output *AddRoleToDBClusterOutput) {
	op := &request.Operation{
		Name:       opAddRoleToDBCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &AddRoleToDBClusterInput{}
	}

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

// AddRoleToDBCluster API operation for Amazon Relational Database Service.
//
// Associates an Identity and Access Management (IAM) role with a DB cluster.
//
// 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 Amazon Relational Database Service's
// API operation AddRoleToDBCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeDBClusterRoleAlreadyExistsFault "DBClusterRoleAlreadyExists"
//     The specified IAM role Amazon Resource Name (ARN) is already associated with
//     the specified DB cluster.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeDBClusterRoleQuotaExceededFault "DBClusterRoleQuotaExceeded"
//     You have exceeded the maximum number of IAM roles that can be associated
//     with the specified DB cluster.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/AddRoleToDBCluster
func (c *RDS) AddRoleToDBCluster(input *AddRoleToDBClusterInput) (*AddRoleToDBClusterOutput, error) {
	req, out := c.AddRoleToDBClusterRequest(input)
	return out, req.Send()
}

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

const opAddRoleToDBInstance = "AddRoleToDBInstance"

// AddRoleToDBInstanceRequest generates a "aws/request.Request" representing the
// client's request for the AddRoleToDBInstance 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 AddRoleToDBInstance for more information on using the AddRoleToDBInstance
// 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 AddRoleToDBInstanceRequest method.
//	req, resp := client.AddRoleToDBInstanceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/AddRoleToDBInstance
func (c *RDS) AddRoleToDBInstanceRequest(input *AddRoleToDBInstanceInput) (req *request.Request, output *AddRoleToDBInstanceOutput) {
	op := &request.Operation{
		Name:       opAddRoleToDBInstance,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &AddRoleToDBInstanceInput{}
	}

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

// AddRoleToDBInstance API operation for Amazon Relational Database Service.
//
// Associates an Amazon Web Services Identity and Access Management (IAM) role
// with a DB instance.
//
// To add a role to a DB instance, the status of the DB instance must be available.
//
// This command doesn't apply to RDS Custom.
//
// 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 Amazon Relational Database Service's
// API operation AddRoleToDBInstance for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeDBInstanceRoleAlreadyExistsFault "DBInstanceRoleAlreadyExists"
//     The specified RoleArn or FeatureName value is already associated with the
//     DB instance.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeDBInstanceRoleQuotaExceededFault "DBInstanceRoleQuotaExceeded"
//     You can't associate any more Amazon Web Services Identity and Access Management
//     (IAM) roles with the DB instance because the quota has been reached.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/AddRoleToDBInstance
func (c *RDS) AddRoleToDBInstance(input *AddRoleToDBInstanceInput) (*AddRoleToDBInstanceOutput, error) {
	req, out := c.AddRoleToDBInstanceRequest(input)
	return out, req.Send()
}

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

const opAddSourceIdentifierToSubscription = "AddSourceIdentifierToSubscription"

// AddSourceIdentifierToSubscriptionRequest generates a "aws/request.Request" representing the
// client's request for the AddSourceIdentifierToSubscription 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 AddSourceIdentifierToSubscription for more information on using the AddSourceIdentifierToSubscription
// 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 AddSourceIdentifierToSubscriptionRequest method.
//	req, resp := client.AddSourceIdentifierToSubscriptionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/AddSourceIdentifierToSubscription
func (c *RDS) AddSourceIdentifierToSubscriptionRequest(input *AddSourceIdentifierToSubscriptionInput) (req *request.Request, output *AddSourceIdentifierToSubscriptionOutput) {
	op := &request.Operation{
		Name:       opAddSourceIdentifierToSubscription,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &AddSourceIdentifierToSubscriptionInput{}
	}

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

// AddSourceIdentifierToSubscription API operation for Amazon Relational Database Service.
//
// Adds a source identifier to an existing RDS event notification subscription.
//
// 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 Amazon Relational Database Service's
// API operation AddSourceIdentifierToSubscription for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeSubscriptionNotFoundFault "SubscriptionNotFound"
//     The subscription name does not exist.
//
//   - ErrCodeSourceNotFoundFault "SourceNotFound"
//     The requested source could not be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/AddSourceIdentifierToSubscription
func (c *RDS) AddSourceIdentifierToSubscription(input *AddSourceIdentifierToSubscriptionInput) (*AddSourceIdentifierToSubscriptionOutput, error) {
	req, out := c.AddSourceIdentifierToSubscriptionRequest(input)
	return out, req.Send()
}

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

const opAddTagsToResource = "AddTagsToResource"

// AddTagsToResourceRequest generates a "aws/request.Request" representing the
// client's request for the AddTagsToResource 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 AddTagsToResource for more information on using the AddTagsToResource
// 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 AddTagsToResourceRequest method.
//	req, resp := client.AddTagsToResourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/AddTagsToResource
func (c *RDS) AddTagsToResourceRequest(input *AddTagsToResourceInput) (req *request.Request, output *AddTagsToResourceOutput) {
	op := &request.Operation{
		Name:       opAddTagsToResource,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &AddTagsToResourceInput{}
	}

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

// AddTagsToResource API operation for Amazon Relational Database Service.
//
// Adds metadata tags to an Amazon RDS resource. These tags can also be used
// with cost allocation reporting to track cost associated with Amazon RDS resources,
// or used in a Condition statement in an IAM policy for Amazon RDS.
//
// For an overview on tagging your relational database resources, see Tagging
// Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
// or Tagging Amazon Aurora and Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html).
//
// 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 Amazon Relational Database Service's
// API operation AddTagsToResource for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeDBSnapshotNotFoundFault "DBSnapshotNotFound"
//     DBSnapshotIdentifier doesn't refer to an existing DB snapshot.
//
//   - ErrCodeDBProxyNotFoundFault "DBProxyNotFoundFault"
//     The specified proxy name doesn't correspond to a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBProxyTargetGroupNotFoundFault "DBProxyTargetGroupNotFoundFault"
//     The specified target group isn't available for a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeBlueGreenDeploymentNotFoundFault "BlueGreenDeploymentNotFoundFault"
//     BlueGreenDeploymentIdentifier doesn't refer to an existing blue/green deployment.
//
//   - ErrCodeIntegrationNotFoundFault "IntegrationNotFoundFault"
//     The specified integration could not be found.
//
//   - ErrCodeTenantDatabaseNotFoundFault "TenantDatabaseNotFound"
//     The specified tenant database wasn't found in the DB instance.
//
//   - ErrCodeDBSnapshotTenantDatabaseNotFoundFault "DBSnapshotTenantDatabaseNotFoundFault"
//     The specified snapshot tenant database wasn't found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/AddTagsToResource
func (c *RDS) AddTagsToResource(input *AddTagsToResourceInput) (*AddTagsToResourceOutput, error) {
	req, out := c.AddTagsToResourceRequest(input)
	return out, req.Send()
}

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

const opApplyPendingMaintenanceAction = "ApplyPendingMaintenanceAction"

// ApplyPendingMaintenanceActionRequest generates a "aws/request.Request" representing the
// client's request for the ApplyPendingMaintenanceAction 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 ApplyPendingMaintenanceAction for more information on using the ApplyPendingMaintenanceAction
// 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 ApplyPendingMaintenanceActionRequest method.
//	req, resp := client.ApplyPendingMaintenanceActionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ApplyPendingMaintenanceAction
func (c *RDS) ApplyPendingMaintenanceActionRequest(input *ApplyPendingMaintenanceActionInput) (req *request.Request, output *ApplyPendingMaintenanceActionOutput) {
	op := &request.Operation{
		Name:       opApplyPendingMaintenanceAction,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ApplyPendingMaintenanceActionInput{}
	}

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

// ApplyPendingMaintenanceAction API operation for Amazon Relational Database Service.
//
// Applies a pending maintenance action to a resource (for example, to a DB
// instance).
//
// 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 Amazon Relational Database Service's
// API operation ApplyPendingMaintenanceAction for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeResourceNotFoundFault "ResourceNotFoundFault"
//     The specified resource ID was not found.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ApplyPendingMaintenanceAction
func (c *RDS) ApplyPendingMaintenanceAction(input *ApplyPendingMaintenanceActionInput) (*ApplyPendingMaintenanceActionOutput, error) {
	req, out := c.ApplyPendingMaintenanceActionRequest(input)
	return out, req.Send()
}

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

const opAuthorizeDBSecurityGroupIngress = "AuthorizeDBSecurityGroupIngress"

// AuthorizeDBSecurityGroupIngressRequest generates a "aws/request.Request" representing the
// client's request for the AuthorizeDBSecurityGroupIngress 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 AuthorizeDBSecurityGroupIngress for more information on using the AuthorizeDBSecurityGroupIngress
// 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 AuthorizeDBSecurityGroupIngressRequest method.
//	req, resp := client.AuthorizeDBSecurityGroupIngressRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/AuthorizeDBSecurityGroupIngress
func (c *RDS) AuthorizeDBSecurityGroupIngressRequest(input *AuthorizeDBSecurityGroupIngressInput) (req *request.Request, output *AuthorizeDBSecurityGroupIngressOutput) {
	op := &request.Operation{
		Name:       opAuthorizeDBSecurityGroupIngress,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &AuthorizeDBSecurityGroupIngressInput{}
	}

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

// AuthorizeDBSecurityGroupIngress API operation for Amazon Relational Database Service.
//
// Enables ingress to a DBSecurityGroup using one of two forms of authorization.
// First, EC2 or VPC security groups can be added to the DBSecurityGroup if
// the application using the database is running on EC2 or VPC instances. Second,
// IP ranges are available if the application accessing your database is running
// on the internet. Required parameters for this API are one of CIDR range,
// EC2SecurityGroupId for VPC, or (EC2SecurityGroupOwnerId and either EC2SecurityGroupName
// or EC2SecurityGroupId for non-VPC).
//
// You can't authorize ingress from an EC2 security group in one Amazon Web
// Services Region to an Amazon RDS DB instance in another. You can't authorize
// ingress from a VPC security group in one VPC to an Amazon RDS DB instance
// in another.
//
// For an overview of CIDR ranges, go to the Wikipedia Tutorial (http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
//
// EC2-Classic was retired on August 15, 2022. If you haven't migrated from
// EC2-Classic to a VPC, we recommend that you migrate as soon as possible.
// For more information, see Migrate from EC2-Classic to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html)
// in the Amazon EC2 User Guide, the blog EC2-Classic Networking is Retiring
// – Here’s How to Prepare (http://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/),
// and Moving a DB instance not in a VPC into a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.Non-VPC2VPC.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation AuthorizeDBSecurityGroupIngress for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBSecurityGroupNotFoundFault "DBSecurityGroupNotFound"
//     DBSecurityGroupName doesn't refer to an existing DB security group.
//
//   - ErrCodeInvalidDBSecurityGroupStateFault "InvalidDBSecurityGroupState"
//     The state of the DB security group doesn't allow deletion.
//
//   - ErrCodeAuthorizationAlreadyExistsFault "AuthorizationAlreadyExists"
//     The specified CIDR IP range or Amazon EC2 security group is already authorized
//     for the specified DB security group.
//
//   - ErrCodeAuthorizationQuotaExceededFault "AuthorizationQuotaExceeded"
//     The DB security group authorization quota has been reached.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/AuthorizeDBSecurityGroupIngress
func (c *RDS) AuthorizeDBSecurityGroupIngress(input *AuthorizeDBSecurityGroupIngressInput) (*AuthorizeDBSecurityGroupIngressOutput, error) {
	req, out := c.AuthorizeDBSecurityGroupIngressRequest(input)
	return out, req.Send()
}

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

const opBacktrackDBCluster = "BacktrackDBCluster"

// BacktrackDBClusterRequest generates a "aws/request.Request" representing the
// client's request for the BacktrackDBCluster 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 BacktrackDBCluster for more information on using the BacktrackDBCluster
// 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 BacktrackDBClusterRequest method.
//	req, resp := client.BacktrackDBClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/BacktrackDBCluster
func (c *RDS) BacktrackDBClusterRequest(input *BacktrackDBClusterInput) (req *request.Request, output *BacktrackDBClusterOutput) {
	op := &request.Operation{
		Name:       opBacktrackDBCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BacktrackDBClusterInput{}
	}

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

// BacktrackDBCluster API operation for Amazon Relational Database Service.
//
// Backtracks a DB cluster to a specific time, without creating a new DB cluster.
//
// For more information on backtracking, see Backtracking an Aurora DB Cluster
// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Managing.Backtrack.html)
// in the Amazon Aurora User Guide.
//
// This action applies only to Aurora MySQL DB clusters.
//
// 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 Amazon Relational Database Service's
// API operation BacktrackDBCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/BacktrackDBCluster
func (c *RDS) BacktrackDBCluster(input *BacktrackDBClusterInput) (*BacktrackDBClusterOutput, error) {
	req, out := c.BacktrackDBClusterRequest(input)
	return out, req.Send()
}

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

const opCancelExportTask = "CancelExportTask"

// CancelExportTaskRequest generates a "aws/request.Request" representing the
// client's request for the CancelExportTask 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 CancelExportTask for more information on using the CancelExportTask
// 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 CancelExportTaskRequest method.
//	req, resp := client.CancelExportTaskRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CancelExportTask
func (c *RDS) CancelExportTaskRequest(input *CancelExportTaskInput) (req *request.Request, output *CancelExportTaskOutput) {
	op := &request.Operation{
		Name:       opCancelExportTask,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CancelExportTaskInput{}
	}

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

// CancelExportTask API operation for Amazon Relational Database Service.
//
// Cancels an export task in progress that is exporting a snapshot or cluster
// to Amazon S3. Any data that has already been written to the S3 bucket isn't
// removed.
//
// 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 Amazon Relational Database Service's
// API operation CancelExportTask for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeExportTaskNotFoundFault "ExportTaskNotFound"
//     The export task doesn't exist.
//
//   - ErrCodeInvalidExportTaskStateFault "InvalidExportTaskStateFault"
//     You can't cancel an export task that has completed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CancelExportTask
func (c *RDS) CancelExportTask(input *CancelExportTaskInput) (*CancelExportTaskOutput, error) {
	req, out := c.CancelExportTaskRequest(input)
	return out, req.Send()
}

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

const opCopyDBClusterParameterGroup = "CopyDBClusterParameterGroup"

// CopyDBClusterParameterGroupRequest generates a "aws/request.Request" representing the
// client's request for the CopyDBClusterParameterGroup 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 CopyDBClusterParameterGroup for more information on using the CopyDBClusterParameterGroup
// 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 CopyDBClusterParameterGroupRequest method.
//	req, resp := client.CopyDBClusterParameterGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CopyDBClusterParameterGroup
func (c *RDS) CopyDBClusterParameterGroupRequest(input *CopyDBClusterParameterGroupInput) (req *request.Request, output *CopyDBClusterParameterGroupOutput) {
	op := &request.Operation{
		Name:       opCopyDBClusterParameterGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CopyDBClusterParameterGroupInput{}
	}

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

// CopyDBClusterParameterGroup API operation for Amazon Relational Database Service.
//
// Copies the specified DB cluster parameter group.
//
// You can't copy a default DB cluster parameter group. Instead, create a new
// custom DB cluster parameter group, which copies the default parameters and
// values for the specified DB cluster parameter group family.
//
// 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 Amazon Relational Database Service's
// API operation CopyDBClusterParameterGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
//   - ErrCodeDBParameterGroupQuotaExceededFault "DBParameterGroupQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB parameter
//     groups.
//
//   - ErrCodeDBParameterGroupAlreadyExistsFault "DBParameterGroupAlreadyExists"
//     A DB parameter group with the same name exists.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CopyDBClusterParameterGroup
func (c *RDS) CopyDBClusterParameterGroup(input *CopyDBClusterParameterGroupInput) (*CopyDBClusterParameterGroupOutput, error) {
	req, out := c.CopyDBClusterParameterGroupRequest(input)
	return out, req.Send()
}

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

const opCopyDBClusterSnapshot = "CopyDBClusterSnapshot"

// CopyDBClusterSnapshotRequest generates a "aws/request.Request" representing the
// client's request for the CopyDBClusterSnapshot 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 CopyDBClusterSnapshot for more information on using the CopyDBClusterSnapshot
// 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 CopyDBClusterSnapshotRequest method.
//	req, resp := client.CopyDBClusterSnapshotRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CopyDBClusterSnapshot
func (c *RDS) CopyDBClusterSnapshotRequest(input *CopyDBClusterSnapshotInput) (req *request.Request, output *CopyDBClusterSnapshotOutput) {
	op := &request.Operation{
		Name:       opCopyDBClusterSnapshot,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CopyDBClusterSnapshotInput{}
	}

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

// CopyDBClusterSnapshot API operation for Amazon Relational Database Service.
//
// Copies a snapshot of a DB cluster.
//
// To copy a DB cluster snapshot from a shared manual DB cluster snapshot, SourceDBClusterSnapshotIdentifier
// must be the Amazon Resource Name (ARN) of the shared DB cluster snapshot.
//
// You can copy an encrypted DB cluster snapshot from another Amazon Web Services
// Region. In that case, the Amazon Web Services Region where you call the CopyDBClusterSnapshot
// operation is the destination Amazon Web Services Region for the encrypted
// DB cluster snapshot to be copied to. To copy an encrypted DB cluster snapshot
// from another Amazon Web Services Region, you must provide the following values:
//
//   - KmsKeyId - The Amazon Web Services Key Management System (Amazon Web
//     Services KMS) key identifier for the key to use to encrypt the copy of
//     the DB cluster snapshot in the destination Amazon Web Services Region.
//
//   - TargetDBClusterSnapshotIdentifier - The identifier for the new copy
//     of the DB cluster snapshot in the destination Amazon Web Services Region.
//
//   - SourceDBClusterSnapshotIdentifier - The DB cluster snapshot identifier
//     for the encrypted DB cluster snapshot to be copied. This identifier must
//     be in the ARN format for the source Amazon Web Services Region and is
//     the same value as the SourceDBClusterSnapshotIdentifier in the presigned
//     URL.
//
// To cancel the copy operation once it is in progress, delete the target DB
// cluster snapshot identified by TargetDBClusterSnapshotIdentifier while that
// DB cluster snapshot is in "copying" status.
//
// For more information on copying encrypted Amazon Aurora DB cluster snapshots
// from one Amazon Web Services Region to another, see Copying a Snapshot (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_CopySnapshot.html)
// in the Amazon Aurora User Guide.
//
// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation CopyDBClusterSnapshot for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterSnapshotAlreadyExistsFault "DBClusterSnapshotAlreadyExistsFault"
//     The user already has a DB cluster snapshot with the given identifier.
//
//   - ErrCodeDBClusterSnapshotNotFoundFault "DBClusterSnapshotNotFoundFault"
//     DBClusterSnapshotIdentifier doesn't refer to an existing DB cluster snapshot.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidDBClusterSnapshotStateFault "InvalidDBClusterSnapshotStateFault"
//     The supplied value isn't a valid DB cluster snapshot state.
//
//   - ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB snapshots.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CopyDBClusterSnapshot
func (c *RDS) CopyDBClusterSnapshot(input *CopyDBClusterSnapshotInput) (*CopyDBClusterSnapshotOutput, error) {
	req, out := c.CopyDBClusterSnapshotRequest(input)
	return out, req.Send()
}

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

const opCopyDBParameterGroup = "CopyDBParameterGroup"

// CopyDBParameterGroupRequest generates a "aws/request.Request" representing the
// client's request for the CopyDBParameterGroup 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 CopyDBParameterGroup for more information on using the CopyDBParameterGroup
// 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 CopyDBParameterGroupRequest method.
//	req, resp := client.CopyDBParameterGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CopyDBParameterGroup
func (c *RDS) CopyDBParameterGroupRequest(input *CopyDBParameterGroupInput) (req *request.Request, output *CopyDBParameterGroupOutput) {
	op := &request.Operation{
		Name:       opCopyDBParameterGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CopyDBParameterGroupInput{}
	}

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

// CopyDBParameterGroup API operation for Amazon Relational Database Service.
//
// Copies the specified DB parameter group.
//
// You can't copy a default DB parameter group. Instead, create a new custom
// DB parameter group, which copies the default parameters and values for the
// specified DB parameter group family.
//
// 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 Amazon Relational Database Service's
// API operation CopyDBParameterGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
//   - ErrCodeDBParameterGroupAlreadyExistsFault "DBParameterGroupAlreadyExists"
//     A DB parameter group with the same name exists.
//
//   - ErrCodeDBParameterGroupQuotaExceededFault "DBParameterGroupQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB parameter
//     groups.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CopyDBParameterGroup
func (c *RDS) CopyDBParameterGroup(input *CopyDBParameterGroupInput) (*CopyDBParameterGroupOutput, error) {
	req, out := c.CopyDBParameterGroupRequest(input)
	return out, req.Send()
}

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

const opCopyDBSnapshot = "CopyDBSnapshot"

// CopyDBSnapshotRequest generates a "aws/request.Request" representing the
// client's request for the CopyDBSnapshot 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 CopyDBSnapshot for more information on using the CopyDBSnapshot
// 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 CopyDBSnapshotRequest method.
//	req, resp := client.CopyDBSnapshotRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CopyDBSnapshot
func (c *RDS) CopyDBSnapshotRequest(input *CopyDBSnapshotInput) (req *request.Request, output *CopyDBSnapshotOutput) {
	op := &request.Operation{
		Name:       opCopyDBSnapshot,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CopyDBSnapshotInput{}
	}

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

// CopyDBSnapshot API operation for Amazon Relational Database Service.
//
// Copies the specified DB snapshot. The source DB snapshot must be in the available
// state.
//
// You can copy a snapshot from one Amazon Web Services Region to another. In
// that case, the Amazon Web Services Region where you call the CopyDBSnapshot
// operation is the destination Amazon Web Services Region for the DB snapshot
// copy.
//
// This command doesn't apply to RDS Custom.
//
// For more information about copying snapshots, see Copying a DB Snapshot (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html#USER_CopyDBSnapshot)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation CopyDBSnapshot for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBSnapshotAlreadyExistsFault "DBSnapshotAlreadyExists"
//     DBSnapshotIdentifier is already used by an existing snapshot.
//
//   - ErrCodeDBSnapshotNotFoundFault "DBSnapshotNotFound"
//     DBSnapshotIdentifier doesn't refer to an existing DB snapshot.
//
//   - ErrCodeInvalidDBSnapshotStateFault "InvalidDBSnapshotState"
//     The state of the DB snapshot doesn't allow deletion.
//
//   - ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB snapshots.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeCustomAvailabilityZoneNotFoundFault "CustomAvailabilityZoneNotFound"
//     CustomAvailabilityZoneId doesn't refer to an existing custom Availability
//     Zone identifier.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CopyDBSnapshot
func (c *RDS) CopyDBSnapshot(input *CopyDBSnapshotInput) (*CopyDBSnapshotOutput, error) {
	req, out := c.CopyDBSnapshotRequest(input)
	return out, req.Send()
}

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

const opCopyOptionGroup = "CopyOptionGroup"

// CopyOptionGroupRequest generates a "aws/request.Request" representing the
// client's request for the CopyOptionGroup 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 CopyOptionGroup for more information on using the CopyOptionGroup
// 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 CopyOptionGroupRequest method.
//	req, resp := client.CopyOptionGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CopyOptionGroup
func (c *RDS) CopyOptionGroupRequest(input *CopyOptionGroupInput) (req *request.Request, output *CopyOptionGroupOutput) {
	op := &request.Operation{
		Name:       opCopyOptionGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CopyOptionGroupInput{}
	}

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

// CopyOptionGroup API operation for Amazon Relational Database Service.
//
// Copies the specified option group.
//
// 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 Amazon Relational Database Service's
// API operation CopyOptionGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeOptionGroupAlreadyExistsFault "OptionGroupAlreadyExistsFault"
//     The option group you are trying to create already exists.
//
//   - ErrCodeOptionGroupNotFoundFault "OptionGroupNotFoundFault"
//     The specified option group could not be found.
//
//   - ErrCodeOptionGroupQuotaExceededFault "OptionGroupQuotaExceededFault"
//     The quota of 20 option groups was exceeded for this Amazon Web Services account.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CopyOptionGroup
func (c *RDS) CopyOptionGroup(input *CopyOptionGroupInput) (*CopyOptionGroupOutput, error) {
	req, out := c.CopyOptionGroupRequest(input)
	return out, req.Send()
}

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

const opCreateBlueGreenDeployment = "CreateBlueGreenDeployment"

// CreateBlueGreenDeploymentRequest generates a "aws/request.Request" representing the
// client's request for the CreateBlueGreenDeployment 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 CreateBlueGreenDeployment for more information on using the CreateBlueGreenDeployment
// 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 CreateBlueGreenDeploymentRequest method.
//	req, resp := client.CreateBlueGreenDeploymentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateBlueGreenDeployment
func (c *RDS) CreateBlueGreenDeploymentRequest(input *CreateBlueGreenDeploymentInput) (req *request.Request, output *CreateBlueGreenDeploymentOutput) {
	op := &request.Operation{
		Name:       opCreateBlueGreenDeployment,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateBlueGreenDeploymentInput{}
	}

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

// CreateBlueGreenDeployment API operation for Amazon Relational Database Service.
//
// Creates a blue/green deployment.
//
// A blue/green deployment creates a staging environment that copies the production
// environment. In a blue/green deployment, the blue environment is the current
// production environment. The green environment is the staging environment.
// The staging environment stays in sync with the current production environment
// using logical replication.
//
// You can make changes to the databases in the green environment without affecting
// production workloads. For example, you can upgrade the major or minor DB
// engine version, change database parameters, or make schema changes in the
// staging environment. You can thoroughly test changes in the green environment.
// When ready, you can switch over the environments to promote the green environment
// to be the new production environment. The switchover typically takes under
// a minute.
//
// For more information, see Using Amazon RDS Blue/Green Deployments for database
// updates (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments.html)
// in the Amazon RDS User Guide and Using Amazon RDS Blue/Green Deployments
// for database updates (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html)
// in the Amazon Aurora 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 Amazon Relational Database Service's
// API operation CreateBlueGreenDeployment for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeSourceDatabaseNotSupportedFault "SourceDatabaseNotSupportedFault"
//     The source DB instance isn't supported for a blue/green deployment.
//
//   - ErrCodeSourceClusterNotSupportedFault "SourceClusterNotSupportedFault"
//     The source DB cluster isn't supported for a blue/green deployment.
//
//   - ErrCodeBlueGreenDeploymentAlreadyExistsFault "BlueGreenDeploymentAlreadyExistsFault"
//     A blue/green deployment with the specified name already exists.
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
//   - ErrCodeDBClusterParameterGroupNotFoundFault "DBClusterParameterGroupNotFound"
//     DBClusterParameterGroupName doesn't refer to an existing DB cluster parameter
//     group.
//
//   - ErrCodeInstanceQuotaExceededFault "InstanceQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB instances.
//
//   - ErrCodeDBClusterQuotaExceededFault "DBClusterQuotaExceededFault"
//     The user attempted to create a new DB cluster and the user has already reached
//     the maximum allowed DB cluster quota.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateBlueGreenDeployment
func (c *RDS) CreateBlueGreenDeployment(input *CreateBlueGreenDeploymentInput) (*CreateBlueGreenDeploymentOutput, error) {
	req, out := c.CreateBlueGreenDeploymentRequest(input)
	return out, req.Send()
}

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

const opCreateCustomDBEngineVersion = "CreateCustomDBEngineVersion"

// CreateCustomDBEngineVersionRequest generates a "aws/request.Request" representing the
// client's request for the CreateCustomDBEngineVersion 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 CreateCustomDBEngineVersion for more information on using the CreateCustomDBEngineVersion
// 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 CreateCustomDBEngineVersionRequest method.
//	req, resp := client.CreateCustomDBEngineVersionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateCustomDBEngineVersion
func (c *RDS) CreateCustomDBEngineVersionRequest(input *CreateCustomDBEngineVersionInput) (req *request.Request, output *CreateCustomDBEngineVersionOutput) {
	op := &request.Operation{
		Name:       opCreateCustomDBEngineVersion,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateCustomDBEngineVersionInput{}
	}

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

// CreateCustomDBEngineVersion API operation for Amazon Relational Database Service.
//
// Creates a custom DB engine version (CEV).
//
// 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 Amazon Relational Database Service's
// API operation CreateCustomDBEngineVersion for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeCustomDBEngineVersionAlreadyExistsFault "CustomDBEngineVersionAlreadyExistsFault"
//     A CEV with the specified name already exists.
//
//   - ErrCodeCustomDBEngineVersionQuotaExceededFault "CustomDBEngineVersionQuotaExceededFault"
//     You have exceeded your CEV quota.
//
//   - ErrCodeEc2ImagePropertiesNotSupportedFault "Ec2ImagePropertiesNotSupportedFault"
//     The AMI configuration prerequisite has not been met.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeCreateCustomDBEngineVersionFault "CreateCustomDBEngineVersionFault"
//     An error occurred while trying to create the CEV.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateCustomDBEngineVersion
func (c *RDS) CreateCustomDBEngineVersion(input *CreateCustomDBEngineVersionInput) (*CreateCustomDBEngineVersionOutput, error) {
	req, out := c.CreateCustomDBEngineVersionRequest(input)
	return out, req.Send()
}

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

const opCreateDBCluster = "CreateDBCluster"

// CreateDBClusterRequest generates a "aws/request.Request" representing the
// client's request for the CreateDBCluster 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 CreateDBCluster for more information on using the CreateDBCluster
// 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 CreateDBClusterRequest method.
//	req, resp := client.CreateDBClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBCluster
func (c *RDS) CreateDBClusterRequest(input *CreateDBClusterInput) (req *request.Request, output *CreateDBClusterOutput) {
	op := &request.Operation{
		Name:       opCreateDBCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDBClusterInput{}
	}

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

// CreateDBCluster API operation for Amazon Relational Database Service.
//
// Creates a new Amazon Aurora DB cluster or Multi-AZ DB cluster.
//
// If you create an Aurora DB cluster, the request creates an empty cluster.
// You must explicitly create the writer instance for your DB cluster using
// the CreateDBInstance (https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
// operation. If you create a Multi-AZ DB cluster, the request creates a writer
// and two reader DB instances for you, each in a different Availability Zone.
//
// You can use the ReplicationSourceIdentifier parameter to create an Amazon
// Aurora DB cluster as a read replica of another DB cluster or Amazon RDS for
// MySQL or PostgreSQL DB instance. For more information about Amazon Aurora,
// see What is Amazon Aurora? (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// You can also use the ReplicationSourceIdentifier parameter to create a Multi-AZ
// DB cluster read replica with an RDS for MySQL or PostgreSQL DB instance as
// the source. For more information about Multi-AZ DB clusters, see Multi-AZ
// DB cluster deployments (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation CreateDBCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterAlreadyExistsFault "DBClusterAlreadyExistsFault"
//     The user already has a DB cluster with the given identifier.
//
//   - ErrCodeInsufficientDBInstanceCapacityFault "InsufficientDBInstanceCapacity"
//     The specified DB instance class isn't available in the specified Availability
//     Zone.
//
//   - ErrCodeInsufficientStorageClusterCapacityFault "InsufficientStorageClusterCapacity"
//     There is insufficient storage available for the current action. You might
//     be able to resolve this error by updating your subnet group to use different
//     Availability Zones that have more storage available.
//
//   - ErrCodeDBClusterQuotaExceededFault "DBClusterQuotaExceededFault"
//     The user attempted to create a new DB cluster and the user has already reached
//     the maximum allowed DB cluster quota.
//
//   - ErrCodeStorageQuotaExceededFault "StorageQuotaExceeded"
//     The request would result in the user exceeding the allowed amount of storage
//     available across all DB instances.
//
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
//   - ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
//     The DB subnet group doesn't cover all Availability Zones after it's created
//     because of users' change.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidDBSubnetGroupFault "InvalidDBSubnetGroupFault"
//     The DBSubnetGroup doesn't belong to the same VPC as that of an existing cross-region
//     read replica of the same source instance.
//
//   - ErrCodeInvalidDBSubnetGroupStateFault "InvalidDBSubnetGroupStateFault"
//     The DB subnet group cannot be deleted because it's in use.
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeDBClusterParameterGroupNotFoundFault "DBClusterParameterGroupNotFound"
//     DBClusterParameterGroupName doesn't refer to an existing DB cluster parameter
//     group.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeDBSubnetGroupDoesNotCoverEnoughAZs "DBSubnetGroupDoesNotCoverEnoughAZs"
//     Subnets in the DB subnet group should cover at least two Availability Zones
//     unless there is only one Availability Zone.
//
//   - ErrCodeGlobalClusterNotFoundFault "GlobalClusterNotFoundFault"
//     The GlobalClusterIdentifier doesn't refer to an existing global database
//     cluster.
//
//   - ErrCodeInvalidGlobalClusterStateFault "InvalidGlobalClusterStateFault"
//     The global cluster is in an invalid state and can't perform the requested
//     operation.
//
//   - ErrCodeDomainNotFoundFault "DomainNotFoundFault"
//     Domain doesn't refer to an existing Active Directory domain.
//
//   - ErrCodeOptionGroupNotFoundFault "OptionGroupNotFoundFault"
//     The specified option group could not be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBCluster
func (c *RDS) CreateDBCluster(input *CreateDBClusterInput) (*CreateDBClusterOutput, error) {
	req, out := c.CreateDBClusterRequest(input)
	return out, req.Send()
}

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

const opCreateDBClusterEndpoint = "CreateDBClusterEndpoint"

// CreateDBClusterEndpointRequest generates a "aws/request.Request" representing the
// client's request for the CreateDBClusterEndpoint 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 CreateDBClusterEndpoint for more information on using the CreateDBClusterEndpoint
// 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 CreateDBClusterEndpointRequest method.
//	req, resp := client.CreateDBClusterEndpointRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBClusterEndpoint
func (c *RDS) CreateDBClusterEndpointRequest(input *CreateDBClusterEndpointInput) (req *request.Request, output *CreateDBClusterEndpointOutput) {
	op := &request.Operation{
		Name:       opCreateDBClusterEndpoint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDBClusterEndpointInput{}
	}

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

// CreateDBClusterEndpoint API operation for Amazon Relational Database Service.
//
// Creates a new custom endpoint and associates it with an Amazon Aurora DB
// cluster.
//
// This action applies only to Aurora DB clusters.
//
// 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 Amazon Relational Database Service's
// API operation CreateDBClusterEndpoint for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterEndpointQuotaExceededFault "DBClusterEndpointQuotaExceededFault"
//     The cluster already has the maximum number of custom endpoints.
//
//   - ErrCodeDBClusterEndpointAlreadyExistsFault "DBClusterEndpointAlreadyExistsFault"
//     The specified custom endpoint can't be created because it already exists.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBClusterEndpoint
func (c *RDS) CreateDBClusterEndpoint(input *CreateDBClusterEndpointInput) (*CreateDBClusterEndpointOutput, error) {
	req, out := c.CreateDBClusterEndpointRequest(input)
	return out, req.Send()
}

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

const opCreateDBClusterParameterGroup = "CreateDBClusterParameterGroup"

// CreateDBClusterParameterGroupRequest generates a "aws/request.Request" representing the
// client's request for the CreateDBClusterParameterGroup 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 CreateDBClusterParameterGroup for more information on using the CreateDBClusterParameterGroup
// 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 CreateDBClusterParameterGroupRequest method.
//	req, resp := client.CreateDBClusterParameterGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBClusterParameterGroup
func (c *RDS) CreateDBClusterParameterGroupRequest(input *CreateDBClusterParameterGroupInput) (req *request.Request, output *CreateDBClusterParameterGroupOutput) {
	op := &request.Operation{
		Name:       opCreateDBClusterParameterGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDBClusterParameterGroupInput{}
	}

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

// CreateDBClusterParameterGroup API operation for Amazon Relational Database Service.
//
// Creates a new DB cluster parameter group.
//
// Parameters in a DB cluster parameter group apply to all of the instances
// in a DB cluster.
//
// A DB cluster parameter group is initially created with the default parameters
// for the database engine used by instances in the DB cluster. To provide custom
// values for any of the parameters, you must modify the group after creating
// it using ModifyDBClusterParameterGroup. Once you've created a DB cluster
// parameter group, you need to associate it with your DB cluster using ModifyDBCluster.
//
// When you associate a new DB cluster parameter group with a running Aurora
// DB cluster, reboot the DB instances in the DB cluster without failover for
// the new DB cluster parameter group and associated settings to take effect.
//
// When you associate a new DB cluster parameter group with a running Multi-AZ
// DB cluster, reboot the DB cluster without failover for the new DB cluster
// parameter group and associated settings to take effect.
//
// After you create a DB cluster parameter group, you should wait at least 5
// minutes before creating your first DB cluster that uses that DB cluster parameter
// group as the default parameter group. This allows Amazon RDS to fully complete
// the create action before the DB cluster parameter group is used as the default
// for a new DB cluster. This is especially important for parameters that are
// critical when creating the default database for a DB cluster, such as the
// character set for the default database defined by the character_set_database
// parameter. You can use the Parameter Groups option of the Amazon RDS console
// (https://console.aws.amazon.com/rds/) or the DescribeDBClusterParameters
// operation to verify that your DB cluster parameter group has been created
// or modified.
//
// For more information on Amazon Aurora, see What is Amazon Aurora? (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation CreateDBClusterParameterGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBParameterGroupQuotaExceededFault "DBParameterGroupQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB parameter
//     groups.
//
//   - ErrCodeDBParameterGroupAlreadyExistsFault "DBParameterGroupAlreadyExists"
//     A DB parameter group with the same name exists.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBClusterParameterGroup
func (c *RDS) CreateDBClusterParameterGroup(input *CreateDBClusterParameterGroupInput) (*CreateDBClusterParameterGroupOutput, error) {
	req, out := c.CreateDBClusterParameterGroupRequest(input)
	return out, req.Send()
}

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

const opCreateDBClusterSnapshot = "CreateDBClusterSnapshot"

// CreateDBClusterSnapshotRequest generates a "aws/request.Request" representing the
// client's request for the CreateDBClusterSnapshot 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 CreateDBClusterSnapshot for more information on using the CreateDBClusterSnapshot
// 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 CreateDBClusterSnapshotRequest method.
//	req, resp := client.CreateDBClusterSnapshotRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBClusterSnapshot
func (c *RDS) CreateDBClusterSnapshotRequest(input *CreateDBClusterSnapshotInput) (req *request.Request, output *CreateDBClusterSnapshotOutput) {
	op := &request.Operation{
		Name:       opCreateDBClusterSnapshot,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDBClusterSnapshotInput{}
	}

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

// CreateDBClusterSnapshot API operation for Amazon Relational Database Service.
//
// Creates a snapshot of a DB cluster.
//
// For more information on Amazon Aurora, see What is Amazon Aurora? (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation CreateDBClusterSnapshot for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterSnapshotAlreadyExistsFault "DBClusterSnapshotAlreadyExistsFault"
//     The user already has a DB cluster snapshot with the given identifier.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB snapshots.
//
//   - ErrCodeInvalidDBClusterSnapshotStateFault "InvalidDBClusterSnapshotStateFault"
//     The supplied value isn't a valid DB cluster snapshot state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBClusterSnapshot
func (c *RDS) CreateDBClusterSnapshot(input *CreateDBClusterSnapshotInput) (*CreateDBClusterSnapshotOutput, error) {
	req, out := c.CreateDBClusterSnapshotRequest(input)
	return out, req.Send()
}

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

const opCreateDBInstance = "CreateDBInstance"

// CreateDBInstanceRequest generates a "aws/request.Request" representing the
// client's request for the CreateDBInstance 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 CreateDBInstance for more information on using the CreateDBInstance
// 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 CreateDBInstanceRequest method.
//	req, resp := client.CreateDBInstanceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBInstance
func (c *RDS) CreateDBInstanceRequest(input *CreateDBInstanceInput) (req *request.Request, output *CreateDBInstanceOutput) {
	op := &request.Operation{
		Name:       opCreateDBInstance,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDBInstanceInput{}
	}

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

// CreateDBInstance API operation for Amazon Relational Database Service.
//
// Creates a new DB instance.
//
// The new DB instance can be an RDS DB instance, or it can be a DB instance
// in an Aurora DB cluster. For an Aurora DB cluster, you can call this operation
// multiple times to add more than one DB instance to the cluster.
//
// For more information about creating an RDS DB instance, see Creating an Amazon
// RDS DB instance (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html)
// in the Amazon RDS User Guide.
//
// For more information about creating a DB instance in an Aurora DB cluster,
// see Creating an Amazon Aurora DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.CreateInstance.html)
// in the Amazon Aurora 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 Amazon Relational Database Service's
// API operation CreateDBInstance for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceAlreadyExistsFault "DBInstanceAlreadyExists"
//     The user already has a DB instance with the given identifier.
//
//   - ErrCodeInsufficientDBInstanceCapacityFault "InsufficientDBInstanceCapacity"
//     The specified DB instance class isn't available in the specified Availability
//     Zone.
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
//   - ErrCodeDBSecurityGroupNotFoundFault "DBSecurityGroupNotFound"
//     DBSecurityGroupName doesn't refer to an existing DB security group.
//
//   - ErrCodeInstanceQuotaExceededFault "InstanceQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB instances.
//
//   - ErrCodeStorageQuotaExceededFault "StorageQuotaExceeded"
//     The request would result in the user exceeding the allowed amount of storage
//     available across all DB instances.
//
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
//   - ErrCodeDBSubnetGroupDoesNotCoverEnoughAZs "DBSubnetGroupDoesNotCoverEnoughAZs"
//     Subnets in the DB subnet group should cover at least two Availability Zones
//     unless there is only one Availability Zone.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
//   - ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
//     The DB subnet group doesn't cover all Availability Zones after it's created
//     because of users' change.
//
//   - ErrCodeProvisionedIopsNotAvailableInAZFault "ProvisionedIopsNotAvailableInAZFault"
//     Provisioned IOPS not available in the specified Availability Zone.
//
//   - ErrCodeOptionGroupNotFoundFault "OptionGroupNotFoundFault"
//     The specified option group could not be found.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeStorageTypeNotSupportedFault "StorageTypeNotSupported"
//     The specified StorageType can't be associated with the DB instance.
//
//   - ErrCodeAuthorizationNotFoundFault "AuthorizationNotFound"
//     The specified CIDR IP range or Amazon EC2 security group might not be authorized
//     for the specified DB security group.
//
//     Or, RDS might not be authorized to perform necessary actions using IAM on
//     your behalf.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeDomainNotFoundFault "DomainNotFoundFault"
//     Domain doesn't refer to an existing Active Directory domain.
//
//   - ErrCodeBackupPolicyNotFoundFault "BackupPolicyNotFoundFault"
//
//   - ErrCodeNetworkTypeNotSupported "NetworkTypeNotSupported"
//     The network type is invalid for the DB instance. Valid nework type values
//     are IPV4 and DUAL.
//
//   - ErrCodeCertificateNotFoundFault "CertificateNotFound"
//     CertificateIdentifier doesn't refer to an existing certificate.
//
//   - ErrCodeTenantDatabaseQuotaExceededFault "TenantDatabaseQuotaExceeded"
//     You attempted to create more tenant databases than are permitted in your
//     Amazon Web Services account.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBInstance
func (c *RDS) CreateDBInstance(input *CreateDBInstanceInput) (*CreateDBInstanceOutput, error) {
	req, out := c.CreateDBInstanceRequest(input)
	return out, req.Send()
}

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

const opCreateDBInstanceReadReplica = "CreateDBInstanceReadReplica"

// CreateDBInstanceReadReplicaRequest generates a "aws/request.Request" representing the
// client's request for the CreateDBInstanceReadReplica 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 CreateDBInstanceReadReplica for more information on using the CreateDBInstanceReadReplica
// 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 CreateDBInstanceReadReplicaRequest method.
//	req, resp := client.CreateDBInstanceReadReplicaRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBInstanceReadReplica
func (c *RDS) CreateDBInstanceReadReplicaRequest(input *CreateDBInstanceReadReplicaInput) (req *request.Request, output *CreateDBInstanceReadReplicaOutput) {
	op := &request.Operation{
		Name:       opCreateDBInstanceReadReplica,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDBInstanceReadReplicaInput{}
	}

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

// CreateDBInstanceReadReplica API operation for Amazon Relational Database Service.
//
// Creates a new DB instance that acts as a read replica for an existing source
// DB instance or Multi-AZ DB cluster. You can create a read replica for a DB
// instance running Db2, MariaDB, MySQL, Oracle, PostgreSQL, or SQL Server.
// You can create a read replica for a Multi-AZ DB cluster running MySQL or
// PostgreSQL. For more information, see Working with read replicas (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html)
// and Migrating from a Multi-AZ DB cluster to a DB instance using a read replica
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html#multi-az-db-clusters-migrating-to-instance-with-read-replica)
// in the Amazon RDS User Guide.
//
// Amazon Aurora doesn't support this operation. To create a DB instance for
// an Aurora DB cluster, use the CreateDBInstance operation.
//
// All read replica DB instances are created with backups disabled. All other
// attributes (including DB security groups and DB parameter groups) are inherited
// from the source DB instance or cluster, except as specified.
//
// Your source DB instance or cluster must have backup retention enabled.
//
// 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 Amazon Relational Database Service's
// API operation CreateDBInstanceReadReplica for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceAlreadyExistsFault "DBInstanceAlreadyExists"
//     The user already has a DB instance with the given identifier.
//
//   - ErrCodeInsufficientDBInstanceCapacityFault "InsufficientDBInstanceCapacity"
//     The specified DB instance class isn't available in the specified Availability
//     Zone.
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
//   - ErrCodeDBSecurityGroupNotFoundFault "DBSecurityGroupNotFound"
//     DBSecurityGroupName doesn't refer to an existing DB security group.
//
//   - ErrCodeInstanceQuotaExceededFault "InstanceQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB instances.
//
//   - ErrCodeStorageQuotaExceededFault "StorageQuotaExceeded"
//     The request would result in the user exceeding the allowed amount of storage
//     available across all DB instances.
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
//   - ErrCodeDBSubnetGroupDoesNotCoverEnoughAZs "DBSubnetGroupDoesNotCoverEnoughAZs"
//     Subnets in the DB subnet group should cover at least two Availability Zones
//     unless there is only one Availability Zone.
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
//   - ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
//     The DB subnet group doesn't cover all Availability Zones after it's created
//     because of users' change.
//
//   - ErrCodeProvisionedIopsNotAvailableInAZFault "ProvisionedIopsNotAvailableInAZFault"
//     Provisioned IOPS not available in the specified Availability Zone.
//
//   - ErrCodeOptionGroupNotFoundFault "OptionGroupNotFoundFault"
//     The specified option group could not be found.
//
//   - ErrCodeDBSubnetGroupNotAllowedFault "DBSubnetGroupNotAllowedFault"
//     The DBSubnetGroup shouldn't be specified while creating read replicas that
//     lie in the same region as the source instance.
//
//   - ErrCodeInvalidDBSubnetGroupFault "InvalidDBSubnetGroupFault"
//     The DBSubnetGroup doesn't belong to the same VPC as that of an existing cross-region
//     read replica of the same source instance.
//
//   - ErrCodeStorageTypeNotSupportedFault "StorageTypeNotSupported"
//     The specified StorageType can't be associated with the DB instance.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeDomainNotFoundFault "DomainNotFoundFault"
//     Domain doesn't refer to an existing Active Directory domain.
//
//   - ErrCodeNetworkTypeNotSupported "NetworkTypeNotSupported"
//     The network type is invalid for the DB instance. Valid nework type values
//     are IPV4 and DUAL.
//
//   - ErrCodeTenantDatabaseQuotaExceededFault "TenantDatabaseQuotaExceeded"
//     You attempted to create more tenant databases than are permitted in your
//     Amazon Web Services account.
//
//   - ErrCodeCertificateNotFoundFault "CertificateNotFound"
//     CertificateIdentifier doesn't refer to an existing certificate.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBInstanceReadReplica
func (c *RDS) CreateDBInstanceReadReplica(input *CreateDBInstanceReadReplicaInput) (*CreateDBInstanceReadReplicaOutput, error) {
	req, out := c.CreateDBInstanceReadReplicaRequest(input)
	return out, req.Send()
}

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

const opCreateDBParameterGroup = "CreateDBParameterGroup"

// CreateDBParameterGroupRequest generates a "aws/request.Request" representing the
// client's request for the CreateDBParameterGroup 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 CreateDBParameterGroup for more information on using the CreateDBParameterGroup
// 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 CreateDBParameterGroupRequest method.
//	req, resp := client.CreateDBParameterGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBParameterGroup
func (c *RDS) CreateDBParameterGroupRequest(input *CreateDBParameterGroupInput) (req *request.Request, output *CreateDBParameterGroupOutput) {
	op := &request.Operation{
		Name:       opCreateDBParameterGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDBParameterGroupInput{}
	}

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

// CreateDBParameterGroup API operation for Amazon Relational Database Service.
//
// Creates a new DB parameter group.
//
// A DB parameter group is initially created with the default parameters for
// the database engine used by the DB instance. To provide custom values for
// any of the parameters, you must modify the group after creating it using
// ModifyDBParameterGroup. Once you've created a DB parameter group, you need
// to associate it with your DB instance using ModifyDBInstance. When you associate
// a new DB parameter group with a running DB instance, you need to reboot the
// DB instance without failover for the new DB parameter group and associated
// settings to take effect.
//
// This command doesn't apply to RDS Custom.
//
// After you create a DB parameter group, you should wait at least 5 minutes
// before creating your first DB instance that uses that DB parameter group
// as the default parameter group. This allows Amazon RDS to fully complete
// the create action before the parameter group is used as the default for a
// new DB instance. This is especially important for parameters that are critical
// when creating the default database for a DB instance, such as the character
// set for the default database defined by the character_set_database parameter.
// You can use the Parameter Groups option of the Amazon RDS console (https://console.aws.amazon.com/rds/)
// or the DescribeDBParameters command to verify that your DB parameter group
// has been created or modified.
//
// 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 Amazon Relational Database Service's
// API operation CreateDBParameterGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBParameterGroupQuotaExceededFault "DBParameterGroupQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB parameter
//     groups.
//
//   - ErrCodeDBParameterGroupAlreadyExistsFault "DBParameterGroupAlreadyExists"
//     A DB parameter group with the same name exists.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBParameterGroup
func (c *RDS) CreateDBParameterGroup(input *CreateDBParameterGroupInput) (*CreateDBParameterGroupOutput, error) {
	req, out := c.CreateDBParameterGroupRequest(input)
	return out, req.Send()
}

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

const opCreateDBProxy = "CreateDBProxy"

// CreateDBProxyRequest generates a "aws/request.Request" representing the
// client's request for the CreateDBProxy 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 CreateDBProxy for more information on using the CreateDBProxy
// 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 CreateDBProxyRequest method.
//	req, resp := client.CreateDBProxyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBProxy
func (c *RDS) CreateDBProxyRequest(input *CreateDBProxyInput) (req *request.Request, output *CreateDBProxyOutput) {
	op := &request.Operation{
		Name:       opCreateDBProxy,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDBProxyInput{}
	}

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

// CreateDBProxy API operation for Amazon Relational Database Service.
//
// Creates a new DB proxy.
//
// 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 Amazon Relational Database Service's
// API operation CreateDBProxy for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
//   - ErrCodeDBProxyAlreadyExistsFault "DBProxyAlreadyExistsFault"
//     The specified proxy name must be unique for all proxies owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBProxyQuotaExceededFault "DBProxyQuotaExceededFault"
//     Your Amazon Web Services account already has the maximum number of proxies
//     in the specified Amazon Web Services Region.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBProxy
func (c *RDS) CreateDBProxy(input *CreateDBProxyInput) (*CreateDBProxyOutput, error) {
	req, out := c.CreateDBProxyRequest(input)
	return out, req.Send()
}

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

const opCreateDBProxyEndpoint = "CreateDBProxyEndpoint"

// CreateDBProxyEndpointRequest generates a "aws/request.Request" representing the
// client's request for the CreateDBProxyEndpoint 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 CreateDBProxyEndpoint for more information on using the CreateDBProxyEndpoint
// 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 CreateDBProxyEndpointRequest method.
//	req, resp := client.CreateDBProxyEndpointRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBProxyEndpoint
func (c *RDS) CreateDBProxyEndpointRequest(input *CreateDBProxyEndpointInput) (req *request.Request, output *CreateDBProxyEndpointOutput) {
	op := &request.Operation{
		Name:       opCreateDBProxyEndpoint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDBProxyEndpointInput{}
	}

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

// CreateDBProxyEndpoint API operation for Amazon Relational Database Service.
//
// Creates a DBProxyEndpoint. Only applies to proxies that are associated with
// Aurora DB clusters. You can use DB proxy endpoints to specify read/write
// or read-only access to the DB cluster. You can also use DB proxy endpoints
// to access a DB proxy through a different VPC than the proxy's default VPC.
//
// 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 Amazon Relational Database Service's
// API operation CreateDBProxyEndpoint for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
//   - ErrCodeDBProxyNotFoundFault "DBProxyNotFoundFault"
//     The specified proxy name doesn't correspond to a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBProxyEndpointAlreadyExistsFault "DBProxyEndpointAlreadyExistsFault"
//     The specified DB proxy endpoint name must be unique for all DB proxy endpoints
//     owned by your Amazon Web Services account in the specified Amazon Web Services
//     Region.
//
//   - ErrCodeDBProxyEndpointQuotaExceededFault "DBProxyEndpointQuotaExceededFault"
//     The DB proxy already has the maximum number of endpoints.
//
//   - ErrCodeInvalidDBProxyStateFault "InvalidDBProxyStateFault"
//     The requested operation can't be performed while the proxy is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBProxyEndpoint
func (c *RDS) CreateDBProxyEndpoint(input *CreateDBProxyEndpointInput) (*CreateDBProxyEndpointOutput, error) {
	req, out := c.CreateDBProxyEndpointRequest(input)
	return out, req.Send()
}

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

const opCreateDBSecurityGroup = "CreateDBSecurityGroup"

// CreateDBSecurityGroupRequest generates a "aws/request.Request" representing the
// client's request for the CreateDBSecurityGroup 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 CreateDBSecurityGroup for more information on using the CreateDBSecurityGroup
// 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 CreateDBSecurityGroupRequest method.
//	req, resp := client.CreateDBSecurityGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBSecurityGroup
func (c *RDS) CreateDBSecurityGroupRequest(input *CreateDBSecurityGroupInput) (req *request.Request, output *CreateDBSecurityGroupOutput) {
	op := &request.Operation{
		Name:       opCreateDBSecurityGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDBSecurityGroupInput{}
	}

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

// CreateDBSecurityGroup API operation for Amazon Relational Database Service.
//
// Creates a new DB security group. DB security groups control access to a DB
// instance.
//
// A DB security group controls access to EC2-Classic DB instances that are
// not in a VPC.
//
// EC2-Classic was retired on August 15, 2022. If you haven't migrated from
// EC2-Classic to a VPC, we recommend that you migrate as soon as possible.
// For more information, see Migrate from EC2-Classic to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html)
// in the Amazon EC2 User Guide, the blog EC2-Classic Networking is Retiring
// – Here’s How to Prepare (http://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/),
// and Moving a DB instance not in a VPC into a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.Non-VPC2VPC.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation CreateDBSecurityGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBSecurityGroupAlreadyExistsFault "DBSecurityGroupAlreadyExists"
//     A DB security group with the name specified in DBSecurityGroupName already
//     exists.
//
//   - ErrCodeDBSecurityGroupQuotaExceededFault "QuotaExceeded.DBSecurityGroup"
//     The request would result in the user exceeding the allowed number of DB security
//     groups.
//
//   - ErrCodeDBSecurityGroupNotSupportedFault "DBSecurityGroupNotSupported"
//     A DB security group isn't allowed for this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBSecurityGroup
func (c *RDS) CreateDBSecurityGroup(input *CreateDBSecurityGroupInput) (*CreateDBSecurityGroupOutput, error) {
	req, out := c.CreateDBSecurityGroupRequest(input)
	return out, req.Send()
}

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

const opCreateDBShardGroup = "CreateDBShardGroup"

// CreateDBShardGroupRequest generates a "aws/request.Request" representing the
// client's request for the CreateDBShardGroup 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 CreateDBShardGroup for more information on using the CreateDBShardGroup
// 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 CreateDBShardGroupRequest method.
//	req, resp := client.CreateDBShardGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBShardGroup
func (c *RDS) CreateDBShardGroupRequest(input *CreateDBShardGroupInput) (req *request.Request, output *CreateDBShardGroupOutput) {
	op := &request.Operation{
		Name:       opCreateDBShardGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDBShardGroupInput{}
	}

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

// CreateDBShardGroup API operation for Amazon Relational Database Service.
//
// Creates a new DB shard group for Aurora Limitless Database. You must enable
// Aurora Limitless Database to create a DB shard group.
//
// Valid for: Aurora DB clusters only
//
// 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 Amazon Relational Database Service's
// API operation CreateDBShardGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBShardGroupAlreadyExistsFault "DBShardGroupAlreadyExists"
//     The specified DB shard group name must be unique in your Amazon Web Services
//     account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeMaxDBShardGroupLimitReached "MaxDBShardGroupLimitReached"
//     The maximum number of DB shard groups for your Amazon Web Services account
//     in the specified Amazon Web Services Region has been reached.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidMaxAcuFault "InvalidMaxAcu"
//     The maximum capacity of the DB shard group must be 48-7168 Aurora capacity
//     units (ACUs).
//
//   - ErrCodeUnsupportedDBEngineVersionFault "UnsupportedDBEngineVersion"
//     The specified DB engine version isn't supported for Aurora Limitless Database.
//
//   - ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
//     The DB subnet group doesn't cover all Availability Zones after it's created
//     because of users' change.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBShardGroup
func (c *RDS) CreateDBShardGroup(input *CreateDBShardGroupInput) (*CreateDBShardGroupOutput, error) {
	req, out := c.CreateDBShardGroupRequest(input)
	return out, req.Send()
}

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

const opCreateDBSnapshot = "CreateDBSnapshot"

// CreateDBSnapshotRequest generates a "aws/request.Request" representing the
// client's request for the CreateDBSnapshot 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 CreateDBSnapshot for more information on using the CreateDBSnapshot
// 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 CreateDBSnapshotRequest method.
//	req, resp := client.CreateDBSnapshotRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBSnapshot
func (c *RDS) CreateDBSnapshotRequest(input *CreateDBSnapshotInput) (req *request.Request, output *CreateDBSnapshotOutput) {
	op := &request.Operation{
		Name:       opCreateDBSnapshot,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDBSnapshotInput{}
	}

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

// CreateDBSnapshot API operation for Amazon Relational Database Service.
//
// Creates a snapshot of a DB instance. The source DB instance must be in the
// available or storage-optimization state.
//
// 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 Amazon Relational Database Service's
// API operation CreateDBSnapshot for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBSnapshotAlreadyExistsFault "DBSnapshotAlreadyExists"
//     DBSnapshotIdentifier is already used by an existing snapshot.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB snapshots.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBSnapshot
func (c *RDS) CreateDBSnapshot(input *CreateDBSnapshotInput) (*CreateDBSnapshotOutput, error) {
	req, out := c.CreateDBSnapshotRequest(input)
	return out, req.Send()
}

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

const opCreateDBSubnetGroup = "CreateDBSubnetGroup"

// CreateDBSubnetGroupRequest generates a "aws/request.Request" representing the
// client's request for the CreateDBSubnetGroup 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 CreateDBSubnetGroup for more information on using the CreateDBSubnetGroup
// 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 CreateDBSubnetGroupRequest method.
//	req, resp := client.CreateDBSubnetGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBSubnetGroup
func (c *RDS) CreateDBSubnetGroupRequest(input *CreateDBSubnetGroupInput) (req *request.Request, output *CreateDBSubnetGroupOutput) {
	op := &request.Operation{
		Name:       opCreateDBSubnetGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDBSubnetGroupInput{}
	}

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

// CreateDBSubnetGroup API operation for Amazon Relational Database Service.
//
// Creates a new DB subnet group. DB subnet groups must contain at least one
// subnet in at least two AZs in the 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 Amazon Relational Database Service's
// API operation CreateDBSubnetGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBSubnetGroupAlreadyExistsFault "DBSubnetGroupAlreadyExists"
//     DBSubnetGroupName is already used by an existing DB subnet group.
//
//   - ErrCodeDBSubnetGroupQuotaExceededFault "DBSubnetGroupQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB subnet
//     groups.
//
//   - ErrCodeDBSubnetQuotaExceededFault "DBSubnetQuotaExceededFault"
//     The request would result in the user exceeding the allowed number of subnets
//     in a DB subnet groups.
//
//   - ErrCodeDBSubnetGroupDoesNotCoverEnoughAZs "DBSubnetGroupDoesNotCoverEnoughAZs"
//     Subnets in the DB subnet group should cover at least two Availability Zones
//     unless there is only one Availability Zone.
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateDBSubnetGroup
func (c *RDS) CreateDBSubnetGroup(input *CreateDBSubnetGroupInput) (*CreateDBSubnetGroupOutput, error) {
	req, out := c.CreateDBSubnetGroupRequest(input)
	return out, req.Send()
}

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

const opCreateEventSubscription = "CreateEventSubscription"

// CreateEventSubscriptionRequest generates a "aws/request.Request" representing the
// client's request for the CreateEventSubscription 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 CreateEventSubscription for more information on using the CreateEventSubscription
// 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 CreateEventSubscriptionRequest method.
//	req, resp := client.CreateEventSubscriptionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateEventSubscription
func (c *RDS) CreateEventSubscriptionRequest(input *CreateEventSubscriptionInput) (req *request.Request, output *CreateEventSubscriptionOutput) {
	op := &request.Operation{
		Name:       opCreateEventSubscription,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateEventSubscriptionInput{}
	}

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

// CreateEventSubscription API operation for Amazon Relational Database Service.
//
// Creates an RDS event notification subscription. This operation requires a
// topic Amazon Resource Name (ARN) created by either the RDS console, the SNS
// console, or the SNS API. To obtain an ARN with SNS, you must create a topic
// in Amazon SNS and subscribe to the topic. The ARN is displayed in the SNS
// console.
//
// You can specify the type of source (SourceType) that you want to be notified
// of and provide a list of RDS sources (SourceIds) that triggers the events.
// You can also provide a list of event categories (EventCategories) for events
// that you want to be notified of. For example, you can specify SourceType
// = db-instance, SourceIds = mydbinstance1, mydbinstance2 and EventCategories
// = Availability, Backup.
//
// If you specify both the SourceType and SourceIds, such as SourceType = db-instance
// and SourceIds = myDBInstance1, you are notified of all the db-instance events
// for the specified source. If you specify a SourceType but do not specify
// SourceIds, you receive notice of the events for that source type for all
// your RDS sources. If you don't specify either the SourceType or the SourceIds,
// you are notified of events generated from all RDS sources belonging to your
// customer account.
//
// For more information about subscribing to an event for RDS DB engines, see
// Subscribing to Amazon RDS event notification (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Subscribing.html)
// in the Amazon RDS User Guide.
//
// For more information about subscribing to an event for Aurora DB engines,
// see Subscribing to Amazon RDS event notification (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Events.Subscribing.html)
// in the Amazon Aurora 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 Amazon Relational Database Service's
// API operation CreateEventSubscription for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeEventSubscriptionQuotaExceededFault "EventSubscriptionQuotaExceeded"
//     You have reached the maximum number of event subscriptions.
//
//   - ErrCodeSubscriptionAlreadyExistFault "SubscriptionAlreadyExist"
//     The supplied subscription name already exists.
//
//   - ErrCodeSNSInvalidTopicFault "SNSInvalidTopic"
//     SNS has responded that there is a problem with the SNS topic specified.
//
//   - ErrCodeSNSNoAuthorizationFault "SNSNoAuthorization"
//     You do not have permission to publish to the SNS topic ARN.
//
//   - ErrCodeSNSTopicArnNotFoundFault "SNSTopicArnNotFound"
//     The SNS topic ARN does not exist.
//
//   - ErrCodeSubscriptionCategoryNotFoundFault "SubscriptionCategoryNotFound"
//     The supplied category does not exist.
//
//   - ErrCodeSourceNotFoundFault "SourceNotFound"
//     The requested source could not be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateEventSubscription
func (c *RDS) CreateEventSubscription(input *CreateEventSubscriptionInput) (*CreateEventSubscriptionOutput, error) {
	req, out := c.CreateEventSubscriptionRequest(input)
	return out, req.Send()
}

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

const opCreateGlobalCluster = "CreateGlobalCluster"

// CreateGlobalClusterRequest generates a "aws/request.Request" representing the
// client's request for the CreateGlobalCluster 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 CreateGlobalCluster for more information on using the CreateGlobalCluster
// 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 CreateGlobalClusterRequest method.
//	req, resp := client.CreateGlobalClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateGlobalCluster
func (c *RDS) CreateGlobalClusterRequest(input *CreateGlobalClusterInput) (req *request.Request, output *CreateGlobalClusterOutput) {
	op := &request.Operation{
		Name:       opCreateGlobalCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateGlobalClusterInput{}
	}

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

// CreateGlobalCluster API operation for Amazon Relational Database Service.
//
// Creates an Aurora global database spread across multiple Amazon Web Services
// Regions. The global database contains a single primary cluster with read-write
// capability, and a read-only secondary cluster that receives data from the
// primary cluster through high-speed replication performed by the Aurora storage
// subsystem.
//
// You can create a global database that is initially empty, and then create
// the primary and secondary DB clusters in the global database. Or you can
// specify an existing Aurora cluster during the create operation, and this
// cluster becomes the primary cluster of the global database.
//
// This operation applies only to Aurora DB clusters.
//
// 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 Amazon Relational Database Service's
// API operation CreateGlobalCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeGlobalClusterAlreadyExistsFault "GlobalClusterAlreadyExistsFault"
//     The GlobalClusterIdentifier already exists. Choose a new global database
//     identifier (unique name) to create a new global database cluster.
//
//   - ErrCodeGlobalClusterQuotaExceededFault "GlobalClusterQuotaExceededFault"
//     The number of global database clusters for this account is already at the
//     maximum allowed.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateGlobalCluster
func (c *RDS) CreateGlobalCluster(input *CreateGlobalClusterInput) (*CreateGlobalClusterOutput, error) {
	req, out := c.CreateGlobalClusterRequest(input)
	return out, req.Send()
}

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

const opCreateIntegration = "CreateIntegration"

// CreateIntegrationRequest generates a "aws/request.Request" representing the
// client's request for the CreateIntegration 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 CreateIntegration for more information on using the CreateIntegration
// 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 CreateIntegrationRequest method.
//	req, resp := client.CreateIntegrationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateIntegration
func (c *RDS) CreateIntegrationRequest(input *CreateIntegrationInput) (req *request.Request, output *CreateIntegrationOutput) {
	op := &request.Operation{
		Name:       opCreateIntegration,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateIntegrationInput{}
	}

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

// CreateIntegration API operation for Amazon Relational Database Service.
//
// Creates a zero-ETL integration with Amazon Redshift.
//
// 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 Amazon Relational Database Service's
// API operation CreateIntegration for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeIntegrationAlreadyExistsFault "IntegrationAlreadyExistsFault"
//     The integration you are trying to create already exists.
//
//   - ErrCodeIntegrationQuotaExceededFault "IntegrationQuotaExceededFault"
//     You can't crate any more zero-ETL integrations because the quota has been
//     reached.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeIntegrationConflictOperationFault "IntegrationConflictOperationFault"
//     A conflicting conditional operation is currently in progress against this
//     resource. Typically occurs when there are multiple requests being made to
//     the same resource at the same time, and these requests conflict with each
//     other.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateIntegration
func (c *RDS) CreateIntegration(input *CreateIntegrationInput) (*CreateIntegrationOutput, error) {
	req, out := c.CreateIntegrationRequest(input)
	return out, req.Send()
}

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

const opCreateOptionGroup = "CreateOptionGroup"

// CreateOptionGroupRequest generates a "aws/request.Request" representing the
// client's request for the CreateOptionGroup 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 CreateOptionGroup for more information on using the CreateOptionGroup
// 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 CreateOptionGroupRequest method.
//	req, resp := client.CreateOptionGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateOptionGroup
func (c *RDS) CreateOptionGroupRequest(input *CreateOptionGroupInput) (req *request.Request, output *CreateOptionGroupOutput) {
	op := &request.Operation{
		Name:       opCreateOptionGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateOptionGroupInput{}
	}

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

// CreateOptionGroup API operation for Amazon Relational Database Service.
//
// Creates a new option group. You can create up to 20 option groups.
//
// This command doesn't apply to RDS Custom.
//
// 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 Amazon Relational Database Service's
// API operation CreateOptionGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeOptionGroupAlreadyExistsFault "OptionGroupAlreadyExistsFault"
//     The option group you are trying to create already exists.
//
//   - ErrCodeOptionGroupQuotaExceededFault "OptionGroupQuotaExceededFault"
//     The quota of 20 option groups was exceeded for this Amazon Web Services account.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateOptionGroup
func (c *RDS) CreateOptionGroup(input *CreateOptionGroupInput) (*CreateOptionGroupOutput, error) {
	req, out := c.CreateOptionGroupRequest(input)
	return out, req.Send()
}

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

const opCreateTenantDatabase = "CreateTenantDatabase"

// CreateTenantDatabaseRequest generates a "aws/request.Request" representing the
// client's request for the CreateTenantDatabase 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 CreateTenantDatabase for more information on using the CreateTenantDatabase
// 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 CreateTenantDatabaseRequest method.
//	req, resp := client.CreateTenantDatabaseRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateTenantDatabase
func (c *RDS) CreateTenantDatabaseRequest(input *CreateTenantDatabaseInput) (req *request.Request, output *CreateTenantDatabaseOutput) {
	op := &request.Operation{
		Name:       opCreateTenantDatabase,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateTenantDatabaseInput{}
	}

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

// CreateTenantDatabase API operation for Amazon Relational Database Service.
//
// Creates a tenant database in a DB instance that uses the multi-tenant configuration.
// Only RDS for Oracle container database (CDB) instances are supported.
//
// 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 Amazon Relational Database Service's
// API operation CreateTenantDatabase for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeTenantDatabaseAlreadyExistsFault "TenantDatabaseAlreadyExists"
//     You attempted to either create a tenant database that already exists or modify
//     a tenant database to use the name of an existing tenant database.
//
//   - ErrCodeTenantDatabaseQuotaExceededFault "TenantDatabaseQuotaExceeded"
//     You attempted to create more tenant databases than are permitted in your
//     Amazon Web Services account.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateTenantDatabase
func (c *RDS) CreateTenantDatabase(input *CreateTenantDatabaseInput) (*CreateTenantDatabaseOutput, error) {
	req, out := c.CreateTenantDatabaseRequest(input)
	return out, req.Send()
}

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

const opDeleteBlueGreenDeployment = "DeleteBlueGreenDeployment"

// DeleteBlueGreenDeploymentRequest generates a "aws/request.Request" representing the
// client's request for the DeleteBlueGreenDeployment 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 DeleteBlueGreenDeployment for more information on using the DeleteBlueGreenDeployment
// 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 DeleteBlueGreenDeploymentRequest method.
//	req, resp := client.DeleteBlueGreenDeploymentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteBlueGreenDeployment
func (c *RDS) DeleteBlueGreenDeploymentRequest(input *DeleteBlueGreenDeploymentInput) (req *request.Request, output *DeleteBlueGreenDeploymentOutput) {
	op := &request.Operation{
		Name:       opDeleteBlueGreenDeployment,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteBlueGreenDeploymentInput{}
	}

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

// DeleteBlueGreenDeployment API operation for Amazon Relational Database Service.
//
// Deletes a blue/green deployment.
//
// For more information, see Using Amazon RDS Blue/Green Deployments for database
// updates (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments.html)
// in the Amazon RDS User Guide and Using Amazon RDS Blue/Green Deployments
// for database updates (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html)
// in the Amazon Aurora 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 Amazon Relational Database Service's
// API operation DeleteBlueGreenDeployment for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeBlueGreenDeploymentNotFoundFault "BlueGreenDeploymentNotFoundFault"
//     BlueGreenDeploymentIdentifier doesn't refer to an existing blue/green deployment.
//
//   - ErrCodeInvalidBlueGreenDeploymentStateFault "InvalidBlueGreenDeploymentStateFault"
//     The blue/green deployment can't be switched over or deleted because there
//     is an invalid configuration in the green environment.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteBlueGreenDeployment
func (c *RDS) DeleteBlueGreenDeployment(input *DeleteBlueGreenDeploymentInput) (*DeleteBlueGreenDeploymentOutput, error) {
	req, out := c.DeleteBlueGreenDeploymentRequest(input)
	return out, req.Send()
}

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

const opDeleteCustomDBEngineVersion = "DeleteCustomDBEngineVersion"

// DeleteCustomDBEngineVersionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteCustomDBEngineVersion 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 DeleteCustomDBEngineVersion for more information on using the DeleteCustomDBEngineVersion
// 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 DeleteCustomDBEngineVersionRequest method.
//	req, resp := client.DeleteCustomDBEngineVersionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteCustomDBEngineVersion
func (c *RDS) DeleteCustomDBEngineVersionRequest(input *DeleteCustomDBEngineVersionInput) (req *request.Request, output *DeleteCustomDBEngineVersionOutput) {
	op := &request.Operation{
		Name:       opDeleteCustomDBEngineVersion,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteCustomDBEngineVersionInput{}
	}

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

// DeleteCustomDBEngineVersion API operation for Amazon Relational Database Service.
//
// Deletes a custom engine version. To run this command, make sure you meet
// the following prerequisites:
//
//   - The CEV must not be the default for RDS Custom. If it is, change the
//     default before running this command.
//
//   - The CEV must not be associated with an RDS Custom DB instance, RDS Custom
//     instance snapshot, or automated backup of your RDS Custom instance.
//
// Typically, deletion takes a few minutes.
//
// The MediaImport service that imports files from Amazon S3 to create CEVs
// isn't integrated with Amazon Web Services CloudTrail. If you turn on data
// logging for Amazon RDS in CloudTrail, calls to the DeleteCustomDbEngineVersion
// event aren't logged. However, you might see calls from the API gateway that
// accesses your Amazon S3 bucket. These calls originate from the MediaImport
// service for the DeleteCustomDbEngineVersion event.
//
// For more information, see Deleting a CEV (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev.html#custom-cev.delete)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation DeleteCustomDBEngineVersion for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeCustomDBEngineVersionNotFoundFault "CustomDBEngineVersionNotFoundFault"
//     The specified CEV was not found.
//
//   - ErrCodeInvalidCustomDBEngineVersionStateFault "InvalidCustomDBEngineVersionStateFault"
//     You can't delete the CEV.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteCustomDBEngineVersion
func (c *RDS) DeleteCustomDBEngineVersion(input *DeleteCustomDBEngineVersionInput) (*DeleteCustomDBEngineVersionOutput, error) {
	req, out := c.DeleteCustomDBEngineVersionRequest(input)
	return out, req.Send()
}

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

const opDeleteDBCluster = "DeleteDBCluster"

// DeleteDBClusterRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDBCluster 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 DeleteDBCluster for more information on using the DeleteDBCluster
// 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 DeleteDBClusterRequest method.
//	req, resp := client.DeleteDBClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBCluster
func (c *RDS) DeleteDBClusterRequest(input *DeleteDBClusterInput) (req *request.Request, output *DeleteDBClusterOutput) {
	op := &request.Operation{
		Name:       opDeleteDBCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDBClusterInput{}
	}

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

// DeleteDBCluster API operation for Amazon Relational Database Service.
//
// The DeleteDBCluster action deletes a previously provisioned DB cluster. When
// you delete a DB cluster, all automated backups for that DB cluster are deleted
// and can't be recovered. Manual DB cluster snapshots of the specified DB cluster
// are not deleted.
//
// If you're deleting a Multi-AZ DB cluster with read replicas, all cluster
// members are terminated and read replicas are promoted to standalone instances.
//
// For more information on Amazon Aurora, see What is Amazon Aurora? (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation DeleteDBCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeDBClusterSnapshotAlreadyExistsFault "DBClusterSnapshotAlreadyExistsFault"
//     The user already has a DB cluster snapshot with the given identifier.
//
//   - ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB snapshots.
//
//   - ErrCodeInvalidDBClusterSnapshotStateFault "InvalidDBClusterSnapshotStateFault"
//     The supplied value isn't a valid DB cluster snapshot state.
//
//   - ErrCodeDBClusterAutomatedBackupQuotaExceededFault "DBClusterAutomatedBackupQuotaExceededFault"
//     The quota for retained automated backups was exceeded. This prevents you
//     from retaining any additional automated backups. The retained automated backups
//     quota is the same as your DB cluster quota.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBCluster
func (c *RDS) DeleteDBCluster(input *DeleteDBClusterInput) (*DeleteDBClusterOutput, error) {
	req, out := c.DeleteDBClusterRequest(input)
	return out, req.Send()
}

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

const opDeleteDBClusterAutomatedBackup = "DeleteDBClusterAutomatedBackup"

// DeleteDBClusterAutomatedBackupRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDBClusterAutomatedBackup 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 DeleteDBClusterAutomatedBackup for more information on using the DeleteDBClusterAutomatedBackup
// 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 DeleteDBClusterAutomatedBackupRequest method.
//	req, resp := client.DeleteDBClusterAutomatedBackupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBClusterAutomatedBackup
func (c *RDS) DeleteDBClusterAutomatedBackupRequest(input *DeleteDBClusterAutomatedBackupInput) (req *request.Request, output *DeleteDBClusterAutomatedBackupOutput) {
	op := &request.Operation{
		Name:       opDeleteDBClusterAutomatedBackup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDBClusterAutomatedBackupInput{}
	}

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

// DeleteDBClusterAutomatedBackup API operation for Amazon Relational Database Service.
//
// Deletes automated backups using the DbClusterResourceId value of the source
// DB cluster or the Amazon Resource Name (ARN) of the automated backups.
//
// 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 Amazon Relational Database Service's
// API operation DeleteDBClusterAutomatedBackup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBClusterAutomatedBackupStateFault "InvalidDBClusterAutomatedBackupStateFault"
//     The automated backup is in an invalid state. For example, this automated
//     backup is associated with an active cluster.
//
//   - ErrCodeDBClusterAutomatedBackupNotFoundFault "DBClusterAutomatedBackupNotFoundFault"
//     No automated backup for this DB cluster was found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBClusterAutomatedBackup
func (c *RDS) DeleteDBClusterAutomatedBackup(input *DeleteDBClusterAutomatedBackupInput) (*DeleteDBClusterAutomatedBackupOutput, error) {
	req, out := c.DeleteDBClusterAutomatedBackupRequest(input)
	return out, req.Send()
}

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

const opDeleteDBClusterEndpoint = "DeleteDBClusterEndpoint"

// DeleteDBClusterEndpointRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDBClusterEndpoint 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 DeleteDBClusterEndpoint for more information on using the DeleteDBClusterEndpoint
// 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 DeleteDBClusterEndpointRequest method.
//	req, resp := client.DeleteDBClusterEndpointRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBClusterEndpoint
func (c *RDS) DeleteDBClusterEndpointRequest(input *DeleteDBClusterEndpointInput) (req *request.Request, output *DeleteDBClusterEndpointOutput) {
	op := &request.Operation{
		Name:       opDeleteDBClusterEndpoint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDBClusterEndpointInput{}
	}

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

// DeleteDBClusterEndpoint API operation for Amazon Relational Database Service.
//
// Deletes a custom endpoint and removes it from an Amazon Aurora DB cluster.
//
// This action only applies to Aurora DB clusters.
//
// 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 Amazon Relational Database Service's
// API operation DeleteDBClusterEndpoint for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBClusterEndpointStateFault "InvalidDBClusterEndpointStateFault"
//     The requested operation can't be performed on the endpoint while the endpoint
//     is in this state.
//
//   - ErrCodeDBClusterEndpointNotFoundFault "DBClusterEndpointNotFoundFault"
//     The specified custom endpoint doesn't exist.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBClusterEndpoint
func (c *RDS) DeleteDBClusterEndpoint(input *DeleteDBClusterEndpointInput) (*DeleteDBClusterEndpointOutput, error) {
	req, out := c.DeleteDBClusterEndpointRequest(input)
	return out, req.Send()
}

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

const opDeleteDBClusterParameterGroup = "DeleteDBClusterParameterGroup"

// DeleteDBClusterParameterGroupRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDBClusterParameterGroup 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 DeleteDBClusterParameterGroup for more information on using the DeleteDBClusterParameterGroup
// 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 DeleteDBClusterParameterGroupRequest method.
//	req, resp := client.DeleteDBClusterParameterGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBClusterParameterGroup
func (c *RDS) DeleteDBClusterParameterGroupRequest(input *DeleteDBClusterParameterGroupInput) (req *request.Request, output *DeleteDBClusterParameterGroupOutput) {
	op := &request.Operation{
		Name:       opDeleteDBClusterParameterGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDBClusterParameterGroupInput{}
	}

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

// DeleteDBClusterParameterGroup API operation for Amazon Relational Database Service.
//
// Deletes a specified DB cluster parameter group. The DB cluster parameter
// group to be deleted can't be associated with any DB clusters.
//
// For more information on Amazon Aurora, see What is Amazon Aurora? (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation DeleteDBClusterParameterGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBParameterGroupStateFault "InvalidDBParameterGroupState"
//     The DB parameter group is in use or is in an invalid state. If you are attempting
//     to delete the parameter group, you can't delete it when the parameter group
//     is in this state.
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBClusterParameterGroup
func (c *RDS) DeleteDBClusterParameterGroup(input *DeleteDBClusterParameterGroupInput) (*DeleteDBClusterParameterGroupOutput, error) {
	req, out := c.DeleteDBClusterParameterGroupRequest(input)
	return out, req.Send()
}

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

const opDeleteDBClusterSnapshot = "DeleteDBClusterSnapshot"

// DeleteDBClusterSnapshotRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDBClusterSnapshot 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 DeleteDBClusterSnapshot for more information on using the DeleteDBClusterSnapshot
// 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 DeleteDBClusterSnapshotRequest method.
//	req, resp := client.DeleteDBClusterSnapshotRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBClusterSnapshot
func (c *RDS) DeleteDBClusterSnapshotRequest(input *DeleteDBClusterSnapshotInput) (req *request.Request, output *DeleteDBClusterSnapshotOutput) {
	op := &request.Operation{
		Name:       opDeleteDBClusterSnapshot,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDBClusterSnapshotInput{}
	}

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

// DeleteDBClusterSnapshot API operation for Amazon Relational Database Service.
//
// Deletes a DB cluster snapshot. If the snapshot is being copied, the copy
// operation is terminated.
//
// The DB cluster snapshot must be in the available state to be deleted.
//
// For more information on Amazon Aurora, see What is Amazon Aurora? (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation DeleteDBClusterSnapshot for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBClusterSnapshotStateFault "InvalidDBClusterSnapshotStateFault"
//     The supplied value isn't a valid DB cluster snapshot state.
//
//   - ErrCodeDBClusterSnapshotNotFoundFault "DBClusterSnapshotNotFoundFault"
//     DBClusterSnapshotIdentifier doesn't refer to an existing DB cluster snapshot.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBClusterSnapshot
func (c *RDS) DeleteDBClusterSnapshot(input *DeleteDBClusterSnapshotInput) (*DeleteDBClusterSnapshotOutput, error) {
	req, out := c.DeleteDBClusterSnapshotRequest(input)
	return out, req.Send()
}

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

const opDeleteDBInstance = "DeleteDBInstance"

// DeleteDBInstanceRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDBInstance 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 DeleteDBInstance for more information on using the DeleteDBInstance
// 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 DeleteDBInstanceRequest method.
//	req, resp := client.DeleteDBInstanceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBInstance
func (c *RDS) DeleteDBInstanceRequest(input *DeleteDBInstanceInput) (req *request.Request, output *DeleteDBInstanceOutput) {
	op := &request.Operation{
		Name:       opDeleteDBInstance,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDBInstanceInput{}
	}

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

// DeleteDBInstance API operation for Amazon Relational Database Service.
//
// Deletes a previously provisioned DB instance. When you delete a DB instance,
// all automated backups for that instance are deleted and can't be recovered.
// However, manual DB snapshots of the DB instance aren't deleted.
//
// If you request a final DB snapshot, the status of the Amazon RDS DB instance
// is deleting until the DB snapshot is created. This operation can't be canceled
// or reverted after it begins. To monitor the status of this operation, use
// DescribeDBInstance.
//
// When a DB instance is in a failure state and has a status of failed, incompatible-restore,
// or incompatible-network, you can only delete it when you skip creation of
// the final snapshot with the SkipFinalSnapshot parameter.
//
// If the specified DB instance is part of an Amazon Aurora DB cluster, you
// can't delete the DB instance if both of the following conditions are true:
//
//   - The DB cluster is a read replica of another Amazon Aurora DB cluster.
//
//   - The DB instance is the only instance in the DB cluster.
//
// To delete a DB instance in this case, first use the PromoteReadReplicaDBCluster
// operation to promote the DB cluster so that it's no longer a read replica.
// After the promotion completes, use the DeleteDBInstance operation to delete
// the final instance in the DB cluster.
//
// For RDS Custom DB instances, deleting the DB instance permanently deletes
// the EC2 instance and the associated EBS volumes. Make sure that you don't
// terminate or delete these resources before you delete the DB instance. Otherwise,
// deleting the DB instance and creation of the final snapshot might fail.
//
// 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 Amazon Relational Database Service's
// API operation DeleteDBInstance for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeDBSnapshotAlreadyExistsFault "DBSnapshotAlreadyExists"
//     DBSnapshotIdentifier is already used by an existing snapshot.
//
//   - ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB snapshots.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeDBInstanceAutomatedBackupQuotaExceededFault "DBInstanceAutomatedBackupQuotaExceeded"
//     The quota for retained automated backups was exceeded. This prevents you
//     from retaining any additional automated backups. The retained automated backups
//     quota is the same as your DB instance quota.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBInstance
func (c *RDS) DeleteDBInstance(input *DeleteDBInstanceInput) (*DeleteDBInstanceOutput, error) {
	req, out := c.DeleteDBInstanceRequest(input)
	return out, req.Send()
}

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

const opDeleteDBInstanceAutomatedBackup = "DeleteDBInstanceAutomatedBackup"

// DeleteDBInstanceAutomatedBackupRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDBInstanceAutomatedBackup 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 DeleteDBInstanceAutomatedBackup for more information on using the DeleteDBInstanceAutomatedBackup
// 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 DeleteDBInstanceAutomatedBackupRequest method.
//	req, resp := client.DeleteDBInstanceAutomatedBackupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBInstanceAutomatedBackup
func (c *RDS) DeleteDBInstanceAutomatedBackupRequest(input *DeleteDBInstanceAutomatedBackupInput) (req *request.Request, output *DeleteDBInstanceAutomatedBackupOutput) {
	op := &request.Operation{
		Name:       opDeleteDBInstanceAutomatedBackup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDBInstanceAutomatedBackupInput{}
	}

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

// DeleteDBInstanceAutomatedBackup API operation for Amazon Relational Database Service.
//
// Deletes automated backups using the DbiResourceId value of the source DB
// instance or the Amazon Resource Name (ARN) of the automated backups.
//
// 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 Amazon Relational Database Service's
// API operation DeleteDBInstanceAutomatedBackup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBInstanceAutomatedBackupStateFault "InvalidDBInstanceAutomatedBackupState"
//     The automated backup is in an invalid state. For example, this automated
//     backup is associated with an active instance.
//
//   - ErrCodeDBInstanceAutomatedBackupNotFoundFault "DBInstanceAutomatedBackupNotFound"
//     No automated backup for this DB instance was found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBInstanceAutomatedBackup
func (c *RDS) DeleteDBInstanceAutomatedBackup(input *DeleteDBInstanceAutomatedBackupInput) (*DeleteDBInstanceAutomatedBackupOutput, error) {
	req, out := c.DeleteDBInstanceAutomatedBackupRequest(input)
	return out, req.Send()
}

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

const opDeleteDBParameterGroup = "DeleteDBParameterGroup"

// DeleteDBParameterGroupRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDBParameterGroup 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 DeleteDBParameterGroup for more information on using the DeleteDBParameterGroup
// 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 DeleteDBParameterGroupRequest method.
//	req, resp := client.DeleteDBParameterGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBParameterGroup
func (c *RDS) DeleteDBParameterGroupRequest(input *DeleteDBParameterGroupInput) (req *request.Request, output *DeleteDBParameterGroupOutput) {
	op := &request.Operation{
		Name:       opDeleteDBParameterGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDBParameterGroupInput{}
	}

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

// DeleteDBParameterGroup API operation for Amazon Relational Database Service.
//
// Deletes a specified DB parameter group. The DB parameter group to be deleted
// can't be associated with any DB instances.
//
// 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 Amazon Relational Database Service's
// API operation DeleteDBParameterGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBParameterGroupStateFault "InvalidDBParameterGroupState"
//     The DB parameter group is in use or is in an invalid state. If you are attempting
//     to delete the parameter group, you can't delete it when the parameter group
//     is in this state.
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBParameterGroup
func (c *RDS) DeleteDBParameterGroup(input *DeleteDBParameterGroupInput) (*DeleteDBParameterGroupOutput, error) {
	req, out := c.DeleteDBParameterGroupRequest(input)
	return out, req.Send()
}

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

const opDeleteDBProxy = "DeleteDBProxy"

// DeleteDBProxyRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDBProxy 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 DeleteDBProxy for more information on using the DeleteDBProxy
// 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 DeleteDBProxyRequest method.
//	req, resp := client.DeleteDBProxyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBProxy
func (c *RDS) DeleteDBProxyRequest(input *DeleteDBProxyInput) (req *request.Request, output *DeleteDBProxyOutput) {
	op := &request.Operation{
		Name:       opDeleteDBProxy,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDBProxyInput{}
	}

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

// DeleteDBProxy API operation for Amazon Relational Database Service.
//
// Deletes an existing DB proxy.
//
// 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 Amazon Relational Database Service's
// API operation DeleteDBProxy for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBProxyNotFoundFault "DBProxyNotFoundFault"
//     The specified proxy name doesn't correspond to a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeInvalidDBProxyStateFault "InvalidDBProxyStateFault"
//     The requested operation can't be performed while the proxy is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBProxy
func (c *RDS) DeleteDBProxy(input *DeleteDBProxyInput) (*DeleteDBProxyOutput, error) {
	req, out := c.DeleteDBProxyRequest(input)
	return out, req.Send()
}

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

const opDeleteDBProxyEndpoint = "DeleteDBProxyEndpoint"

// DeleteDBProxyEndpointRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDBProxyEndpoint 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 DeleteDBProxyEndpoint for more information on using the DeleteDBProxyEndpoint
// 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 DeleteDBProxyEndpointRequest method.
//	req, resp := client.DeleteDBProxyEndpointRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBProxyEndpoint
func (c *RDS) DeleteDBProxyEndpointRequest(input *DeleteDBProxyEndpointInput) (req *request.Request, output *DeleteDBProxyEndpointOutput) {
	op := &request.Operation{
		Name:       opDeleteDBProxyEndpoint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDBProxyEndpointInput{}
	}

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

// DeleteDBProxyEndpoint API operation for Amazon Relational Database Service.
//
// Deletes a DBProxyEndpoint. Doing so removes the ability to access the DB
// proxy using the endpoint that you defined. The endpoint that you delete might
// have provided capabilities such as read/write or read-only operations, or
// using a different VPC than the DB proxy's default VPC.
//
// 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 Amazon Relational Database Service's
// API operation DeleteDBProxyEndpoint for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBProxyEndpointNotFoundFault "DBProxyEndpointNotFoundFault"
//     The DB proxy endpoint doesn't exist.
//
//   - ErrCodeInvalidDBProxyEndpointStateFault "InvalidDBProxyEndpointStateFault"
//     You can't perform this operation while the DB proxy endpoint is in a particular
//     state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBProxyEndpoint
func (c *RDS) DeleteDBProxyEndpoint(input *DeleteDBProxyEndpointInput) (*DeleteDBProxyEndpointOutput, error) {
	req, out := c.DeleteDBProxyEndpointRequest(input)
	return out, req.Send()
}

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

const opDeleteDBSecurityGroup = "DeleteDBSecurityGroup"

// DeleteDBSecurityGroupRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDBSecurityGroup 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 DeleteDBSecurityGroup for more information on using the DeleteDBSecurityGroup
// 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 DeleteDBSecurityGroupRequest method.
//	req, resp := client.DeleteDBSecurityGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBSecurityGroup
func (c *RDS) DeleteDBSecurityGroupRequest(input *DeleteDBSecurityGroupInput) (req *request.Request, output *DeleteDBSecurityGroupOutput) {
	op := &request.Operation{
		Name:       opDeleteDBSecurityGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDBSecurityGroupInput{}
	}

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

// DeleteDBSecurityGroup API operation for Amazon Relational Database Service.
//
// Deletes a DB security group.
//
// The specified DB security group must not be associated with any DB instances.
//
// EC2-Classic was retired on August 15, 2022. If you haven't migrated from
// EC2-Classic to a VPC, we recommend that you migrate as soon as possible.
// For more information, see Migrate from EC2-Classic to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html)
// in the Amazon EC2 User Guide, the blog EC2-Classic Networking is Retiring
// – Here’s How to Prepare (http://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/),
// and Moving a DB instance not in a VPC into a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.Non-VPC2VPC.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation DeleteDBSecurityGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBSecurityGroupStateFault "InvalidDBSecurityGroupState"
//     The state of the DB security group doesn't allow deletion.
//
//   - ErrCodeDBSecurityGroupNotFoundFault "DBSecurityGroupNotFound"
//     DBSecurityGroupName doesn't refer to an existing DB security group.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBSecurityGroup
func (c *RDS) DeleteDBSecurityGroup(input *DeleteDBSecurityGroupInput) (*DeleteDBSecurityGroupOutput, error) {
	req, out := c.DeleteDBSecurityGroupRequest(input)
	return out, req.Send()
}

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

const opDeleteDBShardGroup = "DeleteDBShardGroup"

// DeleteDBShardGroupRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDBShardGroup 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 DeleteDBShardGroup for more information on using the DeleteDBShardGroup
// 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 DeleteDBShardGroupRequest method.
//	req, resp := client.DeleteDBShardGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBShardGroup
func (c *RDS) DeleteDBShardGroupRequest(input *DeleteDBShardGroupInput) (req *request.Request, output *DeleteDBShardGroupOutput) {
	op := &request.Operation{
		Name:       opDeleteDBShardGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDBShardGroupInput{}
	}

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

// DeleteDBShardGroup API operation for Amazon Relational Database Service.
//
// Deletes an Aurora Limitless Database DB shard group.
//
// 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 Amazon Relational Database Service's
// API operation DeleteDBShardGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBShardGroupNotFoundFault "DBShardGroupNotFound"
//     The specified DB shard group name wasn't found.
//
//   - ErrCodeInvalidDBShardGroupStateFault "InvalidDBShardGroupState"
//     The DB shard group must be in the available state.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBShardGroup
func (c *RDS) DeleteDBShardGroup(input *DeleteDBShardGroupInput) (*DeleteDBShardGroupOutput, error) {
	req, out := c.DeleteDBShardGroupRequest(input)
	return out, req.Send()
}

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

const opDeleteDBSnapshot = "DeleteDBSnapshot"

// DeleteDBSnapshotRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDBSnapshot 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 DeleteDBSnapshot for more information on using the DeleteDBSnapshot
// 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 DeleteDBSnapshotRequest method.
//	req, resp := client.DeleteDBSnapshotRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBSnapshot
func (c *RDS) DeleteDBSnapshotRequest(input *DeleteDBSnapshotInput) (req *request.Request, output *DeleteDBSnapshotOutput) {
	op := &request.Operation{
		Name:       opDeleteDBSnapshot,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDBSnapshotInput{}
	}

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

// DeleteDBSnapshot API operation for Amazon Relational Database Service.
//
// Deletes a DB snapshot. If the snapshot is being copied, the copy operation
// is terminated.
//
// The DB snapshot must be in the available state to be deleted.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Relational Database Service's
// API operation DeleteDBSnapshot for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBSnapshotStateFault "InvalidDBSnapshotState"
//     The state of the DB snapshot doesn't allow deletion.
//
//   - ErrCodeDBSnapshotNotFoundFault "DBSnapshotNotFound"
//     DBSnapshotIdentifier doesn't refer to an existing DB snapshot.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBSnapshot
func (c *RDS) DeleteDBSnapshot(input *DeleteDBSnapshotInput) (*DeleteDBSnapshotOutput, error) {
	req, out := c.DeleteDBSnapshotRequest(input)
	return out, req.Send()
}

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

const opDeleteDBSubnetGroup = "DeleteDBSubnetGroup"

// DeleteDBSubnetGroupRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDBSubnetGroup 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 DeleteDBSubnetGroup for more information on using the DeleteDBSubnetGroup
// 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 DeleteDBSubnetGroupRequest method.
//	req, resp := client.DeleteDBSubnetGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBSubnetGroup
func (c *RDS) DeleteDBSubnetGroupRequest(input *DeleteDBSubnetGroupInput) (req *request.Request, output *DeleteDBSubnetGroupOutput) {
	op := &request.Operation{
		Name:       opDeleteDBSubnetGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDBSubnetGroupInput{}
	}

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

// DeleteDBSubnetGroup API operation for Amazon Relational Database Service.
//
// Deletes a DB subnet group.
//
// The specified database subnet group must not be associated with any DB instances.
//
// 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 Amazon Relational Database Service's
// API operation DeleteDBSubnetGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBSubnetGroupStateFault "InvalidDBSubnetGroupStateFault"
//     The DB subnet group cannot be deleted because it's in use.
//
//   - ErrCodeInvalidDBSubnetStateFault "InvalidDBSubnetStateFault"
//     The DB subnet isn't in the available state.
//
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteDBSubnetGroup
func (c *RDS) DeleteDBSubnetGroup(input *DeleteDBSubnetGroupInput) (*DeleteDBSubnetGroupOutput, error) {
	req, out := c.DeleteDBSubnetGroupRequest(input)
	return out, req.Send()
}

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

const opDeleteEventSubscription = "DeleteEventSubscription"

// DeleteEventSubscriptionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteEventSubscription 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 DeleteEventSubscription for more information on using the DeleteEventSubscription
// 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 DeleteEventSubscriptionRequest method.
//	req, resp := client.DeleteEventSubscriptionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteEventSubscription
func (c *RDS) DeleteEventSubscriptionRequest(input *DeleteEventSubscriptionInput) (req *request.Request, output *DeleteEventSubscriptionOutput) {
	op := &request.Operation{
		Name:       opDeleteEventSubscription,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteEventSubscriptionInput{}
	}

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

// DeleteEventSubscription API operation for Amazon Relational Database Service.
//
// Deletes an RDS event notification subscription.
//
// 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 Amazon Relational Database Service's
// API operation DeleteEventSubscription for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeSubscriptionNotFoundFault "SubscriptionNotFound"
//     The subscription name does not exist.
//
//   - ErrCodeInvalidEventSubscriptionStateFault "InvalidEventSubscriptionState"
//     This error can occur if someone else is modifying a subscription. You should
//     retry the action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteEventSubscription
func (c *RDS) DeleteEventSubscription(input *DeleteEventSubscriptionInput) (*DeleteEventSubscriptionOutput, error) {
	req, out := c.DeleteEventSubscriptionRequest(input)
	return out, req.Send()
}

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

const opDeleteGlobalCluster = "DeleteGlobalCluster"

// DeleteGlobalClusterRequest generates a "aws/request.Request" representing the
// client's request for the DeleteGlobalCluster 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 DeleteGlobalCluster for more information on using the DeleteGlobalCluster
// 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 DeleteGlobalClusterRequest method.
//	req, resp := client.DeleteGlobalClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteGlobalCluster
func (c *RDS) DeleteGlobalClusterRequest(input *DeleteGlobalClusterInput) (req *request.Request, output *DeleteGlobalClusterOutput) {
	op := &request.Operation{
		Name:       opDeleteGlobalCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteGlobalClusterInput{}
	}

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

// DeleteGlobalCluster API operation for Amazon Relational Database Service.
//
// Deletes a global database cluster. The primary and secondary clusters must
// already be detached or destroyed first.
//
// This action only applies to Aurora DB clusters.
//
// 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 Amazon Relational Database Service's
// API operation DeleteGlobalCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeGlobalClusterNotFoundFault "GlobalClusterNotFoundFault"
//     The GlobalClusterIdentifier doesn't refer to an existing global database
//     cluster.
//
//   - ErrCodeInvalidGlobalClusterStateFault "InvalidGlobalClusterStateFault"
//     The global cluster is in an invalid state and can't perform the requested
//     operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteGlobalCluster
func (c *RDS) DeleteGlobalCluster(input *DeleteGlobalClusterInput) (*DeleteGlobalClusterOutput, error) {
	req, out := c.DeleteGlobalClusterRequest(input)
	return out, req.Send()
}

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

const opDeleteIntegration = "DeleteIntegration"

// DeleteIntegrationRequest generates a "aws/request.Request" representing the
// client's request for the DeleteIntegration 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 DeleteIntegration for more information on using the DeleteIntegration
// 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 DeleteIntegrationRequest method.
//	req, resp := client.DeleteIntegrationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteIntegration
func (c *RDS) DeleteIntegrationRequest(input *DeleteIntegrationInput) (req *request.Request, output *DeleteIntegrationOutput) {
	op := &request.Operation{
		Name:       opDeleteIntegration,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteIntegrationInput{}
	}

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

// DeleteIntegration API operation for Amazon Relational Database Service.
//
// Deletes a zero-ETL integration with Amazon Redshift.
//
// 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 Amazon Relational Database Service's
// API operation DeleteIntegration for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeIntegrationNotFoundFault "IntegrationNotFoundFault"
//     The specified integration could not be found.
//
//   - ErrCodeIntegrationConflictOperationFault "IntegrationConflictOperationFault"
//     A conflicting conditional operation is currently in progress against this
//     resource. Typically occurs when there are multiple requests being made to
//     the same resource at the same time, and these requests conflict with each
//     other.
//
//   - ErrCodeInvalidIntegrationStateFault "InvalidIntegrationStateFault"
//     The integration is in an invalid state and can't perform the requested operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteIntegration
func (c *RDS) DeleteIntegration(input *DeleteIntegrationInput) (*DeleteIntegrationOutput, error) {
	req, out := c.DeleteIntegrationRequest(input)
	return out, req.Send()
}

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

const opDeleteOptionGroup = "DeleteOptionGroup"

// DeleteOptionGroupRequest generates a "aws/request.Request" representing the
// client's request for the DeleteOptionGroup 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 DeleteOptionGroup for more information on using the DeleteOptionGroup
// 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 DeleteOptionGroupRequest method.
//	req, resp := client.DeleteOptionGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteOptionGroup
func (c *RDS) DeleteOptionGroupRequest(input *DeleteOptionGroupInput) (req *request.Request, output *DeleteOptionGroupOutput) {
	op := &request.Operation{
		Name:       opDeleteOptionGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteOptionGroupInput{}
	}

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

// DeleteOptionGroup API operation for Amazon Relational Database Service.
//
// Deletes an existing option group.
//
// 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 Amazon Relational Database Service's
// API operation DeleteOptionGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeOptionGroupNotFoundFault "OptionGroupNotFoundFault"
//     The specified option group could not be found.
//
//   - ErrCodeInvalidOptionGroupStateFault "InvalidOptionGroupStateFault"
//     The option group isn't in the available state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteOptionGroup
func (c *RDS) DeleteOptionGroup(input *DeleteOptionGroupInput) (*DeleteOptionGroupOutput, error) {
	req, out := c.DeleteOptionGroupRequest(input)
	return out, req.Send()
}

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

const opDeleteTenantDatabase = "DeleteTenantDatabase"

// DeleteTenantDatabaseRequest generates a "aws/request.Request" representing the
// client's request for the DeleteTenantDatabase 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 DeleteTenantDatabase for more information on using the DeleteTenantDatabase
// 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 DeleteTenantDatabaseRequest method.
//	req, resp := client.DeleteTenantDatabaseRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteTenantDatabase
func (c *RDS) DeleteTenantDatabaseRequest(input *DeleteTenantDatabaseInput) (req *request.Request, output *DeleteTenantDatabaseOutput) {
	op := &request.Operation{
		Name:       opDeleteTenantDatabase,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteTenantDatabaseInput{}
	}

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

// DeleteTenantDatabase API operation for Amazon Relational Database Service.
//
// Deletes a tenant database from your DB instance. This command only applies
// to RDS for Oracle container database (CDB) instances.
//
// You can't delete a tenant database when it is the only tenant in the DB instance.
//
// 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 Amazon Relational Database Service's
// API operation DeleteTenantDatabase for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeTenantDatabaseNotFoundFault "TenantDatabaseNotFound"
//     The specified tenant database wasn't found in the DB instance.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeleteTenantDatabase
func (c *RDS) DeleteTenantDatabase(input *DeleteTenantDatabaseInput) (*DeleteTenantDatabaseOutput, error) {
	req, out := c.DeleteTenantDatabaseRequest(input)
	return out, req.Send()
}

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

const opDeregisterDBProxyTargets = "DeregisterDBProxyTargets"

// DeregisterDBProxyTargetsRequest generates a "aws/request.Request" representing the
// client's request for the DeregisterDBProxyTargets 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 DeregisterDBProxyTargets for more information on using the DeregisterDBProxyTargets
// 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 DeregisterDBProxyTargetsRequest method.
//	req, resp := client.DeregisterDBProxyTargetsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeregisterDBProxyTargets
func (c *RDS) DeregisterDBProxyTargetsRequest(input *DeregisterDBProxyTargetsInput) (req *request.Request, output *DeregisterDBProxyTargetsOutput) {
	op := &request.Operation{
		Name:       opDeregisterDBProxyTargets,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeregisterDBProxyTargetsInput{}
	}

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

// DeregisterDBProxyTargets API operation for Amazon Relational Database Service.
//
// Remove the association between one or more DBProxyTarget data structures
// and a DBProxyTargetGroup.
//
// 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 Amazon Relational Database Service's
// API operation DeregisterDBProxyTargets for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBProxyTargetNotFoundFault "DBProxyTargetNotFoundFault"
//     The specified RDS DB instance or Aurora DB cluster isn't available for a
//     proxy owned by your Amazon Web Services account in the specified Amazon Web
//     Services Region.
//
//   - ErrCodeDBProxyTargetGroupNotFoundFault "DBProxyTargetGroupNotFoundFault"
//     The specified target group isn't available for a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBProxyNotFoundFault "DBProxyNotFoundFault"
//     The specified proxy name doesn't correspond to a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeInvalidDBProxyStateFault "InvalidDBProxyStateFault"
//     The requested operation can't be performed while the proxy is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DeregisterDBProxyTargets
func (c *RDS) DeregisterDBProxyTargets(input *DeregisterDBProxyTargetsInput) (*DeregisterDBProxyTargetsOutput, error) {
	req, out := c.DeregisterDBProxyTargetsRequest(input)
	return out, req.Send()
}

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

const opDescribeAccountAttributes = "DescribeAccountAttributes"

// DescribeAccountAttributesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAccountAttributes 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 DescribeAccountAttributes for more information on using the DescribeAccountAttributes
// 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 DescribeAccountAttributesRequest method.
//	req, resp := client.DescribeAccountAttributesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeAccountAttributes
func (c *RDS) DescribeAccountAttributesRequest(input *DescribeAccountAttributesInput) (req *request.Request, output *DescribeAccountAttributesOutput) {
	op := &request.Operation{
		Name:       opDescribeAccountAttributes,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeAccountAttributesInput{}
	}

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

// DescribeAccountAttributes API operation for Amazon Relational Database Service.
//
// Lists all of the attributes for a customer account. The attributes include
// Amazon RDS quotas for the account, such as the number of DB instances allowed.
// The description for a quota includes the quota name, current usage toward
// that quota, and the quota's maximum value.
//
// This command doesn't take any parameters.
//
// 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 Amazon Relational Database Service's
// API operation DescribeAccountAttributes for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeAccountAttributes
func (c *RDS) DescribeAccountAttributes(input *DescribeAccountAttributesInput) (*DescribeAccountAttributesOutput, error) {
	req, out := c.DescribeAccountAttributesRequest(input)
	return out, req.Send()
}

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

const opDescribeBlueGreenDeployments = "DescribeBlueGreenDeployments"

// DescribeBlueGreenDeploymentsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeBlueGreenDeployments 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 DescribeBlueGreenDeployments for more information on using the DescribeBlueGreenDeployments
// 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 DescribeBlueGreenDeploymentsRequest method.
//	req, resp := client.DescribeBlueGreenDeploymentsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeBlueGreenDeployments
func (c *RDS) DescribeBlueGreenDeploymentsRequest(input *DescribeBlueGreenDeploymentsInput) (req *request.Request, output *DescribeBlueGreenDeploymentsOutput) {
	op := &request.Operation{
		Name:       opDescribeBlueGreenDeployments,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeBlueGreenDeploymentsInput{}
	}

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

// DescribeBlueGreenDeployments API operation for Amazon Relational Database Service.
//
// Describes one or more blue/green deployments.
//
// For more information, see Using Amazon RDS Blue/Green Deployments for database
// updates (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments.html)
// in the Amazon RDS User Guide and Using Amazon RDS Blue/Green Deployments
// for database updates (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html)
// in the Amazon Aurora 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 Amazon Relational Database Service's
// API operation DescribeBlueGreenDeployments for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeBlueGreenDeploymentNotFoundFault "BlueGreenDeploymentNotFoundFault"
//     BlueGreenDeploymentIdentifier doesn't refer to an existing blue/green deployment.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeBlueGreenDeployments
func (c *RDS) DescribeBlueGreenDeployments(input *DescribeBlueGreenDeploymentsInput) (*DescribeBlueGreenDeploymentsOutput, error) {
	req, out := c.DescribeBlueGreenDeploymentsRequest(input)
	return out, req.Send()
}

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

// DescribeBlueGreenDeploymentsPages iterates over the pages of a DescribeBlueGreenDeployments operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeBlueGreenDeployments 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 DescribeBlueGreenDeployments operation.
//	pageNum := 0
//	err := client.DescribeBlueGreenDeploymentsPages(params,
//	    func(page *rds.DescribeBlueGreenDeploymentsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeBlueGreenDeploymentsPages(input *DescribeBlueGreenDeploymentsInput, fn func(*DescribeBlueGreenDeploymentsOutput, bool) bool) error {
	return c.DescribeBlueGreenDeploymentsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeBlueGreenDeploymentsPagesWithContext same as DescribeBlueGreenDeploymentsPages 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 *RDS) DescribeBlueGreenDeploymentsPagesWithContext(ctx aws.Context, input *DescribeBlueGreenDeploymentsInput, fn func(*DescribeBlueGreenDeploymentsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeBlueGreenDeploymentsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeBlueGreenDeploymentsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeCertificates = "DescribeCertificates"

// DescribeCertificatesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeCertificates 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 DescribeCertificates for more information on using the DescribeCertificates
// 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 DescribeCertificatesRequest method.
//	req, resp := client.DescribeCertificatesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeCertificates
func (c *RDS) DescribeCertificatesRequest(input *DescribeCertificatesInput) (req *request.Request, output *DescribeCertificatesOutput) {
	op := &request.Operation{
		Name:       opDescribeCertificates,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeCertificatesInput{}
	}

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

// DescribeCertificates API operation for Amazon Relational Database Service.
//
// Lists the set of certificate authority (CA) certificates provided by Amazon
// RDS for this Amazon Web Services account.
//
// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
// in the Amazon Aurora 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 Amazon Relational Database Service's
// API operation DescribeCertificates for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeCertificateNotFoundFault "CertificateNotFound"
//     CertificateIdentifier doesn't refer to an existing certificate.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeCertificates
func (c *RDS) DescribeCertificates(input *DescribeCertificatesInput) (*DescribeCertificatesOutput, error) {
	req, out := c.DescribeCertificatesRequest(input)
	return out, req.Send()
}

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

// DescribeCertificatesPages iterates over the pages of a DescribeCertificates operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeCertificates 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 DescribeCertificates operation.
//	pageNum := 0
//	err := client.DescribeCertificatesPages(params,
//	    func(page *rds.DescribeCertificatesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeCertificatesPages(input *DescribeCertificatesInput, fn func(*DescribeCertificatesOutput, bool) bool) error {
	return c.DescribeCertificatesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeCertificatesPagesWithContext same as DescribeCertificatesPages 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 *RDS) DescribeCertificatesPagesWithContext(ctx aws.Context, input *DescribeCertificatesInput, fn func(*DescribeCertificatesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeCertificatesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeCertificatesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBClusterAutomatedBackups = "DescribeDBClusterAutomatedBackups"

// DescribeDBClusterAutomatedBackupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBClusterAutomatedBackups 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 DescribeDBClusterAutomatedBackups for more information on using the DescribeDBClusterAutomatedBackups
// 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 DescribeDBClusterAutomatedBackupsRequest method.
//	req, resp := client.DescribeDBClusterAutomatedBackupsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusterAutomatedBackups
func (c *RDS) DescribeDBClusterAutomatedBackupsRequest(input *DescribeDBClusterAutomatedBackupsInput) (req *request.Request, output *DescribeDBClusterAutomatedBackupsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBClusterAutomatedBackups,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBClusterAutomatedBackupsInput{}
	}

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

// DescribeDBClusterAutomatedBackups API operation for Amazon Relational Database Service.
//
// Displays backups for both current and deleted DB clusters. For example, use
// this operation to find details about automated backups for previously deleted
// clusters. Current clusters are returned for both the DescribeDBClusterAutomatedBackups
// and DescribeDBClusters operations.
//
// All parameters are optional.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBClusterAutomatedBackups for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBClusterAutomatedBackupNotFoundFault "DBClusterAutomatedBackupNotFoundFault"
//     No automated backup for this DB cluster was found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusterAutomatedBackups
func (c *RDS) DescribeDBClusterAutomatedBackups(input *DescribeDBClusterAutomatedBackupsInput) (*DescribeDBClusterAutomatedBackupsOutput, error) {
	req, out := c.DescribeDBClusterAutomatedBackupsRequest(input)
	return out, req.Send()
}

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

// DescribeDBClusterAutomatedBackupsPages iterates over the pages of a DescribeDBClusterAutomatedBackups operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBClusterAutomatedBackups 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 DescribeDBClusterAutomatedBackups operation.
//	pageNum := 0
//	err := client.DescribeDBClusterAutomatedBackupsPages(params,
//	    func(page *rds.DescribeDBClusterAutomatedBackupsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBClusterAutomatedBackupsPages(input *DescribeDBClusterAutomatedBackupsInput, fn func(*DescribeDBClusterAutomatedBackupsOutput, bool) bool) error {
	return c.DescribeDBClusterAutomatedBackupsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBClusterAutomatedBackupsPagesWithContext same as DescribeDBClusterAutomatedBackupsPages 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 *RDS) DescribeDBClusterAutomatedBackupsPagesWithContext(ctx aws.Context, input *DescribeDBClusterAutomatedBackupsInput, fn func(*DescribeDBClusterAutomatedBackupsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBClusterAutomatedBackupsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBClusterAutomatedBackupsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBClusterBacktracks = "DescribeDBClusterBacktracks"

// DescribeDBClusterBacktracksRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBClusterBacktracks 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 DescribeDBClusterBacktracks for more information on using the DescribeDBClusterBacktracks
// 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 DescribeDBClusterBacktracksRequest method.
//	req, resp := client.DescribeDBClusterBacktracksRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusterBacktracks
func (c *RDS) DescribeDBClusterBacktracksRequest(input *DescribeDBClusterBacktracksInput) (req *request.Request, output *DescribeDBClusterBacktracksOutput) {
	op := &request.Operation{
		Name:       opDescribeDBClusterBacktracks,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBClusterBacktracksInput{}
	}

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

// DescribeDBClusterBacktracks API operation for Amazon Relational Database Service.
//
// Returns information about backtracks for a DB cluster.
//
// For more information on Amazon Aurora, see What is Amazon Aurora? (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// This action only applies to Aurora MySQL DB clusters.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBClusterBacktracks for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeDBClusterBacktrackNotFoundFault "DBClusterBacktrackNotFoundFault"
//     BacktrackIdentifier doesn't refer to an existing backtrack.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusterBacktracks
func (c *RDS) DescribeDBClusterBacktracks(input *DescribeDBClusterBacktracksInput) (*DescribeDBClusterBacktracksOutput, error) {
	req, out := c.DescribeDBClusterBacktracksRequest(input)
	return out, req.Send()
}

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

// DescribeDBClusterBacktracksPages iterates over the pages of a DescribeDBClusterBacktracks operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBClusterBacktracks 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 DescribeDBClusterBacktracks operation.
//	pageNum := 0
//	err := client.DescribeDBClusterBacktracksPages(params,
//	    func(page *rds.DescribeDBClusterBacktracksOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBClusterBacktracksPages(input *DescribeDBClusterBacktracksInput, fn func(*DescribeDBClusterBacktracksOutput, bool) bool) error {
	return c.DescribeDBClusterBacktracksPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBClusterBacktracksPagesWithContext same as DescribeDBClusterBacktracksPages 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 *RDS) DescribeDBClusterBacktracksPagesWithContext(ctx aws.Context, input *DescribeDBClusterBacktracksInput, fn func(*DescribeDBClusterBacktracksOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBClusterBacktracksInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBClusterBacktracksRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBClusterEndpoints = "DescribeDBClusterEndpoints"

// DescribeDBClusterEndpointsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBClusterEndpoints 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 DescribeDBClusterEndpoints for more information on using the DescribeDBClusterEndpoints
// 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 DescribeDBClusterEndpointsRequest method.
//	req, resp := client.DescribeDBClusterEndpointsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusterEndpoints
func (c *RDS) DescribeDBClusterEndpointsRequest(input *DescribeDBClusterEndpointsInput) (req *request.Request, output *DescribeDBClusterEndpointsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBClusterEndpoints,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBClusterEndpointsInput{}
	}

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

// DescribeDBClusterEndpoints API operation for Amazon Relational Database Service.
//
// Returns information about endpoints for an Amazon Aurora DB cluster.
//
// This action only applies to Aurora DB clusters.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBClusterEndpoints for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusterEndpoints
func (c *RDS) DescribeDBClusterEndpoints(input *DescribeDBClusterEndpointsInput) (*DescribeDBClusterEndpointsOutput, error) {
	req, out := c.DescribeDBClusterEndpointsRequest(input)
	return out, req.Send()
}

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

// DescribeDBClusterEndpointsPages iterates over the pages of a DescribeDBClusterEndpoints operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBClusterEndpoints 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 DescribeDBClusterEndpoints operation.
//	pageNum := 0
//	err := client.DescribeDBClusterEndpointsPages(params,
//	    func(page *rds.DescribeDBClusterEndpointsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBClusterEndpointsPages(input *DescribeDBClusterEndpointsInput, fn func(*DescribeDBClusterEndpointsOutput, bool) bool) error {
	return c.DescribeDBClusterEndpointsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBClusterEndpointsPagesWithContext same as DescribeDBClusterEndpointsPages 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 *RDS) DescribeDBClusterEndpointsPagesWithContext(ctx aws.Context, input *DescribeDBClusterEndpointsInput, fn func(*DescribeDBClusterEndpointsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBClusterEndpointsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBClusterEndpointsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBClusterParameterGroups = "DescribeDBClusterParameterGroups"

// DescribeDBClusterParameterGroupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBClusterParameterGroups 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 DescribeDBClusterParameterGroups for more information on using the DescribeDBClusterParameterGroups
// 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 DescribeDBClusterParameterGroupsRequest method.
//	req, resp := client.DescribeDBClusterParameterGroupsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusterParameterGroups
func (c *RDS) DescribeDBClusterParameterGroupsRequest(input *DescribeDBClusterParameterGroupsInput) (req *request.Request, output *DescribeDBClusterParameterGroupsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBClusterParameterGroups,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBClusterParameterGroupsInput{}
	}

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

// DescribeDBClusterParameterGroups API operation for Amazon Relational Database Service.
//
// Returns a list of DBClusterParameterGroup descriptions. If a DBClusterParameterGroupName
// parameter is specified, the list will contain only the description of the
// specified DB cluster parameter group.
//
// For more information on Amazon Aurora, see What is Amazon Aurora? (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation DescribeDBClusterParameterGroups for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusterParameterGroups
func (c *RDS) DescribeDBClusterParameterGroups(input *DescribeDBClusterParameterGroupsInput) (*DescribeDBClusterParameterGroupsOutput, error) {
	req, out := c.DescribeDBClusterParameterGroupsRequest(input)
	return out, req.Send()
}

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

// DescribeDBClusterParameterGroupsPages iterates over the pages of a DescribeDBClusterParameterGroups operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBClusterParameterGroups 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 DescribeDBClusterParameterGroups operation.
//	pageNum := 0
//	err := client.DescribeDBClusterParameterGroupsPages(params,
//	    func(page *rds.DescribeDBClusterParameterGroupsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBClusterParameterGroupsPages(input *DescribeDBClusterParameterGroupsInput, fn func(*DescribeDBClusterParameterGroupsOutput, bool) bool) error {
	return c.DescribeDBClusterParameterGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBClusterParameterGroupsPagesWithContext same as DescribeDBClusterParameterGroupsPages 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 *RDS) DescribeDBClusterParameterGroupsPagesWithContext(ctx aws.Context, input *DescribeDBClusterParameterGroupsInput, fn func(*DescribeDBClusterParameterGroupsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBClusterParameterGroupsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBClusterParameterGroupsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBClusterParameters = "DescribeDBClusterParameters"

// DescribeDBClusterParametersRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBClusterParameters 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 DescribeDBClusterParameters for more information on using the DescribeDBClusterParameters
// 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 DescribeDBClusterParametersRequest method.
//	req, resp := client.DescribeDBClusterParametersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusterParameters
func (c *RDS) DescribeDBClusterParametersRequest(input *DescribeDBClusterParametersInput) (req *request.Request, output *DescribeDBClusterParametersOutput) {
	op := &request.Operation{
		Name:       opDescribeDBClusterParameters,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBClusterParametersInput{}
	}

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

// DescribeDBClusterParameters API operation for Amazon Relational Database Service.
//
// Returns the detailed parameter list for a particular DB cluster parameter
// group.
//
// For more information on Amazon Aurora, see What is Amazon Aurora? (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation DescribeDBClusterParameters for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusterParameters
func (c *RDS) DescribeDBClusterParameters(input *DescribeDBClusterParametersInput) (*DescribeDBClusterParametersOutput, error) {
	req, out := c.DescribeDBClusterParametersRequest(input)
	return out, req.Send()
}

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

// DescribeDBClusterParametersPages iterates over the pages of a DescribeDBClusterParameters operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBClusterParameters 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 DescribeDBClusterParameters operation.
//	pageNum := 0
//	err := client.DescribeDBClusterParametersPages(params,
//	    func(page *rds.DescribeDBClusterParametersOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBClusterParametersPages(input *DescribeDBClusterParametersInput, fn func(*DescribeDBClusterParametersOutput, bool) bool) error {
	return c.DescribeDBClusterParametersPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBClusterParametersPagesWithContext same as DescribeDBClusterParametersPages 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 *RDS) DescribeDBClusterParametersPagesWithContext(ctx aws.Context, input *DescribeDBClusterParametersInput, fn func(*DescribeDBClusterParametersOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBClusterParametersInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBClusterParametersRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBClusterSnapshotAttributes = "DescribeDBClusterSnapshotAttributes"

// DescribeDBClusterSnapshotAttributesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBClusterSnapshotAttributes 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 DescribeDBClusterSnapshotAttributes for more information on using the DescribeDBClusterSnapshotAttributes
// 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 DescribeDBClusterSnapshotAttributesRequest method.
//	req, resp := client.DescribeDBClusterSnapshotAttributesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusterSnapshotAttributes
func (c *RDS) DescribeDBClusterSnapshotAttributesRequest(input *DescribeDBClusterSnapshotAttributesInput) (req *request.Request, output *DescribeDBClusterSnapshotAttributesOutput) {
	op := &request.Operation{
		Name:       opDescribeDBClusterSnapshotAttributes,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeDBClusterSnapshotAttributesInput{}
	}

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

// DescribeDBClusterSnapshotAttributes API operation for Amazon Relational Database Service.
//
// Returns a list of DB cluster snapshot attribute names and values for a manual
// DB cluster snapshot.
//
// When sharing snapshots with other Amazon Web Services accounts, DescribeDBClusterSnapshotAttributes
// returns the restore attribute and a list of IDs for the Amazon Web Services
// accounts that are authorized to copy or restore the manual DB cluster snapshot.
// If all is included in the list of values for the restore attribute, then
// the manual DB cluster snapshot is public and can be copied or restored by
// all Amazon Web Services accounts.
//
// To add or remove access for an Amazon Web Services account to copy or restore
// a manual DB cluster snapshot, or to make the manual DB cluster snapshot public
// or private, use the ModifyDBClusterSnapshotAttribute API 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 Amazon Relational Database Service's
// API operation DescribeDBClusterSnapshotAttributes for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBClusterSnapshotNotFoundFault "DBClusterSnapshotNotFoundFault"
//     DBClusterSnapshotIdentifier doesn't refer to an existing DB cluster snapshot.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusterSnapshotAttributes
func (c *RDS) DescribeDBClusterSnapshotAttributes(input *DescribeDBClusterSnapshotAttributesInput) (*DescribeDBClusterSnapshotAttributesOutput, error) {
	req, out := c.DescribeDBClusterSnapshotAttributesRequest(input)
	return out, req.Send()
}

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

const opDescribeDBClusterSnapshots = "DescribeDBClusterSnapshots"

// DescribeDBClusterSnapshotsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBClusterSnapshots 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 DescribeDBClusterSnapshots for more information on using the DescribeDBClusterSnapshots
// 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 DescribeDBClusterSnapshotsRequest method.
//	req, resp := client.DescribeDBClusterSnapshotsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusterSnapshots
func (c *RDS) DescribeDBClusterSnapshotsRequest(input *DescribeDBClusterSnapshotsInput) (req *request.Request, output *DescribeDBClusterSnapshotsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBClusterSnapshots,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBClusterSnapshotsInput{}
	}

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

// DescribeDBClusterSnapshots API operation for Amazon Relational Database Service.
//
// Returns information about DB cluster snapshots. This API action supports
// pagination.
//
// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation DescribeDBClusterSnapshots for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBClusterSnapshotNotFoundFault "DBClusterSnapshotNotFoundFault"
//     DBClusterSnapshotIdentifier doesn't refer to an existing DB cluster snapshot.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusterSnapshots
func (c *RDS) DescribeDBClusterSnapshots(input *DescribeDBClusterSnapshotsInput) (*DescribeDBClusterSnapshotsOutput, error) {
	req, out := c.DescribeDBClusterSnapshotsRequest(input)
	return out, req.Send()
}

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

// DescribeDBClusterSnapshotsPages iterates over the pages of a DescribeDBClusterSnapshots operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBClusterSnapshots 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 DescribeDBClusterSnapshots operation.
//	pageNum := 0
//	err := client.DescribeDBClusterSnapshotsPages(params,
//	    func(page *rds.DescribeDBClusterSnapshotsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBClusterSnapshotsPages(input *DescribeDBClusterSnapshotsInput, fn func(*DescribeDBClusterSnapshotsOutput, bool) bool) error {
	return c.DescribeDBClusterSnapshotsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBClusterSnapshotsPagesWithContext same as DescribeDBClusterSnapshotsPages 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 *RDS) DescribeDBClusterSnapshotsPagesWithContext(ctx aws.Context, input *DescribeDBClusterSnapshotsInput, fn func(*DescribeDBClusterSnapshotsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBClusterSnapshotsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBClusterSnapshotsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBClusters = "DescribeDBClusters"

// DescribeDBClustersRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBClusters 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 DescribeDBClusters for more information on using the DescribeDBClusters
// 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 DescribeDBClustersRequest method.
//	req, resp := client.DescribeDBClustersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusters
func (c *RDS) DescribeDBClustersRequest(input *DescribeDBClustersInput) (req *request.Request, output *DescribeDBClustersOutput) {
	op := &request.Operation{
		Name:       opDescribeDBClusters,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBClustersInput{}
	}

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

// DescribeDBClusters API operation for Amazon Relational Database Service.
//
// Describes existing Amazon Aurora DB clusters and Multi-AZ DB clusters. This
// API supports pagination.
//
// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS User Guide.
//
// This operation can also return information for Amazon Neptune DB instances
// and Amazon DocumentDB instances.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBClusters for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBClusters
func (c *RDS) DescribeDBClusters(input *DescribeDBClustersInput) (*DescribeDBClustersOutput, error) {
	req, out := c.DescribeDBClustersRequest(input)
	return out, req.Send()
}

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

// DescribeDBClustersPages iterates over the pages of a DescribeDBClusters operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBClusters 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 DescribeDBClusters operation.
//	pageNum := 0
//	err := client.DescribeDBClustersPages(params,
//	    func(page *rds.DescribeDBClustersOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBClustersPages(input *DescribeDBClustersInput, fn func(*DescribeDBClustersOutput, bool) bool) error {
	return c.DescribeDBClustersPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBClustersPagesWithContext same as DescribeDBClustersPages 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 *RDS) DescribeDBClustersPagesWithContext(ctx aws.Context, input *DescribeDBClustersInput, fn func(*DescribeDBClustersOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBClustersInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBClustersRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBEngineVersions = "DescribeDBEngineVersions"

// DescribeDBEngineVersionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBEngineVersions 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 DescribeDBEngineVersions for more information on using the DescribeDBEngineVersions
// 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 DescribeDBEngineVersionsRequest method.
//	req, resp := client.DescribeDBEngineVersionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBEngineVersions
func (c *RDS) DescribeDBEngineVersionsRequest(input *DescribeDBEngineVersionsInput) (req *request.Request, output *DescribeDBEngineVersionsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBEngineVersions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBEngineVersionsInput{}
	}

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

// DescribeDBEngineVersions API operation for Amazon Relational Database Service.
//
// Describes the properties of specific versions of DB engines.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBEngineVersions for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBEngineVersions
func (c *RDS) DescribeDBEngineVersions(input *DescribeDBEngineVersionsInput) (*DescribeDBEngineVersionsOutput, error) {
	req, out := c.DescribeDBEngineVersionsRequest(input)
	return out, req.Send()
}

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

// DescribeDBEngineVersionsPages iterates over the pages of a DescribeDBEngineVersions operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBEngineVersions 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 DescribeDBEngineVersions operation.
//	pageNum := 0
//	err := client.DescribeDBEngineVersionsPages(params,
//	    func(page *rds.DescribeDBEngineVersionsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBEngineVersionsPages(input *DescribeDBEngineVersionsInput, fn func(*DescribeDBEngineVersionsOutput, bool) bool) error {
	return c.DescribeDBEngineVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBEngineVersionsPagesWithContext same as DescribeDBEngineVersionsPages 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 *RDS) DescribeDBEngineVersionsPagesWithContext(ctx aws.Context, input *DescribeDBEngineVersionsInput, fn func(*DescribeDBEngineVersionsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBEngineVersionsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBEngineVersionsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBInstanceAutomatedBackups = "DescribeDBInstanceAutomatedBackups"

// DescribeDBInstanceAutomatedBackupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBInstanceAutomatedBackups 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 DescribeDBInstanceAutomatedBackups for more information on using the DescribeDBInstanceAutomatedBackups
// 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 DescribeDBInstanceAutomatedBackupsRequest method.
//	req, resp := client.DescribeDBInstanceAutomatedBackupsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBInstanceAutomatedBackups
func (c *RDS) DescribeDBInstanceAutomatedBackupsRequest(input *DescribeDBInstanceAutomatedBackupsInput) (req *request.Request, output *DescribeDBInstanceAutomatedBackupsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBInstanceAutomatedBackups,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBInstanceAutomatedBackupsInput{}
	}

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

// DescribeDBInstanceAutomatedBackups API operation for Amazon Relational Database Service.
//
// Displays backups for both current and deleted instances. For example, use
// this operation to find details about automated backups for previously deleted
// instances. Current instances with retention periods greater than zero (0)
// are returned for both the DescribeDBInstanceAutomatedBackups and DescribeDBInstances
// operations.
//
// All parameters are optional.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBInstanceAutomatedBackups for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBInstanceAutomatedBackupNotFoundFault "DBInstanceAutomatedBackupNotFound"
//     No automated backup for this DB instance was found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBInstanceAutomatedBackups
func (c *RDS) DescribeDBInstanceAutomatedBackups(input *DescribeDBInstanceAutomatedBackupsInput) (*DescribeDBInstanceAutomatedBackupsOutput, error) {
	req, out := c.DescribeDBInstanceAutomatedBackupsRequest(input)
	return out, req.Send()
}

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

// DescribeDBInstanceAutomatedBackupsPages iterates over the pages of a DescribeDBInstanceAutomatedBackups operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBInstanceAutomatedBackups 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 DescribeDBInstanceAutomatedBackups operation.
//	pageNum := 0
//	err := client.DescribeDBInstanceAutomatedBackupsPages(params,
//	    func(page *rds.DescribeDBInstanceAutomatedBackupsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBInstanceAutomatedBackupsPages(input *DescribeDBInstanceAutomatedBackupsInput, fn func(*DescribeDBInstanceAutomatedBackupsOutput, bool) bool) error {
	return c.DescribeDBInstanceAutomatedBackupsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBInstanceAutomatedBackupsPagesWithContext same as DescribeDBInstanceAutomatedBackupsPages 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 *RDS) DescribeDBInstanceAutomatedBackupsPagesWithContext(ctx aws.Context, input *DescribeDBInstanceAutomatedBackupsInput, fn func(*DescribeDBInstanceAutomatedBackupsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBInstanceAutomatedBackupsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBInstanceAutomatedBackupsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBInstances = "DescribeDBInstances"

// DescribeDBInstancesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBInstances 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 DescribeDBInstances for more information on using the DescribeDBInstances
// 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 DescribeDBInstancesRequest method.
//	req, resp := client.DescribeDBInstancesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBInstances
func (c *RDS) DescribeDBInstancesRequest(input *DescribeDBInstancesInput) (req *request.Request, output *DescribeDBInstancesOutput) {
	op := &request.Operation{
		Name:       opDescribeDBInstances,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBInstancesInput{}
	}

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

// DescribeDBInstances API operation for Amazon Relational Database Service.
//
// Describes provisioned RDS instances. This API supports pagination.
//
// This operation can also return information for Amazon Neptune DB instances
// and Amazon DocumentDB instances.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBInstances for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBInstances
func (c *RDS) DescribeDBInstances(input *DescribeDBInstancesInput) (*DescribeDBInstancesOutput, error) {
	req, out := c.DescribeDBInstancesRequest(input)
	return out, req.Send()
}

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

// DescribeDBInstancesPages iterates over the pages of a DescribeDBInstances operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBInstances 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 DescribeDBInstances operation.
//	pageNum := 0
//	err := client.DescribeDBInstancesPages(params,
//	    func(page *rds.DescribeDBInstancesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBInstancesPages(input *DescribeDBInstancesInput, fn func(*DescribeDBInstancesOutput, bool) bool) error {
	return c.DescribeDBInstancesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBInstancesPagesWithContext same as DescribeDBInstancesPages 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 *RDS) DescribeDBInstancesPagesWithContext(ctx aws.Context, input *DescribeDBInstancesInput, fn func(*DescribeDBInstancesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBInstancesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBInstancesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBLogFiles = "DescribeDBLogFiles"

// DescribeDBLogFilesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBLogFiles 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 DescribeDBLogFiles for more information on using the DescribeDBLogFiles
// 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 DescribeDBLogFilesRequest method.
//	req, resp := client.DescribeDBLogFilesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBLogFiles
func (c *RDS) DescribeDBLogFilesRequest(input *DescribeDBLogFilesInput) (req *request.Request, output *DescribeDBLogFilesOutput) {
	op := &request.Operation{
		Name:       opDescribeDBLogFiles,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBLogFilesInput{}
	}

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

// DescribeDBLogFiles API operation for Amazon Relational Database Service.
//
// Returns a list of DB log files for the DB instance.
//
// This command doesn't apply to RDS Custom.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBLogFiles for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBLogFiles
func (c *RDS) DescribeDBLogFiles(input *DescribeDBLogFilesInput) (*DescribeDBLogFilesOutput, error) {
	req, out := c.DescribeDBLogFilesRequest(input)
	return out, req.Send()
}

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

// DescribeDBLogFilesPages iterates over the pages of a DescribeDBLogFiles operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBLogFiles 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 DescribeDBLogFiles operation.
//	pageNum := 0
//	err := client.DescribeDBLogFilesPages(params,
//	    func(page *rds.DescribeDBLogFilesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBLogFilesPages(input *DescribeDBLogFilesInput, fn func(*DescribeDBLogFilesOutput, bool) bool) error {
	return c.DescribeDBLogFilesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBLogFilesPagesWithContext same as DescribeDBLogFilesPages 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 *RDS) DescribeDBLogFilesPagesWithContext(ctx aws.Context, input *DescribeDBLogFilesInput, fn func(*DescribeDBLogFilesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBLogFilesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBLogFilesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBParameterGroups = "DescribeDBParameterGroups"

// DescribeDBParameterGroupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBParameterGroups 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 DescribeDBParameterGroups for more information on using the DescribeDBParameterGroups
// 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 DescribeDBParameterGroupsRequest method.
//	req, resp := client.DescribeDBParameterGroupsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBParameterGroups
func (c *RDS) DescribeDBParameterGroupsRequest(input *DescribeDBParameterGroupsInput) (req *request.Request, output *DescribeDBParameterGroupsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBParameterGroups,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBParameterGroupsInput{}
	}

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

// DescribeDBParameterGroups API operation for Amazon Relational Database Service.
//
// Returns a list of DBParameterGroup descriptions. If a DBParameterGroupName
// is specified, the list will contain only the description of the specified
// DB parameter group.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBParameterGroups for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBParameterGroups
func (c *RDS) DescribeDBParameterGroups(input *DescribeDBParameterGroupsInput) (*DescribeDBParameterGroupsOutput, error) {
	req, out := c.DescribeDBParameterGroupsRequest(input)
	return out, req.Send()
}

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

// DescribeDBParameterGroupsPages iterates over the pages of a DescribeDBParameterGroups operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBParameterGroups 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 DescribeDBParameterGroups operation.
//	pageNum := 0
//	err := client.DescribeDBParameterGroupsPages(params,
//	    func(page *rds.DescribeDBParameterGroupsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBParameterGroupsPages(input *DescribeDBParameterGroupsInput, fn func(*DescribeDBParameterGroupsOutput, bool) bool) error {
	return c.DescribeDBParameterGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBParameterGroupsPagesWithContext same as DescribeDBParameterGroupsPages 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 *RDS) DescribeDBParameterGroupsPagesWithContext(ctx aws.Context, input *DescribeDBParameterGroupsInput, fn func(*DescribeDBParameterGroupsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBParameterGroupsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBParameterGroupsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBParameters = "DescribeDBParameters"

// DescribeDBParametersRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBParameters 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 DescribeDBParameters for more information on using the DescribeDBParameters
// 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 DescribeDBParametersRequest method.
//	req, resp := client.DescribeDBParametersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBParameters
func (c *RDS) DescribeDBParametersRequest(input *DescribeDBParametersInput) (req *request.Request, output *DescribeDBParametersOutput) {
	op := &request.Operation{
		Name:       opDescribeDBParameters,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBParametersInput{}
	}

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

// DescribeDBParameters API operation for Amazon Relational Database Service.
//
// Returns the detailed parameter list for a particular DB parameter group.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBParameters for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBParameters
func (c *RDS) DescribeDBParameters(input *DescribeDBParametersInput) (*DescribeDBParametersOutput, error) {
	req, out := c.DescribeDBParametersRequest(input)
	return out, req.Send()
}

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

// DescribeDBParametersPages iterates over the pages of a DescribeDBParameters operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBParameters 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 DescribeDBParameters operation.
//	pageNum := 0
//	err := client.DescribeDBParametersPages(params,
//	    func(page *rds.DescribeDBParametersOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBParametersPages(input *DescribeDBParametersInput, fn func(*DescribeDBParametersOutput, bool) bool) error {
	return c.DescribeDBParametersPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBParametersPagesWithContext same as DescribeDBParametersPages 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 *RDS) DescribeDBParametersPagesWithContext(ctx aws.Context, input *DescribeDBParametersInput, fn func(*DescribeDBParametersOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBParametersInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBParametersRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBProxies = "DescribeDBProxies"

// DescribeDBProxiesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBProxies 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 DescribeDBProxies for more information on using the DescribeDBProxies
// 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 DescribeDBProxiesRequest method.
//	req, resp := client.DescribeDBProxiesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBProxies
func (c *RDS) DescribeDBProxiesRequest(input *DescribeDBProxiesInput) (req *request.Request, output *DescribeDBProxiesOutput) {
	op := &request.Operation{
		Name:       opDescribeDBProxies,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBProxiesInput{}
	}

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

// DescribeDBProxies API operation for Amazon Relational Database Service.
//
// Returns information about DB proxies.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBProxies for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBProxyNotFoundFault "DBProxyNotFoundFault"
//     The specified proxy name doesn't correspond to a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBProxies
func (c *RDS) DescribeDBProxies(input *DescribeDBProxiesInput) (*DescribeDBProxiesOutput, error) {
	req, out := c.DescribeDBProxiesRequest(input)
	return out, req.Send()
}

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

// DescribeDBProxiesPages iterates over the pages of a DescribeDBProxies operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBProxies 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 DescribeDBProxies operation.
//	pageNum := 0
//	err := client.DescribeDBProxiesPages(params,
//	    func(page *rds.DescribeDBProxiesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBProxiesPages(input *DescribeDBProxiesInput, fn func(*DescribeDBProxiesOutput, bool) bool) error {
	return c.DescribeDBProxiesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBProxiesPagesWithContext same as DescribeDBProxiesPages 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 *RDS) DescribeDBProxiesPagesWithContext(ctx aws.Context, input *DescribeDBProxiesInput, fn func(*DescribeDBProxiesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBProxiesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBProxiesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBProxyEndpoints = "DescribeDBProxyEndpoints"

// DescribeDBProxyEndpointsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBProxyEndpoints 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 DescribeDBProxyEndpoints for more information on using the DescribeDBProxyEndpoints
// 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 DescribeDBProxyEndpointsRequest method.
//	req, resp := client.DescribeDBProxyEndpointsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBProxyEndpoints
func (c *RDS) DescribeDBProxyEndpointsRequest(input *DescribeDBProxyEndpointsInput) (req *request.Request, output *DescribeDBProxyEndpointsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBProxyEndpoints,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBProxyEndpointsInput{}
	}

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

// DescribeDBProxyEndpoints API operation for Amazon Relational Database Service.
//
// Returns information about DB proxy endpoints.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBProxyEndpoints for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBProxyNotFoundFault "DBProxyNotFoundFault"
//     The specified proxy name doesn't correspond to a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBProxyEndpointNotFoundFault "DBProxyEndpointNotFoundFault"
//     The DB proxy endpoint doesn't exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBProxyEndpoints
func (c *RDS) DescribeDBProxyEndpoints(input *DescribeDBProxyEndpointsInput) (*DescribeDBProxyEndpointsOutput, error) {
	req, out := c.DescribeDBProxyEndpointsRequest(input)
	return out, req.Send()
}

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

// DescribeDBProxyEndpointsPages iterates over the pages of a DescribeDBProxyEndpoints operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBProxyEndpoints 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 DescribeDBProxyEndpoints operation.
//	pageNum := 0
//	err := client.DescribeDBProxyEndpointsPages(params,
//	    func(page *rds.DescribeDBProxyEndpointsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBProxyEndpointsPages(input *DescribeDBProxyEndpointsInput, fn func(*DescribeDBProxyEndpointsOutput, bool) bool) error {
	return c.DescribeDBProxyEndpointsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBProxyEndpointsPagesWithContext same as DescribeDBProxyEndpointsPages 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 *RDS) DescribeDBProxyEndpointsPagesWithContext(ctx aws.Context, input *DescribeDBProxyEndpointsInput, fn func(*DescribeDBProxyEndpointsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBProxyEndpointsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBProxyEndpointsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBProxyTargetGroups = "DescribeDBProxyTargetGroups"

// DescribeDBProxyTargetGroupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBProxyTargetGroups 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 DescribeDBProxyTargetGroups for more information on using the DescribeDBProxyTargetGroups
// 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 DescribeDBProxyTargetGroupsRequest method.
//	req, resp := client.DescribeDBProxyTargetGroupsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBProxyTargetGroups
func (c *RDS) DescribeDBProxyTargetGroupsRequest(input *DescribeDBProxyTargetGroupsInput) (req *request.Request, output *DescribeDBProxyTargetGroupsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBProxyTargetGroups,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBProxyTargetGroupsInput{}
	}

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

// DescribeDBProxyTargetGroups API operation for Amazon Relational Database Service.
//
// Returns information about DB proxy target groups, represented by DBProxyTargetGroup
// data structures.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBProxyTargetGroups for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBProxyNotFoundFault "DBProxyNotFoundFault"
//     The specified proxy name doesn't correspond to a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBProxyTargetGroupNotFoundFault "DBProxyTargetGroupNotFoundFault"
//     The specified target group isn't available for a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeInvalidDBProxyStateFault "InvalidDBProxyStateFault"
//     The requested operation can't be performed while the proxy is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBProxyTargetGroups
func (c *RDS) DescribeDBProxyTargetGroups(input *DescribeDBProxyTargetGroupsInput) (*DescribeDBProxyTargetGroupsOutput, error) {
	req, out := c.DescribeDBProxyTargetGroupsRequest(input)
	return out, req.Send()
}

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

// DescribeDBProxyTargetGroupsPages iterates over the pages of a DescribeDBProxyTargetGroups operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBProxyTargetGroups 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 DescribeDBProxyTargetGroups operation.
//	pageNum := 0
//	err := client.DescribeDBProxyTargetGroupsPages(params,
//	    func(page *rds.DescribeDBProxyTargetGroupsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBProxyTargetGroupsPages(input *DescribeDBProxyTargetGroupsInput, fn func(*DescribeDBProxyTargetGroupsOutput, bool) bool) error {
	return c.DescribeDBProxyTargetGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBProxyTargetGroupsPagesWithContext same as DescribeDBProxyTargetGroupsPages 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 *RDS) DescribeDBProxyTargetGroupsPagesWithContext(ctx aws.Context, input *DescribeDBProxyTargetGroupsInput, fn func(*DescribeDBProxyTargetGroupsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBProxyTargetGroupsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBProxyTargetGroupsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBProxyTargets = "DescribeDBProxyTargets"

// DescribeDBProxyTargetsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBProxyTargets 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 DescribeDBProxyTargets for more information on using the DescribeDBProxyTargets
// 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 DescribeDBProxyTargetsRequest method.
//	req, resp := client.DescribeDBProxyTargetsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBProxyTargets
func (c *RDS) DescribeDBProxyTargetsRequest(input *DescribeDBProxyTargetsInput) (req *request.Request, output *DescribeDBProxyTargetsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBProxyTargets,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBProxyTargetsInput{}
	}

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

// DescribeDBProxyTargets API operation for Amazon Relational Database Service.
//
// Returns information about DBProxyTarget objects. This API supports pagination.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBProxyTargets for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBProxyNotFoundFault "DBProxyNotFoundFault"
//     The specified proxy name doesn't correspond to a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBProxyTargetNotFoundFault "DBProxyTargetNotFoundFault"
//     The specified RDS DB instance or Aurora DB cluster isn't available for a
//     proxy owned by your Amazon Web Services account in the specified Amazon Web
//     Services Region.
//
//   - ErrCodeDBProxyTargetGroupNotFoundFault "DBProxyTargetGroupNotFoundFault"
//     The specified target group isn't available for a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeInvalidDBProxyStateFault "InvalidDBProxyStateFault"
//     The requested operation can't be performed while the proxy is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBProxyTargets
func (c *RDS) DescribeDBProxyTargets(input *DescribeDBProxyTargetsInput) (*DescribeDBProxyTargetsOutput, error) {
	req, out := c.DescribeDBProxyTargetsRequest(input)
	return out, req.Send()
}

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

// DescribeDBProxyTargetsPages iterates over the pages of a DescribeDBProxyTargets operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBProxyTargets 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 DescribeDBProxyTargets operation.
//	pageNum := 0
//	err := client.DescribeDBProxyTargetsPages(params,
//	    func(page *rds.DescribeDBProxyTargetsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBProxyTargetsPages(input *DescribeDBProxyTargetsInput, fn func(*DescribeDBProxyTargetsOutput, bool) bool) error {
	return c.DescribeDBProxyTargetsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBProxyTargetsPagesWithContext same as DescribeDBProxyTargetsPages 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 *RDS) DescribeDBProxyTargetsPagesWithContext(ctx aws.Context, input *DescribeDBProxyTargetsInput, fn func(*DescribeDBProxyTargetsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBProxyTargetsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBProxyTargetsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBRecommendations = "DescribeDBRecommendations"

// DescribeDBRecommendationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBRecommendations 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 DescribeDBRecommendations for more information on using the DescribeDBRecommendations
// 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 DescribeDBRecommendationsRequest method.
//	req, resp := client.DescribeDBRecommendationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBRecommendations
func (c *RDS) DescribeDBRecommendationsRequest(input *DescribeDBRecommendationsInput) (req *request.Request, output *DescribeDBRecommendationsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBRecommendations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBRecommendationsInput{}
	}

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

// DescribeDBRecommendations API operation for Amazon Relational Database Service.
//
// Describes the recommendations to resolve the issues for your DB instances,
// DB clusters, and DB parameter groups.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBRecommendations for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBRecommendations
func (c *RDS) DescribeDBRecommendations(input *DescribeDBRecommendationsInput) (*DescribeDBRecommendationsOutput, error) {
	req, out := c.DescribeDBRecommendationsRequest(input)
	return out, req.Send()
}

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

// DescribeDBRecommendationsPages iterates over the pages of a DescribeDBRecommendations operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBRecommendations 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 DescribeDBRecommendations operation.
//	pageNum := 0
//	err := client.DescribeDBRecommendationsPages(params,
//	    func(page *rds.DescribeDBRecommendationsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBRecommendationsPages(input *DescribeDBRecommendationsInput, fn func(*DescribeDBRecommendationsOutput, bool) bool) error {
	return c.DescribeDBRecommendationsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBRecommendationsPagesWithContext same as DescribeDBRecommendationsPages 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 *RDS) DescribeDBRecommendationsPagesWithContext(ctx aws.Context, input *DescribeDBRecommendationsInput, fn func(*DescribeDBRecommendationsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBRecommendationsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBRecommendationsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBSecurityGroups = "DescribeDBSecurityGroups"

// DescribeDBSecurityGroupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBSecurityGroups 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 DescribeDBSecurityGroups for more information on using the DescribeDBSecurityGroups
// 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 DescribeDBSecurityGroupsRequest method.
//	req, resp := client.DescribeDBSecurityGroupsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBSecurityGroups
func (c *RDS) DescribeDBSecurityGroupsRequest(input *DescribeDBSecurityGroupsInput) (req *request.Request, output *DescribeDBSecurityGroupsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBSecurityGroups,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBSecurityGroupsInput{}
	}

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

// DescribeDBSecurityGroups API operation for Amazon Relational Database Service.
//
// Returns a list of DBSecurityGroup descriptions. If a DBSecurityGroupName
// is specified, the list will contain only the descriptions of the specified
// DB security group.
//
// EC2-Classic was retired on August 15, 2022. If you haven't migrated from
// EC2-Classic to a VPC, we recommend that you migrate as soon as possible.
// For more information, see Migrate from EC2-Classic to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html)
// in the Amazon EC2 User Guide, the blog EC2-Classic Networking is Retiring
// – Here’s How to Prepare (http://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/),
// and Moving a DB instance not in a VPC into a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.Non-VPC2VPC.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation DescribeDBSecurityGroups for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBSecurityGroupNotFoundFault "DBSecurityGroupNotFound"
//     DBSecurityGroupName doesn't refer to an existing DB security group.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBSecurityGroups
func (c *RDS) DescribeDBSecurityGroups(input *DescribeDBSecurityGroupsInput) (*DescribeDBSecurityGroupsOutput, error) {
	req, out := c.DescribeDBSecurityGroupsRequest(input)
	return out, req.Send()
}

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

// DescribeDBSecurityGroupsPages iterates over the pages of a DescribeDBSecurityGroups operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBSecurityGroups 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 DescribeDBSecurityGroups operation.
//	pageNum := 0
//	err := client.DescribeDBSecurityGroupsPages(params,
//	    func(page *rds.DescribeDBSecurityGroupsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBSecurityGroupsPages(input *DescribeDBSecurityGroupsInput, fn func(*DescribeDBSecurityGroupsOutput, bool) bool) error {
	return c.DescribeDBSecurityGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBSecurityGroupsPagesWithContext same as DescribeDBSecurityGroupsPages 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 *RDS) DescribeDBSecurityGroupsPagesWithContext(ctx aws.Context, input *DescribeDBSecurityGroupsInput, fn func(*DescribeDBSecurityGroupsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBSecurityGroupsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBSecurityGroupsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBShardGroups = "DescribeDBShardGroups"

// DescribeDBShardGroupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBShardGroups 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 DescribeDBShardGroups for more information on using the DescribeDBShardGroups
// 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 DescribeDBShardGroupsRequest method.
//	req, resp := client.DescribeDBShardGroupsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBShardGroups
func (c *RDS) DescribeDBShardGroupsRequest(input *DescribeDBShardGroupsInput) (req *request.Request, output *DescribeDBShardGroupsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBShardGroups,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeDBShardGroupsInput{}
	}

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

// DescribeDBShardGroups API operation for Amazon Relational Database Service.
//
// Describes existing Aurora Limitless Database DB shard groups.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBShardGroups for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBShardGroupNotFoundFault "DBShardGroupNotFound"
//     The specified DB shard group name wasn't found.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBShardGroups
func (c *RDS) DescribeDBShardGroups(input *DescribeDBShardGroupsInput) (*DescribeDBShardGroupsOutput, error) {
	req, out := c.DescribeDBShardGroupsRequest(input)
	return out, req.Send()
}

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

const opDescribeDBSnapshotAttributes = "DescribeDBSnapshotAttributes"

// DescribeDBSnapshotAttributesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBSnapshotAttributes 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 DescribeDBSnapshotAttributes for more information on using the DescribeDBSnapshotAttributes
// 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 DescribeDBSnapshotAttributesRequest method.
//	req, resp := client.DescribeDBSnapshotAttributesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBSnapshotAttributes
func (c *RDS) DescribeDBSnapshotAttributesRequest(input *DescribeDBSnapshotAttributesInput) (req *request.Request, output *DescribeDBSnapshotAttributesOutput) {
	op := &request.Operation{
		Name:       opDescribeDBSnapshotAttributes,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeDBSnapshotAttributesInput{}
	}

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

// DescribeDBSnapshotAttributes API operation for Amazon Relational Database Service.
//
// Returns a list of DB snapshot attribute names and values for a manual DB
// snapshot.
//
// When sharing snapshots with other Amazon Web Services accounts, DescribeDBSnapshotAttributes
// returns the restore attribute and a list of IDs for the Amazon Web Services
// accounts that are authorized to copy or restore the manual DB snapshot. If
// all is included in the list of values for the restore attribute, then the
// manual DB snapshot is public and can be copied or restored by all Amazon
// Web Services accounts.
//
// To add or remove access for an Amazon Web Services account to copy or restore
// a manual DB snapshot, or to make the manual DB snapshot public or private,
// use the ModifyDBSnapshotAttribute API 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 Amazon Relational Database Service's
// API operation DescribeDBSnapshotAttributes for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBSnapshotNotFoundFault "DBSnapshotNotFound"
//     DBSnapshotIdentifier doesn't refer to an existing DB snapshot.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBSnapshotAttributes
func (c *RDS) DescribeDBSnapshotAttributes(input *DescribeDBSnapshotAttributesInput) (*DescribeDBSnapshotAttributesOutput, error) {
	req, out := c.DescribeDBSnapshotAttributesRequest(input)
	return out, req.Send()
}

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

const opDescribeDBSnapshotTenantDatabases = "DescribeDBSnapshotTenantDatabases"

// DescribeDBSnapshotTenantDatabasesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBSnapshotTenantDatabases 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 DescribeDBSnapshotTenantDatabases for more information on using the DescribeDBSnapshotTenantDatabases
// 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 DescribeDBSnapshotTenantDatabasesRequest method.
//	req, resp := client.DescribeDBSnapshotTenantDatabasesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBSnapshotTenantDatabases
func (c *RDS) DescribeDBSnapshotTenantDatabasesRequest(input *DescribeDBSnapshotTenantDatabasesInput) (req *request.Request, output *DescribeDBSnapshotTenantDatabasesOutput) {
	op := &request.Operation{
		Name:       opDescribeDBSnapshotTenantDatabases,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBSnapshotTenantDatabasesInput{}
	}

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

// DescribeDBSnapshotTenantDatabases API operation for Amazon Relational Database Service.
//
// Describes the tenant databases that exist in a DB snapshot. This command
// only applies to RDS for Oracle DB instances in the multi-tenant configuration.
//
// You can use this command to inspect the tenant databases within a snapshot
// before restoring it. You can't directly interact with the tenant databases
// in a DB snapshot. If you restore a snapshot that was taken from DB instance
// using the multi-tenant configuration, you restore all its tenant databases.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBSnapshotTenantDatabases for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBSnapshotNotFoundFault "DBSnapshotNotFound"
//     DBSnapshotIdentifier doesn't refer to an existing DB snapshot.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBSnapshotTenantDatabases
func (c *RDS) DescribeDBSnapshotTenantDatabases(input *DescribeDBSnapshotTenantDatabasesInput) (*DescribeDBSnapshotTenantDatabasesOutput, error) {
	req, out := c.DescribeDBSnapshotTenantDatabasesRequest(input)
	return out, req.Send()
}

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

// DescribeDBSnapshotTenantDatabasesPages iterates over the pages of a DescribeDBSnapshotTenantDatabases operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBSnapshotTenantDatabases 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 DescribeDBSnapshotTenantDatabases operation.
//	pageNum := 0
//	err := client.DescribeDBSnapshotTenantDatabasesPages(params,
//	    func(page *rds.DescribeDBSnapshotTenantDatabasesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBSnapshotTenantDatabasesPages(input *DescribeDBSnapshotTenantDatabasesInput, fn func(*DescribeDBSnapshotTenantDatabasesOutput, bool) bool) error {
	return c.DescribeDBSnapshotTenantDatabasesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBSnapshotTenantDatabasesPagesWithContext same as DescribeDBSnapshotTenantDatabasesPages 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 *RDS) DescribeDBSnapshotTenantDatabasesPagesWithContext(ctx aws.Context, input *DescribeDBSnapshotTenantDatabasesInput, fn func(*DescribeDBSnapshotTenantDatabasesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBSnapshotTenantDatabasesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBSnapshotTenantDatabasesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBSnapshots = "DescribeDBSnapshots"

// DescribeDBSnapshotsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBSnapshots 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 DescribeDBSnapshots for more information on using the DescribeDBSnapshots
// 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 DescribeDBSnapshotsRequest method.
//	req, resp := client.DescribeDBSnapshotsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBSnapshots
func (c *RDS) DescribeDBSnapshotsRequest(input *DescribeDBSnapshotsInput) (req *request.Request, output *DescribeDBSnapshotsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBSnapshots,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBSnapshotsInput{}
	}

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

// DescribeDBSnapshots API operation for Amazon Relational Database Service.
//
// Returns information about DB snapshots. This API action supports pagination.
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBSnapshots for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBSnapshotNotFoundFault "DBSnapshotNotFound"
//     DBSnapshotIdentifier doesn't refer to an existing DB snapshot.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBSnapshots
func (c *RDS) DescribeDBSnapshots(input *DescribeDBSnapshotsInput) (*DescribeDBSnapshotsOutput, error) {
	req, out := c.DescribeDBSnapshotsRequest(input)
	return out, req.Send()
}

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

// DescribeDBSnapshotsPages iterates over the pages of a DescribeDBSnapshots operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBSnapshots 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 DescribeDBSnapshots operation.
//	pageNum := 0
//	err := client.DescribeDBSnapshotsPages(params,
//	    func(page *rds.DescribeDBSnapshotsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBSnapshotsPages(input *DescribeDBSnapshotsInput, fn func(*DescribeDBSnapshotsOutput, bool) bool) error {
	return c.DescribeDBSnapshotsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBSnapshotsPagesWithContext same as DescribeDBSnapshotsPages 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 *RDS) DescribeDBSnapshotsPagesWithContext(ctx aws.Context, input *DescribeDBSnapshotsInput, fn func(*DescribeDBSnapshotsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBSnapshotsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBSnapshotsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeDBSubnetGroups = "DescribeDBSubnetGroups"

// DescribeDBSubnetGroupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDBSubnetGroups 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 DescribeDBSubnetGroups for more information on using the DescribeDBSubnetGroups
// 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 DescribeDBSubnetGroupsRequest method.
//	req, resp := client.DescribeDBSubnetGroupsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBSubnetGroups
func (c *RDS) DescribeDBSubnetGroupsRequest(input *DescribeDBSubnetGroupsInput) (req *request.Request, output *DescribeDBSubnetGroupsOutput) {
	op := &request.Operation{
		Name:       opDescribeDBSubnetGroups,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeDBSubnetGroupsInput{}
	}

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

// DescribeDBSubnetGroups API operation for Amazon Relational Database Service.
//
// Returns a list of DBSubnetGroup descriptions. If a DBSubnetGroupName is specified,
// the list will contain only the descriptions of the specified DBSubnetGroup.
//
// For an overview of CIDR ranges, go to the Wikipedia Tutorial (http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
//
// 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 Amazon Relational Database Service's
// API operation DescribeDBSubnetGroups for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeDBSubnetGroups
func (c *RDS) DescribeDBSubnetGroups(input *DescribeDBSubnetGroupsInput) (*DescribeDBSubnetGroupsOutput, error) {
	req, out := c.DescribeDBSubnetGroupsRequest(input)
	return out, req.Send()
}

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

// DescribeDBSubnetGroupsPages iterates over the pages of a DescribeDBSubnetGroups operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeDBSubnetGroups 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 DescribeDBSubnetGroups operation.
//	pageNum := 0
//	err := client.DescribeDBSubnetGroupsPages(params,
//	    func(page *rds.DescribeDBSubnetGroupsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeDBSubnetGroupsPages(input *DescribeDBSubnetGroupsInput, fn func(*DescribeDBSubnetGroupsOutput, bool) bool) error {
	return c.DescribeDBSubnetGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeDBSubnetGroupsPagesWithContext same as DescribeDBSubnetGroupsPages 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 *RDS) DescribeDBSubnetGroupsPagesWithContext(ctx aws.Context, input *DescribeDBSubnetGroupsInput, fn func(*DescribeDBSubnetGroupsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeDBSubnetGroupsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeDBSubnetGroupsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeEngineDefaultClusterParameters = "DescribeEngineDefaultClusterParameters"

// DescribeEngineDefaultClusterParametersRequest generates a "aws/request.Request" representing the
// client's request for the DescribeEngineDefaultClusterParameters 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 DescribeEngineDefaultClusterParameters for more information on using the DescribeEngineDefaultClusterParameters
// 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 DescribeEngineDefaultClusterParametersRequest method.
//	req, resp := client.DescribeEngineDefaultClusterParametersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeEngineDefaultClusterParameters
func (c *RDS) DescribeEngineDefaultClusterParametersRequest(input *DescribeEngineDefaultClusterParametersInput) (req *request.Request, output *DescribeEngineDefaultClusterParametersOutput) {
	op := &request.Operation{
		Name:       opDescribeEngineDefaultClusterParameters,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeEngineDefaultClusterParametersInput{}
	}

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

// DescribeEngineDefaultClusterParameters API operation for Amazon Relational Database Service.
//
// Returns the default engine and system parameter information for the cluster
// database engine.
//
// For more information on Amazon Aurora, see What is Amazon Aurora? (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora 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 Amazon Relational Database Service's
// API operation DescribeEngineDefaultClusterParameters for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeEngineDefaultClusterParameters
func (c *RDS) DescribeEngineDefaultClusterParameters(input *DescribeEngineDefaultClusterParametersInput) (*DescribeEngineDefaultClusterParametersOutput, error) {
	req, out := c.DescribeEngineDefaultClusterParametersRequest(input)
	return out, req.Send()
}

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

const opDescribeEngineDefaultParameters = "DescribeEngineDefaultParameters"

// DescribeEngineDefaultParametersRequest generates a "aws/request.Request" representing the
// client's request for the DescribeEngineDefaultParameters 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 DescribeEngineDefaultParameters for more information on using the DescribeEngineDefaultParameters
// 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 DescribeEngineDefaultParametersRequest method.
//	req, resp := client.DescribeEngineDefaultParametersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeEngineDefaultParameters
func (c *RDS) DescribeEngineDefaultParametersRequest(input *DescribeEngineDefaultParametersInput) (req *request.Request, output *DescribeEngineDefaultParametersOutput) {
	op := &request.Operation{
		Name:       opDescribeEngineDefaultParameters,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"EngineDefaults.Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeEngineDefaultParametersInput{}
	}

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

// DescribeEngineDefaultParameters API operation for Amazon Relational Database Service.
//
// Returns the default engine and system parameter information for the specified
// database engine.
//
// 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 Amazon Relational Database Service's
// API operation DescribeEngineDefaultParameters for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeEngineDefaultParameters
func (c *RDS) DescribeEngineDefaultParameters(input *DescribeEngineDefaultParametersInput) (*DescribeEngineDefaultParametersOutput, error) {
	req, out := c.DescribeEngineDefaultParametersRequest(input)
	return out, req.Send()
}

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

// DescribeEngineDefaultParametersPages iterates over the pages of a DescribeEngineDefaultParameters operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeEngineDefaultParameters 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 DescribeEngineDefaultParameters operation.
//	pageNum := 0
//	err := client.DescribeEngineDefaultParametersPages(params,
//	    func(page *rds.DescribeEngineDefaultParametersOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeEngineDefaultParametersPages(input *DescribeEngineDefaultParametersInput, fn func(*DescribeEngineDefaultParametersOutput, bool) bool) error {
	return c.DescribeEngineDefaultParametersPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeEngineDefaultParametersPagesWithContext same as DescribeEngineDefaultParametersPages 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 *RDS) DescribeEngineDefaultParametersPagesWithContext(ctx aws.Context, input *DescribeEngineDefaultParametersInput, fn func(*DescribeEngineDefaultParametersOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeEngineDefaultParametersInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeEngineDefaultParametersRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeEventCategories = "DescribeEventCategories"

// DescribeEventCategoriesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeEventCategories 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 DescribeEventCategories for more information on using the DescribeEventCategories
// 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 DescribeEventCategoriesRequest method.
//	req, resp := client.DescribeEventCategoriesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeEventCategories
func (c *RDS) DescribeEventCategoriesRequest(input *DescribeEventCategoriesInput) (req *request.Request, output *DescribeEventCategoriesOutput) {
	op := &request.Operation{
		Name:       opDescribeEventCategories,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeEventCategoriesInput{}
	}

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

// DescribeEventCategories API operation for Amazon Relational Database Service.
//
// Displays a list of categories for all event source types, or, if specified,
// for a specified source type. You can also see this list in the "Amazon RDS
// event categories and event messages" section of the Amazon RDS User Guide
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Messages.html)
// or the Amazon Aurora User Guide (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Events.Messages.html).
//
// 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 Amazon Relational Database Service's
// API operation DescribeEventCategories for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeEventCategories
func (c *RDS) DescribeEventCategories(input *DescribeEventCategoriesInput) (*DescribeEventCategoriesOutput, error) {
	req, out := c.DescribeEventCategoriesRequest(input)
	return out, req.Send()
}

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

const opDescribeEventSubscriptions = "DescribeEventSubscriptions"

// DescribeEventSubscriptionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeEventSubscriptions 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 DescribeEventSubscriptions for more information on using the DescribeEventSubscriptions
// 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 DescribeEventSubscriptionsRequest method.
//	req, resp := client.DescribeEventSubscriptionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeEventSubscriptions
func (c *RDS) DescribeEventSubscriptionsRequest(input *DescribeEventSubscriptionsInput) (req *request.Request, output *DescribeEventSubscriptionsOutput) {
	op := &request.Operation{
		Name:       opDescribeEventSubscriptions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeEventSubscriptionsInput{}
	}

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

// DescribeEventSubscriptions API operation for Amazon Relational Database Service.
//
// Lists all the subscription descriptions for a customer account. The description
// for a subscription includes SubscriptionName, SNSTopicARN, CustomerID, SourceType,
// SourceID, CreationTime, and Status.
//
// If you specify a SubscriptionName, lists the description for that subscription.
//
// 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 Amazon Relational Database Service's
// API operation DescribeEventSubscriptions for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeSubscriptionNotFoundFault "SubscriptionNotFound"
//     The subscription name does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeEventSubscriptions
func (c *RDS) DescribeEventSubscriptions(input *DescribeEventSubscriptionsInput) (*DescribeEventSubscriptionsOutput, error) {
	req, out := c.DescribeEventSubscriptionsRequest(input)
	return out, req.Send()
}

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

// DescribeEventSubscriptionsPages iterates over the pages of a DescribeEventSubscriptions operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeEventSubscriptions 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 DescribeEventSubscriptions operation.
//	pageNum := 0
//	err := client.DescribeEventSubscriptionsPages(params,
//	    func(page *rds.DescribeEventSubscriptionsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeEventSubscriptionsPages(input *DescribeEventSubscriptionsInput, fn func(*DescribeEventSubscriptionsOutput, bool) bool) error {
	return c.DescribeEventSubscriptionsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeEventSubscriptionsPagesWithContext same as DescribeEventSubscriptionsPages 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 *RDS) DescribeEventSubscriptionsPagesWithContext(ctx aws.Context, input *DescribeEventSubscriptionsInput, fn func(*DescribeEventSubscriptionsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeEventSubscriptionsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeEventSubscriptionsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeEvents = "DescribeEvents"

// DescribeEventsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeEvents 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 DescribeEvents for more information on using the DescribeEvents
// 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 DescribeEventsRequest method.
//	req, resp := client.DescribeEventsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeEvents
func (c *RDS) DescribeEventsRequest(input *DescribeEventsInput) (req *request.Request, output *DescribeEventsOutput) {
	op := &request.Operation{
		Name:       opDescribeEvents,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeEventsInput{}
	}

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

// DescribeEvents API operation for Amazon Relational Database Service.
//
// Returns events related to DB instances, DB clusters, DB parameter groups,
// DB security groups, DB snapshots, DB cluster snapshots, and RDS Proxies for
// the past 14 days. Events specific to a particular DB instance, DB cluster,
// DB parameter group, DB security group, DB snapshot, DB cluster snapshot group,
// or RDS Proxy can be obtained by providing the name as a parameter.
//
// For more information on working with events, see Monitoring Amazon RDS events
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/working-with-events.html)
// in the Amazon RDS User Guide and Monitoring Amazon Aurora events (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/working-with-events.html)
// in the Amazon Aurora User Guide.
//
// By default, RDS returns events that were generated in the past hour.
//
// 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 Amazon Relational Database Service's
// API operation DescribeEvents for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeEvents
func (c *RDS) DescribeEvents(input *DescribeEventsInput) (*DescribeEventsOutput, error) {
	req, out := c.DescribeEventsRequest(input)
	return out, req.Send()
}

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

// DescribeEventsPages iterates over the pages of a DescribeEvents operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeEvents 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 DescribeEvents operation.
//	pageNum := 0
//	err := client.DescribeEventsPages(params,
//	    func(page *rds.DescribeEventsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeEventsPages(input *DescribeEventsInput, fn func(*DescribeEventsOutput, bool) bool) error {
	return c.DescribeEventsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeEventsPagesWithContext same as DescribeEventsPages 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 *RDS) DescribeEventsPagesWithContext(ctx aws.Context, input *DescribeEventsInput, fn func(*DescribeEventsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeEventsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeEventsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeExportTasks = "DescribeExportTasks"

// DescribeExportTasksRequest generates a "aws/request.Request" representing the
// client's request for the DescribeExportTasks 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 DescribeExportTasks for more information on using the DescribeExportTasks
// 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 DescribeExportTasksRequest method.
//	req, resp := client.DescribeExportTasksRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeExportTasks
func (c *RDS) DescribeExportTasksRequest(input *DescribeExportTasksInput) (req *request.Request, output *DescribeExportTasksOutput) {
	op := &request.Operation{
		Name:       opDescribeExportTasks,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeExportTasksInput{}
	}

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

// DescribeExportTasks API operation for Amazon Relational Database Service.
//
// Returns information about a snapshot or cluster export to Amazon S3. This
// API operation supports pagination.
//
// 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 Amazon Relational Database Service's
// API operation DescribeExportTasks for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeExportTaskNotFoundFault "ExportTaskNotFound"
//     The export task doesn't exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeExportTasks
func (c *RDS) DescribeExportTasks(input *DescribeExportTasksInput) (*DescribeExportTasksOutput, error) {
	req, out := c.DescribeExportTasksRequest(input)
	return out, req.Send()
}

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

// DescribeExportTasksPages iterates over the pages of a DescribeExportTasks operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeExportTasks 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 DescribeExportTasks operation.
//	pageNum := 0
//	err := client.DescribeExportTasksPages(params,
//	    func(page *rds.DescribeExportTasksOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeExportTasksPages(input *DescribeExportTasksInput, fn func(*DescribeExportTasksOutput, bool) bool) error {
	return c.DescribeExportTasksPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeExportTasksPagesWithContext same as DescribeExportTasksPages 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 *RDS) DescribeExportTasksPagesWithContext(ctx aws.Context, input *DescribeExportTasksInput, fn func(*DescribeExportTasksOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeExportTasksInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeExportTasksRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeGlobalClusters = "DescribeGlobalClusters"

// DescribeGlobalClustersRequest generates a "aws/request.Request" representing the
// client's request for the DescribeGlobalClusters 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 DescribeGlobalClusters for more information on using the DescribeGlobalClusters
// 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 DescribeGlobalClustersRequest method.
//	req, resp := client.DescribeGlobalClustersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeGlobalClusters
func (c *RDS) DescribeGlobalClustersRequest(input *DescribeGlobalClustersInput) (req *request.Request, output *DescribeGlobalClustersOutput) {
	op := &request.Operation{
		Name:       opDescribeGlobalClusters,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeGlobalClustersInput{}
	}

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

// DescribeGlobalClusters API operation for Amazon Relational Database Service.
//
// Returns information about Aurora global database clusters. This API supports
// pagination.
//
// For more information on Amazon Aurora, see What is Amazon Aurora? (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// This action only applies to Aurora DB clusters.
//
// 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 Amazon Relational Database Service's
// API operation DescribeGlobalClusters for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeGlobalClusterNotFoundFault "GlobalClusterNotFoundFault"
//     The GlobalClusterIdentifier doesn't refer to an existing global database
//     cluster.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeGlobalClusters
func (c *RDS) DescribeGlobalClusters(input *DescribeGlobalClustersInput) (*DescribeGlobalClustersOutput, error) {
	req, out := c.DescribeGlobalClustersRequest(input)
	return out, req.Send()
}

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

// DescribeGlobalClustersPages iterates over the pages of a DescribeGlobalClusters operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeGlobalClusters 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 DescribeGlobalClusters operation.
//	pageNum := 0
//	err := client.DescribeGlobalClustersPages(params,
//	    func(page *rds.DescribeGlobalClustersOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeGlobalClustersPages(input *DescribeGlobalClustersInput, fn func(*DescribeGlobalClustersOutput, bool) bool) error {
	return c.DescribeGlobalClustersPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeGlobalClustersPagesWithContext same as DescribeGlobalClustersPages 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 *RDS) DescribeGlobalClustersPagesWithContext(ctx aws.Context, input *DescribeGlobalClustersInput, fn func(*DescribeGlobalClustersOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeGlobalClustersInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeGlobalClustersRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeIntegrations = "DescribeIntegrations"

// DescribeIntegrationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeIntegrations 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 DescribeIntegrations for more information on using the DescribeIntegrations
// 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 DescribeIntegrationsRequest method.
//	req, resp := client.DescribeIntegrationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeIntegrations
func (c *RDS) DescribeIntegrationsRequest(input *DescribeIntegrationsInput) (req *request.Request, output *DescribeIntegrationsOutput) {
	op := &request.Operation{
		Name:       opDescribeIntegrations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeIntegrationsInput{}
	}

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

// DescribeIntegrations API operation for Amazon Relational Database Service.
//
// Describe one or more zero-ETL integrations with Amazon Redshift.
//
// 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 Amazon Relational Database Service's
// API operation DescribeIntegrations for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeIntegrationNotFoundFault "IntegrationNotFoundFault"
//     The specified integration could not be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeIntegrations
func (c *RDS) DescribeIntegrations(input *DescribeIntegrationsInput) (*DescribeIntegrationsOutput, error) {
	req, out := c.DescribeIntegrationsRequest(input)
	return out, req.Send()
}

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

// DescribeIntegrationsPages iterates over the pages of a DescribeIntegrations operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeIntegrations 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 DescribeIntegrations operation.
//	pageNum := 0
//	err := client.DescribeIntegrationsPages(params,
//	    func(page *rds.DescribeIntegrationsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeIntegrationsPages(input *DescribeIntegrationsInput, fn func(*DescribeIntegrationsOutput, bool) bool) error {
	return c.DescribeIntegrationsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeIntegrationsPagesWithContext same as DescribeIntegrationsPages 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 *RDS) DescribeIntegrationsPagesWithContext(ctx aws.Context, input *DescribeIntegrationsInput, fn func(*DescribeIntegrationsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeIntegrationsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeIntegrationsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeOptionGroupOptions = "DescribeOptionGroupOptions"

// DescribeOptionGroupOptionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeOptionGroupOptions 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 DescribeOptionGroupOptions for more information on using the DescribeOptionGroupOptions
// 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 DescribeOptionGroupOptionsRequest method.
//	req, resp := client.DescribeOptionGroupOptionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeOptionGroupOptions
func (c *RDS) DescribeOptionGroupOptionsRequest(input *DescribeOptionGroupOptionsInput) (req *request.Request, output *DescribeOptionGroupOptionsOutput) {
	op := &request.Operation{
		Name:       opDescribeOptionGroupOptions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeOptionGroupOptionsInput{}
	}

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

// DescribeOptionGroupOptions API operation for Amazon Relational Database Service.
//
// Describes all available options for the specified engine.
//
// 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 Amazon Relational Database Service's
// API operation DescribeOptionGroupOptions for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeOptionGroupOptions
func (c *RDS) DescribeOptionGroupOptions(input *DescribeOptionGroupOptionsInput) (*DescribeOptionGroupOptionsOutput, error) {
	req, out := c.DescribeOptionGroupOptionsRequest(input)
	return out, req.Send()
}

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

// DescribeOptionGroupOptionsPages iterates over the pages of a DescribeOptionGroupOptions operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeOptionGroupOptions 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 DescribeOptionGroupOptions operation.
//	pageNum := 0
//	err := client.DescribeOptionGroupOptionsPages(params,
//	    func(page *rds.DescribeOptionGroupOptionsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeOptionGroupOptionsPages(input *DescribeOptionGroupOptionsInput, fn func(*DescribeOptionGroupOptionsOutput, bool) bool) error {
	return c.DescribeOptionGroupOptionsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeOptionGroupOptionsPagesWithContext same as DescribeOptionGroupOptionsPages 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 *RDS) DescribeOptionGroupOptionsPagesWithContext(ctx aws.Context, input *DescribeOptionGroupOptionsInput, fn func(*DescribeOptionGroupOptionsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeOptionGroupOptionsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeOptionGroupOptionsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeOptionGroups = "DescribeOptionGroups"

// DescribeOptionGroupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeOptionGroups 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 DescribeOptionGroups for more information on using the DescribeOptionGroups
// 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 DescribeOptionGroupsRequest method.
//	req, resp := client.DescribeOptionGroupsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeOptionGroups
func (c *RDS) DescribeOptionGroupsRequest(input *DescribeOptionGroupsInput) (req *request.Request, output *DescribeOptionGroupsOutput) {
	op := &request.Operation{
		Name:       opDescribeOptionGroups,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeOptionGroupsInput{}
	}

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

// DescribeOptionGroups API operation for Amazon Relational Database Service.
//
// Describes the available option groups.
//
// 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 Amazon Relational Database Service's
// API operation DescribeOptionGroups for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeOptionGroupNotFoundFault "OptionGroupNotFoundFault"
//     The specified option group could not be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeOptionGroups
func (c *RDS) DescribeOptionGroups(input *DescribeOptionGroupsInput) (*DescribeOptionGroupsOutput, error) {
	req, out := c.DescribeOptionGroupsRequest(input)
	return out, req.Send()
}

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

// DescribeOptionGroupsPages iterates over the pages of a DescribeOptionGroups operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeOptionGroups 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 DescribeOptionGroups operation.
//	pageNum := 0
//	err := client.DescribeOptionGroupsPages(params,
//	    func(page *rds.DescribeOptionGroupsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeOptionGroupsPages(input *DescribeOptionGroupsInput, fn func(*DescribeOptionGroupsOutput, bool) bool) error {
	return c.DescribeOptionGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeOptionGroupsPagesWithContext same as DescribeOptionGroupsPages 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 *RDS) DescribeOptionGroupsPagesWithContext(ctx aws.Context, input *DescribeOptionGroupsInput, fn func(*DescribeOptionGroupsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeOptionGroupsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeOptionGroupsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeOrderableDBInstanceOptions = "DescribeOrderableDBInstanceOptions"

// DescribeOrderableDBInstanceOptionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeOrderableDBInstanceOptions 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 DescribeOrderableDBInstanceOptions for more information on using the DescribeOrderableDBInstanceOptions
// 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 DescribeOrderableDBInstanceOptionsRequest method.
//	req, resp := client.DescribeOrderableDBInstanceOptionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeOrderableDBInstanceOptions
func (c *RDS) DescribeOrderableDBInstanceOptionsRequest(input *DescribeOrderableDBInstanceOptionsInput) (req *request.Request, output *DescribeOrderableDBInstanceOptionsOutput) {
	op := &request.Operation{
		Name:       opDescribeOrderableDBInstanceOptions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeOrderableDBInstanceOptionsInput{}
	}

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

// DescribeOrderableDBInstanceOptions API operation for Amazon Relational Database Service.
//
// Describes the orderable DB instance options for a specified DB engine.
//
// 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 Amazon Relational Database Service's
// API operation DescribeOrderableDBInstanceOptions for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeOrderableDBInstanceOptions
func (c *RDS) DescribeOrderableDBInstanceOptions(input *DescribeOrderableDBInstanceOptionsInput) (*DescribeOrderableDBInstanceOptionsOutput, error) {
	req, out := c.DescribeOrderableDBInstanceOptionsRequest(input)
	return out, req.Send()
}

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

// DescribeOrderableDBInstanceOptionsPages iterates over the pages of a DescribeOrderableDBInstanceOptions operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeOrderableDBInstanceOptions 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 DescribeOrderableDBInstanceOptions operation.
//	pageNum := 0
//	err := client.DescribeOrderableDBInstanceOptionsPages(params,
//	    func(page *rds.DescribeOrderableDBInstanceOptionsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeOrderableDBInstanceOptionsPages(input *DescribeOrderableDBInstanceOptionsInput, fn func(*DescribeOrderableDBInstanceOptionsOutput, bool) bool) error {
	return c.DescribeOrderableDBInstanceOptionsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeOrderableDBInstanceOptionsPagesWithContext same as DescribeOrderableDBInstanceOptionsPages 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 *RDS) DescribeOrderableDBInstanceOptionsPagesWithContext(ctx aws.Context, input *DescribeOrderableDBInstanceOptionsInput, fn func(*DescribeOrderableDBInstanceOptionsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeOrderableDBInstanceOptionsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeOrderableDBInstanceOptionsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribePendingMaintenanceActions = "DescribePendingMaintenanceActions"

// DescribePendingMaintenanceActionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribePendingMaintenanceActions 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 DescribePendingMaintenanceActions for more information on using the DescribePendingMaintenanceActions
// 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 DescribePendingMaintenanceActionsRequest method.
//	req, resp := client.DescribePendingMaintenanceActionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribePendingMaintenanceActions
func (c *RDS) DescribePendingMaintenanceActionsRequest(input *DescribePendingMaintenanceActionsInput) (req *request.Request, output *DescribePendingMaintenanceActionsOutput) {
	op := &request.Operation{
		Name:       opDescribePendingMaintenanceActions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribePendingMaintenanceActionsInput{}
	}

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

// DescribePendingMaintenanceActions API operation for Amazon Relational Database Service.
//
// Returns a list of resources (for example, DB instances) that have at least
// one pending maintenance action.
//
// This API follows an eventual consistency model. This means that the result
// of the DescribePendingMaintenanceActions command might not be immediately
// visible to all subsequent RDS commands. Keep this in mind when you use DescribePendingMaintenanceActions
// immediately after using a previous API command such as ApplyPendingMaintenanceActions.
//
// 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 Amazon Relational Database Service's
// API operation DescribePendingMaintenanceActions for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeResourceNotFoundFault "ResourceNotFoundFault"
//     The specified resource ID was not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribePendingMaintenanceActions
func (c *RDS) DescribePendingMaintenanceActions(input *DescribePendingMaintenanceActionsInput) (*DescribePendingMaintenanceActionsOutput, error) {
	req, out := c.DescribePendingMaintenanceActionsRequest(input)
	return out, req.Send()
}

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

// DescribePendingMaintenanceActionsPages iterates over the pages of a DescribePendingMaintenanceActions operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribePendingMaintenanceActions 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 DescribePendingMaintenanceActions operation.
//	pageNum := 0
//	err := client.DescribePendingMaintenanceActionsPages(params,
//	    func(page *rds.DescribePendingMaintenanceActionsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribePendingMaintenanceActionsPages(input *DescribePendingMaintenanceActionsInput, fn func(*DescribePendingMaintenanceActionsOutput, bool) bool) error {
	return c.DescribePendingMaintenanceActionsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribePendingMaintenanceActionsPagesWithContext same as DescribePendingMaintenanceActionsPages 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 *RDS) DescribePendingMaintenanceActionsPagesWithContext(ctx aws.Context, input *DescribePendingMaintenanceActionsInput, fn func(*DescribePendingMaintenanceActionsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribePendingMaintenanceActionsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribePendingMaintenanceActionsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeReservedDBInstances = "DescribeReservedDBInstances"

// DescribeReservedDBInstancesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeReservedDBInstances 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 DescribeReservedDBInstances for more information on using the DescribeReservedDBInstances
// 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 DescribeReservedDBInstancesRequest method.
//	req, resp := client.DescribeReservedDBInstancesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeReservedDBInstances
func (c *RDS) DescribeReservedDBInstancesRequest(input *DescribeReservedDBInstancesInput) (req *request.Request, output *DescribeReservedDBInstancesOutput) {
	op := &request.Operation{
		Name:       opDescribeReservedDBInstances,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeReservedDBInstancesInput{}
	}

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

// DescribeReservedDBInstances API operation for Amazon Relational Database Service.
//
// Returns information about reserved DB instances for this account, or about
// a specified reserved DB instance.
//
// 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 Amazon Relational Database Service's
// API operation DescribeReservedDBInstances for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeReservedDBInstanceNotFoundFault "ReservedDBInstanceNotFound"
//     The specified reserved DB Instance not found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeReservedDBInstances
func (c *RDS) DescribeReservedDBInstances(input *DescribeReservedDBInstancesInput) (*DescribeReservedDBInstancesOutput, error) {
	req, out := c.DescribeReservedDBInstancesRequest(input)
	return out, req.Send()
}

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

// DescribeReservedDBInstancesPages iterates over the pages of a DescribeReservedDBInstances operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeReservedDBInstances 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 DescribeReservedDBInstances operation.
//	pageNum := 0
//	err := client.DescribeReservedDBInstancesPages(params,
//	    func(page *rds.DescribeReservedDBInstancesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeReservedDBInstancesPages(input *DescribeReservedDBInstancesInput, fn func(*DescribeReservedDBInstancesOutput, bool) bool) error {
	return c.DescribeReservedDBInstancesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeReservedDBInstancesPagesWithContext same as DescribeReservedDBInstancesPages 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 *RDS) DescribeReservedDBInstancesPagesWithContext(ctx aws.Context, input *DescribeReservedDBInstancesInput, fn func(*DescribeReservedDBInstancesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeReservedDBInstancesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeReservedDBInstancesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeReservedDBInstancesOfferings = "DescribeReservedDBInstancesOfferings"

// DescribeReservedDBInstancesOfferingsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeReservedDBInstancesOfferings 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 DescribeReservedDBInstancesOfferings for more information on using the DescribeReservedDBInstancesOfferings
// 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 DescribeReservedDBInstancesOfferingsRequest method.
//	req, resp := client.DescribeReservedDBInstancesOfferingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeReservedDBInstancesOfferings
func (c *RDS) DescribeReservedDBInstancesOfferingsRequest(input *DescribeReservedDBInstancesOfferingsInput) (req *request.Request, output *DescribeReservedDBInstancesOfferingsOutput) {
	op := &request.Operation{
		Name:       opDescribeReservedDBInstancesOfferings,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeReservedDBInstancesOfferingsInput{}
	}

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

// DescribeReservedDBInstancesOfferings API operation for Amazon Relational Database Service.
//
// Lists available reserved DB instance offerings.
//
// 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 Amazon Relational Database Service's
// API operation DescribeReservedDBInstancesOfferings for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeReservedDBInstancesOfferingNotFoundFault "ReservedDBInstancesOfferingNotFound"
//     Specified offering does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeReservedDBInstancesOfferings
func (c *RDS) DescribeReservedDBInstancesOfferings(input *DescribeReservedDBInstancesOfferingsInput) (*DescribeReservedDBInstancesOfferingsOutput, error) {
	req, out := c.DescribeReservedDBInstancesOfferingsRequest(input)
	return out, req.Send()
}

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

// DescribeReservedDBInstancesOfferingsPages iterates over the pages of a DescribeReservedDBInstancesOfferings operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeReservedDBInstancesOfferings 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 DescribeReservedDBInstancesOfferings operation.
//	pageNum := 0
//	err := client.DescribeReservedDBInstancesOfferingsPages(params,
//	    func(page *rds.DescribeReservedDBInstancesOfferingsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeReservedDBInstancesOfferingsPages(input *DescribeReservedDBInstancesOfferingsInput, fn func(*DescribeReservedDBInstancesOfferingsOutput, bool) bool) error {
	return c.DescribeReservedDBInstancesOfferingsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeReservedDBInstancesOfferingsPagesWithContext same as DescribeReservedDBInstancesOfferingsPages 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 *RDS) DescribeReservedDBInstancesOfferingsPagesWithContext(ctx aws.Context, input *DescribeReservedDBInstancesOfferingsInput, fn func(*DescribeReservedDBInstancesOfferingsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeReservedDBInstancesOfferingsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeReservedDBInstancesOfferingsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeSourceRegions = "DescribeSourceRegions"

// DescribeSourceRegionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeSourceRegions 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 DescribeSourceRegions for more information on using the DescribeSourceRegions
// 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 DescribeSourceRegionsRequest method.
//	req, resp := client.DescribeSourceRegionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeSourceRegions
func (c *RDS) DescribeSourceRegionsRequest(input *DescribeSourceRegionsInput) (req *request.Request, output *DescribeSourceRegionsOutput) {
	op := &request.Operation{
		Name:       opDescribeSourceRegions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeSourceRegionsInput{}
	}

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

// DescribeSourceRegions API operation for Amazon Relational Database Service.
//
// Returns a list of the source Amazon Web Services Regions where the current
// Amazon Web Services Region can create a read replica, copy a DB snapshot
// from, or replicate automated backups from.
//
// Use this operation to determine whether cross-Region features are supported
// between other Regions and your current Region. This operation supports pagination.
//
// To return information about the Regions that are enabled for your account,
// or all Regions, use the EC2 operation DescribeRegions. For more information,
// see DescribeRegions (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeRegions.html)
// in the Amazon EC2 API Reference.
//
// 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 Amazon Relational Database Service's
// API operation DescribeSourceRegions for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeSourceRegions
func (c *RDS) DescribeSourceRegions(input *DescribeSourceRegionsInput) (*DescribeSourceRegionsOutput, error) {
	req, out := c.DescribeSourceRegionsRequest(input)
	return out, req.Send()
}

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

// DescribeSourceRegionsPages iterates over the pages of a DescribeSourceRegions operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeSourceRegions 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 DescribeSourceRegions operation.
//	pageNum := 0
//	err := client.DescribeSourceRegionsPages(params,
//	    func(page *rds.DescribeSourceRegionsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeSourceRegionsPages(input *DescribeSourceRegionsInput, fn func(*DescribeSourceRegionsOutput, bool) bool) error {
	return c.DescribeSourceRegionsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeSourceRegionsPagesWithContext same as DescribeSourceRegionsPages 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 *RDS) DescribeSourceRegionsPagesWithContext(ctx aws.Context, input *DescribeSourceRegionsInput, fn func(*DescribeSourceRegionsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeSourceRegionsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeSourceRegionsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeTenantDatabases = "DescribeTenantDatabases"

// DescribeTenantDatabasesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeTenantDatabases 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 DescribeTenantDatabases for more information on using the DescribeTenantDatabases
// 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 DescribeTenantDatabasesRequest method.
//	req, resp := client.DescribeTenantDatabasesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeTenantDatabases
func (c *RDS) DescribeTenantDatabasesRequest(input *DescribeTenantDatabasesInput) (req *request.Request, output *DescribeTenantDatabasesOutput) {
	op := &request.Operation{
		Name:       opDescribeTenantDatabases,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "MaxRecords",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeTenantDatabasesInput{}
	}

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

// DescribeTenantDatabases API operation for Amazon Relational Database Service.
//
// Describes the tenant databases in a DB instance that uses the multi-tenant
// configuration. Only RDS for Oracle CDB instances are supported.
//
// 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 Amazon Relational Database Service's
// API operation DescribeTenantDatabases for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeTenantDatabases
func (c *RDS) DescribeTenantDatabases(input *DescribeTenantDatabasesInput) (*DescribeTenantDatabasesOutput, error) {
	req, out := c.DescribeTenantDatabasesRequest(input)
	return out, req.Send()
}

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

// DescribeTenantDatabasesPages iterates over the pages of a DescribeTenantDatabases operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeTenantDatabases 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 DescribeTenantDatabases operation.
//	pageNum := 0
//	err := client.DescribeTenantDatabasesPages(params,
//	    func(page *rds.DescribeTenantDatabasesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DescribeTenantDatabasesPages(input *DescribeTenantDatabasesInput, fn func(*DescribeTenantDatabasesOutput, bool) bool) error {
	return c.DescribeTenantDatabasesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeTenantDatabasesPagesWithContext same as DescribeTenantDatabasesPages 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 *RDS) DescribeTenantDatabasesPagesWithContext(ctx aws.Context, input *DescribeTenantDatabasesInput, fn func(*DescribeTenantDatabasesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeTenantDatabasesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeTenantDatabasesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeValidDBInstanceModifications = "DescribeValidDBInstanceModifications"

// DescribeValidDBInstanceModificationsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeValidDBInstanceModifications 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 DescribeValidDBInstanceModifications for more information on using the DescribeValidDBInstanceModifications
// 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 DescribeValidDBInstanceModificationsRequest method.
//	req, resp := client.DescribeValidDBInstanceModificationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeValidDBInstanceModifications
func (c *RDS) DescribeValidDBInstanceModificationsRequest(input *DescribeValidDBInstanceModificationsInput) (req *request.Request, output *DescribeValidDBInstanceModificationsOutput) {
	op := &request.Operation{
		Name:       opDescribeValidDBInstanceModifications,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeValidDBInstanceModificationsInput{}
	}

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

// DescribeValidDBInstanceModifications API operation for Amazon Relational Database Service.
//
// You can call DescribeValidDBInstanceModifications to learn what modifications
// you can make to your DB instance. You can use this information when you call
// ModifyDBInstance.
//
// This command doesn't apply to RDS Custom.
//
// 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 Amazon Relational Database Service's
// API operation DescribeValidDBInstanceModifications for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DescribeValidDBInstanceModifications
func (c *RDS) DescribeValidDBInstanceModifications(input *DescribeValidDBInstanceModificationsInput) (*DescribeValidDBInstanceModificationsOutput, error) {
	req, out := c.DescribeValidDBInstanceModificationsRequest(input)
	return out, req.Send()
}

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

const opDisableHttpEndpoint = "DisableHttpEndpoint"

// DisableHttpEndpointRequest generates a "aws/request.Request" representing the
// client's request for the DisableHttpEndpoint 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 DisableHttpEndpoint for more information on using the DisableHttpEndpoint
// 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 DisableHttpEndpointRequest method.
//	req, resp := client.DisableHttpEndpointRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DisableHttpEndpoint
func (c *RDS) DisableHttpEndpointRequest(input *DisableHttpEndpointInput) (req *request.Request, output *DisableHttpEndpointOutput) {
	op := &request.Operation{
		Name:       opDisableHttpEndpoint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DisableHttpEndpointInput{}
	}

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

// DisableHttpEndpoint API operation for Amazon Relational Database Service.
//
// Disables the HTTP endpoint for the specified DB cluster. Disabling this endpoint
// disables RDS Data API.
//
// For more information, see Using RDS Data API (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html)
// in the Amazon Aurora User Guide.
//
// This operation applies only to Aurora PostgreSQL Serverless v2 and provisioned
// DB clusters. To disable the HTTP endpoint for Aurora Serverless v1 DB clusters,
// use the EnableHttpEndpoint parameter of the ModifyDBCluster operation.
//
// 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 Amazon Relational Database Service's
// API operation DisableHttpEndpoint for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeResourceNotFoundFault "ResourceNotFoundFault"
//     The specified resource ID was not found.
//
//   - ErrCodeInvalidResourceStateFault "InvalidResourceStateFault"
//     The operation can't be performed because another operation is in progress.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DisableHttpEndpoint
func (c *RDS) DisableHttpEndpoint(input *DisableHttpEndpointInput) (*DisableHttpEndpointOutput, error) {
	req, out := c.DisableHttpEndpointRequest(input)
	return out, req.Send()
}

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

const opDownloadDBLogFilePortion = "DownloadDBLogFilePortion"

// DownloadDBLogFilePortionRequest generates a "aws/request.Request" representing the
// client's request for the DownloadDBLogFilePortion 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 DownloadDBLogFilePortion for more information on using the DownloadDBLogFilePortion
// 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 DownloadDBLogFilePortionRequest method.
//	req, resp := client.DownloadDBLogFilePortionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DownloadDBLogFilePortion
func (c *RDS) DownloadDBLogFilePortionRequest(input *DownloadDBLogFilePortionInput) (req *request.Request, output *DownloadDBLogFilePortionOutput) {
	op := &request.Operation{
		Name:       opDownloadDBLogFilePortion,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"Marker"},
			OutputTokens:    []string{"Marker"},
			LimitToken:      "NumberOfLines",
			TruncationToken: "AdditionalDataPending",
		},
	}

	if input == nil {
		input = &DownloadDBLogFilePortionInput{}
	}

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

// DownloadDBLogFilePortion API operation for Amazon Relational Database Service.
//
// Downloads all or a portion of the specified log file, up to 1 MB in size.
//
// This command doesn't apply to RDS Custom.
//
// 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 Amazon Relational Database Service's
// API operation DownloadDBLogFilePortion for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeDBLogFileNotFoundFault "DBLogFileNotFoundFault"
//     LogFileName doesn't refer to an existing DB log file.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/DownloadDBLogFilePortion
func (c *RDS) DownloadDBLogFilePortion(input *DownloadDBLogFilePortionInput) (*DownloadDBLogFilePortionOutput, error) {
	req, out := c.DownloadDBLogFilePortionRequest(input)
	return out, req.Send()
}

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

// DownloadDBLogFilePortionPages iterates over the pages of a DownloadDBLogFilePortion operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DownloadDBLogFilePortion 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 DownloadDBLogFilePortion operation.
//	pageNum := 0
//	err := client.DownloadDBLogFilePortionPages(params,
//	    func(page *rds.DownloadDBLogFilePortionOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *RDS) DownloadDBLogFilePortionPages(input *DownloadDBLogFilePortionInput, fn func(*DownloadDBLogFilePortionOutput, bool) bool) error {
	return c.DownloadDBLogFilePortionPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DownloadDBLogFilePortionPagesWithContext same as DownloadDBLogFilePortionPages 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 *RDS) DownloadDBLogFilePortionPagesWithContext(ctx aws.Context, input *DownloadDBLogFilePortionInput, fn func(*DownloadDBLogFilePortionOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DownloadDBLogFilePortionInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DownloadDBLogFilePortionRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opEnableHttpEndpoint = "EnableHttpEndpoint"

// EnableHttpEndpointRequest generates a "aws/request.Request" representing the
// client's request for the EnableHttpEndpoint 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 EnableHttpEndpoint for more information on using the EnableHttpEndpoint
// 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 EnableHttpEndpointRequest method.
//	req, resp := client.EnableHttpEndpointRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/EnableHttpEndpoint
func (c *RDS) EnableHttpEndpointRequest(input *EnableHttpEndpointInput) (req *request.Request, output *EnableHttpEndpointOutput) {
	op := &request.Operation{
		Name:       opEnableHttpEndpoint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &EnableHttpEndpointInput{}
	}

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

// EnableHttpEndpoint API operation for Amazon Relational Database Service.
//
// Enables the HTTP endpoint for the DB cluster. By default, the HTTP endpoint
// isn't enabled.
//
// When enabled, this endpoint provides a connectionless web service API (RDS
// Data API) for running SQL queries on the Aurora DB cluster. You can also
// query your database from inside the RDS console with the RDS query editor.
//
// For more information, see Using RDS Data API (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html)
// in the Amazon Aurora User Guide.
//
// This operation applies only to Aurora PostgreSQL Serverless v2 and provisioned
// DB clusters. To enable the HTTP endpoint for Aurora Serverless v1 DB clusters,
// use the EnableHttpEndpoint parameter of the ModifyDBCluster operation.
//
// 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 Amazon Relational Database Service's
// API operation EnableHttpEndpoint for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeResourceNotFoundFault "ResourceNotFoundFault"
//     The specified resource ID was not found.
//
//   - ErrCodeInvalidResourceStateFault "InvalidResourceStateFault"
//     The operation can't be performed because another operation is in progress.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/EnableHttpEndpoint
func (c *RDS) EnableHttpEndpoint(input *EnableHttpEndpointInput) (*EnableHttpEndpointOutput, error) {
	req, out := c.EnableHttpEndpointRequest(input)
	return out, req.Send()
}

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

const opFailoverDBCluster = "FailoverDBCluster"

// FailoverDBClusterRequest generates a "aws/request.Request" representing the
// client's request for the FailoverDBCluster 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 FailoverDBCluster for more information on using the FailoverDBCluster
// 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 FailoverDBClusterRequest method.
//	req, resp := client.FailoverDBClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/FailoverDBCluster
func (c *RDS) FailoverDBClusterRequest(input *FailoverDBClusterInput) (req *request.Request, output *FailoverDBClusterOutput) {
	op := &request.Operation{
		Name:       opFailoverDBCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &FailoverDBClusterInput{}
	}

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

// FailoverDBCluster API operation for Amazon Relational Database Service.
//
// Forces a failover for a DB cluster.
//
// For an Aurora DB cluster, failover for a DB cluster promotes one of the Aurora
// Replicas (read-only instances) in the DB cluster to be the primary DB instance
// (the cluster writer).
//
// For a Multi-AZ DB cluster, after RDS terminates the primary DB instance,
// the internal monitoring system detects that the primary DB instance is unhealthy
// and promotes a readable standby (read-only instances) in the DB cluster to
// be the primary DB instance (the cluster writer). Failover times are typically
// less than 35 seconds.
//
// An Amazon Aurora DB cluster automatically fails over to an Aurora Replica,
// if one exists, when the primary DB instance fails. A Multi-AZ DB cluster
// automatically fails over to a readable standby DB instance when the primary
// DB instance fails.
//
// To simulate a failure of a primary instance for testing, you can force a
// failover. Because each instance in a DB cluster has its own endpoint address,
// make sure to clean up and re-establish any existing connections that use
// those endpoint addresses when the failover is complete.
//
// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation FailoverDBCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/FailoverDBCluster
func (c *RDS) FailoverDBCluster(input *FailoverDBClusterInput) (*FailoverDBClusterOutput, error) {
	req, out := c.FailoverDBClusterRequest(input)
	return out, req.Send()
}

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

const opFailoverGlobalCluster = "FailoverGlobalCluster"

// FailoverGlobalClusterRequest generates a "aws/request.Request" representing the
// client's request for the FailoverGlobalCluster 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 FailoverGlobalCluster for more information on using the FailoverGlobalCluster
// 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 FailoverGlobalClusterRequest method.
//	req, resp := client.FailoverGlobalClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/FailoverGlobalCluster
func (c *RDS) FailoverGlobalClusterRequest(input *FailoverGlobalClusterInput) (req *request.Request, output *FailoverGlobalClusterOutput) {
	op := &request.Operation{
		Name:       opFailoverGlobalCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &FailoverGlobalClusterInput{}
	}

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

// FailoverGlobalCluster API operation for Amazon Relational Database Service.
//
// Promotes the specified secondary DB cluster to be the primary DB cluster
// in the global database cluster to fail over or switch over a global database.
// Switchover operations were previously called "managed planned failovers."
//
// Although this operation can be used either to fail over or to switch over
// a global database cluster, its intended use is for global database failover.
// To switch over a global database cluster, we recommend that you use the SwitchoverGlobalCluster
// operation instead.
//
// How you use this operation depends on whether you are failing over or switching
// over your global database cluster:
//
//   - Failing over - Specify the AllowDataLoss parameter and don't specify
//     the Switchover parameter.
//
//   - Switching over - Specify the Switchover parameter or omit it, but don't
//     specify the AllowDataLoss parameter.
//
// # About failing over and switching over
//
// While failing over and switching over a global database cluster both change
// the primary DB cluster, you use these operations for different reasons:
//
//   - Failing over - Use this operation to respond to an unplanned event,
//     such as a Regional disaster in the primary Region. Failing over can result
//     in a loss of write transaction data that wasn't replicated to the chosen
//     secondary before the failover event occurred. However, the recovery process
//     that promotes a DB instance on the chosen seconday DB cluster to be the
//     primary writer DB instance guarantees that the data is in a transactionally
//     consistent state. For more information about failing over an Amazon Aurora
//     global database, see Performing managed failovers for Aurora global databases
//     (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-disaster-recovery.html#aurora-global-database-failover.managed-unplanned)
//     in the Amazon Aurora User Guide.
//
//   - Switching over - Use this operation on a healthy global database cluster
//     for planned events, such as Regional rotation or to fail back to the original
//     primary DB cluster after a failover operation. With this operation, there
//     is no data loss. For more information about switching over an Amazon Aurora
//     global database, see Performing switchovers for Aurora global databases
//     (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-disaster-recovery.html#aurora-global-database-disaster-recovery.managed-failover)
//     in the Amazon Aurora 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 Amazon Relational Database Service's
// API operation FailoverGlobalCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeGlobalClusterNotFoundFault "GlobalClusterNotFoundFault"
//     The GlobalClusterIdentifier doesn't refer to an existing global database
//     cluster.
//
//   - ErrCodeInvalidGlobalClusterStateFault "InvalidGlobalClusterStateFault"
//     The global cluster is in an invalid state and can't perform the requested
//     operation.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/FailoverGlobalCluster
func (c *RDS) FailoverGlobalCluster(input *FailoverGlobalClusterInput) (*FailoverGlobalClusterOutput, error) {
	req, out := c.FailoverGlobalClusterRequest(input)
	return out, req.Send()
}

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

const opListTagsForResource = "ListTagsForResource"

// ListTagsForResourceRequest generates a "aws/request.Request" representing the
// client's request for the ListTagsForResource 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 ListTagsForResource for more information on using the ListTagsForResource
// 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 ListTagsForResourceRequest method.
//	req, resp := client.ListTagsForResourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ListTagsForResource
func (c *RDS) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
	op := &request.Operation{
		Name:       opListTagsForResource,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ListTagsForResourceInput{}
	}

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

// ListTagsForResource API operation for Amazon Relational Database Service.
//
// Lists all tags on an Amazon RDS resource.
//
// For an overview on tagging an Amazon RDS resource, see Tagging Amazon RDS
// Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Tagging.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeDBSnapshotNotFoundFault "DBSnapshotNotFound"
//     DBSnapshotIdentifier doesn't refer to an existing DB snapshot.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeDBProxyNotFoundFault "DBProxyNotFoundFault"
//     The specified proxy name doesn't correspond to a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBProxyTargetGroupNotFoundFault "DBProxyTargetGroupNotFoundFault"
//     The specified target group isn't available for a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeBlueGreenDeploymentNotFoundFault "BlueGreenDeploymentNotFoundFault"
//     BlueGreenDeploymentIdentifier doesn't refer to an existing blue/green deployment.
//
//   - ErrCodeIntegrationNotFoundFault "IntegrationNotFoundFault"
//     The specified integration could not be found.
//
//   - ErrCodeTenantDatabaseNotFoundFault "TenantDatabaseNotFound"
//     The specified tenant database wasn't found in the DB instance.
//
//   - ErrCodeDBSnapshotTenantDatabaseNotFoundFault "DBSnapshotTenantDatabaseNotFoundFault"
//     The specified snapshot tenant database wasn't found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ListTagsForResource
func (c *RDS) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
	req, out := c.ListTagsForResourceRequest(input)
	return out, req.Send()
}

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

const opModifyActivityStream = "ModifyActivityStream"

// ModifyActivityStreamRequest generates a "aws/request.Request" representing the
// client's request for the ModifyActivityStream 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 ModifyActivityStream for more information on using the ModifyActivityStream
// 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 ModifyActivityStreamRequest method.
//	req, resp := client.ModifyActivityStreamRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyActivityStream
func (c *RDS) ModifyActivityStreamRequest(input *ModifyActivityStreamInput) (req *request.Request, output *ModifyActivityStreamOutput) {
	op := &request.Operation{
		Name:       opModifyActivityStream,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyActivityStreamInput{}
	}

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

// ModifyActivityStream API operation for Amazon Relational Database Service.
//
// Changes the audit policy state of a database activity stream to either locked
// (default) or unlocked. A locked policy is read-only, whereas an unlocked
// policy is read/write. If your activity stream is started and locked, you
// can unlock it, customize your audit policy, and then lock your activity stream.
// Restarting the activity stream isn't required. For more information, see
// Modifying a database activity stream (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/DBActivityStreams.Modifying.html)
// in the Amazon RDS User Guide.
//
// This operation is supported for RDS for Oracle and Microsoft SQL Server.
//
// 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 Amazon Relational Database Service's
// API operation ModifyActivityStream for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeResourceNotFoundFault "ResourceNotFoundFault"
//     The specified resource ID was not found.
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyActivityStream
func (c *RDS) ModifyActivityStream(input *ModifyActivityStreamInput) (*ModifyActivityStreamOutput, error) {
	req, out := c.ModifyActivityStreamRequest(input)
	return out, req.Send()
}

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

const opModifyCertificates = "ModifyCertificates"

// ModifyCertificatesRequest generates a "aws/request.Request" representing the
// client's request for the ModifyCertificates 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 ModifyCertificates for more information on using the ModifyCertificates
// 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 ModifyCertificatesRequest method.
//	req, resp := client.ModifyCertificatesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyCertificates
func (c *RDS) ModifyCertificatesRequest(input *ModifyCertificatesInput) (req *request.Request, output *ModifyCertificatesOutput) {
	op := &request.Operation{
		Name:       opModifyCertificates,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyCertificatesInput{}
	}

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

// ModifyCertificates API operation for Amazon Relational Database Service.
//
// Override the system-default Secure Sockets Layer/Transport Layer Security
// (SSL/TLS) certificate for Amazon RDS for new DB instances, or remove the
// override.
//
// By using this operation, you can specify an RDS-approved SSL/TLS certificate
// for new DB instances that is different from the default certificate provided
// by RDS. You can also use this operation to remove the override, so that new
// DB instances use the default certificate provided by RDS.
//
// You might need to override the default certificate in the following situations:
//
//   - You already migrated your applications to support the latest certificate
//     authority (CA) certificate, but the new CA certificate is not yet the
//     RDS default CA certificate for the specified Amazon Web Services Region.
//
//   - RDS has already moved to a new default CA certificate for the specified
//     Amazon Web Services Region, but you are still in the process of supporting
//     the new CA certificate. In this case, you temporarily need additional
//     time to finish your application changes.
//
// For more information about rotating your SSL/TLS certificate for RDS DB engines,
// see Rotating Your SSL/TLS Certificate (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html)
// in the Amazon RDS User Guide.
//
// For more information about rotating your SSL/TLS certificate for Aurora DB
// engines, see Rotating Your SSL/TLS Certificate (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html)
// in the Amazon Aurora 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 Amazon Relational Database Service's
// API operation ModifyCertificates for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeCertificateNotFoundFault "CertificateNotFound"
//     CertificateIdentifier doesn't refer to an existing certificate.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyCertificates
func (c *RDS) ModifyCertificates(input *ModifyCertificatesInput) (*ModifyCertificatesOutput, error) {
	req, out := c.ModifyCertificatesRequest(input)
	return out, req.Send()
}

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

const opModifyCurrentDBClusterCapacity = "ModifyCurrentDBClusterCapacity"

// ModifyCurrentDBClusterCapacityRequest generates a "aws/request.Request" representing the
// client's request for the ModifyCurrentDBClusterCapacity 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 ModifyCurrentDBClusterCapacity for more information on using the ModifyCurrentDBClusterCapacity
// 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 ModifyCurrentDBClusterCapacityRequest method.
//	req, resp := client.ModifyCurrentDBClusterCapacityRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyCurrentDBClusterCapacity
func (c *RDS) ModifyCurrentDBClusterCapacityRequest(input *ModifyCurrentDBClusterCapacityInput) (req *request.Request, output *ModifyCurrentDBClusterCapacityOutput) {
	op := &request.Operation{
		Name:       opModifyCurrentDBClusterCapacity,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyCurrentDBClusterCapacityInput{}
	}

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

// ModifyCurrentDBClusterCapacity API operation for Amazon Relational Database Service.
//
// Set the capacity of an Aurora Serverless v1 DB cluster to a specific value.
//
// Aurora Serverless v1 scales seamlessly based on the workload on the DB cluster.
// In some cases, the capacity might not scale fast enough to meet a sudden
// change in workload, such as a large number of new transactions. Call ModifyCurrentDBClusterCapacity
// to set the capacity explicitly.
//
// After this call sets the DB cluster capacity, Aurora Serverless v1 can automatically
// scale the DB cluster based on the cooldown period for scaling up and the
// cooldown period for scaling down.
//
// For more information about Aurora Serverless v1, see Using Amazon Aurora
// Serverless v1 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html)
// in the Amazon Aurora User Guide.
//
// If you call ModifyCurrentDBClusterCapacity with the default TimeoutAction,
// connections that prevent Aurora Serverless v1 from finding a scaling point
// might be dropped. For more information about scaling points, see Autoscaling
// for Aurora Serverless v1 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html#aurora-serverless.how-it-works.auto-scaling)
// in the Amazon Aurora User Guide.
//
// This operation only applies to Aurora Serverless v1 DB clusters.
//
// 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 Amazon Relational Database Service's
// API operation ModifyCurrentDBClusterCapacity for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidDBClusterCapacityFault "InvalidDBClusterCapacityFault"
//     Capacity isn't a valid Aurora Serverless DB cluster capacity. Valid capacity
//     values are 2, 4, 8, 16, 32, 64, 128, and 256.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyCurrentDBClusterCapacity
func (c *RDS) ModifyCurrentDBClusterCapacity(input *ModifyCurrentDBClusterCapacityInput) (*ModifyCurrentDBClusterCapacityOutput, error) {
	req, out := c.ModifyCurrentDBClusterCapacityRequest(input)
	return out, req.Send()
}

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

const opModifyCustomDBEngineVersion = "ModifyCustomDBEngineVersion"

// ModifyCustomDBEngineVersionRequest generates a "aws/request.Request" representing the
// client's request for the ModifyCustomDBEngineVersion 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 ModifyCustomDBEngineVersion for more information on using the ModifyCustomDBEngineVersion
// 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 ModifyCustomDBEngineVersionRequest method.
//	req, resp := client.ModifyCustomDBEngineVersionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyCustomDBEngineVersion
func (c *RDS) ModifyCustomDBEngineVersionRequest(input *ModifyCustomDBEngineVersionInput) (req *request.Request, output *ModifyCustomDBEngineVersionOutput) {
	op := &request.Operation{
		Name:       opModifyCustomDBEngineVersion,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyCustomDBEngineVersionInput{}
	}

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

// ModifyCustomDBEngineVersion API operation for Amazon Relational Database Service.
//
// Modifies the status of a custom engine version (CEV). You can find CEVs to
// modify by calling DescribeDBEngineVersions.
//
// The MediaImport service that imports files from Amazon S3 to create CEVs
// isn't integrated with Amazon Web Services CloudTrail. If you turn on data
// logging for Amazon RDS in CloudTrail, calls to the ModifyCustomDbEngineVersion
// event aren't logged. However, you might see calls from the API gateway that
// accesses your Amazon S3 bucket. These calls originate from the MediaImport
// service for the ModifyCustomDbEngineVersion event.
//
// For more information, see Modifying CEV status (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev.html#custom-cev.modify)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation ModifyCustomDBEngineVersion for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeCustomDBEngineVersionNotFoundFault "CustomDBEngineVersionNotFoundFault"
//     The specified CEV was not found.
//
//   - ErrCodeInvalidCustomDBEngineVersionStateFault "InvalidCustomDBEngineVersionStateFault"
//     You can't delete the CEV.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyCustomDBEngineVersion
func (c *RDS) ModifyCustomDBEngineVersion(input *ModifyCustomDBEngineVersionInput) (*ModifyCustomDBEngineVersionOutput, error) {
	req, out := c.ModifyCustomDBEngineVersionRequest(input)
	return out, req.Send()
}

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

const opModifyDBCluster = "ModifyDBCluster"

// ModifyDBClusterRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDBCluster 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 ModifyDBCluster for more information on using the ModifyDBCluster
// 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 ModifyDBClusterRequest method.
//	req, resp := client.ModifyDBClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBCluster
func (c *RDS) ModifyDBClusterRequest(input *ModifyDBClusterInput) (req *request.Request, output *ModifyDBClusterOutput) {
	op := &request.Operation{
		Name:       opModifyDBCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDBClusterInput{}
	}

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

// ModifyDBCluster API operation for Amazon Relational Database Service.
//
// Modifies the settings of an Amazon Aurora DB cluster or a Multi-AZ DB cluster.
// You can change one or more settings by specifying these parameters and the
// new values in the request.
//
// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation ModifyDBCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeStorageQuotaExceededFault "StorageQuotaExceeded"
//     The request would result in the user exceeding the allowed amount of storage
//     available across all DB instances.
//
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
//   - ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
//     The DB subnet group doesn't cover all Availability Zones after it's created
//     because of users' change.
//
//   - ErrCodeInvalidDBSubnetGroupStateFault "InvalidDBSubnetGroupStateFault"
//     The DB subnet group cannot be deleted because it's in use.
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
//   - ErrCodeDBClusterParameterGroupNotFoundFault "DBClusterParameterGroupNotFound"
//     DBClusterParameterGroupName doesn't refer to an existing DB cluster parameter
//     group.
//
//   - ErrCodeInvalidDBSecurityGroupStateFault "InvalidDBSecurityGroupState"
//     The state of the DB security group doesn't allow deletion.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeDBClusterAlreadyExistsFault "DBClusterAlreadyExistsFault"
//     The user already has a DB cluster with the given identifier.
//
//   - ErrCodeDBInstanceAlreadyExistsFault "DBInstanceAlreadyExists"
//     The user already has a DB instance with the given identifier.
//
//   - ErrCodeDomainNotFoundFault "DomainNotFoundFault"
//     Domain doesn't refer to an existing Active Directory domain.
//
//   - ErrCodeStorageTypeNotAvailableFault "StorageTypeNotAvailableFault"
//     The aurora-iopt1 storage type isn't available, because you modified the DB
//     cluster to use this storage type less than one month ago.
//
//   - ErrCodeOptionGroupNotFoundFault "OptionGroupNotFoundFault"
//     The specified option group could not be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBCluster
func (c *RDS) ModifyDBCluster(input *ModifyDBClusterInput) (*ModifyDBClusterOutput, error) {
	req, out := c.ModifyDBClusterRequest(input)
	return out, req.Send()
}

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

const opModifyDBClusterEndpoint = "ModifyDBClusterEndpoint"

// ModifyDBClusterEndpointRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDBClusterEndpoint 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 ModifyDBClusterEndpoint for more information on using the ModifyDBClusterEndpoint
// 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 ModifyDBClusterEndpointRequest method.
//	req, resp := client.ModifyDBClusterEndpointRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBClusterEndpoint
func (c *RDS) ModifyDBClusterEndpointRequest(input *ModifyDBClusterEndpointInput) (req *request.Request, output *ModifyDBClusterEndpointOutput) {
	op := &request.Operation{
		Name:       opModifyDBClusterEndpoint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDBClusterEndpointInput{}
	}

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

// ModifyDBClusterEndpoint API operation for Amazon Relational Database Service.
//
// Modifies the properties of an endpoint in an Amazon Aurora DB cluster.
//
// This operation only applies to Aurora DB clusters.
//
// 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 Amazon Relational Database Service's
// API operation ModifyDBClusterEndpoint for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidDBClusterEndpointStateFault "InvalidDBClusterEndpointStateFault"
//     The requested operation can't be performed on the endpoint while the endpoint
//     is in this state.
//
//   - ErrCodeDBClusterEndpointNotFoundFault "DBClusterEndpointNotFoundFault"
//     The specified custom endpoint doesn't exist.
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBClusterEndpoint
func (c *RDS) ModifyDBClusterEndpoint(input *ModifyDBClusterEndpointInput) (*ModifyDBClusterEndpointOutput, error) {
	req, out := c.ModifyDBClusterEndpointRequest(input)
	return out, req.Send()
}

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

const opModifyDBClusterParameterGroup = "ModifyDBClusterParameterGroup"

// ModifyDBClusterParameterGroupRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDBClusterParameterGroup 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 ModifyDBClusterParameterGroup for more information on using the ModifyDBClusterParameterGroup
// 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 ModifyDBClusterParameterGroupRequest method.
//	req, resp := client.ModifyDBClusterParameterGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBClusterParameterGroup
func (c *RDS) ModifyDBClusterParameterGroupRequest(input *ModifyDBClusterParameterGroupInput) (req *request.Request, output *DBClusterParameterGroupNameMessage) {
	op := &request.Operation{
		Name:       opModifyDBClusterParameterGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDBClusterParameterGroupInput{}
	}

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

// ModifyDBClusterParameterGroup API operation for Amazon Relational Database Service.
//
// Modifies the parameters of a DB cluster parameter group. To modify more than
// one parameter, submit a list of the following: ParameterName, ParameterValue,
// and ApplyMethod. A maximum of 20 parameters can be modified in a single request.
//
// After you create a DB cluster parameter group, you should wait at least 5
// minutes before creating your first DB cluster that uses that DB cluster parameter
// group as the default parameter group. This allows Amazon RDS to fully complete
// the create operation before the parameter group is used as the default for
// a new DB cluster. This is especially important for parameters that are critical
// when creating the default database for a DB cluster, such as the character
// set for the default database defined by the character_set_database parameter.
// You can use the Parameter Groups option of the Amazon RDS console (https://console.aws.amazon.com/rds/)
// or the DescribeDBClusterParameters operation to verify that your DB cluster
// parameter group has been created or modified.
//
// If the modified DB cluster parameter group is used by an Aurora Serverless
// v1 cluster, Aurora applies the update immediately. The cluster restart might
// interrupt your workload. In that case, your application must reopen any connections
// and retry any transactions that were active when the parameter changes took
// effect.
//
// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation ModifyDBClusterParameterGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
//   - ErrCodeInvalidDBParameterGroupStateFault "InvalidDBParameterGroupState"
//     The DB parameter group is in use or is in an invalid state. If you are attempting
//     to delete the parameter group, you can't delete it when the parameter group
//     is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBClusterParameterGroup
func (c *RDS) ModifyDBClusterParameterGroup(input *ModifyDBClusterParameterGroupInput) (*DBClusterParameterGroupNameMessage, error) {
	req, out := c.ModifyDBClusterParameterGroupRequest(input)
	return out, req.Send()
}

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

const opModifyDBClusterSnapshotAttribute = "ModifyDBClusterSnapshotAttribute"

// ModifyDBClusterSnapshotAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDBClusterSnapshotAttribute 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 ModifyDBClusterSnapshotAttribute for more information on using the ModifyDBClusterSnapshotAttribute
// 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 ModifyDBClusterSnapshotAttributeRequest method.
//	req, resp := client.ModifyDBClusterSnapshotAttributeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBClusterSnapshotAttribute
func (c *RDS) ModifyDBClusterSnapshotAttributeRequest(input *ModifyDBClusterSnapshotAttributeInput) (req *request.Request, output *ModifyDBClusterSnapshotAttributeOutput) {
	op := &request.Operation{
		Name:       opModifyDBClusterSnapshotAttribute,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDBClusterSnapshotAttributeInput{}
	}

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

// ModifyDBClusterSnapshotAttribute API operation for Amazon Relational Database Service.
//
// Adds an attribute and values to, or removes an attribute and values from,
// a manual DB cluster snapshot.
//
// To share a manual DB cluster snapshot with other Amazon Web Services accounts,
// specify restore as the AttributeName and use the ValuesToAdd parameter to
// add a list of IDs of the Amazon Web Services accounts that are authorized
// to restore the manual DB cluster snapshot. Use the value all to make the
// manual DB cluster snapshot public, which means that it can be copied or restored
// by all Amazon Web Services accounts.
//
// Don't add the all value for any manual DB cluster snapshots that contain
// private information that you don't want available to all Amazon Web Services
// accounts.
//
// If a manual DB cluster snapshot is encrypted, it can be shared, but only
// by specifying a list of authorized Amazon Web Services account IDs for the
// ValuesToAdd parameter. You can't use all as a value for that parameter in
// this case.
//
// To view which Amazon Web Services accounts have access to copy or restore
// a manual DB cluster snapshot, or whether a manual DB cluster snapshot is
// public or private, use the DescribeDBClusterSnapshotAttributes API operation.
// The accounts are returned as values for the restore attribute.
//
// 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 Amazon Relational Database Service's
// API operation ModifyDBClusterSnapshotAttribute for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterSnapshotNotFoundFault "DBClusterSnapshotNotFoundFault"
//     DBClusterSnapshotIdentifier doesn't refer to an existing DB cluster snapshot.
//
//   - ErrCodeInvalidDBClusterSnapshotStateFault "InvalidDBClusterSnapshotStateFault"
//     The supplied value isn't a valid DB cluster snapshot state.
//
//   - ErrCodeSharedSnapshotQuotaExceededFault "SharedSnapshotQuotaExceeded"
//     You have exceeded the maximum number of accounts that you can share a manual
//     DB snapshot with.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBClusterSnapshotAttribute
func (c *RDS) ModifyDBClusterSnapshotAttribute(input *ModifyDBClusterSnapshotAttributeInput) (*ModifyDBClusterSnapshotAttributeOutput, error) {
	req, out := c.ModifyDBClusterSnapshotAttributeRequest(input)
	return out, req.Send()
}

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

const opModifyDBInstance = "ModifyDBInstance"

// ModifyDBInstanceRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDBInstance 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 ModifyDBInstance for more information on using the ModifyDBInstance
// 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 ModifyDBInstanceRequest method.
//	req, resp := client.ModifyDBInstanceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBInstance
func (c *RDS) ModifyDBInstanceRequest(input *ModifyDBInstanceInput) (req *request.Request, output *ModifyDBInstanceOutput) {
	op := &request.Operation{
		Name:       opModifyDBInstance,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDBInstanceInput{}
	}

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

// ModifyDBInstance API operation for Amazon Relational Database Service.
//
// Modifies settings for a DB instance. You can change one or more database
// configuration parameters by specifying these parameters and the new values
// in the request. To learn what modifications you can make to your DB instance,
// call DescribeValidDBInstanceModifications before you call ModifyDBInstance.
//
// 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 Amazon Relational Database Service's
// API operation ModifyDBInstance for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeInvalidDBSecurityGroupStateFault "InvalidDBSecurityGroupState"
//     The state of the DB security group doesn't allow deletion.
//
//   - ErrCodeDBInstanceAlreadyExistsFault "DBInstanceAlreadyExists"
//     The user already has a DB instance with the given identifier.
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeDBSecurityGroupNotFoundFault "DBSecurityGroupNotFound"
//     DBSecurityGroupName doesn't refer to an existing DB security group.
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
//   - ErrCodeInsufficientDBInstanceCapacityFault "InsufficientDBInstanceCapacity"
//     The specified DB instance class isn't available in the specified Availability
//     Zone.
//
//   - ErrCodeStorageQuotaExceededFault "StorageQuotaExceeded"
//     The request would result in the user exceeding the allowed amount of storage
//     available across all DB instances.
//
//   - ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
//     The DB subnet group doesn't cover all Availability Zones after it's created
//     because of users' change.
//
//   - ErrCodeProvisionedIopsNotAvailableInAZFault "ProvisionedIopsNotAvailableInAZFault"
//     Provisioned IOPS not available in the specified Availability Zone.
//
//   - ErrCodeOptionGroupNotFoundFault "OptionGroupNotFoundFault"
//     The specified option group could not be found.
//
//   - ErrCodeDBUpgradeDependencyFailureFault "DBUpgradeDependencyFailure"
//     The DB upgrade failed because a resource the DB depends on can't be modified.
//
//   - ErrCodeStorageTypeNotSupportedFault "StorageTypeNotSupported"
//     The specified StorageType can't be associated with the DB instance.
//
//   - ErrCodeAuthorizationNotFoundFault "AuthorizationNotFound"
//     The specified CIDR IP range or Amazon EC2 security group might not be authorized
//     for the specified DB security group.
//
//     Or, RDS might not be authorized to perform necessary actions using IAM on
//     your behalf.
//
//   - ErrCodeCertificateNotFoundFault "CertificateNotFound"
//     CertificateIdentifier doesn't refer to an existing certificate.
//
//   - ErrCodeDomainNotFoundFault "DomainNotFoundFault"
//     Domain doesn't refer to an existing Active Directory domain.
//
//   - ErrCodeBackupPolicyNotFoundFault "BackupPolicyNotFoundFault"
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeNetworkTypeNotSupported "NetworkTypeNotSupported"
//     The network type is invalid for the DB instance. Valid nework type values
//     are IPV4 and DUAL.
//
//   - ErrCodeTenantDatabaseQuotaExceededFault "TenantDatabaseQuotaExceeded"
//     You attempted to create more tenant databases than are permitted in your
//     Amazon Web Services account.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBInstance
func (c *RDS) ModifyDBInstance(input *ModifyDBInstanceInput) (*ModifyDBInstanceOutput, error) {
	req, out := c.ModifyDBInstanceRequest(input)
	return out, req.Send()
}

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

const opModifyDBParameterGroup = "ModifyDBParameterGroup"

// ModifyDBParameterGroupRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDBParameterGroup 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 ModifyDBParameterGroup for more information on using the ModifyDBParameterGroup
// 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 ModifyDBParameterGroupRequest method.
//	req, resp := client.ModifyDBParameterGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBParameterGroup
func (c *RDS) ModifyDBParameterGroupRequest(input *ModifyDBParameterGroupInput) (req *request.Request, output *DBParameterGroupNameMessage) {
	op := &request.Operation{
		Name:       opModifyDBParameterGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDBParameterGroupInput{}
	}

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

// ModifyDBParameterGroup API operation for Amazon Relational Database Service.
//
// Modifies the parameters of a DB parameter group. To modify more than one
// parameter, submit a list of the following: ParameterName, ParameterValue,
// and ApplyMethod. A maximum of 20 parameters can be modified in a single request.
//
// After you modify a DB parameter group, you should wait at least 5 minutes
// before creating your first DB instance that uses that DB parameter group
// as the default parameter group. This allows Amazon RDS to fully complete
// the modify operation before the parameter group is used as the default for
// a new DB instance. This is especially important for parameters that are critical
// when creating the default database for a DB instance, such as the character
// set for the default database defined by the character_set_database parameter.
// You can use the Parameter Groups option of the Amazon RDS console (https://console.aws.amazon.com/rds/)
// or the DescribeDBParameters command to verify that your DB parameter group
// has been created or modified.
//
// 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 Amazon Relational Database Service's
// API operation ModifyDBParameterGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
//   - ErrCodeInvalidDBParameterGroupStateFault "InvalidDBParameterGroupState"
//     The DB parameter group is in use or is in an invalid state. If you are attempting
//     to delete the parameter group, you can't delete it when the parameter group
//     is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBParameterGroup
func (c *RDS) ModifyDBParameterGroup(input *ModifyDBParameterGroupInput) (*DBParameterGroupNameMessage, error) {
	req, out := c.ModifyDBParameterGroupRequest(input)
	return out, req.Send()
}

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

const opModifyDBProxy = "ModifyDBProxy"

// ModifyDBProxyRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDBProxy 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 ModifyDBProxy for more information on using the ModifyDBProxy
// 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 ModifyDBProxyRequest method.
//	req, resp := client.ModifyDBProxyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBProxy
func (c *RDS) ModifyDBProxyRequest(input *ModifyDBProxyInput) (req *request.Request, output *ModifyDBProxyOutput) {
	op := &request.Operation{
		Name:       opModifyDBProxy,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDBProxyInput{}
	}

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

// ModifyDBProxy API operation for Amazon Relational Database Service.
//
// Changes the settings for an existing DB proxy.
//
// 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 Amazon Relational Database Service's
// API operation ModifyDBProxy for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBProxyNotFoundFault "DBProxyNotFoundFault"
//     The specified proxy name doesn't correspond to a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBProxyAlreadyExistsFault "DBProxyAlreadyExistsFault"
//     The specified proxy name must be unique for all proxies owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeInvalidDBProxyStateFault "InvalidDBProxyStateFault"
//     The requested operation can't be performed while the proxy is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBProxy
func (c *RDS) ModifyDBProxy(input *ModifyDBProxyInput) (*ModifyDBProxyOutput, error) {
	req, out := c.ModifyDBProxyRequest(input)
	return out, req.Send()
}

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

const opModifyDBProxyEndpoint = "ModifyDBProxyEndpoint"

// ModifyDBProxyEndpointRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDBProxyEndpoint 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 ModifyDBProxyEndpoint for more information on using the ModifyDBProxyEndpoint
// 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 ModifyDBProxyEndpointRequest method.
//	req, resp := client.ModifyDBProxyEndpointRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBProxyEndpoint
func (c *RDS) ModifyDBProxyEndpointRequest(input *ModifyDBProxyEndpointInput) (req *request.Request, output *ModifyDBProxyEndpointOutput) {
	op := &request.Operation{
		Name:       opModifyDBProxyEndpoint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDBProxyEndpointInput{}
	}

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

// ModifyDBProxyEndpoint API operation for Amazon Relational Database Service.
//
// Changes the settings for an existing DB proxy endpoint.
//
// 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 Amazon Relational Database Service's
// API operation ModifyDBProxyEndpoint for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBProxyEndpointNotFoundFault "DBProxyEndpointNotFoundFault"
//     The DB proxy endpoint doesn't exist.
//
//   - ErrCodeDBProxyEndpointAlreadyExistsFault "DBProxyEndpointAlreadyExistsFault"
//     The specified DB proxy endpoint name must be unique for all DB proxy endpoints
//     owned by your Amazon Web Services account in the specified Amazon Web Services
//     Region.
//
//   - ErrCodeInvalidDBProxyEndpointStateFault "InvalidDBProxyEndpointStateFault"
//     You can't perform this operation while the DB proxy endpoint is in a particular
//     state.
//
//   - ErrCodeInvalidDBProxyStateFault "InvalidDBProxyStateFault"
//     The requested operation can't be performed while the proxy is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBProxyEndpoint
func (c *RDS) ModifyDBProxyEndpoint(input *ModifyDBProxyEndpointInput) (*ModifyDBProxyEndpointOutput, error) {
	req, out := c.ModifyDBProxyEndpointRequest(input)
	return out, req.Send()
}

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

const opModifyDBProxyTargetGroup = "ModifyDBProxyTargetGroup"

// ModifyDBProxyTargetGroupRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDBProxyTargetGroup 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 ModifyDBProxyTargetGroup for more information on using the ModifyDBProxyTargetGroup
// 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 ModifyDBProxyTargetGroupRequest method.
//	req, resp := client.ModifyDBProxyTargetGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBProxyTargetGroup
func (c *RDS) ModifyDBProxyTargetGroupRequest(input *ModifyDBProxyTargetGroupInput) (req *request.Request, output *ModifyDBProxyTargetGroupOutput) {
	op := &request.Operation{
		Name:       opModifyDBProxyTargetGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDBProxyTargetGroupInput{}
	}

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

// ModifyDBProxyTargetGroup API operation for Amazon Relational Database Service.
//
// Modifies the properties of a DBProxyTargetGroup.
//
// 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 Amazon Relational Database Service's
// API operation ModifyDBProxyTargetGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBProxyNotFoundFault "DBProxyNotFoundFault"
//     The specified proxy name doesn't correspond to a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBProxyTargetGroupNotFoundFault "DBProxyTargetGroupNotFoundFault"
//     The specified target group isn't available for a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeInvalidDBProxyStateFault "InvalidDBProxyStateFault"
//     The requested operation can't be performed while the proxy is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBProxyTargetGroup
func (c *RDS) ModifyDBProxyTargetGroup(input *ModifyDBProxyTargetGroupInput) (*ModifyDBProxyTargetGroupOutput, error) {
	req, out := c.ModifyDBProxyTargetGroupRequest(input)
	return out, req.Send()
}

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

const opModifyDBRecommendation = "ModifyDBRecommendation"

// ModifyDBRecommendationRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDBRecommendation 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 ModifyDBRecommendation for more information on using the ModifyDBRecommendation
// 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 ModifyDBRecommendationRequest method.
//	req, resp := client.ModifyDBRecommendationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBRecommendation
func (c *RDS) ModifyDBRecommendationRequest(input *ModifyDBRecommendationInput) (req *request.Request, output *ModifyDBRecommendationOutput) {
	op := &request.Operation{
		Name:       opModifyDBRecommendation,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDBRecommendationInput{}
	}

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

// ModifyDBRecommendation API operation for Amazon Relational Database Service.
//
// Updates the recommendation status and recommended action status for the specified
// recommendation.
//
// 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 Amazon Relational Database Service's
// API operation ModifyDBRecommendation for usage and error information.
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBRecommendation
func (c *RDS) ModifyDBRecommendation(input *ModifyDBRecommendationInput) (*ModifyDBRecommendationOutput, error) {
	req, out := c.ModifyDBRecommendationRequest(input)
	return out, req.Send()
}

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

const opModifyDBShardGroup = "ModifyDBShardGroup"

// ModifyDBShardGroupRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDBShardGroup 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 ModifyDBShardGroup for more information on using the ModifyDBShardGroup
// 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 ModifyDBShardGroupRequest method.
//	req, resp := client.ModifyDBShardGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBShardGroup
func (c *RDS) ModifyDBShardGroupRequest(input *ModifyDBShardGroupInput) (req *request.Request, output *ModifyDBShardGroupOutput) {
	op := &request.Operation{
		Name:       opModifyDBShardGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDBShardGroupInput{}
	}

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

// ModifyDBShardGroup API operation for Amazon Relational Database Service.
//
// Modifies the settings of an Aurora Limitless Database DB shard group. You
// can change one or more settings by specifying these parameters and the new
// values in the request.
//
// 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 Amazon Relational Database Service's
// API operation ModifyDBShardGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeDBShardGroupAlreadyExistsFault "DBShardGroupAlreadyExists"
//     The specified DB shard group name must be unique in your Amazon Web Services
//     account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBShardGroupNotFoundFault "DBShardGroupNotFound"
//     The specified DB shard group name wasn't found.
//
//   - ErrCodeInvalidMaxAcuFault "InvalidMaxAcu"
//     The maximum capacity of the DB shard group must be 48-7168 Aurora capacity
//     units (ACUs).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBShardGroup
func (c *RDS) ModifyDBShardGroup(input *ModifyDBShardGroupInput) (*ModifyDBShardGroupOutput, error) {
	req, out := c.ModifyDBShardGroupRequest(input)
	return out, req.Send()
}

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

const opModifyDBSnapshot = "ModifyDBSnapshot"

// ModifyDBSnapshotRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDBSnapshot 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 ModifyDBSnapshot for more information on using the ModifyDBSnapshot
// 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 ModifyDBSnapshotRequest method.
//	req, resp := client.ModifyDBSnapshotRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBSnapshot
func (c *RDS) ModifyDBSnapshotRequest(input *ModifyDBSnapshotInput) (req *request.Request, output *ModifyDBSnapshotOutput) {
	op := &request.Operation{
		Name:       opModifyDBSnapshot,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDBSnapshotInput{}
	}

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

// ModifyDBSnapshot API operation for Amazon Relational Database Service.
//
// Updates a manual DB snapshot with a new engine version. The snapshot can
// be encrypted or unencrypted, but not shared or public.
//
// Amazon RDS supports upgrading DB snapshots for MySQL, PostgreSQL, and Oracle.
// This operation doesn't apply to RDS Custom or RDS for Db2.
//
// 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 Amazon Relational Database Service's
// API operation ModifyDBSnapshot for usage and error information.
//
// Returned Error Codes:
//   - ErrCodeDBSnapshotNotFoundFault "DBSnapshotNotFound"
//     DBSnapshotIdentifier doesn't refer to an existing DB snapshot.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBSnapshot
func (c *RDS) ModifyDBSnapshot(input *ModifyDBSnapshotInput) (*ModifyDBSnapshotOutput, error) {
	req, out := c.ModifyDBSnapshotRequest(input)
	return out, req.Send()
}

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

const opModifyDBSnapshotAttribute = "ModifyDBSnapshotAttribute"

// ModifyDBSnapshotAttributeRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDBSnapshotAttribute 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 ModifyDBSnapshotAttribute for more information on using the ModifyDBSnapshotAttribute
// 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 ModifyDBSnapshotAttributeRequest method.
//	req, resp := client.ModifyDBSnapshotAttributeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBSnapshotAttribute
func (c *RDS) ModifyDBSnapshotAttributeRequest(input *ModifyDBSnapshotAttributeInput) (req *request.Request, output *ModifyDBSnapshotAttributeOutput) {
	op := &request.Operation{
		Name:       opModifyDBSnapshotAttribute,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDBSnapshotAttributeInput{}
	}

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

// ModifyDBSnapshotAttribute API operation for Amazon Relational Database Service.
//
// Adds an attribute and values to, or removes an attribute and values from,
// a manual DB snapshot.
//
// To share a manual DB snapshot with other Amazon Web Services accounts, specify
// restore as the AttributeName and use the ValuesToAdd parameter to add a list
// of IDs of the Amazon Web Services accounts that are authorized to restore
// the manual DB snapshot. Uses the value all to make the manual DB snapshot
// public, which means it can be copied or restored by all Amazon Web Services
// accounts.
//
// Don't add the all value for any manual DB snapshots that contain private
// information that you don't want available to all Amazon Web Services accounts.
//
// If the manual DB snapshot is encrypted, it can be shared, but only by specifying
// a list of authorized Amazon Web Services account IDs for the ValuesToAdd
// parameter. You can't use all as a value for that parameter in this case.
//
// To view which Amazon Web Services accounts have access to copy or restore
// a manual DB snapshot, or whether a manual DB snapshot public or private,
// use the DescribeDBSnapshotAttributes API operation. The accounts are returned
// as values for the restore attribute.
//
// 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 Amazon Relational Database Service's
// API operation ModifyDBSnapshotAttribute for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBSnapshotNotFoundFault "DBSnapshotNotFound"
//     DBSnapshotIdentifier doesn't refer to an existing DB snapshot.
//
//   - ErrCodeInvalidDBSnapshotStateFault "InvalidDBSnapshotState"
//     The state of the DB snapshot doesn't allow deletion.
//
//   - ErrCodeSharedSnapshotQuotaExceededFault "SharedSnapshotQuotaExceeded"
//     You have exceeded the maximum number of accounts that you can share a manual
//     DB snapshot with.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBSnapshotAttribute
func (c *RDS) ModifyDBSnapshotAttribute(input *ModifyDBSnapshotAttributeInput) (*ModifyDBSnapshotAttributeOutput, error) {
	req, out := c.ModifyDBSnapshotAttributeRequest(input)
	return out, req.Send()
}

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

const opModifyDBSubnetGroup = "ModifyDBSubnetGroup"

// ModifyDBSubnetGroupRequest generates a "aws/request.Request" representing the
// client's request for the ModifyDBSubnetGroup 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 ModifyDBSubnetGroup for more information on using the ModifyDBSubnetGroup
// 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 ModifyDBSubnetGroupRequest method.
//	req, resp := client.ModifyDBSubnetGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBSubnetGroup
func (c *RDS) ModifyDBSubnetGroupRequest(input *ModifyDBSubnetGroupInput) (req *request.Request, output *ModifyDBSubnetGroupOutput) {
	op := &request.Operation{
		Name:       opModifyDBSubnetGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyDBSubnetGroupInput{}
	}

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

// ModifyDBSubnetGroup API operation for Amazon Relational Database Service.
//
// Modifies an existing DB subnet group. DB subnet groups must contain at least
// one subnet in at least two AZs in the 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 Amazon Relational Database Service's
// API operation ModifyDBSubnetGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
//   - ErrCodeDBSubnetQuotaExceededFault "DBSubnetQuotaExceededFault"
//     The request would result in the user exceeding the allowed number of subnets
//     in a DB subnet groups.
//
//   - ErrCodeSubnetAlreadyInUse "SubnetAlreadyInUse"
//     The DB subnet is already in use in the Availability Zone.
//
//   - ErrCodeDBSubnetGroupDoesNotCoverEnoughAZs "DBSubnetGroupDoesNotCoverEnoughAZs"
//     Subnets in the DB subnet group should cover at least two Availability Zones
//     unless there is only one Availability Zone.
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyDBSubnetGroup
func (c *RDS) ModifyDBSubnetGroup(input *ModifyDBSubnetGroupInput) (*ModifyDBSubnetGroupOutput, error) {
	req, out := c.ModifyDBSubnetGroupRequest(input)
	return out, req.Send()
}

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

const opModifyEventSubscription = "ModifyEventSubscription"

// ModifyEventSubscriptionRequest generates a "aws/request.Request" representing the
// client's request for the ModifyEventSubscription 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 ModifyEventSubscription for more information on using the ModifyEventSubscription
// 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 ModifyEventSubscriptionRequest method.
//	req, resp := client.ModifyEventSubscriptionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyEventSubscription
func (c *RDS) ModifyEventSubscriptionRequest(input *ModifyEventSubscriptionInput) (req *request.Request, output *ModifyEventSubscriptionOutput) {
	op := &request.Operation{
		Name:       opModifyEventSubscription,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyEventSubscriptionInput{}
	}

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

// ModifyEventSubscription API operation for Amazon Relational Database Service.
//
// Modifies an existing RDS event notification subscription. You can't modify
// the source identifiers using this call. To change source identifiers for
// a subscription, use the AddSourceIdentifierToSubscription and RemoveSourceIdentifierFromSubscription
// calls.
//
// You can see a list of the event categories for a given source type (SourceType)
// in Events (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html)
// in the Amazon RDS User Guide or by using the DescribeEventCategories operation.
//
// 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 Amazon Relational Database Service's
// API operation ModifyEventSubscription for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeEventSubscriptionQuotaExceededFault "EventSubscriptionQuotaExceeded"
//     You have reached the maximum number of event subscriptions.
//
//   - ErrCodeSubscriptionNotFoundFault "SubscriptionNotFound"
//     The subscription name does not exist.
//
//   - ErrCodeSNSInvalidTopicFault "SNSInvalidTopic"
//     SNS has responded that there is a problem with the SNS topic specified.
//
//   - ErrCodeSNSNoAuthorizationFault "SNSNoAuthorization"
//     You do not have permission to publish to the SNS topic ARN.
//
//   - ErrCodeSNSTopicArnNotFoundFault "SNSTopicArnNotFound"
//     The SNS topic ARN does not exist.
//
//   - ErrCodeSubscriptionCategoryNotFoundFault "SubscriptionCategoryNotFound"
//     The supplied category does not exist.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyEventSubscription
func (c *RDS) ModifyEventSubscription(input *ModifyEventSubscriptionInput) (*ModifyEventSubscriptionOutput, error) {
	req, out := c.ModifyEventSubscriptionRequest(input)
	return out, req.Send()
}

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

const opModifyGlobalCluster = "ModifyGlobalCluster"

// ModifyGlobalClusterRequest generates a "aws/request.Request" representing the
// client's request for the ModifyGlobalCluster 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 ModifyGlobalCluster for more information on using the ModifyGlobalCluster
// 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 ModifyGlobalClusterRequest method.
//	req, resp := client.ModifyGlobalClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyGlobalCluster
func (c *RDS) ModifyGlobalClusterRequest(input *ModifyGlobalClusterInput) (req *request.Request, output *ModifyGlobalClusterOutput) {
	op := &request.Operation{
		Name:       opModifyGlobalCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyGlobalClusterInput{}
	}

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

// ModifyGlobalCluster API operation for Amazon Relational Database Service.
//
// Modifies a setting for an Amazon Aurora global database cluster. You can
// change one or more database configuration parameters by specifying these
// parameters and the new values in the request. For more information on Amazon
// Aurora, see What is Amazon Aurora? (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// This operation only applies to Aurora global database clusters.
//
// 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 Amazon Relational Database Service's
// API operation ModifyGlobalCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeGlobalClusterNotFoundFault "GlobalClusterNotFoundFault"
//     The GlobalClusterIdentifier doesn't refer to an existing global database
//     cluster.
//
//   - ErrCodeInvalidGlobalClusterStateFault "InvalidGlobalClusterStateFault"
//     The global cluster is in an invalid state and can't perform the requested
//     operation.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyGlobalCluster
func (c *RDS) ModifyGlobalCluster(input *ModifyGlobalClusterInput) (*ModifyGlobalClusterOutput, error) {
	req, out := c.ModifyGlobalClusterRequest(input)
	return out, req.Send()
}

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

const opModifyIntegration = "ModifyIntegration"

// ModifyIntegrationRequest generates a "aws/request.Request" representing the
// client's request for the ModifyIntegration 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 ModifyIntegration for more information on using the ModifyIntegration
// 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 ModifyIntegrationRequest method.
//	req, resp := client.ModifyIntegrationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyIntegration
func (c *RDS) ModifyIntegrationRequest(input *ModifyIntegrationInput) (req *request.Request, output *ModifyIntegrationOutput) {
	op := &request.Operation{
		Name:       opModifyIntegration,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyIntegrationInput{}
	}

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

// ModifyIntegration API operation for Amazon Relational Database Service.
//
// Modifies a zero-ETL integration with Amazon Redshift.
//
// Currently, you can only modify integrations that have Aurora MySQL source
// DB clusters. Integrations with Aurora PostgreSQL and RDS sources currently
// don't support modifying the integration.
//
// 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 Amazon Relational Database Service's
// API operation ModifyIntegration for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeIntegrationNotFoundFault "IntegrationNotFoundFault"
//     The specified integration could not be found.
//
//   - ErrCodeInvalidIntegrationStateFault "InvalidIntegrationStateFault"
//     The integration is in an invalid state and can't perform the requested operation.
//
//   - ErrCodeIntegrationConflictOperationFault "IntegrationConflictOperationFault"
//     A conflicting conditional operation is currently in progress against this
//     resource. Typically occurs when there are multiple requests being made to
//     the same resource at the same time, and these requests conflict with each
//     other.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyIntegration
func (c *RDS) ModifyIntegration(input *ModifyIntegrationInput) (*ModifyIntegrationOutput, error) {
	req, out := c.ModifyIntegrationRequest(input)
	return out, req.Send()
}

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

const opModifyOptionGroup = "ModifyOptionGroup"

// ModifyOptionGroupRequest generates a "aws/request.Request" representing the
// client's request for the ModifyOptionGroup 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 ModifyOptionGroup for more information on using the ModifyOptionGroup
// 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 ModifyOptionGroupRequest method.
//	req, resp := client.ModifyOptionGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyOptionGroup
func (c *RDS) ModifyOptionGroupRequest(input *ModifyOptionGroupInput) (req *request.Request, output *ModifyOptionGroupOutput) {
	op := &request.Operation{
		Name:       opModifyOptionGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyOptionGroupInput{}
	}

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

// ModifyOptionGroup API operation for Amazon Relational Database Service.
//
// Modifies an existing option group.
//
// 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 Amazon Relational Database Service's
// API operation ModifyOptionGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidOptionGroupStateFault "InvalidOptionGroupStateFault"
//     The option group isn't in the available state.
//
//   - ErrCodeOptionGroupNotFoundFault "OptionGroupNotFoundFault"
//     The specified option group could not be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyOptionGroup
func (c *RDS) ModifyOptionGroup(input *ModifyOptionGroupInput) (*ModifyOptionGroupOutput, error) {
	req, out := c.ModifyOptionGroupRequest(input)
	return out, req.Send()
}

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

const opModifyTenantDatabase = "ModifyTenantDatabase"

// ModifyTenantDatabaseRequest generates a "aws/request.Request" representing the
// client's request for the ModifyTenantDatabase 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 ModifyTenantDatabase for more information on using the ModifyTenantDatabase
// 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 ModifyTenantDatabaseRequest method.
//	req, resp := client.ModifyTenantDatabaseRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyTenantDatabase
func (c *RDS) ModifyTenantDatabaseRequest(input *ModifyTenantDatabaseInput) (req *request.Request, output *ModifyTenantDatabaseOutput) {
	op := &request.Operation{
		Name:       opModifyTenantDatabase,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ModifyTenantDatabaseInput{}
	}

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

// ModifyTenantDatabase API operation for Amazon Relational Database Service.
//
// Modifies an existing tenant database in a DB instance. You can change the
// tenant database name or the master user password. This operation is supported
// only for RDS for Oracle CDB instances using the multi-tenant configuration.
//
// 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 Amazon Relational Database Service's
// API operation ModifyTenantDatabase for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeTenantDatabaseNotFoundFault "TenantDatabaseNotFound"
//     The specified tenant database wasn't found in the DB instance.
//
//   - ErrCodeTenantDatabaseAlreadyExistsFault "TenantDatabaseAlreadyExists"
//     You attempted to either create a tenant database that already exists or modify
//     a tenant database to use the name of an existing tenant database.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ModifyTenantDatabase
func (c *RDS) ModifyTenantDatabase(input *ModifyTenantDatabaseInput) (*ModifyTenantDatabaseOutput, error) {
	req, out := c.ModifyTenantDatabaseRequest(input)
	return out, req.Send()
}

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

const opPromoteReadReplica = "PromoteReadReplica"

// PromoteReadReplicaRequest generates a "aws/request.Request" representing the
// client's request for the PromoteReadReplica 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 PromoteReadReplica for more information on using the PromoteReadReplica
// 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 PromoteReadReplicaRequest method.
//	req, resp := client.PromoteReadReplicaRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/PromoteReadReplica
func (c *RDS) PromoteReadReplicaRequest(input *PromoteReadReplicaInput) (req *request.Request, output *PromoteReadReplicaOutput) {
	op := &request.Operation{
		Name:       opPromoteReadReplica,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &PromoteReadReplicaInput{}
	}

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

// PromoteReadReplica API operation for Amazon Relational Database Service.
//
// Promotes a read replica DB instance to a standalone DB instance.
//
//   - Backup duration is a function of the amount of changes to the database
//     since the previous backup. If you plan to promote a read replica to a
//     standalone instance, we recommend that you enable backups and complete
//     at least one backup prior to promotion. In addition, a read replica cannot
//     be promoted to a standalone instance when it is in the backing-up status.
//     If you have enabled backups on your read replica, configure the automated
//     backup window so that daily backups do not interfere with read replica
//     promotion.
//
//   - This command doesn't apply to Aurora MySQL, Aurora PostgreSQL, or RDS
//     Custom.
//
// 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 Amazon Relational Database Service's
// API operation PromoteReadReplica for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/PromoteReadReplica
func (c *RDS) PromoteReadReplica(input *PromoteReadReplicaInput) (*PromoteReadReplicaOutput, error) {
	req, out := c.PromoteReadReplicaRequest(input)
	return out, req.Send()
}

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

const opPromoteReadReplicaDBCluster = "PromoteReadReplicaDBCluster"

// PromoteReadReplicaDBClusterRequest generates a "aws/request.Request" representing the
// client's request for the PromoteReadReplicaDBCluster 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 PromoteReadReplicaDBCluster for more information on using the PromoteReadReplicaDBCluster
// 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 PromoteReadReplicaDBClusterRequest method.
//	req, resp := client.PromoteReadReplicaDBClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/PromoteReadReplicaDBCluster
func (c *RDS) PromoteReadReplicaDBClusterRequest(input *PromoteReadReplicaDBClusterInput) (req *request.Request, output *PromoteReadReplicaDBClusterOutput) {
	op := &request.Operation{
		Name:       opPromoteReadReplicaDBCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &PromoteReadReplicaDBClusterInput{}
	}

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

// PromoteReadReplicaDBCluster API operation for Amazon Relational Database Service.
//
// Promotes a read replica DB cluster to a standalone DB cluster.
//
// 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 Amazon Relational Database Service's
// API operation PromoteReadReplicaDBCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/PromoteReadReplicaDBCluster
func (c *RDS) PromoteReadReplicaDBCluster(input *PromoteReadReplicaDBClusterInput) (*PromoteReadReplicaDBClusterOutput, error) {
	req, out := c.PromoteReadReplicaDBClusterRequest(input)
	return out, req.Send()
}

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

const opPurchaseReservedDBInstancesOffering = "PurchaseReservedDBInstancesOffering"

// PurchaseReservedDBInstancesOfferingRequest generates a "aws/request.Request" representing the
// client's request for the PurchaseReservedDBInstancesOffering 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 PurchaseReservedDBInstancesOffering for more information on using the PurchaseReservedDBInstancesOffering
// 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 PurchaseReservedDBInstancesOfferingRequest method.
//	req, resp := client.PurchaseReservedDBInstancesOfferingRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/PurchaseReservedDBInstancesOffering
func (c *RDS) PurchaseReservedDBInstancesOfferingRequest(input *PurchaseReservedDBInstancesOfferingInput) (req *request.Request, output *PurchaseReservedDBInstancesOfferingOutput) {
	op := &request.Operation{
		Name:       opPurchaseReservedDBInstancesOffering,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &PurchaseReservedDBInstancesOfferingInput{}
	}

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

// PurchaseReservedDBInstancesOffering API operation for Amazon Relational Database Service.
//
// Purchases a reserved DB instance offering.
//
// 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 Amazon Relational Database Service's
// API operation PurchaseReservedDBInstancesOffering for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeReservedDBInstancesOfferingNotFoundFault "ReservedDBInstancesOfferingNotFound"
//     Specified offering does not exist.
//
//   - ErrCodeReservedDBInstanceAlreadyExistsFault "ReservedDBInstanceAlreadyExists"
//     User already has a reservation with the given identifier.
//
//   - ErrCodeReservedDBInstanceQuotaExceededFault "ReservedDBInstanceQuotaExceeded"
//     Request would exceed the user's DB Instance quota.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/PurchaseReservedDBInstancesOffering
func (c *RDS) PurchaseReservedDBInstancesOffering(input *PurchaseReservedDBInstancesOfferingInput) (*PurchaseReservedDBInstancesOfferingOutput, error) {
	req, out := c.PurchaseReservedDBInstancesOfferingRequest(input)
	return out, req.Send()
}

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

const opRebootDBCluster = "RebootDBCluster"

// RebootDBClusterRequest generates a "aws/request.Request" representing the
// client's request for the RebootDBCluster 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 RebootDBCluster for more information on using the RebootDBCluster
// 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 RebootDBClusterRequest method.
//	req, resp := client.RebootDBClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RebootDBCluster
func (c *RDS) RebootDBClusterRequest(input *RebootDBClusterInput) (req *request.Request, output *RebootDBClusterOutput) {
	op := &request.Operation{
		Name:       opRebootDBCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RebootDBClusterInput{}
	}

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

// RebootDBCluster API operation for Amazon Relational Database Service.
//
// You might need to reboot your DB cluster, usually for maintenance reasons.
// For example, if you make certain modifications, or if you change the DB cluster
// parameter group associated with the DB cluster, reboot the DB cluster for
// the changes to take effect.
//
// Rebooting a DB cluster restarts the database engine service. Rebooting a
// DB cluster results in a momentary outage, during which the DB cluster status
// is set to rebooting.
//
// Use this operation only for a non-Aurora Multi-AZ DB cluster.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation RebootDBCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RebootDBCluster
func (c *RDS) RebootDBCluster(input *RebootDBClusterInput) (*RebootDBClusterOutput, error) {
	req, out := c.RebootDBClusterRequest(input)
	return out, req.Send()
}

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

const opRebootDBInstance = "RebootDBInstance"

// RebootDBInstanceRequest generates a "aws/request.Request" representing the
// client's request for the RebootDBInstance 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 RebootDBInstance for more information on using the RebootDBInstance
// 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 RebootDBInstanceRequest method.
//	req, resp := client.RebootDBInstanceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RebootDBInstance
func (c *RDS) RebootDBInstanceRequest(input *RebootDBInstanceInput) (req *request.Request, output *RebootDBInstanceOutput) {
	op := &request.Operation{
		Name:       opRebootDBInstance,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RebootDBInstanceInput{}
	}

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

// RebootDBInstance API operation for Amazon Relational Database Service.
//
// You might need to reboot your DB instance, usually for maintenance reasons.
// For example, if you make certain modifications, or if you change the DB parameter
// group associated with the DB instance, you must reboot the instance for the
// changes to take effect.
//
// Rebooting a DB instance restarts the database engine service. Rebooting a
// DB instance results in a momentary outage, during which the DB instance status
// is set to rebooting.
//
// For more information about rebooting, see Rebooting a DB Instance (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_RebootInstance.html)
// in the Amazon RDS User Guide.
//
// This command doesn't apply to RDS Custom.
//
// If your DB instance is part of a Multi-AZ DB cluster, you can reboot the
// DB cluster with the RebootDBCluster operation.
//
// 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 Amazon Relational Database Service's
// API operation RebootDBInstance for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RebootDBInstance
func (c *RDS) RebootDBInstance(input *RebootDBInstanceInput) (*RebootDBInstanceOutput, error) {
	req, out := c.RebootDBInstanceRequest(input)
	return out, req.Send()
}

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

const opRebootDBShardGroup = "RebootDBShardGroup"

// RebootDBShardGroupRequest generates a "aws/request.Request" representing the
// client's request for the RebootDBShardGroup 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 RebootDBShardGroup for more information on using the RebootDBShardGroup
// 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 RebootDBShardGroupRequest method.
//	req, resp := client.RebootDBShardGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RebootDBShardGroup
func (c *RDS) RebootDBShardGroupRequest(input *RebootDBShardGroupInput) (req *request.Request, output *RebootDBShardGroupOutput) {
	op := &request.Operation{
		Name:       opRebootDBShardGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RebootDBShardGroupInput{}
	}

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

// RebootDBShardGroup API operation for Amazon Relational Database Service.
//
// You might need to reboot your DB shard group, usually for maintenance reasons.
// For example, if you make certain modifications, reboot the DB shard group
// for the changes to take effect.
//
// This operation applies only to Aurora Limitless Database DBb shard groups.
//
// 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 Amazon Relational Database Service's
// API operation RebootDBShardGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBShardGroupNotFoundFault "DBShardGroupNotFound"
//     The specified DB shard group name wasn't found.
//
//   - ErrCodeInvalidDBShardGroupStateFault "InvalidDBShardGroupState"
//     The DB shard group must be in the available state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RebootDBShardGroup
func (c *RDS) RebootDBShardGroup(input *RebootDBShardGroupInput) (*RebootDBShardGroupOutput, error) {
	req, out := c.RebootDBShardGroupRequest(input)
	return out, req.Send()
}

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

const opRegisterDBProxyTargets = "RegisterDBProxyTargets"

// RegisterDBProxyTargetsRequest generates a "aws/request.Request" representing the
// client's request for the RegisterDBProxyTargets 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 RegisterDBProxyTargets for more information on using the RegisterDBProxyTargets
// 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 RegisterDBProxyTargetsRequest method.
//	req, resp := client.RegisterDBProxyTargetsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RegisterDBProxyTargets
func (c *RDS) RegisterDBProxyTargetsRequest(input *RegisterDBProxyTargetsInput) (req *request.Request, output *RegisterDBProxyTargetsOutput) {
	op := &request.Operation{
		Name:       opRegisterDBProxyTargets,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RegisterDBProxyTargetsInput{}
	}

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

// RegisterDBProxyTargets API operation for Amazon Relational Database Service.
//
// Associate one or more DBProxyTarget data structures with a DBProxyTargetGroup.
//
// 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 Amazon Relational Database Service's
// API operation RegisterDBProxyTargets for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBProxyNotFoundFault "DBProxyNotFoundFault"
//     The specified proxy name doesn't correspond to a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBProxyTargetGroupNotFoundFault "DBProxyTargetGroupNotFoundFault"
//     The specified target group isn't available for a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeDBProxyTargetAlreadyRegisteredFault "DBProxyTargetAlreadyRegisteredFault"
//     The proxy is already associated with the specified RDS DB instance or Aurora
//     DB cluster.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidDBProxyStateFault "InvalidDBProxyStateFault"
//     The requested operation can't be performed while the proxy is in this state.
//
//   - ErrCodeInsufficientAvailableIPsInSubnetFault "InsufficientAvailableIPsInSubnetFault"
//     The requested operation can't be performed because there aren't enough available
//     IP addresses in the proxy's subnets. Add more CIDR blocks to the VPC or remove
//     IP address that aren't required from the subnets.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RegisterDBProxyTargets
func (c *RDS) RegisterDBProxyTargets(input *RegisterDBProxyTargetsInput) (*RegisterDBProxyTargetsOutput, error) {
	req, out := c.RegisterDBProxyTargetsRequest(input)
	return out, req.Send()
}

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

const opRemoveFromGlobalCluster = "RemoveFromGlobalCluster"

// RemoveFromGlobalClusterRequest generates a "aws/request.Request" representing the
// client's request for the RemoveFromGlobalCluster 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 RemoveFromGlobalCluster for more information on using the RemoveFromGlobalCluster
// 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 RemoveFromGlobalClusterRequest method.
//	req, resp := client.RemoveFromGlobalClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RemoveFromGlobalCluster
func (c *RDS) RemoveFromGlobalClusterRequest(input *RemoveFromGlobalClusterInput) (req *request.Request, output *RemoveFromGlobalClusterOutput) {
	op := &request.Operation{
		Name:       opRemoveFromGlobalCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RemoveFromGlobalClusterInput{}
	}

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

// RemoveFromGlobalCluster API operation for Amazon Relational Database Service.
//
// Detaches an Aurora secondary cluster from an Aurora global database cluster.
// The cluster becomes a standalone cluster with read-write capability instead
// of being read-only and receiving data from a primary cluster in a different
// Region.
//
// This operation only applies to Aurora DB clusters.
//
// 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 Amazon Relational Database Service's
// API operation RemoveFromGlobalCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeGlobalClusterNotFoundFault "GlobalClusterNotFoundFault"
//     The GlobalClusterIdentifier doesn't refer to an existing global database
//     cluster.
//
//   - ErrCodeInvalidGlobalClusterStateFault "InvalidGlobalClusterStateFault"
//     The global cluster is in an invalid state and can't perform the requested
//     operation.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RemoveFromGlobalCluster
func (c *RDS) RemoveFromGlobalCluster(input *RemoveFromGlobalClusterInput) (*RemoveFromGlobalClusterOutput, error) {
	req, out := c.RemoveFromGlobalClusterRequest(input)
	return out, req.Send()
}

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

const opRemoveRoleFromDBCluster = "RemoveRoleFromDBCluster"

// RemoveRoleFromDBClusterRequest generates a "aws/request.Request" representing the
// client's request for the RemoveRoleFromDBCluster 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 RemoveRoleFromDBCluster for more information on using the RemoveRoleFromDBCluster
// 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 RemoveRoleFromDBClusterRequest method.
//	req, resp := client.RemoveRoleFromDBClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RemoveRoleFromDBCluster
func (c *RDS) RemoveRoleFromDBClusterRequest(input *RemoveRoleFromDBClusterInput) (req *request.Request, output *RemoveRoleFromDBClusterOutput) {
	op := &request.Operation{
		Name:       opRemoveRoleFromDBCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RemoveRoleFromDBClusterInput{}
	}

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

// RemoveRoleFromDBCluster API operation for Amazon Relational Database Service.
//
// Removes the asssociation of an Amazon Web Services Identity and Access Management
// (IAM) role from a DB cluster.
//
// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation RemoveRoleFromDBCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeDBClusterRoleNotFoundFault "DBClusterRoleNotFound"
//     The specified IAM role Amazon Resource Name (ARN) isn't associated with the
//     specified DB cluster.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RemoveRoleFromDBCluster
func (c *RDS) RemoveRoleFromDBCluster(input *RemoveRoleFromDBClusterInput) (*RemoveRoleFromDBClusterOutput, error) {
	req, out := c.RemoveRoleFromDBClusterRequest(input)
	return out, req.Send()
}

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

const opRemoveRoleFromDBInstance = "RemoveRoleFromDBInstance"

// RemoveRoleFromDBInstanceRequest generates a "aws/request.Request" representing the
// client's request for the RemoveRoleFromDBInstance 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 RemoveRoleFromDBInstance for more information on using the RemoveRoleFromDBInstance
// 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 RemoveRoleFromDBInstanceRequest method.
//	req, resp := client.RemoveRoleFromDBInstanceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RemoveRoleFromDBInstance
func (c *RDS) RemoveRoleFromDBInstanceRequest(input *RemoveRoleFromDBInstanceInput) (req *request.Request, output *RemoveRoleFromDBInstanceOutput) {
	op := &request.Operation{
		Name:       opRemoveRoleFromDBInstance,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RemoveRoleFromDBInstanceInput{}
	}

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

// RemoveRoleFromDBInstance API operation for Amazon Relational Database Service.
//
// Disassociates an Amazon Web Services Identity and Access Management (IAM)
// role from a DB instance.
//
// 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 Amazon Relational Database Service's
// API operation RemoveRoleFromDBInstance for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeDBInstanceRoleNotFoundFault "DBInstanceRoleNotFound"
//     The specified RoleArn value doesn't match the specified feature for the DB
//     instance.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RemoveRoleFromDBInstance
func (c *RDS) RemoveRoleFromDBInstance(input *RemoveRoleFromDBInstanceInput) (*RemoveRoleFromDBInstanceOutput, error) {
	req, out := c.RemoveRoleFromDBInstanceRequest(input)
	return out, req.Send()
}

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

const opRemoveSourceIdentifierFromSubscription = "RemoveSourceIdentifierFromSubscription"

// RemoveSourceIdentifierFromSubscriptionRequest generates a "aws/request.Request" representing the
// client's request for the RemoveSourceIdentifierFromSubscription 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 RemoveSourceIdentifierFromSubscription for more information on using the RemoveSourceIdentifierFromSubscription
// 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 RemoveSourceIdentifierFromSubscriptionRequest method.
//	req, resp := client.RemoveSourceIdentifierFromSubscriptionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RemoveSourceIdentifierFromSubscription
func (c *RDS) RemoveSourceIdentifierFromSubscriptionRequest(input *RemoveSourceIdentifierFromSubscriptionInput) (req *request.Request, output *RemoveSourceIdentifierFromSubscriptionOutput) {
	op := &request.Operation{
		Name:       opRemoveSourceIdentifierFromSubscription,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RemoveSourceIdentifierFromSubscriptionInput{}
	}

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

// RemoveSourceIdentifierFromSubscription API operation for Amazon Relational Database Service.
//
// Removes a source identifier from an existing RDS event notification subscription.
//
// 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 Amazon Relational Database Service's
// API operation RemoveSourceIdentifierFromSubscription for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeSubscriptionNotFoundFault "SubscriptionNotFound"
//     The subscription name does not exist.
//
//   - ErrCodeSourceNotFoundFault "SourceNotFound"
//     The requested source could not be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RemoveSourceIdentifierFromSubscription
func (c *RDS) RemoveSourceIdentifierFromSubscription(input *RemoveSourceIdentifierFromSubscriptionInput) (*RemoveSourceIdentifierFromSubscriptionOutput, error) {
	req, out := c.RemoveSourceIdentifierFromSubscriptionRequest(input)
	return out, req.Send()
}

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

const opRemoveTagsFromResource = "RemoveTagsFromResource"

// RemoveTagsFromResourceRequest generates a "aws/request.Request" representing the
// client's request for the RemoveTagsFromResource 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 RemoveTagsFromResource for more information on using the RemoveTagsFromResource
// 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 RemoveTagsFromResourceRequest method.
//	req, resp := client.RemoveTagsFromResourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RemoveTagsFromResource
func (c *RDS) RemoveTagsFromResourceRequest(input *RemoveTagsFromResourceInput) (req *request.Request, output *RemoveTagsFromResourceOutput) {
	op := &request.Operation{
		Name:       opRemoveTagsFromResource,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RemoveTagsFromResourceInput{}
	}

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

// RemoveTagsFromResource API operation for Amazon Relational Database Service.
//
// Removes metadata tags from an Amazon RDS resource.
//
// For an overview on tagging an Amazon RDS resource, see Tagging Amazon RDS
// Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Tagging.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation RemoveTagsFromResource for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeDBSnapshotNotFoundFault "DBSnapshotNotFound"
//     DBSnapshotIdentifier doesn't refer to an existing DB snapshot.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeDBProxyNotFoundFault "DBProxyNotFoundFault"
//     The specified proxy name doesn't correspond to a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeDBProxyTargetGroupNotFoundFault "DBProxyTargetGroupNotFoundFault"
//     The specified target group isn't available for a proxy owned by your Amazon
//     Web Services account in the specified Amazon Web Services Region.
//
//   - ErrCodeBlueGreenDeploymentNotFoundFault "BlueGreenDeploymentNotFoundFault"
//     BlueGreenDeploymentIdentifier doesn't refer to an existing blue/green deployment.
//
//   - ErrCodeIntegrationNotFoundFault "IntegrationNotFoundFault"
//     The specified integration could not be found.
//
//   - ErrCodeTenantDatabaseNotFoundFault "TenantDatabaseNotFound"
//     The specified tenant database wasn't found in the DB instance.
//
//   - ErrCodeDBSnapshotTenantDatabaseNotFoundFault "DBSnapshotTenantDatabaseNotFoundFault"
//     The specified snapshot tenant database wasn't found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RemoveTagsFromResource
func (c *RDS) RemoveTagsFromResource(input *RemoveTagsFromResourceInput) (*RemoveTagsFromResourceOutput, error) {
	req, out := c.RemoveTagsFromResourceRequest(input)
	return out, req.Send()
}

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

const opResetDBClusterParameterGroup = "ResetDBClusterParameterGroup"

// ResetDBClusterParameterGroupRequest generates a "aws/request.Request" representing the
// client's request for the ResetDBClusterParameterGroup 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 ResetDBClusterParameterGroup for more information on using the ResetDBClusterParameterGroup
// 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 ResetDBClusterParameterGroupRequest method.
//	req, resp := client.ResetDBClusterParameterGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ResetDBClusterParameterGroup
func (c *RDS) ResetDBClusterParameterGroupRequest(input *ResetDBClusterParameterGroupInput) (req *request.Request, output *DBClusterParameterGroupNameMessage) {
	op := &request.Operation{
		Name:       opResetDBClusterParameterGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ResetDBClusterParameterGroupInput{}
	}

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

// ResetDBClusterParameterGroup API operation for Amazon Relational Database Service.
//
// Modifies the parameters of a DB cluster parameter group to the default value.
// To reset specific parameters submit a list of the following: ParameterName
// and ApplyMethod. To reset the entire DB cluster parameter group, specify
// the DBClusterParameterGroupName and ResetAllParameters parameters.
//
// When resetting the entire group, dynamic parameters are updated immediately
// and static parameters are set to pending-reboot to take effect on the next
// DB instance restart or RebootDBInstance request. You must call RebootDBInstance
// for every DB instance in your DB cluster that you want the updated static
// parameter to apply to.
//
// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation ResetDBClusterParameterGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBParameterGroupStateFault "InvalidDBParameterGroupState"
//     The DB parameter group is in use or is in an invalid state. If you are attempting
//     to delete the parameter group, you can't delete it when the parameter group
//     is in this state.
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ResetDBClusterParameterGroup
func (c *RDS) ResetDBClusterParameterGroup(input *ResetDBClusterParameterGroupInput) (*DBClusterParameterGroupNameMessage, error) {
	req, out := c.ResetDBClusterParameterGroupRequest(input)
	return out, req.Send()
}

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

const opResetDBParameterGroup = "ResetDBParameterGroup"

// ResetDBParameterGroupRequest generates a "aws/request.Request" representing the
// client's request for the ResetDBParameterGroup 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 ResetDBParameterGroup for more information on using the ResetDBParameterGroup
// 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 ResetDBParameterGroupRequest method.
//	req, resp := client.ResetDBParameterGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ResetDBParameterGroup
func (c *RDS) ResetDBParameterGroupRequest(input *ResetDBParameterGroupInput) (req *request.Request, output *DBParameterGroupNameMessage) {
	op := &request.Operation{
		Name:       opResetDBParameterGroup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ResetDBParameterGroupInput{}
	}

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

// ResetDBParameterGroup API operation for Amazon Relational Database Service.
//
// Modifies the parameters of a DB parameter group to the engine/system default
// value. To reset specific parameters, provide a list of the following: ParameterName
// and ApplyMethod. To reset the entire DB parameter group, specify the DBParameterGroup
// name and ResetAllParameters parameters. When resetting the entire group,
// dynamic parameters are updated immediately and static parameters are set
// to pending-reboot to take effect on the next DB instance restart or RebootDBInstance
// request.
//
// 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 Amazon Relational Database Service's
// API operation ResetDBParameterGroup for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBParameterGroupStateFault "InvalidDBParameterGroupState"
//     The DB parameter group is in use or is in an invalid state. If you are attempting
//     to delete the parameter group, you can't delete it when the parameter group
//     is in this state.
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/ResetDBParameterGroup
func (c *RDS) ResetDBParameterGroup(input *ResetDBParameterGroupInput) (*DBParameterGroupNameMessage, error) {
	req, out := c.ResetDBParameterGroupRequest(input)
	return out, req.Send()
}

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

const opRestoreDBClusterFromS3 = "RestoreDBClusterFromS3"

// RestoreDBClusterFromS3Request generates a "aws/request.Request" representing the
// client's request for the RestoreDBClusterFromS3 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 RestoreDBClusterFromS3 for more information on using the RestoreDBClusterFromS3
// 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 RestoreDBClusterFromS3Request method.
//	req, resp := client.RestoreDBClusterFromS3Request(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RestoreDBClusterFromS3
func (c *RDS) RestoreDBClusterFromS3Request(input *RestoreDBClusterFromS3Input) (req *request.Request, output *RestoreDBClusterFromS3Output) {
	op := &request.Operation{
		Name:       opRestoreDBClusterFromS3,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RestoreDBClusterFromS3Input{}
	}

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

// RestoreDBClusterFromS3 API operation for Amazon Relational Database Service.
//
// Creates an Amazon Aurora DB cluster from MySQL data stored in an Amazon S3
// bucket. Amazon RDS must be authorized to access the Amazon S3 bucket and
// the data must be created using the Percona XtraBackup utility as described
// in Migrating Data from MySQL by Using an Amazon S3 Bucket (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.ExtMySQL.html#AuroraMySQL.Migrating.ExtMySQL.S3)
// in the Amazon Aurora User Guide.
//
// This operation only restores the DB cluster, not the DB instances for that
// DB cluster. You must invoke the CreateDBInstance operation to create DB instances
// for the restored DB cluster, specifying the identifier of the restored DB
// cluster in DBClusterIdentifier. You can create DB instances only after the
// RestoreDBClusterFromS3 operation has completed and the DB cluster is available.
//
// For more information on Amazon Aurora, see What is Amazon Aurora? (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// This operation only applies to Aurora DB clusters. The source DB engine must
// be MySQL.
//
// 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 Amazon Relational Database Service's
// API operation RestoreDBClusterFromS3 for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterAlreadyExistsFault "DBClusterAlreadyExistsFault"
//     The user already has a DB cluster with the given identifier.
//
//   - ErrCodeDBClusterQuotaExceededFault "DBClusterQuotaExceededFault"
//     The user attempted to create a new DB cluster and the user has already reached
//     the maximum allowed DB cluster quota.
//
//   - ErrCodeStorageQuotaExceededFault "StorageQuotaExceeded"
//     The request would result in the user exceeding the allowed amount of storage
//     available across all DB instances.
//
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
//   - ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
//     The DB subnet group doesn't cover all Availability Zones after it's created
//     because of users' change.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidDBSubnetGroupStateFault "InvalidDBSubnetGroupStateFault"
//     The DB subnet group cannot be deleted because it's in use.
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
//   - ErrCodeInvalidS3BucketFault "InvalidS3BucketFault"
//     The specified Amazon S3 bucket name can't be found or Amazon RDS isn't authorized
//     to access the specified Amazon S3 bucket. Verify the SourceS3BucketName and
//     S3IngestionRoleArn values and try again.
//
//   - ErrCodeDBClusterParameterGroupNotFoundFault "DBClusterParameterGroupNotFound"
//     DBClusterParameterGroupName doesn't refer to an existing DB cluster parameter
//     group.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeDomainNotFoundFault "DomainNotFoundFault"
//     Domain doesn't refer to an existing Active Directory domain.
//
//   - ErrCodeInsufficientStorageClusterCapacityFault "InsufficientStorageClusterCapacity"
//     There is insufficient storage available for the current action. You might
//     be able to resolve this error by updating your subnet group to use different
//     Availability Zones that have more storage available.
//
//   - ErrCodeStorageTypeNotSupportedFault "StorageTypeNotSupported"
//     The specified StorageType can't be associated with the DB instance.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RestoreDBClusterFromS3
func (c *RDS) RestoreDBClusterFromS3(input *RestoreDBClusterFromS3Input) (*RestoreDBClusterFromS3Output, error) {
	req, out := c.RestoreDBClusterFromS3Request(input)
	return out, req.Send()
}

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

const opRestoreDBClusterFromSnapshot = "RestoreDBClusterFromSnapshot"

// RestoreDBClusterFromSnapshotRequest generates a "aws/request.Request" representing the
// client's request for the RestoreDBClusterFromSnapshot 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 RestoreDBClusterFromSnapshot for more information on using the RestoreDBClusterFromSnapshot
// 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 RestoreDBClusterFromSnapshotRequest method.
//	req, resp := client.RestoreDBClusterFromSnapshotRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RestoreDBClusterFromSnapshot
func (c *RDS) RestoreDBClusterFromSnapshotRequest(input *RestoreDBClusterFromSnapshotInput) (req *request.Request, output *RestoreDBClusterFromSnapshotOutput) {
	op := &request.Operation{
		Name:       opRestoreDBClusterFromSnapshot,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RestoreDBClusterFromSnapshotInput{}
	}

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

// RestoreDBClusterFromSnapshot API operation for Amazon Relational Database Service.
//
// Creates a new DB cluster from a DB snapshot or DB cluster snapshot.
//
// The target DB cluster is created from the source snapshot with a default
// configuration. If you don't specify a security group, the new DB cluster
// is associated with the default security group.
//
// This operation only restores the DB cluster, not the DB instances for that
// DB cluster. You must invoke the CreateDBInstance operation to create DB instances
// for the restored DB cluster, specifying the identifier of the restored DB
// cluster in DBClusterIdentifier. You can create DB instances only after the
// RestoreDBClusterFromSnapshot operation has completed and the DB cluster is
// available.
//
// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation RestoreDBClusterFromSnapshot for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterAlreadyExistsFault "DBClusterAlreadyExistsFault"
//     The user already has a DB cluster with the given identifier.
//
//   - ErrCodeDBClusterQuotaExceededFault "DBClusterQuotaExceededFault"
//     The user attempted to create a new DB cluster and the user has already reached
//     the maximum allowed DB cluster quota.
//
//   - ErrCodeStorageQuotaExceededFault "StorageQuotaExceeded"
//     The request would result in the user exceeding the allowed amount of storage
//     available across all DB instances.
//
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
//   - ErrCodeDBSnapshotNotFoundFault "DBSnapshotNotFound"
//     DBSnapshotIdentifier doesn't refer to an existing DB snapshot.
//
//   - ErrCodeDBClusterSnapshotNotFoundFault "DBClusterSnapshotNotFoundFault"
//     DBClusterSnapshotIdentifier doesn't refer to an existing DB cluster snapshot.
//
//   - ErrCodeInsufficientDBClusterCapacityFault "InsufficientDBClusterCapacityFault"
//     The DB cluster doesn't have enough capacity for the current operation.
//
//   - ErrCodeInsufficientStorageClusterCapacityFault "InsufficientStorageClusterCapacity"
//     There is insufficient storage available for the current action. You might
//     be able to resolve this error by updating your subnet group to use different
//     Availability Zones that have more storage available.
//
//   - ErrCodeInvalidDBSnapshotStateFault "InvalidDBSnapshotState"
//     The state of the DB snapshot doesn't allow deletion.
//
//   - ErrCodeInvalidDBClusterSnapshotStateFault "InvalidDBClusterSnapshotStateFault"
//     The supplied value isn't a valid DB cluster snapshot state.
//
//   - ErrCodeStorageQuotaExceededFault "StorageQuotaExceeded"
//     The request would result in the user exceeding the allowed amount of storage
//     available across all DB instances.
//
//   - ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
//     The DB subnet group doesn't cover all Availability Zones after it's created
//     because of users' change.
//
//   - ErrCodeDBSubnetGroupDoesNotCoverEnoughAZs "DBSubnetGroupDoesNotCoverEnoughAZs"
//     Subnets in the DB subnet group should cover at least two Availability Zones
//     unless there is only one Availability Zone.
//
//   - ErrCodeInvalidRestoreFault "InvalidRestoreFault"
//     Cannot restore from VPC backup to non-VPC DB instance.
//
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
//   - ErrCodeOptionGroupNotFoundFault "OptionGroupNotFoundFault"
//     The specified option group could not be found.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeDomainNotFoundFault "DomainNotFoundFault"
//     Domain doesn't refer to an existing Active Directory domain.
//
//   - ErrCodeDBClusterParameterGroupNotFoundFault "DBClusterParameterGroupNotFound"
//     DBClusterParameterGroupName doesn't refer to an existing DB cluster parameter
//     group.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeInsufficientDBInstanceCapacityFault "InsufficientDBInstanceCapacity"
//     The specified DB instance class isn't available in the specified Availability
//     Zone.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RestoreDBClusterFromSnapshot
func (c *RDS) RestoreDBClusterFromSnapshot(input *RestoreDBClusterFromSnapshotInput) (*RestoreDBClusterFromSnapshotOutput, error) {
	req, out := c.RestoreDBClusterFromSnapshotRequest(input)
	return out, req.Send()
}

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

const opRestoreDBClusterToPointInTime = "RestoreDBClusterToPointInTime"

// RestoreDBClusterToPointInTimeRequest generates a "aws/request.Request" representing the
// client's request for the RestoreDBClusterToPointInTime 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 RestoreDBClusterToPointInTime for more information on using the RestoreDBClusterToPointInTime
// 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 RestoreDBClusterToPointInTimeRequest method.
//	req, resp := client.RestoreDBClusterToPointInTimeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RestoreDBClusterToPointInTime
func (c *RDS) RestoreDBClusterToPointInTimeRequest(input *RestoreDBClusterToPointInTimeInput) (req *request.Request, output *RestoreDBClusterToPointInTimeOutput) {
	op := &request.Operation{
		Name:       opRestoreDBClusterToPointInTime,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RestoreDBClusterToPointInTimeInput{}
	}

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

// RestoreDBClusterToPointInTime API operation for Amazon Relational Database Service.
//
// Restores a DB cluster to an arbitrary point in time. Users can restore to
// any point in time before LatestRestorableTime for up to BackupRetentionPeriod
// days. The target DB cluster is created from the source DB cluster with the
// same configuration as the original DB cluster, except that the new DB cluster
// is created with the default DB security group.
//
// For Aurora, this operation only restores the DB cluster, not the DB instances
// for that DB cluster. You must invoke the CreateDBInstance operation to create
// DB instances for the restored DB cluster, specifying the identifier of the
// restored DB cluster in DBClusterIdentifier. You can create DB instances only
// after the RestoreDBClusterToPointInTime operation has completed and the DB
// cluster is available.
//
// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation RestoreDBClusterToPointInTime for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterAlreadyExistsFault "DBClusterAlreadyExistsFault"
//     The user already has a DB cluster with the given identifier.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeDBClusterQuotaExceededFault "DBClusterQuotaExceededFault"
//     The user attempted to create a new DB cluster and the user has already reached
//     the maximum allowed DB cluster quota.
//
//   - ErrCodeDBClusterSnapshotNotFoundFault "DBClusterSnapshotNotFoundFault"
//     DBClusterSnapshotIdentifier doesn't refer to an existing DB cluster snapshot.
//
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
//   - ErrCodeInsufficientDBClusterCapacityFault "InsufficientDBClusterCapacityFault"
//     The DB cluster doesn't have enough capacity for the current operation.
//
//   - ErrCodeInsufficientStorageClusterCapacityFault "InsufficientStorageClusterCapacity"
//     There is insufficient storage available for the current action. You might
//     be able to resolve this error by updating your subnet group to use different
//     Availability Zones that have more storage available.
//
//   - ErrCodeInvalidDBClusterSnapshotStateFault "InvalidDBClusterSnapshotStateFault"
//     The supplied value isn't a valid DB cluster snapshot state.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidDBSnapshotStateFault "InvalidDBSnapshotState"
//     The state of the DB snapshot doesn't allow deletion.
//
//   - ErrCodeInvalidRestoreFault "InvalidRestoreFault"
//     Cannot restore from VPC backup to non-VPC DB instance.
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
//   - ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
//     The DB subnet group doesn't cover all Availability Zones after it's created
//     because of users' change.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeOptionGroupNotFoundFault "OptionGroupNotFoundFault"
//     The specified option group could not be found.
//
//   - ErrCodeStorageQuotaExceededFault "StorageQuotaExceeded"
//     The request would result in the user exceeding the allowed amount of storage
//     available across all DB instances.
//
//   - ErrCodeDomainNotFoundFault "DomainNotFoundFault"
//     Domain doesn't refer to an existing Active Directory domain.
//
//   - ErrCodeDBClusterParameterGroupNotFoundFault "DBClusterParameterGroupNotFound"
//     DBClusterParameterGroupName doesn't refer to an existing DB cluster parameter
//     group.
//
//   - ErrCodeDBClusterAutomatedBackupNotFoundFault "DBClusterAutomatedBackupNotFoundFault"
//     No automated backup for this DB cluster was found.
//
//   - ErrCodeInsufficientDBInstanceCapacityFault "InsufficientDBInstanceCapacity"
//     The specified DB instance class isn't available in the specified Availability
//     Zone.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RestoreDBClusterToPointInTime
func (c *RDS) RestoreDBClusterToPointInTime(input *RestoreDBClusterToPointInTimeInput) (*RestoreDBClusterToPointInTimeOutput, error) {
	req, out := c.RestoreDBClusterToPointInTimeRequest(input)
	return out, req.Send()
}

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

const opRestoreDBInstanceFromDBSnapshot = "RestoreDBInstanceFromDBSnapshot"

// RestoreDBInstanceFromDBSnapshotRequest generates a "aws/request.Request" representing the
// client's request for the RestoreDBInstanceFromDBSnapshot 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 RestoreDBInstanceFromDBSnapshot for more information on using the RestoreDBInstanceFromDBSnapshot
// 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 RestoreDBInstanceFromDBSnapshotRequest method.
//	req, resp := client.RestoreDBInstanceFromDBSnapshotRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RestoreDBInstanceFromDBSnapshot
func (c *RDS) RestoreDBInstanceFromDBSnapshotRequest(input *RestoreDBInstanceFromDBSnapshotInput) (req *request.Request, output *RestoreDBInstanceFromDBSnapshotOutput) {
	op := &request.Operation{
		Name:       opRestoreDBInstanceFromDBSnapshot,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RestoreDBInstanceFromDBSnapshotInput{}
	}

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

// RestoreDBInstanceFromDBSnapshot API operation for Amazon Relational Database Service.
//
// Creates a new DB instance from a DB snapshot. The target database is created
// from the source database restore point with most of the source's original
// configuration, including the default security group and DB parameter group.
// By default, the new DB instance is created as a Single-AZ deployment, except
// when the instance is a SQL Server instance that has an option group associated
// with mirroring. In this case, the instance becomes a Multi-AZ deployment,
// not a Single-AZ deployment.
//
// If you want to replace your original DB instance with the new, restored DB
// instance, then rename your original DB instance before you call the RestoreDBInstanceFromDBSnapshot
// operation. RDS doesn't allow two DB instances with the same name. After you
// have renamed your original DB instance with a different identifier, then
// you can pass the original name of the DB instance as the DBInstanceIdentifier
// in the call to the RestoreDBInstanceFromDBSnapshot operation. The result
// is that you replace the original DB instance with the DB instance created
// from the snapshot.
//
// If you are restoring from a shared manual DB snapshot, the DBSnapshotIdentifier
// must be the ARN of the shared DB snapshot.
//
// This command doesn't apply to Aurora MySQL and Aurora PostgreSQL. For Aurora,
// use RestoreDBClusterFromSnapshot.
//
// 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 Amazon Relational Database Service's
// API operation RestoreDBInstanceFromDBSnapshot for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceAlreadyExistsFault "DBInstanceAlreadyExists"
//     The user already has a DB instance with the given identifier.
//
//   - ErrCodeDBSnapshotNotFoundFault "DBSnapshotNotFound"
//     DBSnapshotIdentifier doesn't refer to an existing DB snapshot.
//
//   - ErrCodeInstanceQuotaExceededFault "InstanceQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB instances.
//
//   - ErrCodeInsufficientDBInstanceCapacityFault "InsufficientDBInstanceCapacity"
//     The specified DB instance class isn't available in the specified Availability
//     Zone.
//
//   - ErrCodeInvalidDBSnapshotStateFault "InvalidDBSnapshotState"
//     The state of the DB snapshot doesn't allow deletion.
//
//   - ErrCodeStorageQuotaExceededFault "StorageQuotaExceeded"
//     The request would result in the user exceeding the allowed amount of storage
//     available across all DB instances.
//
//   - ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
//     The DB subnet group doesn't cover all Availability Zones after it's created
//     because of users' change.
//
//   - ErrCodeInvalidRestoreFault "InvalidRestoreFault"
//     Cannot restore from VPC backup to non-VPC DB instance.
//
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
//   - ErrCodeDBSubnetGroupDoesNotCoverEnoughAZs "DBSubnetGroupDoesNotCoverEnoughAZs"
//     Subnets in the DB subnet group should cover at least two Availability Zones
//     unless there is only one Availability Zone.
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
//   - ErrCodeProvisionedIopsNotAvailableInAZFault "ProvisionedIopsNotAvailableInAZFault"
//     Provisioned IOPS not available in the specified Availability Zone.
//
//   - ErrCodeOptionGroupNotFoundFault "OptionGroupNotFoundFault"
//     The specified option group could not be found.
//
//   - ErrCodeStorageTypeNotSupportedFault "StorageTypeNotSupported"
//     The specified StorageType can't be associated with the DB instance.
//
//   - ErrCodeAuthorizationNotFoundFault "AuthorizationNotFound"
//     The specified CIDR IP range or Amazon EC2 security group might not be authorized
//     for the specified DB security group.
//
//     Or, RDS might not be authorized to perform necessary actions using IAM on
//     your behalf.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeDBSecurityGroupNotFoundFault "DBSecurityGroupNotFound"
//     DBSecurityGroupName doesn't refer to an existing DB security group.
//
//   - ErrCodeDomainNotFoundFault "DomainNotFoundFault"
//     Domain doesn't refer to an existing Active Directory domain.
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
//   - ErrCodeBackupPolicyNotFoundFault "BackupPolicyNotFoundFault"
//
//   - ErrCodeNetworkTypeNotSupported "NetworkTypeNotSupported"
//     The network type is invalid for the DB instance. Valid nework type values
//     are IPV4 and DUAL.
//
//   - ErrCodeDBClusterSnapshotNotFoundFault "DBClusterSnapshotNotFoundFault"
//     DBClusterSnapshotIdentifier doesn't refer to an existing DB cluster snapshot.
//
//   - ErrCodeCertificateNotFoundFault "CertificateNotFound"
//     CertificateIdentifier doesn't refer to an existing certificate.
//
//   - ErrCodeTenantDatabaseQuotaExceededFault "TenantDatabaseQuotaExceeded"
//     You attempted to create more tenant databases than are permitted in your
//     Amazon Web Services account.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RestoreDBInstanceFromDBSnapshot
func (c *RDS) RestoreDBInstanceFromDBSnapshot(input *RestoreDBInstanceFromDBSnapshotInput) (*RestoreDBInstanceFromDBSnapshotOutput, error) {
	req, out := c.RestoreDBInstanceFromDBSnapshotRequest(input)
	return out, req.Send()
}

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

const opRestoreDBInstanceFromS3 = "RestoreDBInstanceFromS3"

// RestoreDBInstanceFromS3Request generates a "aws/request.Request" representing the
// client's request for the RestoreDBInstanceFromS3 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 RestoreDBInstanceFromS3 for more information on using the RestoreDBInstanceFromS3
// 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 RestoreDBInstanceFromS3Request method.
//	req, resp := client.RestoreDBInstanceFromS3Request(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RestoreDBInstanceFromS3
func (c *RDS) RestoreDBInstanceFromS3Request(input *RestoreDBInstanceFromS3Input) (req *request.Request, output *RestoreDBInstanceFromS3Output) {
	op := &request.Operation{
		Name:       opRestoreDBInstanceFromS3,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RestoreDBInstanceFromS3Input{}
	}

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

// RestoreDBInstanceFromS3 API operation for Amazon Relational Database Service.
//
// Amazon Relational Database Service (Amazon RDS) supports importing MySQL
// databases by using backup files. You can create a backup of your on-premises
// database, store it on Amazon Simple Storage Service (Amazon S3), and then
// restore the backup file onto a new Amazon RDS DB instance running MySQL.
// For more information, see Importing Data into an Amazon RDS MySQL DB Instance
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.html)
// in the Amazon RDS User Guide.
//
// This operation doesn't apply to RDS Custom.
//
// 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 Amazon Relational Database Service's
// API operation RestoreDBInstanceFromS3 for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceAlreadyExistsFault "DBInstanceAlreadyExists"
//     The user already has a DB instance with the given identifier.
//
//   - ErrCodeInsufficientDBInstanceCapacityFault "InsufficientDBInstanceCapacity"
//     The specified DB instance class isn't available in the specified Availability
//     Zone.
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
//   - ErrCodeDBSecurityGroupNotFoundFault "DBSecurityGroupNotFound"
//     DBSecurityGroupName doesn't refer to an existing DB security group.
//
//   - ErrCodeInstanceQuotaExceededFault "InstanceQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB instances.
//
//   - ErrCodeStorageQuotaExceededFault "StorageQuotaExceeded"
//     The request would result in the user exceeding the allowed amount of storage
//     available across all DB instances.
//
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
//   - ErrCodeDBSubnetGroupDoesNotCoverEnoughAZs "DBSubnetGroupDoesNotCoverEnoughAZs"
//     Subnets in the DB subnet group should cover at least two Availability Zones
//     unless there is only one Availability Zone.
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
//   - ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
//     The DB subnet group doesn't cover all Availability Zones after it's created
//     because of users' change.
//
//   - ErrCodeInvalidS3BucketFault "InvalidS3BucketFault"
//     The specified Amazon S3 bucket name can't be found or Amazon RDS isn't authorized
//     to access the specified Amazon S3 bucket. Verify the SourceS3BucketName and
//     S3IngestionRoleArn values and try again.
//
//   - ErrCodeProvisionedIopsNotAvailableInAZFault "ProvisionedIopsNotAvailableInAZFault"
//     Provisioned IOPS not available in the specified Availability Zone.
//
//   - ErrCodeOptionGroupNotFoundFault "OptionGroupNotFoundFault"
//     The specified option group could not be found.
//
//   - ErrCodeStorageTypeNotSupportedFault "StorageTypeNotSupported"
//     The specified StorageType can't be associated with the DB instance.
//
//   - ErrCodeAuthorizationNotFoundFault "AuthorizationNotFound"
//     The specified CIDR IP range or Amazon EC2 security group might not be authorized
//     for the specified DB security group.
//
//     Or, RDS might not be authorized to perform necessary actions using IAM on
//     your behalf.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeBackupPolicyNotFoundFault "BackupPolicyNotFoundFault"
//
//   - ErrCodeNetworkTypeNotSupported "NetworkTypeNotSupported"
//     The network type is invalid for the DB instance. Valid nework type values
//     are IPV4 and DUAL.
//
//   - ErrCodeCertificateNotFoundFault "CertificateNotFound"
//     CertificateIdentifier doesn't refer to an existing certificate.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RestoreDBInstanceFromS3
func (c *RDS) RestoreDBInstanceFromS3(input *RestoreDBInstanceFromS3Input) (*RestoreDBInstanceFromS3Output, error) {
	req, out := c.RestoreDBInstanceFromS3Request(input)
	return out, req.Send()
}

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

const opRestoreDBInstanceToPointInTime = "RestoreDBInstanceToPointInTime"

// RestoreDBInstanceToPointInTimeRequest generates a "aws/request.Request" representing the
// client's request for the RestoreDBInstanceToPointInTime 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 RestoreDBInstanceToPointInTime for more information on using the RestoreDBInstanceToPointInTime
// 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 RestoreDBInstanceToPointInTimeRequest method.
//	req, resp := client.RestoreDBInstanceToPointInTimeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RestoreDBInstanceToPointInTime
func (c *RDS) RestoreDBInstanceToPointInTimeRequest(input *RestoreDBInstanceToPointInTimeInput) (req *request.Request, output *RestoreDBInstanceToPointInTimeOutput) {
	op := &request.Operation{
		Name:       opRestoreDBInstanceToPointInTime,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RestoreDBInstanceToPointInTimeInput{}
	}

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

// RestoreDBInstanceToPointInTime API operation for Amazon Relational Database Service.
//
// Restores a DB instance to an arbitrary point in time. You can restore to
// any point in time before the time identified by the LatestRestorableTime
// property. You can restore to a point up to the number of days specified by
// the BackupRetentionPeriod property.
//
// The target database is created with most of the original configuration, but
// in a system-selected Availability Zone, with the default security group,
// the default subnet group, and the default DB parameter group. By default,
// the new DB instance is created as a single-AZ deployment except when the
// instance is a SQL Server instance that has an option group that is associated
// with mirroring; in this case, the instance becomes a mirrored deployment
// and not a single-AZ deployment.
//
// This operation doesn't apply to Aurora MySQL and Aurora PostgreSQL. For Aurora,
// use RestoreDBClusterToPointInTime.
//
// 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 Amazon Relational Database Service's
// API operation RestoreDBInstanceToPointInTime for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceAlreadyExistsFault "DBInstanceAlreadyExists"
//     The user already has a DB instance with the given identifier.
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeInstanceQuotaExceededFault "InstanceQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB instances.
//
//   - ErrCodeInsufficientDBInstanceCapacityFault "InsufficientDBInstanceCapacity"
//     The specified DB instance class isn't available in the specified Availability
//     Zone.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodePointInTimeRestoreNotEnabledFault "PointInTimeRestoreNotEnabled"
//     SourceDBInstanceIdentifier refers to a DB instance with BackupRetentionPeriod
//     equal to 0.
//
//   - ErrCodeStorageQuotaExceededFault "StorageQuotaExceeded"
//     The request would result in the user exceeding the allowed amount of storage
//     available across all DB instances.
//
//   - ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
//     The DB subnet group doesn't cover all Availability Zones after it's created
//     because of users' change.
//
//   - ErrCodeInvalidRestoreFault "InvalidRestoreFault"
//     Cannot restore from VPC backup to non-VPC DB instance.
//
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
//   - ErrCodeDBSubnetGroupDoesNotCoverEnoughAZs "DBSubnetGroupDoesNotCoverEnoughAZs"
//     Subnets in the DB subnet group should cover at least two Availability Zones
//     unless there is only one Availability Zone.
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
//   - ErrCodeProvisionedIopsNotAvailableInAZFault "ProvisionedIopsNotAvailableInAZFault"
//     Provisioned IOPS not available in the specified Availability Zone.
//
//   - ErrCodeOptionGroupNotFoundFault "OptionGroupNotFoundFault"
//     The specified option group could not be found.
//
//   - ErrCodeStorageTypeNotSupportedFault "StorageTypeNotSupported"
//     The specified StorageType can't be associated with the DB instance.
//
//   - ErrCodeAuthorizationNotFoundFault "AuthorizationNotFound"
//     The specified CIDR IP range or Amazon EC2 security group might not be authorized
//     for the specified DB security group.
//
//     Or, RDS might not be authorized to perform necessary actions using IAM on
//     your behalf.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeDBSecurityGroupNotFoundFault "DBSecurityGroupNotFound"
//     DBSecurityGroupName doesn't refer to an existing DB security group.
//
//   - ErrCodeDomainNotFoundFault "DomainNotFoundFault"
//     Domain doesn't refer to an existing Active Directory domain.
//
//   - ErrCodeBackupPolicyNotFoundFault "BackupPolicyNotFoundFault"
//
//   - ErrCodeDBParameterGroupNotFoundFault "DBParameterGroupNotFound"
//     DBParameterGroupName doesn't refer to an existing DB parameter group.
//
//   - ErrCodeDBInstanceAutomatedBackupNotFoundFault "DBInstanceAutomatedBackupNotFound"
//     No automated backup for this DB instance was found.
//
//   - ErrCodeNetworkTypeNotSupported "NetworkTypeNotSupported"
//     The network type is invalid for the DB instance. Valid nework type values
//     are IPV4 and DUAL.
//
//   - ErrCodeTenantDatabaseQuotaExceededFault "TenantDatabaseQuotaExceeded"
//     You attempted to create more tenant databases than are permitted in your
//     Amazon Web Services account.
//
//   - ErrCodeCertificateNotFoundFault "CertificateNotFound"
//     CertificateIdentifier doesn't refer to an existing certificate.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RestoreDBInstanceToPointInTime
func (c *RDS) RestoreDBInstanceToPointInTime(input *RestoreDBInstanceToPointInTimeInput) (*RestoreDBInstanceToPointInTimeOutput, error) {
	req, out := c.RestoreDBInstanceToPointInTimeRequest(input)
	return out, req.Send()
}

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

const opRevokeDBSecurityGroupIngress = "RevokeDBSecurityGroupIngress"

// RevokeDBSecurityGroupIngressRequest generates a "aws/request.Request" representing the
// client's request for the RevokeDBSecurityGroupIngress 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 RevokeDBSecurityGroupIngress for more information on using the RevokeDBSecurityGroupIngress
// 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 RevokeDBSecurityGroupIngressRequest method.
//	req, resp := client.RevokeDBSecurityGroupIngressRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RevokeDBSecurityGroupIngress
func (c *RDS) RevokeDBSecurityGroupIngressRequest(input *RevokeDBSecurityGroupIngressInput) (req *request.Request, output *RevokeDBSecurityGroupIngressOutput) {
	op := &request.Operation{
		Name:       opRevokeDBSecurityGroupIngress,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RevokeDBSecurityGroupIngressInput{}
	}

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

// RevokeDBSecurityGroupIngress API operation for Amazon Relational Database Service.
//
// Revokes ingress from a DBSecurityGroup for previously authorized IP ranges
// or EC2 or VPC security groups. Required parameters for this API are one of
// CIDRIP, EC2SecurityGroupId for VPC, or (EC2SecurityGroupOwnerId and either
// EC2SecurityGroupName or EC2SecurityGroupId).
//
// EC2-Classic was retired on August 15, 2022. If you haven't migrated from
// EC2-Classic to a VPC, we recommend that you migrate as soon as possible.
// For more information, see Migrate from EC2-Classic to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html)
// in the Amazon EC2 User Guide, the blog EC2-Classic Networking is Retiring
// – Here’s How to Prepare (http://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/),
// and Moving a DB instance not in a VPC into a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.Non-VPC2VPC.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation RevokeDBSecurityGroupIngress for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBSecurityGroupNotFoundFault "DBSecurityGroupNotFound"
//     DBSecurityGroupName doesn't refer to an existing DB security group.
//
//   - ErrCodeAuthorizationNotFoundFault "AuthorizationNotFound"
//     The specified CIDR IP range or Amazon EC2 security group might not be authorized
//     for the specified DB security group.
//
//     Or, RDS might not be authorized to perform necessary actions using IAM on
//     your behalf.
//
//   - ErrCodeInvalidDBSecurityGroupStateFault "InvalidDBSecurityGroupState"
//     The state of the DB security group doesn't allow deletion.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RevokeDBSecurityGroupIngress
func (c *RDS) RevokeDBSecurityGroupIngress(input *RevokeDBSecurityGroupIngressInput) (*RevokeDBSecurityGroupIngressOutput, error) {
	req, out := c.RevokeDBSecurityGroupIngressRequest(input)
	return out, req.Send()
}

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

const opStartActivityStream = "StartActivityStream"

// StartActivityStreamRequest generates a "aws/request.Request" representing the
// client's request for the StartActivityStream 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 StartActivityStream for more information on using the StartActivityStream
// 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 StartActivityStreamRequest method.
//	req, resp := client.StartActivityStreamRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StartActivityStream
func (c *RDS) StartActivityStreamRequest(input *StartActivityStreamInput) (req *request.Request, output *StartActivityStreamOutput) {
	op := &request.Operation{
		Name:       opStartActivityStream,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartActivityStreamInput{}
	}

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

// StartActivityStream API operation for Amazon Relational Database Service.
//
// Starts a database activity stream to monitor activity on the database. For
// more information, see Monitoring Amazon Aurora with Database Activity Streams
// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/DBActivityStreams.html)
// in the Amazon Aurora User Guide or Monitoring Amazon RDS with Database Activity
// Streams (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/DBActivityStreams.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation StartActivityStream for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeResourceNotFoundFault "ResourceNotFoundFault"
//     The specified resource ID was not found.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StartActivityStream
func (c *RDS) StartActivityStream(input *StartActivityStreamInput) (*StartActivityStreamOutput, error) {
	req, out := c.StartActivityStreamRequest(input)
	return out, req.Send()
}

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

const opStartDBCluster = "StartDBCluster"

// StartDBClusterRequest generates a "aws/request.Request" representing the
// client's request for the StartDBCluster 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 StartDBCluster for more information on using the StartDBCluster
// 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 StartDBClusterRequest method.
//	req, resp := client.StartDBClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StartDBCluster
func (c *RDS) StartDBClusterRequest(input *StartDBClusterInput) (req *request.Request, output *StartDBClusterOutput) {
	op := &request.Operation{
		Name:       opStartDBCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartDBClusterInput{}
	}

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

// StartDBCluster API operation for Amazon Relational Database Service.
//
// Starts an Amazon Aurora DB cluster that was stopped using the Amazon Web
// Services console, the stop-db-cluster CLI command, or the StopDBCluster operation.
//
// For more information, see Stopping and Starting an Aurora Cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-cluster-stop-start.html)
// in the Amazon Aurora User Guide.
//
// This operation only applies to Aurora DB clusters.
//
// 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 Amazon Relational Database Service's
// API operation StartDBCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StartDBCluster
func (c *RDS) StartDBCluster(input *StartDBClusterInput) (*StartDBClusterOutput, error) {
	req, out := c.StartDBClusterRequest(input)
	return out, req.Send()
}

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

const opStartDBInstance = "StartDBInstance"

// StartDBInstanceRequest generates a "aws/request.Request" representing the
// client's request for the StartDBInstance 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 StartDBInstance for more information on using the StartDBInstance
// 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 StartDBInstanceRequest method.
//	req, resp := client.StartDBInstanceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StartDBInstance
func (c *RDS) StartDBInstanceRequest(input *StartDBInstanceInput) (req *request.Request, output *StartDBInstanceOutput) {
	op := &request.Operation{
		Name:       opStartDBInstance,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartDBInstanceInput{}
	}

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

// StartDBInstance API operation for Amazon Relational Database Service.
//
// Starts an Amazon RDS DB instance that was stopped using the Amazon Web Services
// console, the stop-db-instance CLI command, or the StopDBInstance operation.
//
// For more information, see Starting an Amazon RDS DB instance That Was Previously
// Stopped (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_StartInstance.html)
// in the Amazon RDS User Guide.
//
// This command doesn't apply to RDS Custom, Aurora MySQL, and Aurora PostgreSQL.
// For Aurora DB clusters, use StartDBCluster instead.
//
// 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 Amazon Relational Database Service's
// API operation StartDBInstance for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeInsufficientDBInstanceCapacityFault "InsufficientDBInstanceCapacity"
//     The specified DB instance class isn't available in the specified Availability
//     Zone.
//
//   - ErrCodeDBSubnetGroupNotFoundFault "DBSubnetGroupNotFoundFault"
//     DBSubnetGroupName doesn't refer to an existing DB subnet group.
//
//   - ErrCodeDBSubnetGroupDoesNotCoverEnoughAZs "DBSubnetGroupDoesNotCoverEnoughAZs"
//     Subnets in the DB subnet group should cover at least two Availability Zones
//     unless there is only one Availability Zone.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidSubnet "InvalidSubnet"
//     The requested subnet is invalid, or multiple subnets were requested that
//     are not all in a common VPC.
//
//   - ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
//     The DB subnet group doesn't cover all Availability Zones after it's created
//     because of users' change.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeAuthorizationNotFoundFault "AuthorizationNotFound"
//     The specified CIDR IP range or Amazon EC2 security group might not be authorized
//     for the specified DB security group.
//
//     Or, RDS might not be authorized to perform necessary actions using IAM on
//     your behalf.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StartDBInstance
func (c *RDS) StartDBInstance(input *StartDBInstanceInput) (*StartDBInstanceOutput, error) {
	req, out := c.StartDBInstanceRequest(input)
	return out, req.Send()
}

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

const opStartDBInstanceAutomatedBackupsReplication = "StartDBInstanceAutomatedBackupsReplication"

// StartDBInstanceAutomatedBackupsReplicationRequest generates a "aws/request.Request" representing the
// client's request for the StartDBInstanceAutomatedBackupsReplication 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 StartDBInstanceAutomatedBackupsReplication for more information on using the StartDBInstanceAutomatedBackupsReplication
// 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 StartDBInstanceAutomatedBackupsReplicationRequest method.
//	req, resp := client.StartDBInstanceAutomatedBackupsReplicationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StartDBInstanceAutomatedBackupsReplication
func (c *RDS) StartDBInstanceAutomatedBackupsReplicationRequest(input *StartDBInstanceAutomatedBackupsReplicationInput) (req *request.Request, output *StartDBInstanceAutomatedBackupsReplicationOutput) {
	op := &request.Operation{
		Name:       opStartDBInstanceAutomatedBackupsReplication,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartDBInstanceAutomatedBackupsReplicationInput{}
	}

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

// StartDBInstanceAutomatedBackupsReplication API operation for Amazon Relational Database Service.
//
// Enables replication of automated backups to a different Amazon Web Services
// Region.
//
// This command doesn't apply to RDS Custom.
//
// For more information, see Replicating Automated Backups to Another Amazon
// Web Services Region (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReplicateBackups.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation StartDBInstanceAutomatedBackupsReplication for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeDBInstanceAutomatedBackupQuotaExceededFault "DBInstanceAutomatedBackupQuotaExceeded"
//     The quota for retained automated backups was exceeded. This prevents you
//     from retaining any additional automated backups. The retained automated backups
//     quota is the same as your DB instance quota.
//
//   - ErrCodeStorageTypeNotSupportedFault "StorageTypeNotSupported"
//     The specified StorageType can't be associated with the DB instance.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StartDBInstanceAutomatedBackupsReplication
func (c *RDS) StartDBInstanceAutomatedBackupsReplication(input *StartDBInstanceAutomatedBackupsReplicationInput) (*StartDBInstanceAutomatedBackupsReplicationOutput, error) {
	req, out := c.StartDBInstanceAutomatedBackupsReplicationRequest(input)
	return out, req.Send()
}

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

const opStartExportTask = "StartExportTask"

// StartExportTaskRequest generates a "aws/request.Request" representing the
// client's request for the StartExportTask 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 StartExportTask for more information on using the StartExportTask
// 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 StartExportTaskRequest method.
//	req, resp := client.StartExportTaskRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StartExportTask
func (c *RDS) StartExportTaskRequest(input *StartExportTaskInput) (req *request.Request, output *StartExportTaskOutput) {
	op := &request.Operation{
		Name:       opStartExportTask,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartExportTaskInput{}
	}

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

// StartExportTask API operation for Amazon Relational Database Service.
//
// Starts an export of DB snapshot or DB cluster data to Amazon S3. The provided
// IAM role must have access to the S3 bucket.
//
// You can't export snapshot data from Db2 or RDS Custom DB instances.
//
// For more information on exporting DB snapshot data, see Exporting DB snapshot
// data to Amazon S3 (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ExportSnapshot.html)
// in the Amazon RDS User Guide or Exporting DB cluster snapshot data to Amazon
// S3 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-export-snapshot.html)
// in the Amazon Aurora User Guide.
//
// For more information on exporting DB cluster data, see Exporting DB cluster
// data to Amazon S3 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/export-cluster-data.html)
// in the Amazon Aurora 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 Amazon Relational Database Service's
// API operation StartExportTask for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBSnapshotNotFoundFault "DBSnapshotNotFound"
//     DBSnapshotIdentifier doesn't refer to an existing DB snapshot.
//
//   - ErrCodeDBClusterSnapshotNotFoundFault "DBClusterSnapshotNotFoundFault"
//     DBClusterSnapshotIdentifier doesn't refer to an existing DB cluster snapshot.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeExportTaskAlreadyExistsFault "ExportTaskAlreadyExists"
//     You can't start an export task that's already running.
//
//   - ErrCodeInvalidS3BucketFault "InvalidS3BucketFault"
//     The specified Amazon S3 bucket name can't be found or Amazon RDS isn't authorized
//     to access the specified Amazon S3 bucket. Verify the SourceS3BucketName and
//     S3IngestionRoleArn values and try again.
//
//   - ErrCodeIamRoleNotFoundFault "IamRoleNotFound"
//     The IAM role is missing for exporting to an Amazon S3 bucket.
//
//   - ErrCodeIamRoleMissingPermissionsFault "IamRoleMissingPermissions"
//     The IAM role requires additional permissions to export to an Amazon S3 bucket.
//
//   - ErrCodeInvalidExportOnlyFault "InvalidExportOnly"
//     The export is invalid for exporting to an Amazon S3 bucket.
//
//   - ErrCodeKMSKeyNotAccessibleFault "KMSKeyNotAccessibleFault"
//     An error occurred accessing an Amazon Web Services KMS key.
//
//   - ErrCodeInvalidExportSourceStateFault "InvalidExportSourceState"
//     The state of the export snapshot is invalid for exporting to an Amazon S3
//     bucket.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StartExportTask
func (c *RDS) StartExportTask(input *StartExportTaskInput) (*StartExportTaskOutput, error) {
	req, out := c.StartExportTaskRequest(input)
	return out, req.Send()
}

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

const opStopActivityStream = "StopActivityStream"

// StopActivityStreamRequest generates a "aws/request.Request" representing the
// client's request for the StopActivityStream 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 StopActivityStream for more information on using the StopActivityStream
// 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 StopActivityStreamRequest method.
//	req, resp := client.StopActivityStreamRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StopActivityStream
func (c *RDS) StopActivityStreamRequest(input *StopActivityStreamInput) (req *request.Request, output *StopActivityStreamOutput) {
	op := &request.Operation{
		Name:       opStopActivityStream,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StopActivityStreamInput{}
	}

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

// StopActivityStream API operation for Amazon Relational Database Service.
//
// Stops a database activity stream that was started using the Amazon Web Services
// console, the start-activity-stream CLI command, or the StartActivityStream
// operation.
//
// For more information, see Monitoring Amazon Aurora with Database Activity
// Streams (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/DBActivityStreams.html)
// in the Amazon Aurora User Guide or Monitoring Amazon RDS with Database Activity
// Streams (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/DBActivityStreams.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation StopActivityStream for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeResourceNotFoundFault "ResourceNotFoundFault"
//     The specified resource ID was not found.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StopActivityStream
func (c *RDS) StopActivityStream(input *StopActivityStreamInput) (*StopActivityStreamOutput, error) {
	req, out := c.StopActivityStreamRequest(input)
	return out, req.Send()
}

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

const opStopDBCluster = "StopDBCluster"

// StopDBClusterRequest generates a "aws/request.Request" representing the
// client's request for the StopDBCluster 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 StopDBCluster for more information on using the StopDBCluster
// 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 StopDBClusterRequest method.
//	req, resp := client.StopDBClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StopDBCluster
func (c *RDS) StopDBClusterRequest(input *StopDBClusterInput) (req *request.Request, output *StopDBClusterOutput) {
	op := &request.Operation{
		Name:       opStopDBCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StopDBClusterInput{}
	}

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

// StopDBCluster API operation for Amazon Relational Database Service.
//
// Stops an Amazon Aurora DB cluster. When you stop a DB cluster, Aurora retains
// the DB cluster's metadata, including its endpoints and DB parameter groups.
// Aurora also retains the transaction logs so you can do a point-in-time restore
// if necessary.
//
// For more information, see Stopping and Starting an Aurora Cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-cluster-stop-start.html)
// in the Amazon Aurora User Guide.
//
// This operation only applies to Aurora DB clusters.
//
// 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 Amazon Relational Database Service's
// API operation StopDBCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StopDBCluster
func (c *RDS) StopDBCluster(input *StopDBClusterInput) (*StopDBClusterOutput, error) {
	req, out := c.StopDBClusterRequest(input)
	return out, req.Send()
}

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

const opStopDBInstance = "StopDBInstance"

// StopDBInstanceRequest generates a "aws/request.Request" representing the
// client's request for the StopDBInstance 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 StopDBInstance for more information on using the StopDBInstance
// 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 StopDBInstanceRequest method.
//	req, resp := client.StopDBInstanceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StopDBInstance
func (c *RDS) StopDBInstanceRequest(input *StopDBInstanceInput) (req *request.Request, output *StopDBInstanceOutput) {
	op := &request.Operation{
		Name:       opStopDBInstance,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StopDBInstanceInput{}
	}

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

// StopDBInstance API operation for Amazon Relational Database Service.
//
// Stops an Amazon RDS DB instance. When you stop a DB instance, Amazon RDS
// retains the DB instance's metadata, including its endpoint, DB parameter
// group, and option group membership. Amazon RDS also retains the transaction
// logs so you can do a point-in-time restore if necessary.
//
// For more information, see Stopping an Amazon RDS DB Instance Temporarily
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_StopInstance.html)
// in the Amazon RDS User Guide.
//
// This command doesn't apply to RDS Custom, Aurora MySQL, and Aurora PostgreSQL.
// For Aurora clusters, use StopDBCluster instead.
//
// 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 Amazon Relational Database Service's
// API operation StopDBInstance for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
//   - ErrCodeDBSnapshotAlreadyExistsFault "DBSnapshotAlreadyExists"
//     DBSnapshotIdentifier is already used by an existing snapshot.
//
//   - ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceeded"
//     The request would result in the user exceeding the allowed number of DB snapshots.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StopDBInstance
func (c *RDS) StopDBInstance(input *StopDBInstanceInput) (*StopDBInstanceOutput, error) {
	req, out := c.StopDBInstanceRequest(input)
	return out, req.Send()
}

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

const opStopDBInstanceAutomatedBackupsReplication = "StopDBInstanceAutomatedBackupsReplication"

// StopDBInstanceAutomatedBackupsReplicationRequest generates a "aws/request.Request" representing the
// client's request for the StopDBInstanceAutomatedBackupsReplication 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 StopDBInstanceAutomatedBackupsReplication for more information on using the StopDBInstanceAutomatedBackupsReplication
// 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 StopDBInstanceAutomatedBackupsReplicationRequest method.
//	req, resp := client.StopDBInstanceAutomatedBackupsReplicationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StopDBInstanceAutomatedBackupsReplication
func (c *RDS) StopDBInstanceAutomatedBackupsReplicationRequest(input *StopDBInstanceAutomatedBackupsReplicationInput) (req *request.Request, output *StopDBInstanceAutomatedBackupsReplicationOutput) {
	op := &request.Operation{
		Name:       opStopDBInstanceAutomatedBackupsReplication,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StopDBInstanceAutomatedBackupsReplicationInput{}
	}

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

// StopDBInstanceAutomatedBackupsReplication API operation for Amazon Relational Database Service.
//
// Stops automated backup replication for a DB instance.
//
// This command doesn't apply to RDS Custom, Aurora MySQL, and Aurora PostgreSQL.
//
// For more information, see Replicating Automated Backups to Another Amazon
// Web Services Region (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReplicateBackups.html)
// in the Amazon RDS 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 Amazon Relational Database Service's
// API operation StopDBInstanceAutomatedBackupsReplication for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/StopDBInstanceAutomatedBackupsReplication
func (c *RDS) StopDBInstanceAutomatedBackupsReplication(input *StopDBInstanceAutomatedBackupsReplicationInput) (*StopDBInstanceAutomatedBackupsReplicationOutput, error) {
	req, out := c.StopDBInstanceAutomatedBackupsReplicationRequest(input)
	return out, req.Send()
}

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

const opSwitchoverBlueGreenDeployment = "SwitchoverBlueGreenDeployment"

// SwitchoverBlueGreenDeploymentRequest generates a "aws/request.Request" representing the
// client's request for the SwitchoverBlueGreenDeployment 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 SwitchoverBlueGreenDeployment for more information on using the SwitchoverBlueGreenDeployment
// 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 SwitchoverBlueGreenDeploymentRequest method.
//	req, resp := client.SwitchoverBlueGreenDeploymentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/SwitchoverBlueGreenDeployment
func (c *RDS) SwitchoverBlueGreenDeploymentRequest(input *SwitchoverBlueGreenDeploymentInput) (req *request.Request, output *SwitchoverBlueGreenDeploymentOutput) {
	op := &request.Operation{
		Name:       opSwitchoverBlueGreenDeployment,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &SwitchoverBlueGreenDeploymentInput{}
	}

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

// SwitchoverBlueGreenDeployment API operation for Amazon Relational Database Service.
//
// Switches over a blue/green deployment.
//
// Before you switch over, production traffic is routed to the databases in
// the blue environment. After you switch over, production traffic is routed
// to the databases in the green environment.
//
// For more information, see Using Amazon RDS Blue/Green Deployments for database
// updates (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments.html)
// in the Amazon RDS User Guide and Using Amazon RDS Blue/Green Deployments
// for database updates (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html)
// in the Amazon Aurora 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 Amazon Relational Database Service's
// API operation SwitchoverBlueGreenDeployment for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeBlueGreenDeploymentNotFoundFault "BlueGreenDeploymentNotFoundFault"
//     BlueGreenDeploymentIdentifier doesn't refer to an existing blue/green deployment.
//
//   - ErrCodeInvalidBlueGreenDeploymentStateFault "InvalidBlueGreenDeploymentStateFault"
//     The blue/green deployment can't be switched over or deleted because there
//     is an invalid configuration in the green environment.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/SwitchoverBlueGreenDeployment
func (c *RDS) SwitchoverBlueGreenDeployment(input *SwitchoverBlueGreenDeploymentInput) (*SwitchoverBlueGreenDeploymentOutput, error) {
	req, out := c.SwitchoverBlueGreenDeploymentRequest(input)
	return out, req.Send()
}

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

const opSwitchoverGlobalCluster = "SwitchoverGlobalCluster"

// SwitchoverGlobalClusterRequest generates a "aws/request.Request" representing the
// client's request for the SwitchoverGlobalCluster 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 SwitchoverGlobalCluster for more information on using the SwitchoverGlobalCluster
// 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 SwitchoverGlobalClusterRequest method.
//	req, resp := client.SwitchoverGlobalClusterRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/SwitchoverGlobalCluster
func (c *RDS) SwitchoverGlobalClusterRequest(input *SwitchoverGlobalClusterInput) (req *request.Request, output *SwitchoverGlobalClusterOutput) {
	op := &request.Operation{
		Name:       opSwitchoverGlobalCluster,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &SwitchoverGlobalClusterInput{}
	}

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

// SwitchoverGlobalCluster API operation for Amazon Relational Database Service.
//
// Switches over the specified secondary DB cluster to be the new primary DB
// cluster in the global database cluster. Switchover operations were previously
// called "managed planned failovers."
//
// Aurora promotes the specified secondary cluster to assume full read/write
// capabilities and demotes the current primary cluster to a secondary (read-only)
// cluster, maintaining the orginal replication topology. All secondary clusters
// are synchronized with the primary at the beginning of the process so the
// new primary continues operations for the Aurora global database without losing
// any data. Your database is unavailable for a short time while the primary
// and selected secondary clusters are assuming their new roles. For more information
// about switching over an Aurora global database, see Performing switchovers
// for Amazon Aurora global databases (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-disaster-recovery.html#aurora-global-database-disaster-recovery.managed-failover)
// in the Amazon Aurora User Guide.
//
// This operation is intended for controlled environments, for operations such
// as "regional rotation" or to fall back to the original primary after a global
// database failover.
//
// 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 Amazon Relational Database Service's
// API operation SwitchoverGlobalCluster for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeGlobalClusterNotFoundFault "GlobalClusterNotFoundFault"
//     The GlobalClusterIdentifier doesn't refer to an existing global database
//     cluster.
//
//   - ErrCodeInvalidGlobalClusterStateFault "InvalidGlobalClusterStateFault"
//     The global cluster is in an invalid state and can't perform the requested
//     operation.
//
//   - ErrCodeInvalidDBClusterStateFault "InvalidDBClusterStateFault"
//     The requested operation can't be performed while the cluster is in this state.
//
//   - ErrCodeDBClusterNotFoundFault "DBClusterNotFoundFault"
//     DBClusterIdentifier doesn't refer to an existing DB cluster.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/SwitchoverGlobalCluster
func (c *RDS) SwitchoverGlobalCluster(input *SwitchoverGlobalClusterInput) (*SwitchoverGlobalClusterOutput, error) {
	req, out := c.SwitchoverGlobalClusterRequest(input)
	return out, req.Send()
}

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

const opSwitchoverReadReplica = "SwitchoverReadReplica"

// SwitchoverReadReplicaRequest generates a "aws/request.Request" representing the
// client's request for the SwitchoverReadReplica 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 SwitchoverReadReplica for more information on using the SwitchoverReadReplica
// 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 SwitchoverReadReplicaRequest method.
//	req, resp := client.SwitchoverReadReplicaRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/SwitchoverReadReplica
func (c *RDS) SwitchoverReadReplicaRequest(input *SwitchoverReadReplicaInput) (req *request.Request, output *SwitchoverReadReplicaOutput) {
	op := &request.Operation{
		Name:       opSwitchoverReadReplica,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &SwitchoverReadReplicaInput{}
	}

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

// SwitchoverReadReplica API operation for Amazon Relational Database Service.
//
// Switches over an Oracle standby database in an Oracle Data Guard environment,
// making it the new primary database. Issue this command in the Region that
// hosts the current standby database.
//
// 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 Amazon Relational Database Service's
// API operation SwitchoverReadReplica for usage and error information.
//
// Returned Error Codes:
//
//   - ErrCodeDBInstanceNotFoundFault "DBInstanceNotFound"
//     DBInstanceIdentifier doesn't refer to an existing DB instance.
//
//   - ErrCodeInvalidDBInstanceStateFault "InvalidDBInstanceState"
//     The DB instance isn't in a valid state.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/SwitchoverReadReplica
func (c *RDS) SwitchoverReadReplica(input *SwitchoverReadReplicaInput) (*SwitchoverReadReplicaOutput, error) {
	req, out := c.SwitchoverReadReplicaRequest(input)
	return out, req.Send()
}

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

// Describes a quota for an Amazon Web Services account.
//
// The following are account quotas:
//
//   - AllocatedStorage - The total allocated storage per account, in GiB.
//     The used value is the total allocated storage in the account, in GiB.
//
//   - AuthorizationsPerDBSecurityGroup - The number of ingress rules per DB
//     security group. The used value is the highest number of ingress rules
//     in a DB security group in the account. Other DB security groups in the
//     account might have a lower number of ingress rules.
//
//   - CustomEndpointsPerDBCluster - The number of custom endpoints per DB
//     cluster. The used value is the highest number of custom endpoints in a
//     DB clusters in the account. Other DB clusters in the account might have
//     a lower number of custom endpoints.
//
//   - DBClusterParameterGroups - The number of DB cluster parameter groups
//     per account, excluding default parameter groups. The used value is the
//     count of nondefault DB cluster parameter groups in the account.
//
//   - DBClusterRoles - The number of associated Amazon Web Services Identity
//     and Access Management (IAM) roles per DB cluster. The used value is the
//     highest number of associated IAM roles for a DB cluster in the account.
//     Other DB clusters in the account might have a lower number of associated
//     IAM roles.
//
//   - DBClusters - The number of DB clusters per account. The used value is
//     the count of DB clusters in the account.
//
//   - DBInstanceRoles - The number of associated IAM roles per DB instance.
//     The used value is the highest number of associated IAM roles for a DB
//     instance in the account. Other DB instances in the account might have
//     a lower number of associated IAM roles.
//
//   - DBInstances - The number of DB instances per account. The used value
//     is the count of the DB instances in the account. Amazon RDS DB instances,
//     Amazon Aurora DB instances, Amazon Neptune instances, and Amazon DocumentDB
//     instances apply to this quota.
//
//   - DBParameterGroups - The number of DB parameter groups per account, excluding
//     default parameter groups. The used value is the count of nondefault DB
//     parameter groups in the account.
//
//   - DBSecurityGroups - The number of DB security groups (not VPC security
//     groups) per account, excluding the default security group. The used value
//     is the count of nondefault DB security groups in the account.
//
//   - DBSubnetGroups - The number of DB subnet groups per account. The used
//     value is the count of the DB subnet groups in the account.
//
//   - EventSubscriptions - The number of event subscriptions per account.
//     The used value is the count of the event subscriptions in the account.
//
//   - ManualClusterSnapshots - The number of manual DB cluster snapshots per
//     account. The used value is the count of the manual DB cluster snapshots
//     in the account.
//
//   - ManualSnapshots - The number of manual DB instance snapshots per account.
//     The used value is the count of the manual DB instance snapshots in the
//     account.
//
//   - OptionGroups - The number of DB option groups per account, excluding
//     default option groups. The used value is the count of nondefault DB option
//     groups in the account.
//
//   - ReadReplicasPerMaster - The number of read replicas per DB instance.
//     The used value is the highest number of read replicas for a DB instance
//     in the account. Other DB instances in the account might have a lower number
//     of read replicas.
//
//   - ReservedDBInstances - The number of reserved DB instances per account.
//     The used value is the count of the active reserved DB instances in the
//     account.
//
//   - SubnetsPerDBSubnetGroup - The number of subnets per DB subnet group.
//     The used value is highest number of subnets for a DB subnet group in the
//     account. Other DB subnet groups in the account might have a lower number
//     of subnets.
//
// For more information, see Quotas for Amazon RDS (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html)
// in the Amazon RDS User Guide and Quotas for Amazon Aurora (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Limits.html)
// in the Amazon Aurora User Guide.
type AccountQuota struct {
	_ struct{} `type:"structure"`

	// The name of the Amazon RDS quota for this Amazon Web Services account.
	AccountQuotaName *string `type:"string"`

	// The maximum allowed value for the quota.
	Max *int64 `type:"long"`

	// The amount currently used toward the quota maximum.
	Used *int64 `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 AccountQuota) 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 AccountQuota) GoString() string {
	return s.String()
}

// SetAccountQuotaName sets the AccountQuotaName field's value.
func (s *AccountQuota) SetAccountQuotaName(v string) *AccountQuota {
	s.AccountQuotaName = &v
	return s
}

// SetMax sets the Max field's value.
func (s *AccountQuota) SetMax(v int64) *AccountQuota {
	s.Max = &v
	return s
}

// SetUsed sets the Used field's value.
func (s *AccountQuota) SetUsed(v int64) *AccountQuota {
	s.Used = &v
	return s
}

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

	// The name of the DB cluster to associate the IAM role with.
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// The name of the feature for the DB cluster that the IAM role is to be associated
	// with. For information about supported feature names, see DBEngineVersion.
	FeatureName *string `type:"string"`

	// The Amazon Resource Name (ARN) of the IAM role to associate with the Aurora
	// DB cluster, for example arn:aws:iam::123456789012:role/AuroraAccessRole.
	//
	// RoleArn is a required field
	RoleArn *string `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 AddRoleToDBClusterInput) 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 AddRoleToDBClusterInput) GoString() string {
	return s.String()
}

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

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

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *AddRoleToDBClusterInput) SetDBClusterIdentifier(v string) *AddRoleToDBClusterInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetFeatureName sets the FeatureName field's value.
func (s *AddRoleToDBClusterInput) SetFeatureName(v string) *AddRoleToDBClusterInput {
	s.FeatureName = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *AddRoleToDBClusterInput) SetRoleArn(v string) *AddRoleToDBClusterInput {
	s.RoleArn = &v
	return s
}

type AddRoleToDBClusterOutput 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 AddRoleToDBClusterOutput) 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 AddRoleToDBClusterOutput) GoString() string {
	return s.String()
}

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

	// The name of the DB instance to associate the IAM role with.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// The name of the feature for the DB instance that the IAM role is to be associated
	// with. For information about supported feature names, see DBEngineVersion.
	//
	// FeatureName is a required field
	FeatureName *string `type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the IAM role to associate with the DB instance,
	// for example arn:aws:iam::123456789012:role/AccessRole.
	//
	// RoleArn is a required field
	RoleArn *string `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 AddRoleToDBInstanceInput) 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 AddRoleToDBInstanceInput) GoString() string {
	return s.String()
}

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

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

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *AddRoleToDBInstanceInput) SetDBInstanceIdentifier(v string) *AddRoleToDBInstanceInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetFeatureName sets the FeatureName field's value.
func (s *AddRoleToDBInstanceInput) SetFeatureName(v string) *AddRoleToDBInstanceInput {
	s.FeatureName = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *AddRoleToDBInstanceInput) SetRoleArn(v string) *AddRoleToDBInstanceInput {
	s.RoleArn = &v
	return s
}

type AddRoleToDBInstanceOutput 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 AddRoleToDBInstanceOutput) 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 AddRoleToDBInstanceOutput) GoString() string {
	return s.String()
}

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

	// The identifier of the event source to be added.
	//
	// Constraints:
	//
	//    * If the source type is a DB instance, a DBInstanceIdentifier value must
	//    be supplied.
	//
	//    * If the source type is a DB cluster, a DBClusterIdentifier value must
	//    be supplied.
	//
	//    * If the source type is a DB parameter group, a DBParameterGroupName value
	//    must be supplied.
	//
	//    * If the source type is a DB security group, a DBSecurityGroupName value
	//    must be supplied.
	//
	//    * If the source type is a DB snapshot, a DBSnapshotIdentifier value must
	//    be supplied.
	//
	//    * If the source type is a DB cluster snapshot, a DBClusterSnapshotIdentifier
	//    value must be supplied.
	//
	//    * If the source type is an RDS Proxy, a DBProxyName value must be supplied.
	//
	// SourceIdentifier is a required field
	SourceIdentifier *string `type:"string" required:"true"`

	// The name of the RDS event notification subscription you want to add a source
	// identifier to.
	//
	// SubscriptionName is a required field
	SubscriptionName *string `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 AddSourceIdentifierToSubscriptionInput) 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 AddSourceIdentifierToSubscriptionInput) GoString() string {
	return s.String()
}

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

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

// SetSourceIdentifier sets the SourceIdentifier field's value.
func (s *AddSourceIdentifierToSubscriptionInput) SetSourceIdentifier(v string) *AddSourceIdentifierToSubscriptionInput {
	s.SourceIdentifier = &v
	return s
}

// SetSubscriptionName sets the SubscriptionName field's value.
func (s *AddSourceIdentifierToSubscriptionInput) SetSubscriptionName(v string) *AddSourceIdentifierToSubscriptionInput {
	s.SubscriptionName = &v
	return s
}

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

	// Contains the results of a successful invocation of the DescribeEventSubscriptions
	// action.
	EventSubscription *EventSubscription `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 AddSourceIdentifierToSubscriptionOutput) 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 AddSourceIdentifierToSubscriptionOutput) GoString() string {
	return s.String()
}

// SetEventSubscription sets the EventSubscription field's value.
func (s *AddSourceIdentifierToSubscriptionOutput) SetEventSubscription(v *EventSubscription) *AddSourceIdentifierToSubscriptionOutput {
	s.EventSubscription = v
	return s
}

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

	// The Amazon RDS resource that the tags are added to. This value is an Amazon
	// Resource Name (ARN). For information about creating an ARN, see Constructing
	// an RDS Amazon Resource Name (ARN) (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing).
	//
	// ResourceName is a required field
	ResourceName *string `type:"string" required:"true"`

	// The tags to be assigned to the Amazon RDS resource.
	//
	// Tags is a required field
	Tags []*Tag `locationNameList:"Tag" type:"list" 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 AddTagsToResourceInput) 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 AddTagsToResourceInput) GoString() string {
	return s.String()
}

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

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

// SetResourceName sets the ResourceName field's value.
func (s *AddTagsToResourceInput) SetResourceName(v string) *AddTagsToResourceInput {
	s.ResourceName = &v
	return s
}

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

type AddTagsToResourceOutput 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 AddTagsToResourceOutput) 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 AddTagsToResourceOutput) GoString() string {
	return s.String()
}

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

	// The pending maintenance action to apply to this resource.
	//
	// Valid Values: system-update, db-upgrade, hardware-maintenance, ca-certificate-rotation
	//
	// ApplyAction is a required field
	ApplyAction *string `type:"string" required:"true"`

	// A value that specifies the type of opt-in request, or undoes an opt-in request.
	// An opt-in request of type immediate can't be undone.
	//
	// Valid Values:
	//
	//    * immediate - Apply the maintenance action immediately.
	//
	//    * next-maintenance - Apply the maintenance action during the next maintenance
	//    window for the resource.
	//
	//    * undo-opt-in - Cancel any existing next-maintenance opt-in requests.
	//
	// OptInType is a required field
	OptInType *string `type:"string" required:"true"`

	// The RDS Amazon Resource Name (ARN) of the resource that the pending maintenance
	// action applies to. For information about creating an ARN, see Constructing
	// an RDS Amazon Resource Name (ARN) (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing).
	//
	// ResourceIdentifier is a required field
	ResourceIdentifier *string `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 ApplyPendingMaintenanceActionInput) 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 ApplyPendingMaintenanceActionInput) GoString() string {
	return s.String()
}

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

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

// SetApplyAction sets the ApplyAction field's value.
func (s *ApplyPendingMaintenanceActionInput) SetApplyAction(v string) *ApplyPendingMaintenanceActionInput {
	s.ApplyAction = &v
	return s
}

// SetOptInType sets the OptInType field's value.
func (s *ApplyPendingMaintenanceActionInput) SetOptInType(v string) *ApplyPendingMaintenanceActionInput {
	s.OptInType = &v
	return s
}

// SetResourceIdentifier sets the ResourceIdentifier field's value.
func (s *ApplyPendingMaintenanceActionInput) SetResourceIdentifier(v string) *ApplyPendingMaintenanceActionInput {
	s.ResourceIdentifier = &v
	return s
}

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

	// Describes the pending maintenance actions for a resource.
	ResourcePendingMaintenanceActions *ResourcePendingMaintenanceActions `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 ApplyPendingMaintenanceActionOutput) 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 ApplyPendingMaintenanceActionOutput) GoString() string {
	return s.String()
}

// SetResourcePendingMaintenanceActions sets the ResourcePendingMaintenanceActions field's value.
func (s *ApplyPendingMaintenanceActionOutput) SetResourcePendingMaintenanceActions(v *ResourcePendingMaintenanceActions) *ApplyPendingMaintenanceActionOutput {
	s.ResourcePendingMaintenanceActions = v
	return s
}

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

	// The IP range to authorize.
	CIDRIP *string `type:"string"`

	// The name of the DB security group to add authorization to.
	//
	// DBSecurityGroupName is a required field
	DBSecurityGroupName *string `type:"string" required:"true"`

	// Id of the EC2 security group to authorize. For VPC DB security groups, EC2SecurityGroupId
	// must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName
	// or EC2SecurityGroupId must be provided.
	EC2SecurityGroupId *string `type:"string"`

	// Name of the EC2 security group to authorize. For VPC DB security groups,
	// EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId and
	// either EC2SecurityGroupName or EC2SecurityGroupId must be provided.
	EC2SecurityGroupName *string `type:"string"`

	// Amazon Web Services account number of the owner of the EC2 security group
	// specified in the EC2SecurityGroupName parameter. The Amazon Web Services
	// access key ID isn't an acceptable value. For VPC DB security groups, EC2SecurityGroupId
	// must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName
	// or EC2SecurityGroupId must be provided.
	EC2SecurityGroupOwnerId *string `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 AuthorizeDBSecurityGroupIngressInput) 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 AuthorizeDBSecurityGroupIngressInput) GoString() string {
	return s.String()
}

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

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

// SetCIDRIP sets the CIDRIP field's value.
func (s *AuthorizeDBSecurityGroupIngressInput) SetCIDRIP(v string) *AuthorizeDBSecurityGroupIngressInput {
	s.CIDRIP = &v
	return s
}

// SetDBSecurityGroupName sets the DBSecurityGroupName field's value.
func (s *AuthorizeDBSecurityGroupIngressInput) SetDBSecurityGroupName(v string) *AuthorizeDBSecurityGroupIngressInput {
	s.DBSecurityGroupName = &v
	return s
}

// SetEC2SecurityGroupId sets the EC2SecurityGroupId field's value.
func (s *AuthorizeDBSecurityGroupIngressInput) SetEC2SecurityGroupId(v string) *AuthorizeDBSecurityGroupIngressInput {
	s.EC2SecurityGroupId = &v
	return s
}

// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
func (s *AuthorizeDBSecurityGroupIngressInput) SetEC2SecurityGroupName(v string) *AuthorizeDBSecurityGroupIngressInput {
	s.EC2SecurityGroupName = &v
	return s
}

// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
func (s *AuthorizeDBSecurityGroupIngressInput) SetEC2SecurityGroupOwnerId(v string) *AuthorizeDBSecurityGroupIngressInput {
	s.EC2SecurityGroupOwnerId = &v
	return s
}

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

	// Contains the details for an Amazon RDS DB security group.
	//
	// This data type is used as a response element in the DescribeDBSecurityGroups
	// action.
	DBSecurityGroup *DBSecurityGroup `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 AuthorizeDBSecurityGroupIngressOutput) 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 AuthorizeDBSecurityGroupIngressOutput) GoString() string {
	return s.String()
}

// SetDBSecurityGroup sets the DBSecurityGroup field's value.
func (s *AuthorizeDBSecurityGroupIngressOutput) SetDBSecurityGroup(v *DBSecurityGroup) *AuthorizeDBSecurityGroupIngressOutput {
	s.DBSecurityGroup = v
	return s
}

// Contains Availability Zone information.
//
// This data type is used as an element in the OrderableDBInstanceOption data
// type.
type AvailabilityZone struct {
	_ struct{} `type:"structure"`

	// The name of the Availability Zone.
	Name *string `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 AvailabilityZone) 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 AvailabilityZone) GoString() string {
	return s.String()
}

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

// Contains the available processor feature information for the DB instance
// class of a DB instance.
//
// For more information, see Configuring the Processor of the DB Instance Class
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html#USER_ConfigureProcessor)
// in the Amazon RDS User Guide.
type AvailableProcessorFeature struct {
	_ struct{} `type:"structure"`

	// The allowed values for the processor feature of the DB instance class.
	AllowedValues *string `type:"string"`

	// The default value for the processor feature of the DB instance class.
	DefaultValue *string `type:"string"`

	// The name of the processor feature. Valid names are coreCount and threadsPerCore.
	Name *string `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 AvailableProcessorFeature) 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 AvailableProcessorFeature) GoString() string {
	return s.String()
}

// SetAllowedValues sets the AllowedValues field's value.
func (s *AvailableProcessorFeature) SetAllowedValues(v string) *AvailableProcessorFeature {
	s.AllowedValues = &v
	return s
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *AvailableProcessorFeature) SetDefaultValue(v string) *AvailableProcessorFeature {
	s.DefaultValue = &v
	return s
}

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

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

	// The timestamp of the time to backtrack the DB cluster to, specified in ISO
	// 8601 format. For more information about ISO 8601, see the ISO8601 Wikipedia
	// page. (http://en.wikipedia.org/wiki/ISO_8601)
	//
	// If the specified time isn't a consistent time for the DB cluster, Aurora
	// automatically chooses the nearest possible consistent time for the DB cluster.
	//
	// Constraints:
	//
	//    * Must contain a valid ISO 8601 timestamp.
	//
	//    * Can't contain a timestamp set in the future.
	//
	// Example: 2017-07-08T18:00Z
	//
	// BacktrackTo is a required field
	BacktrackTo *time.Time `type:"timestamp" required:"true"`

	// The DB cluster identifier of the DB cluster to be backtracked. This parameter
	// is stored as a lowercase string.
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 alphanumeric characters or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Example: my-cluster1
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// Specifies whether to force the DB cluster to backtrack when binary logging
	// is enabled. Otherwise, an error occurs when binary logging is enabled.
	Force *bool `type:"boolean"`

	// Specifies whether to backtrack the DB cluster to the earliest possible backtrack
	// time when BacktrackTo is set to a timestamp earlier than the earliest backtrack
	// time. When this parameter is disabled and BacktrackTo is set to a timestamp
	// earlier than the earliest backtrack time, an error occurs.
	UseEarliestTimeOnPointInTimeUnavailable *bool `type:"boolean"`
}

// 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 BacktrackDBClusterInput) 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 BacktrackDBClusterInput) GoString() string {
	return s.String()
}

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

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

// SetBacktrackTo sets the BacktrackTo field's value.
func (s *BacktrackDBClusterInput) SetBacktrackTo(v time.Time) *BacktrackDBClusterInput {
	s.BacktrackTo = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *BacktrackDBClusterInput) SetDBClusterIdentifier(v string) *BacktrackDBClusterInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetForce sets the Force field's value.
func (s *BacktrackDBClusterInput) SetForce(v bool) *BacktrackDBClusterInput {
	s.Force = &v
	return s
}

// SetUseEarliestTimeOnPointInTimeUnavailable sets the UseEarliestTimeOnPointInTimeUnavailable field's value.
func (s *BacktrackDBClusterInput) SetUseEarliestTimeOnPointInTimeUnavailable(v bool) *BacktrackDBClusterInput {
	s.UseEarliestTimeOnPointInTimeUnavailable = &v
	return s
}

// This data type is used as a response element in the DescribeDBClusterBacktracks
// action.
type BacktrackDBClusterOutput struct {
	_ struct{} `type:"structure"`

	// Contains the backtrack identifier.
	BacktrackIdentifier *string `type:"string"`

	// The timestamp of the time at which the backtrack was requested.
	BacktrackRequestCreationTime *time.Time `type:"timestamp"`

	// The timestamp of the time to which the DB cluster was backtracked.
	BacktrackTo *time.Time `type:"timestamp"`

	// The timestamp of the time from which the DB cluster was backtracked.
	BacktrackedFrom *time.Time `type:"timestamp"`

	// Contains a user-supplied DB cluster identifier. This identifier is the unique
	// key that identifies a DB cluster.
	DBClusterIdentifier *string `type:"string"`

	// The status of the backtrack. This property returns one of the following values:
	//
	//    * applying - The backtrack is currently being applied to or rolled back
	//    from the DB cluster.
	//
	//    * completed - The backtrack has successfully been applied to or rolled
	//    back from the DB cluster.
	//
	//    * failed - An error occurred while the backtrack was applied to or rolled
	//    back from the DB cluster.
	//
	//    * pending - The backtrack is currently pending application to or rollback
	//    from the DB cluster.
	Status *string `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 BacktrackDBClusterOutput) 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 BacktrackDBClusterOutput) GoString() string {
	return s.String()
}

// SetBacktrackIdentifier sets the BacktrackIdentifier field's value.
func (s *BacktrackDBClusterOutput) SetBacktrackIdentifier(v string) *BacktrackDBClusterOutput {
	s.BacktrackIdentifier = &v
	return s
}

// SetBacktrackRequestCreationTime sets the BacktrackRequestCreationTime field's value.
func (s *BacktrackDBClusterOutput) SetBacktrackRequestCreationTime(v time.Time) *BacktrackDBClusterOutput {
	s.BacktrackRequestCreationTime = &v
	return s
}

// SetBacktrackTo sets the BacktrackTo field's value.
func (s *BacktrackDBClusterOutput) SetBacktrackTo(v time.Time) *BacktrackDBClusterOutput {
	s.BacktrackTo = &v
	return s
}

// SetBacktrackedFrom sets the BacktrackedFrom field's value.
func (s *BacktrackDBClusterOutput) SetBacktrackedFrom(v time.Time) *BacktrackDBClusterOutput {
	s.BacktrackedFrom = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *BacktrackDBClusterOutput) SetDBClusterIdentifier(v string) *BacktrackDBClusterOutput {
	s.DBClusterIdentifier = &v
	return s
}

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

// Details about a blue/green deployment.
//
// For more information, see Using Amazon RDS Blue/Green Deployments for database
// updates (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments.html)
// in the Amazon RDS User Guide and Using Amazon RDS Blue/Green Deployments
// for database updates (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html)
// in the Amazon Aurora User Guide.
type BlueGreenDeployment struct {
	_ struct{} `type:"structure"`

	// The unique identifier of the blue/green deployment.
	BlueGreenDeploymentIdentifier *string `min:"1" type:"string"`

	// The user-supplied name of the blue/green deployment.
	BlueGreenDeploymentName *string `min:"1" type:"string"`

	// The time when the blue/green deployment was created, in Universal Coordinated
	// Time (UTC).
	CreateTime *time.Time `type:"timestamp"`

	// The time when the blue/green deployment was deleted, in Universal Coordinated
	// Time (UTC).
	DeleteTime *time.Time `type:"timestamp"`

	// The source database for the blue/green deployment.
	//
	// Before switchover, the source database is the production database in the
	// blue environment.
	Source *string `min:"1" type:"string"`

	// The status of the blue/green deployment.
	//
	// Valid Values:
	//
	//    * PROVISIONING - Resources are being created in the green environment.
	//
	//    * AVAILABLE - Resources are available in the green environment.
	//
	//    * SWITCHOVER_IN_PROGRESS - The deployment is being switched from the blue
	//    environment to the green environment.
	//
	//    * SWITCHOVER_COMPLETED - Switchover from the blue environment to the green
	//    environment is complete.
	//
	//    * INVALID_CONFIGURATION - Resources in the green environment are invalid,
	//    so switchover isn't possible.
	//
	//    * SWITCHOVER_FAILED - Switchover was attempted but failed.
	//
	//    * DELETING - The blue/green deployment is being deleted.
	Status *string `type:"string"`

	// Additional information about the status of the blue/green deployment.
	StatusDetails *string `type:"string"`

	// The details about each source and target resource in the blue/green deployment.
	SwitchoverDetails []*SwitchoverDetail `type:"list"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	TagList []*Tag `locationNameList:"Tag" type:"list"`

	// The target database for the blue/green deployment.
	//
	// Before switchover, the target database is the clone database in the green
	// environment.
	Target *string `min:"1" type:"string"`

	// Either tasks to be performed or tasks that have been completed on the target
	// database before switchover.
	Tasks []*BlueGreenDeploymentTask `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 BlueGreenDeployment) 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 BlueGreenDeployment) GoString() string {
	return s.String()
}

// SetBlueGreenDeploymentIdentifier sets the BlueGreenDeploymentIdentifier field's value.
func (s *BlueGreenDeployment) SetBlueGreenDeploymentIdentifier(v string) *BlueGreenDeployment {
	s.BlueGreenDeploymentIdentifier = &v
	return s
}

// SetBlueGreenDeploymentName sets the BlueGreenDeploymentName field's value.
func (s *BlueGreenDeployment) SetBlueGreenDeploymentName(v string) *BlueGreenDeployment {
	s.BlueGreenDeploymentName = &v
	return s
}

// SetCreateTime sets the CreateTime field's value.
func (s *BlueGreenDeployment) SetCreateTime(v time.Time) *BlueGreenDeployment {
	s.CreateTime = &v
	return s
}

// SetDeleteTime sets the DeleteTime field's value.
func (s *BlueGreenDeployment) SetDeleteTime(v time.Time) *BlueGreenDeployment {
	s.DeleteTime = &v
	return s
}

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

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

// SetStatusDetails sets the StatusDetails field's value.
func (s *BlueGreenDeployment) SetStatusDetails(v string) *BlueGreenDeployment {
	s.StatusDetails = &v
	return s
}

// SetSwitchoverDetails sets the SwitchoverDetails field's value.
func (s *BlueGreenDeployment) SetSwitchoverDetails(v []*SwitchoverDetail) *BlueGreenDeployment {
	s.SwitchoverDetails = v
	return s
}

// SetTagList sets the TagList field's value.
func (s *BlueGreenDeployment) SetTagList(v []*Tag) *BlueGreenDeployment {
	s.TagList = v
	return s
}

// SetTarget sets the Target field's value.
func (s *BlueGreenDeployment) SetTarget(v string) *BlueGreenDeployment {
	s.Target = &v
	return s
}

// SetTasks sets the Tasks field's value.
func (s *BlueGreenDeployment) SetTasks(v []*BlueGreenDeploymentTask) *BlueGreenDeployment {
	s.Tasks = v
	return s
}

// Details about a task for a blue/green deployment.
//
// For more information, see Using Amazon RDS Blue/Green Deployments for database
// updates (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments.html)
// in the Amazon RDS User Guide and Using Amazon RDS Blue/Green Deployments
// for database updates (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html)
// in the Amazon Aurora User Guide.
type BlueGreenDeploymentTask struct {
	_ struct{} `type:"structure"`

	// The name of the blue/green deployment task.
	Name *string `type:"string"`

	// The status of the blue/green deployment task.
	//
	// Valid Values:
	//
	//    * PENDING - The resource is being prepared for deployment.
	//
	//    * IN_PROGRESS - The resource is being deployed.
	//
	//    * COMPLETED - The resource has been deployed.
	//
	//    * FAILED - Deployment of the resource failed.
	Status *string `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 BlueGreenDeploymentTask) 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 BlueGreenDeploymentTask) GoString() string {
	return s.String()
}

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

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

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

	// The identifier of the snapshot or cluster export task to cancel.
	//
	// ExportTaskIdentifier is a required field
	ExportTaskIdentifier *string `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 CancelExportTaskInput) 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 CancelExportTaskInput) GoString() string {
	return s.String()
}

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

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

// SetExportTaskIdentifier sets the ExportTaskIdentifier field's value.
func (s *CancelExportTaskInput) SetExportTaskIdentifier(v string) *CancelExportTaskInput {
	s.ExportTaskIdentifier = &v
	return s
}

// Contains the details of a snapshot or cluster export to Amazon S3.
//
// This data type is used as a response element in the DescribeExportTasks operation.
type CancelExportTaskOutput struct {
	_ struct{} `type:"structure"`

	// The data exported from the snapshot or cluster.
	//
	// Valid Values:
	//
	//    * database - Export all the data from a specified database.
	//
	//    * database.table table-name - Export a table of the snapshot or cluster.
	//    This format is valid only for RDS for MySQL, RDS for MariaDB, and Aurora
	//    MySQL.
	//
	//    * database.schema schema-name - Export a database schema of the snapshot
	//    or cluster. This format is valid only for RDS for PostgreSQL and Aurora
	//    PostgreSQL.
	//
	//    * database.schema.table table-name - Export a table of the database schema.
	//    This format is valid only for RDS for PostgreSQL and Aurora PostgreSQL.
	ExportOnly []*string `type:"list"`

	// A unique identifier for the snapshot or cluster export task. This ID isn't
	// an identifier for the Amazon S3 bucket where the data is exported.
	ExportTaskIdentifier *string `type:"string"`

	// The reason the export failed, if it failed.
	FailureCause *string `type:"string"`

	// The name of the IAM role that is used to write to Amazon S3 when exporting
	// a snapshot or cluster.
	IamRoleArn *string `type:"string"`

	// The key identifier of the Amazon Web Services KMS key that is used to encrypt
	// the data when it's exported to Amazon S3. The KMS key identifier is its key
	// ARN, key ID, alias ARN, or alias name. The IAM role used for the export must
	// have encryption and decryption permissions to use this KMS key.
	KmsKeyId *string `type:"string"`

	// The progress of the snapshot or cluster export task as a percentage.
	PercentProgress *int64 `type:"integer"`

	// The Amazon S3 bucket where the snapshot or cluster is exported to.
	S3Bucket *string `type:"string"`

	// The Amazon S3 bucket prefix that is the file name and path of the exported
	// data.
	S3Prefix *string `type:"string"`

	// The time when the snapshot was created.
	SnapshotTime *time.Time `type:"timestamp"`

	// The Amazon Resource Name (ARN) of the snapshot or cluster exported to Amazon
	// S3.
	SourceArn *string `type:"string"`

	// The type of source for the export.
	SourceType *string `type:"string" enum:"ExportSourceType"`

	// The progress status of the export task. The status can be one of the following:
	//
	//    * CANCELED
	//
	//    * CANCELING
	//
	//    * COMPLETE
	//
	//    * FAILED
	//
	//    * IN_PROGRESS
	//
	//    * STARTING
	Status *string `type:"string"`

	// The time when the snapshot or cluster export task ended.
	TaskEndTime *time.Time `type:"timestamp"`

	// The time when the snapshot or cluster export task started.
	TaskStartTime *time.Time `type:"timestamp"`

	// The total amount of data exported, in gigabytes.
	TotalExtractedDataInGB *int64 `type:"integer"`

	// A warning about the snapshot or cluster export task.
	WarningMessage *string `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 CancelExportTaskOutput) 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 CancelExportTaskOutput) GoString() string {
	return s.String()
}

// SetExportOnly sets the ExportOnly field's value.
func (s *CancelExportTaskOutput) SetExportOnly(v []*string) *CancelExportTaskOutput {
	s.ExportOnly = v
	return s
}

// SetExportTaskIdentifier sets the ExportTaskIdentifier field's value.
func (s *CancelExportTaskOutput) SetExportTaskIdentifier(v string) *CancelExportTaskOutput {
	s.ExportTaskIdentifier = &v
	return s
}

// SetFailureCause sets the FailureCause field's value.
func (s *CancelExportTaskOutput) SetFailureCause(v string) *CancelExportTaskOutput {
	s.FailureCause = &v
	return s
}

// SetIamRoleArn sets the IamRoleArn field's value.
func (s *CancelExportTaskOutput) SetIamRoleArn(v string) *CancelExportTaskOutput {
	s.IamRoleArn = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *CancelExportTaskOutput) SetKmsKeyId(v string) *CancelExportTaskOutput {
	s.KmsKeyId = &v
	return s
}

// SetPercentProgress sets the PercentProgress field's value.
func (s *CancelExportTaskOutput) SetPercentProgress(v int64) *CancelExportTaskOutput {
	s.PercentProgress = &v
	return s
}

// SetS3Bucket sets the S3Bucket field's value.
func (s *CancelExportTaskOutput) SetS3Bucket(v string) *CancelExportTaskOutput {
	s.S3Bucket = &v
	return s
}

// SetS3Prefix sets the S3Prefix field's value.
func (s *CancelExportTaskOutput) SetS3Prefix(v string) *CancelExportTaskOutput {
	s.S3Prefix = &v
	return s
}

// SetSnapshotTime sets the SnapshotTime field's value.
func (s *CancelExportTaskOutput) SetSnapshotTime(v time.Time) *CancelExportTaskOutput {
	s.SnapshotTime = &v
	return s
}

// SetSourceArn sets the SourceArn field's value.
func (s *CancelExportTaskOutput) SetSourceArn(v string) *CancelExportTaskOutput {
	s.SourceArn = &v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *CancelExportTaskOutput) SetSourceType(v string) *CancelExportTaskOutput {
	s.SourceType = &v
	return s
}

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

// SetTaskEndTime sets the TaskEndTime field's value.
func (s *CancelExportTaskOutput) SetTaskEndTime(v time.Time) *CancelExportTaskOutput {
	s.TaskEndTime = &v
	return s
}

// SetTaskStartTime sets the TaskStartTime field's value.
func (s *CancelExportTaskOutput) SetTaskStartTime(v time.Time) *CancelExportTaskOutput {
	s.TaskStartTime = &v
	return s
}

// SetTotalExtractedDataInGB sets the TotalExtractedDataInGB field's value.
func (s *CancelExportTaskOutput) SetTotalExtractedDataInGB(v int64) *CancelExportTaskOutput {
	s.TotalExtractedDataInGB = &v
	return s
}

// SetWarningMessage sets the WarningMessage field's value.
func (s *CancelExportTaskOutput) SetWarningMessage(v string) *CancelExportTaskOutput {
	s.WarningMessage = &v
	return s
}

// A CA certificate for an Amazon Web Services account.
//
// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
// in the Amazon Aurora User Guide.
type Certificate struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the certificate.
	CertificateArn *string `type:"string"`

	// The unique key that identifies a certificate.
	CertificateIdentifier *string `type:"string"`

	// The type of the certificate.
	CertificateType *string `type:"string"`

	// Indicates whether there is an override for the default certificate identifier.
	CustomerOverride *bool `type:"boolean"`

	// If there is an override for the default certificate identifier, when the
	// override expires.
	CustomerOverrideValidTill *time.Time `type:"timestamp"`

	// The thumbprint of the certificate.
	Thumbprint *string `type:"string"`

	// The starting date from which the certificate is valid.
	ValidFrom *time.Time `type:"timestamp"`

	// The final date that the certificate continues to be valid.
	ValidTill *time.Time `type:"timestamp"`
}

// 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 Certificate) 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 Certificate) GoString() string {
	return s.String()
}

// SetCertificateArn sets the CertificateArn field's value.
func (s *Certificate) SetCertificateArn(v string) *Certificate {
	s.CertificateArn = &v
	return s
}

// SetCertificateIdentifier sets the CertificateIdentifier field's value.
func (s *Certificate) SetCertificateIdentifier(v string) *Certificate {
	s.CertificateIdentifier = &v
	return s
}

// SetCertificateType sets the CertificateType field's value.
func (s *Certificate) SetCertificateType(v string) *Certificate {
	s.CertificateType = &v
	return s
}

// SetCustomerOverride sets the CustomerOverride field's value.
func (s *Certificate) SetCustomerOverride(v bool) *Certificate {
	s.CustomerOverride = &v
	return s
}

// SetCustomerOverrideValidTill sets the CustomerOverrideValidTill field's value.
func (s *Certificate) SetCustomerOverrideValidTill(v time.Time) *Certificate {
	s.CustomerOverrideValidTill = &v
	return s
}

// SetThumbprint sets the Thumbprint field's value.
func (s *Certificate) SetThumbprint(v string) *Certificate {
	s.Thumbprint = &v
	return s
}

// SetValidFrom sets the ValidFrom field's value.
func (s *Certificate) SetValidFrom(v time.Time) *Certificate {
	s.ValidFrom = &v
	return s
}

// SetValidTill sets the ValidTill field's value.
func (s *Certificate) SetValidTill(v time.Time) *Certificate {
	s.ValidTill = &v
	return s
}

// The details of the DB instance’s server certificate.
//
// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
// in the Amazon Aurora User Guide.
type CertificateDetails struct {
	_ struct{} `type:"structure"`

	// The CA identifier of the CA certificate used for the DB instance's server
	// certificate.
	CAIdentifier *string `type:"string"`

	// The expiration date of the DB instance’s server certificate.
	ValidTill *time.Time `type:"timestamp"`
}

// 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 CertificateDetails) 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 CertificateDetails) GoString() string {
	return s.String()
}

// SetCAIdentifier sets the CAIdentifier field's value.
func (s *CertificateDetails) SetCAIdentifier(v string) *CertificateDetails {
	s.CAIdentifier = &v
	return s
}

// SetValidTill sets the ValidTill field's value.
func (s *CertificateDetails) SetValidTill(v time.Time) *CertificateDetails {
	s.ValidTill = &v
	return s
}

// This data type is used as a response element in the action DescribeDBEngineVersions.
type CharacterSet struct {
	_ struct{} `type:"structure"`

	// The description of the character set.
	CharacterSetDescription *string `type:"string"`

	// The name of the character set.
	CharacterSetName *string `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 CharacterSet) 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 CharacterSet) GoString() string {
	return s.String()
}

// SetCharacterSetDescription sets the CharacterSetDescription field's value.
func (s *CharacterSet) SetCharacterSetDescription(v string) *CharacterSet {
	s.CharacterSetDescription = &v
	return s
}

// SetCharacterSetName sets the CharacterSetName field's value.
func (s *CharacterSet) SetCharacterSetName(v string) *CharacterSet {
	s.CharacterSetName = &v
	return s
}

// The configuration setting for the log types to be enabled for export to CloudWatch
// Logs for a specific DB instance or DB cluster.
//
// The EnableLogTypes and DisableLogTypes arrays determine which logs will be
// exported (or not exported) to CloudWatch Logs. The values within these arrays
// depend on the DB engine being used.
//
// For more information about exporting CloudWatch Logs for Amazon RDS DB instances,
// see Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
// in the Amazon RDS User Guide.
//
// For more information about exporting CloudWatch Logs for Amazon Aurora DB
// clusters, see Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
// in the Amazon Aurora User Guide.
type CloudwatchLogsExportConfiguration struct {
	_ struct{} `type:"structure"`

	// The list of log types to disable.
	DisableLogTypes []*string `type:"list"`

	// The list of log types to enable.
	EnableLogTypes []*string `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 CloudwatchLogsExportConfiguration) 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 CloudwatchLogsExportConfiguration) GoString() string {
	return s.String()
}

// SetDisableLogTypes sets the DisableLogTypes field's value.
func (s *CloudwatchLogsExportConfiguration) SetDisableLogTypes(v []*string) *CloudwatchLogsExportConfiguration {
	s.DisableLogTypes = v
	return s
}

// SetEnableLogTypes sets the EnableLogTypes field's value.
func (s *CloudwatchLogsExportConfiguration) SetEnableLogTypes(v []*string) *CloudwatchLogsExportConfiguration {
	s.EnableLogTypes = v
	return s
}

// This data type is used as a response element in the ModifyDBCluster operation
// and contains changes that will be applied during the next maintenance window.
type ClusterPendingModifiedValues struct {
	_ struct{} `type:"structure"`

	// The allocated storage size in gibibytes (GiB) for all database engines except
	// Amazon Aurora. For Aurora, AllocatedStorage always returns 1, because Aurora
	// DB cluster storage size isn't fixed, but instead automatically adjusts as
	// needed.
	AllocatedStorage *int64 `type:"integer"`

	// The number of days for which automatic DB snapshots are retained.
	BackupRetentionPeriod *int64 `type:"integer"`

	// The details of the DB instance’s server certificate.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	CertificateDetails *CertificateDetails `type:"structure"`

	// The DBClusterIdentifier value for the DB cluster.
	DBClusterIdentifier *string `type:"string"`

	// The database engine version.
	EngineVersion *string `type:"string"`

	// Indicates whether mapping of Amazon Web Services Identity and Access Management
	// (IAM) accounts to database accounts is enabled.
	IAMDatabaseAuthenticationEnabled *bool `type:"boolean"`

	// The Provisioned IOPS (I/O operations per second) value. This setting is only
	// for non-Aurora Multi-AZ DB clusters.
	Iops *int64 `type:"integer"`

	// The master credentials for the DB cluster.
	MasterUserPassword *string `type:"string"`

	// A list of the log types whose configuration is still pending. In other words,
	// these log types are in the process of being activated or deactivated.
	PendingCloudwatchLogsExports *PendingCloudwatchLogsExports `type:"structure"`

	// Reserved for future use.
	RdsCustomClusterConfiguration *RdsCustomClusterConfiguration `type:"structure"`

	// The storage type for the DB cluster.
	StorageType *string `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 ClusterPendingModifiedValues) 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 ClusterPendingModifiedValues) GoString() string {
	return s.String()
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *ClusterPendingModifiedValues) SetAllocatedStorage(v int64) *ClusterPendingModifiedValues {
	s.AllocatedStorage = &v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *ClusterPendingModifiedValues) SetBackupRetentionPeriod(v int64) *ClusterPendingModifiedValues {
	s.BackupRetentionPeriod = &v
	return s
}

// SetCertificateDetails sets the CertificateDetails field's value.
func (s *ClusterPendingModifiedValues) SetCertificateDetails(v *CertificateDetails) *ClusterPendingModifiedValues {
	s.CertificateDetails = v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *ClusterPendingModifiedValues) SetDBClusterIdentifier(v string) *ClusterPendingModifiedValues {
	s.DBClusterIdentifier = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *ClusterPendingModifiedValues) SetEngineVersion(v string) *ClusterPendingModifiedValues {
	s.EngineVersion = &v
	return s
}

// SetIAMDatabaseAuthenticationEnabled sets the IAMDatabaseAuthenticationEnabled field's value.
func (s *ClusterPendingModifiedValues) SetIAMDatabaseAuthenticationEnabled(v bool) *ClusterPendingModifiedValues {
	s.IAMDatabaseAuthenticationEnabled = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *ClusterPendingModifiedValues) SetIops(v int64) *ClusterPendingModifiedValues {
	s.Iops = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *ClusterPendingModifiedValues) SetMasterUserPassword(v string) *ClusterPendingModifiedValues {
	s.MasterUserPassword = &v
	return s
}

// SetPendingCloudwatchLogsExports sets the PendingCloudwatchLogsExports field's value.
func (s *ClusterPendingModifiedValues) SetPendingCloudwatchLogsExports(v *PendingCloudwatchLogsExports) *ClusterPendingModifiedValues {
	s.PendingCloudwatchLogsExports = v
	return s
}

// SetRdsCustomClusterConfiguration sets the RdsCustomClusterConfiguration field's value.
func (s *ClusterPendingModifiedValues) SetRdsCustomClusterConfiguration(v *RdsCustomClusterConfiguration) *ClusterPendingModifiedValues {
	s.RdsCustomClusterConfiguration = v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *ClusterPendingModifiedValues) SetStorageType(v string) *ClusterPendingModifiedValues {
	s.StorageType = &v
	return s
}

// Specifies the settings that control the size and behavior of the connection
// pool associated with a DBProxyTargetGroup.
type ConnectionPoolConfiguration struct {
	_ struct{} `type:"structure"`

	// The number of seconds for a proxy to wait for a connection to become available
	// in the connection pool. This setting only applies when the proxy has opened
	// its maximum number of connections and all connections are busy with client
	// sessions. For an unlimited wait time, specify 0.
	//
	// Default: 120
	//
	// Constraints:
	//
	//    * Must be between 0 and 3600.
	ConnectionBorrowTimeout *int64 `type:"integer"`

	// One or more SQL statements for the proxy to run when opening each new database
	// connection. Typically used with SET statements to make sure that each connection
	// has identical settings such as time zone and character set. For multiple
	// statements, use semicolons as the separator. You can also include multiple
	// variables in a single SET statement, such as SET x=1, y=2.
	//
	// Default: no initialization query
	InitQuery *string `type:"string"`

	// The maximum size of the connection pool for each target in a target group.
	// The value is expressed as a percentage of the max_connections setting for
	// the RDS DB instance or Aurora DB cluster used by the target group.
	//
	// If you specify MaxIdleConnectionsPercent, then you must also include a value
	// for this parameter.
	//
	// Default: 10 for RDS for Microsoft SQL Server, and 100 for all other engines
	//
	// Constraints:
	//
	//    * Must be between 1 and 100.
	MaxConnectionsPercent *int64 `type:"integer"`

	// A value that controls how actively the proxy closes idle database connections
	// in the connection pool. The value is expressed as a percentage of the max_connections
	// setting for the RDS DB instance or Aurora DB cluster used by the target group.
	// With a high value, the proxy leaves a high percentage of idle database connections
	// open. A low value causes the proxy to close more idle connections and return
	// them to the database.
	//
	// If you specify this parameter, then you must also include a value for MaxConnectionsPercent.
	//
	// Default: The default value is half of the value of MaxConnectionsPercent.
	// For example, if MaxConnectionsPercent is 80, then the default value of MaxIdleConnectionsPercent
	// is 40. If the value of MaxConnectionsPercent isn't specified, then for SQL
	// Server, MaxIdleConnectionsPercent is 5, and for all other engines, the default
	// is 50.
	//
	// Constraints:
	//
	//    * Must be between 0 and the value of MaxConnectionsPercent.
	MaxIdleConnectionsPercent *int64 `type:"integer"`

	// Each item in the list represents a class of SQL operations that normally
	// cause all later statements in a session using a proxy to be pinned to the
	// same underlying database connection. Including an item in the list exempts
	// that class of SQL operations from the pinning behavior.
	//
	// Default: no session pinning filters
	SessionPinningFilters []*string `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 ConnectionPoolConfiguration) 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 ConnectionPoolConfiguration) GoString() string {
	return s.String()
}

// SetConnectionBorrowTimeout sets the ConnectionBorrowTimeout field's value.
func (s *ConnectionPoolConfiguration) SetConnectionBorrowTimeout(v int64) *ConnectionPoolConfiguration {
	s.ConnectionBorrowTimeout = &v
	return s
}

// SetInitQuery sets the InitQuery field's value.
func (s *ConnectionPoolConfiguration) SetInitQuery(v string) *ConnectionPoolConfiguration {
	s.InitQuery = &v
	return s
}

// SetMaxConnectionsPercent sets the MaxConnectionsPercent field's value.
func (s *ConnectionPoolConfiguration) SetMaxConnectionsPercent(v int64) *ConnectionPoolConfiguration {
	s.MaxConnectionsPercent = &v
	return s
}

// SetMaxIdleConnectionsPercent sets the MaxIdleConnectionsPercent field's value.
func (s *ConnectionPoolConfiguration) SetMaxIdleConnectionsPercent(v int64) *ConnectionPoolConfiguration {
	s.MaxIdleConnectionsPercent = &v
	return s
}

// SetSessionPinningFilters sets the SessionPinningFilters field's value.
func (s *ConnectionPoolConfiguration) SetSessionPinningFilters(v []*string) *ConnectionPoolConfiguration {
	s.SessionPinningFilters = v
	return s
}

// Displays the settings that control the size and behavior of the connection
// pool associated with a DBProxyTarget.
type ConnectionPoolConfigurationInfo struct {
	_ struct{} `type:"structure"`

	// The number of seconds for a proxy to wait for a connection to become available
	// in the connection pool. Only applies when the proxy has opened its maximum
	// number of connections and all connections are busy with client sessions.
	ConnectionBorrowTimeout *int64 `type:"integer"`

	// One or more SQL statements for the proxy to run when opening each new database
	// connection. Typically used with SET statements to make sure that each connection
	// has identical settings such as time zone and character set. This setting
	// is empty by default. For multiple statements, use semicolons as the separator.
	// You can also include multiple variables in a single SET statement, such as
	// SET x=1, y=2.
	InitQuery *string `type:"string"`

	// The maximum size of the connection pool for each target in a target group.
	// The value is expressed as a percentage of the max_connections setting for
	// the RDS DB instance or Aurora DB cluster used by the target group.
	MaxConnectionsPercent *int64 `type:"integer"`

	// Controls how actively the proxy closes idle database connections in the connection
	// pool. The value is expressed as a percentage of the max_connections setting
	// for the RDS DB instance or Aurora DB cluster used by the target group. With
	// a high value, the proxy leaves a high percentage of idle database connections
	// open. A low value causes the proxy to close more idle connections and return
	// them to the database.
	MaxIdleConnectionsPercent *int64 `type:"integer"`

	// Each item in the list represents a class of SQL operations that normally
	// cause all later statements in a session using a proxy to be pinned to the
	// same underlying database connection. Including an item in the list exempts
	// that class of SQL operations from the pinning behavior. This setting is only
	// supported for MySQL engine family databases. Currently, the only allowed
	// value is EXCLUDE_VARIABLE_SETS.
	SessionPinningFilters []*string `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 ConnectionPoolConfigurationInfo) 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 ConnectionPoolConfigurationInfo) GoString() string {
	return s.String()
}

// SetConnectionBorrowTimeout sets the ConnectionBorrowTimeout field's value.
func (s *ConnectionPoolConfigurationInfo) SetConnectionBorrowTimeout(v int64) *ConnectionPoolConfigurationInfo {
	s.ConnectionBorrowTimeout = &v
	return s
}

// SetInitQuery sets the InitQuery field's value.
func (s *ConnectionPoolConfigurationInfo) SetInitQuery(v string) *ConnectionPoolConfigurationInfo {
	s.InitQuery = &v
	return s
}

// SetMaxConnectionsPercent sets the MaxConnectionsPercent field's value.
func (s *ConnectionPoolConfigurationInfo) SetMaxConnectionsPercent(v int64) *ConnectionPoolConfigurationInfo {
	s.MaxConnectionsPercent = &v
	return s
}

// SetMaxIdleConnectionsPercent sets the MaxIdleConnectionsPercent field's value.
func (s *ConnectionPoolConfigurationInfo) SetMaxIdleConnectionsPercent(v int64) *ConnectionPoolConfigurationInfo {
	s.MaxIdleConnectionsPercent = &v
	return s
}

// SetSessionPinningFilters sets the SessionPinningFilters field's value.
func (s *ConnectionPoolConfigurationInfo) SetSessionPinningFilters(v []*string) *ConnectionPoolConfigurationInfo {
	s.SessionPinningFilters = v
	return s
}

// The additional attributes of RecommendedAction data type.
type ContextAttribute struct {
	_ struct{} `type:"structure"`

	// The key of ContextAttribute.
	Key *string `type:"string"`

	// The value of ContextAttribute.
	Value *string `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 ContextAttribute) 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 ContextAttribute) GoString() string {
	return s.String()
}

// SetKey sets the Key field's value.
func (s *ContextAttribute) SetKey(v string) *ContextAttribute {
	s.Key = &v
	return s
}

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

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

	// The identifier or Amazon Resource Name (ARN) for the source DB cluster parameter
	// group. For information about creating an ARN, see Constructing an ARN for
	// Amazon RDS (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing)
	// in the Amazon Aurora User Guide.
	//
	// Constraints:
	//
	//    * Must specify a valid DB cluster parameter group.
	//
	// SourceDBClusterParameterGroupIdentifier is a required field
	SourceDBClusterParameterGroupIdentifier *string `type:"string" required:"true"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// A description for the copied DB cluster parameter group.
	//
	// TargetDBClusterParameterGroupDescription is a required field
	TargetDBClusterParameterGroupDescription *string `type:"string" required:"true"`

	// The identifier for the copied DB cluster parameter group.
	//
	// Constraints:
	//
	//    * Can't be null, empty, or blank
	//
	//    * Must contain from 1 to 255 letters, numbers, or hyphens
	//
	//    * First character must be a letter
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens
	//
	// Example: my-cluster-param-group1
	//
	// TargetDBClusterParameterGroupIdentifier is a required field
	TargetDBClusterParameterGroupIdentifier *string `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 CopyDBClusterParameterGroupInput) 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 CopyDBClusterParameterGroupInput) GoString() string {
	return s.String()
}

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

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

// SetSourceDBClusterParameterGroupIdentifier sets the SourceDBClusterParameterGroupIdentifier field's value.
func (s *CopyDBClusterParameterGroupInput) SetSourceDBClusterParameterGroupIdentifier(v string) *CopyDBClusterParameterGroupInput {
	s.SourceDBClusterParameterGroupIdentifier = &v
	return s
}

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

// SetTargetDBClusterParameterGroupDescription sets the TargetDBClusterParameterGroupDescription field's value.
func (s *CopyDBClusterParameterGroupInput) SetTargetDBClusterParameterGroupDescription(v string) *CopyDBClusterParameterGroupInput {
	s.TargetDBClusterParameterGroupDescription = &v
	return s
}

// SetTargetDBClusterParameterGroupIdentifier sets the TargetDBClusterParameterGroupIdentifier field's value.
func (s *CopyDBClusterParameterGroupInput) SetTargetDBClusterParameterGroupIdentifier(v string) *CopyDBClusterParameterGroupInput {
	s.TargetDBClusterParameterGroupIdentifier = &v
	return s
}

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

	// Contains the details of an Amazon RDS DB cluster parameter group.
	//
	// This data type is used as a response element in the DescribeDBClusterParameterGroups
	// action.
	DBClusterParameterGroup *DBClusterParameterGroup `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 CopyDBClusterParameterGroupOutput) 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 CopyDBClusterParameterGroupOutput) GoString() string {
	return s.String()
}

// SetDBClusterParameterGroup sets the DBClusterParameterGroup field's value.
func (s *CopyDBClusterParameterGroupOutput) SetDBClusterParameterGroup(v *DBClusterParameterGroup) *CopyDBClusterParameterGroupOutput {
	s.DBClusterParameterGroup = v
	return s
}

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

	// Specifies whether to copy all tags from the source DB cluster snapshot to
	// the target DB cluster snapshot. By default, tags are not copied.
	CopyTags *bool `type:"boolean"`

	// DestinationRegion is used for presigning the request to a given region.
	DestinationRegion *string `type:"string"`

	// The Amazon Web Services KMS key identifier for an encrypted DB cluster snapshot.
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the Amazon Web Services KMS key.
	//
	// If you copy an encrypted DB cluster snapshot from your Amazon Web Services
	// account, you can specify a value for KmsKeyId to encrypt the copy with a
	// new KMS key. If you don't specify a value for KmsKeyId, then the copy of
	// the DB cluster snapshot is encrypted with the same KMS key as the source
	// DB cluster snapshot.
	//
	// If you copy an encrypted DB cluster snapshot that is shared from another
	// Amazon Web Services account, then you must specify a value for KmsKeyId.
	//
	// To copy an encrypted DB cluster snapshot to another Amazon Web Services Region,
	// you must set KmsKeyId to the Amazon Web Services KMS key identifier you want
	// to use to encrypt the copy of the DB cluster snapshot in the destination
	// Amazon Web Services Region. KMS keys are specific to the Amazon Web Services
	// Region that they are created in, and you can't use KMS keys from one Amazon
	// Web Services Region in another Amazon Web Services Region.
	//
	// If you copy an unencrypted DB cluster snapshot and specify a value for the
	// KmsKeyId parameter, an error is returned.
	KmsKeyId *string `type:"string"`

	// When you are copying a DB cluster snapshot from one Amazon Web Services GovCloud
	// (US) Region to another, the URL that contains a Signature Version 4 signed
	// request for the CopyDBClusterSnapshot API operation in the Amazon Web Services
	// Region that contains the source DB cluster snapshot to copy. Use the PreSignedUrl
	// parameter when copying an encrypted DB cluster snapshot from another Amazon
	// Web Services Region. Don't specify PreSignedUrl when copying an encrypted
	// DB cluster snapshot in the same Amazon Web Services Region.
	//
	// This setting applies only to Amazon Web Services GovCloud (US) Regions. It's
	// ignored in other Amazon Web Services Regions.
	//
	// The presigned URL must be a valid request for the CopyDBClusterSnapshot API
	// operation that can run in the source Amazon Web Services Region that contains
	// the encrypted DB cluster snapshot to copy. The presigned URL request must
	// contain the following parameter values:
	//
	//    * KmsKeyId - The KMS key identifier for the KMS key to use to encrypt
	//    the copy of the DB cluster snapshot in the destination Amazon Web Services
	//    Region. This is the same identifier for both the CopyDBClusterSnapshot
	//    operation that is called in the destination Amazon Web Services Region,
	//    and the operation contained in the presigned URL.
	//
	//    * DestinationRegion - The name of the Amazon Web Services Region that
	//    the DB cluster snapshot is to be created in.
	//
	//    * SourceDBClusterSnapshotIdentifier - The DB cluster snapshot identifier
	//    for the encrypted DB cluster snapshot to be copied. This identifier must
	//    be in the Amazon Resource Name (ARN) format for the source Amazon Web
	//    Services Region. For example, if you are copying an encrypted DB cluster
	//    snapshot from the us-west-2 Amazon Web Services Region, then your SourceDBClusterSnapshotIdentifier
	//    looks like the following example: arn:aws:rds:us-west-2:123456789012:cluster-snapshot:aurora-cluster1-snapshot-20161115.
	//
	// To learn how to generate a Signature Version 4 signed request, see Authenticating
	// Requests: Using Query Parameters (Amazon Web Services Signature Version 4)
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
	// and Signature Version 4 Signing Process (https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).
	//
	// If you are using an Amazon Web Services SDK tool or the CLI, you can specify
	// SourceRegion (or --source-region for the CLI) instead of specifying PreSignedUrl
	// manually. Specifying SourceRegion autogenerates a presigned URL that is a
	// valid request for the operation that can run in the source Amazon Web Services
	// Region.
	PreSignedUrl *string `type:"string"`

	// The identifier of the DB cluster snapshot to copy. This parameter isn't case-sensitive.
	//
	// You can't copy an encrypted, shared DB cluster snapshot from one Amazon Web
	// Services Region to another.
	//
	// Constraints:
	//
	//    * Must specify a valid system snapshot in the "available" state.
	//
	//    * If the source snapshot is in the same Amazon Web Services Region as
	//    the copy, specify a valid DB snapshot identifier.
	//
	//    * If the source snapshot is in a different Amazon Web Services Region
	//    than the copy, specify a valid DB cluster snapshot ARN. For more information,
	//    go to Copying Snapshots Across Amazon Web Services Regions (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_CopySnapshot.html#USER_CopySnapshot.AcrossRegions)
	//    in the Amazon Aurora User Guide.
	//
	// Example: my-cluster-snapshot1
	//
	// SourceDBClusterSnapshotIdentifier is a required field
	SourceDBClusterSnapshotIdentifier *string `type:"string" required:"true"`

	// SourceRegion is the source region where the resource exists. This is not
	// sent over the wire and is only used for presigning. This value should always
	// have the same region as the source ARN.
	SourceRegion *string `type:"string" ignore:"true"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// The identifier of the new DB cluster snapshot to create from the source DB
	// cluster snapshot. This parameter isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 letters, numbers, or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Example: my-cluster-snapshot2
	//
	// TargetDBClusterSnapshotIdentifier is a required field
	TargetDBClusterSnapshotIdentifier *string `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 CopyDBClusterSnapshotInput) 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 CopyDBClusterSnapshotInput) GoString() string {
	return s.String()
}

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

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

// SetCopyTags sets the CopyTags field's value.
func (s *CopyDBClusterSnapshotInput) SetCopyTags(v bool) *CopyDBClusterSnapshotInput {
	s.CopyTags = &v
	return s
}

// SetDestinationRegion sets the DestinationRegion field's value.
func (s *CopyDBClusterSnapshotInput) SetDestinationRegion(v string) *CopyDBClusterSnapshotInput {
	s.DestinationRegion = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *CopyDBClusterSnapshotInput) SetKmsKeyId(v string) *CopyDBClusterSnapshotInput {
	s.KmsKeyId = &v
	return s
}

// SetPreSignedUrl sets the PreSignedUrl field's value.
func (s *CopyDBClusterSnapshotInput) SetPreSignedUrl(v string) *CopyDBClusterSnapshotInput {
	s.PreSignedUrl = &v
	return s
}

// SetSourceDBClusterSnapshotIdentifier sets the SourceDBClusterSnapshotIdentifier field's value.
func (s *CopyDBClusterSnapshotInput) SetSourceDBClusterSnapshotIdentifier(v string) *CopyDBClusterSnapshotInput {
	s.SourceDBClusterSnapshotIdentifier = &v
	return s
}

// SetSourceRegion sets the SourceRegion field's value.
func (s *CopyDBClusterSnapshotInput) SetSourceRegion(v string) *CopyDBClusterSnapshotInput {
	s.SourceRegion = &v
	return s
}

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

// SetTargetDBClusterSnapshotIdentifier sets the TargetDBClusterSnapshotIdentifier field's value.
func (s *CopyDBClusterSnapshotInput) SetTargetDBClusterSnapshotIdentifier(v string) *CopyDBClusterSnapshotInput {
	s.TargetDBClusterSnapshotIdentifier = &v
	return s
}

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

	// Contains the details for an Amazon RDS DB cluster snapshot
	//
	// This data type is used as a response element in the DescribeDBClusterSnapshots
	// action.
	DBClusterSnapshot *DBClusterSnapshot `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 CopyDBClusterSnapshotOutput) 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 CopyDBClusterSnapshotOutput) GoString() string {
	return s.String()
}

// SetDBClusterSnapshot sets the DBClusterSnapshot field's value.
func (s *CopyDBClusterSnapshotOutput) SetDBClusterSnapshot(v *DBClusterSnapshot) *CopyDBClusterSnapshotOutput {
	s.DBClusterSnapshot = v
	return s
}

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

	// The identifier or ARN for the source DB parameter group. For information
	// about creating an ARN, see Constructing an ARN for Amazon RDS (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing)
	// in the Amazon RDS User Guide.
	//
	// Constraints:
	//
	//    * Must specify a valid DB parameter group.
	//
	// SourceDBParameterGroupIdentifier is a required field
	SourceDBParameterGroupIdentifier *string `type:"string" required:"true"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// A description for the copied DB parameter group.
	//
	// TargetDBParameterGroupDescription is a required field
	TargetDBParameterGroupDescription *string `type:"string" required:"true"`

	// The identifier for the copied DB parameter group.
	//
	// Constraints:
	//
	//    * Can't be null, empty, or blank
	//
	//    * Must contain from 1 to 255 letters, numbers, or hyphens
	//
	//    * First character must be a letter
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens
	//
	// Example: my-db-parameter-group
	//
	// TargetDBParameterGroupIdentifier is a required field
	TargetDBParameterGroupIdentifier *string `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 CopyDBParameterGroupInput) 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 CopyDBParameterGroupInput) GoString() string {
	return s.String()
}

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

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

// SetSourceDBParameterGroupIdentifier sets the SourceDBParameterGroupIdentifier field's value.
func (s *CopyDBParameterGroupInput) SetSourceDBParameterGroupIdentifier(v string) *CopyDBParameterGroupInput {
	s.SourceDBParameterGroupIdentifier = &v
	return s
}

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

// SetTargetDBParameterGroupDescription sets the TargetDBParameterGroupDescription field's value.
func (s *CopyDBParameterGroupInput) SetTargetDBParameterGroupDescription(v string) *CopyDBParameterGroupInput {
	s.TargetDBParameterGroupDescription = &v
	return s
}

// SetTargetDBParameterGroupIdentifier sets the TargetDBParameterGroupIdentifier field's value.
func (s *CopyDBParameterGroupInput) SetTargetDBParameterGroupIdentifier(v string) *CopyDBParameterGroupInput {
	s.TargetDBParameterGroupIdentifier = &v
	return s
}

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

	// Contains the details of an Amazon RDS DB parameter group.
	//
	// This data type is used as a response element in the DescribeDBParameterGroups
	// action.
	DBParameterGroup *DBParameterGroup `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 CopyDBParameterGroupOutput) 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 CopyDBParameterGroupOutput) GoString() string {
	return s.String()
}

// SetDBParameterGroup sets the DBParameterGroup field's value.
func (s *CopyDBParameterGroupOutput) SetDBParameterGroup(v *DBParameterGroup) *CopyDBParameterGroupOutput {
	s.DBParameterGroup = v
	return s
}

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

	// Specifies whether to copy the DB option group associated with the source
	// DB snapshot to the target Amazon Web Services account and associate with
	// the target DB snapshot. The associated option group can be copied only with
	// cross-account snapshot copy calls.
	CopyOptionGroup *bool `type:"boolean"`

	// Specifies whether to copy all tags from the source DB snapshot to the target
	// DB snapshot. By default, tags aren't copied.
	CopyTags *bool `type:"boolean"`

	// DestinationRegion is used for presigning the request to a given region.
	DestinationRegion *string `type:"string"`

	// The Amazon Web Services KMS key identifier for an encrypted DB snapshot.
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	//
	// If you copy an encrypted DB snapshot from your Amazon Web Services account,
	// you can specify a value for this parameter to encrypt the copy with a new
	// KMS key. If you don't specify a value for this parameter, then the copy of
	// the DB snapshot is encrypted with the same Amazon Web Services KMS key as
	// the source DB snapshot.
	//
	// If you copy an encrypted DB snapshot that is shared from another Amazon Web
	// Services account, then you must specify a value for this parameter.
	//
	// If you specify this parameter when you copy an unencrypted snapshot, the
	// copy is encrypted.
	//
	// If you copy an encrypted snapshot to a different Amazon Web Services Region,
	// then you must specify an Amazon Web Services KMS key identifier for the destination
	// Amazon Web Services Region. KMS keys are specific to the Amazon Web Services
	// Region that they are created in, and you can't use KMS keys from one Amazon
	// Web Services Region in another Amazon Web Services Region.
	KmsKeyId *string `type:"string"`

	// The name of an option group to associate with the copy of the snapshot.
	//
	// Specify this option if you are copying a snapshot from one Amazon Web Services
	// Region to another, and your DB instance uses a nondefault option group. If
	// your source DB instance uses Transparent Data Encryption for Oracle or Microsoft
	// SQL Server, you must specify this option when copying across Amazon Web Services
	// Regions. For more information, see Option group considerations (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html#USER_CopySnapshot.Options)
	// in the Amazon RDS User Guide.
	OptionGroupName *string `type:"string"`

	// When you are copying a snapshot from one Amazon Web Services GovCloud (US)
	// Region to another, the URL that contains a Signature Version 4 signed request
	// for the CopyDBSnapshot API operation in the source Amazon Web Services Region
	// that contains the source DB snapshot to copy.
	//
	// This setting applies only to Amazon Web Services GovCloud (US) Regions. It's
	// ignored in other Amazon Web Services Regions.
	//
	// You must specify this parameter when you copy an encrypted DB snapshot from
	// another Amazon Web Services Region by using the Amazon RDS API. Don't specify
	// PreSignedUrl when you are copying an encrypted DB snapshot in the same Amazon
	// Web Services Region.
	//
	// The presigned URL must be a valid request for the CopyDBClusterSnapshot API
	// operation that can run in the source Amazon Web Services Region that contains
	// the encrypted DB cluster snapshot to copy. The presigned URL request must
	// contain the following parameter values:
	//
	//    * DestinationRegion - The Amazon Web Services Region that the encrypted
	//    DB snapshot is copied to. This Amazon Web Services Region is the same
	//    one where the CopyDBSnapshot operation is called that contains this presigned
	//    URL. For example, if you copy an encrypted DB snapshot from the us-west-2
	//    Amazon Web Services Region to the us-east-1 Amazon Web Services Region,
	//    then you call the CopyDBSnapshot operation in the us-east-1 Amazon Web
	//    Services Region and provide a presigned URL that contains a call to the
	//    CopyDBSnapshot operation in the us-west-2 Amazon Web Services Region.
	//    For this example, the DestinationRegion in the presigned URL must be set
	//    to the us-east-1 Amazon Web Services Region.
	//
	//    * KmsKeyId - The KMS key identifier for the KMS key to use to encrypt
	//    the copy of the DB snapshot in the destination Amazon Web Services Region.
	//    This is the same identifier for both the CopyDBSnapshot operation that
	//    is called in the destination Amazon Web Services Region, and the operation
	//    contained in the presigned URL.
	//
	//    * SourceDBSnapshotIdentifier - The DB snapshot identifier for the encrypted
	//    snapshot to be copied. This identifier must be in the Amazon Resource
	//    Name (ARN) format for the source Amazon Web Services Region. For example,
	//    if you are copying an encrypted DB snapshot from the us-west-2 Amazon
	//    Web Services Region, then your SourceDBSnapshotIdentifier looks like the
	//    following example: arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20161115.
	//
	// To learn how to generate a Signature Version 4 signed request, see Authenticating
	// Requests: Using Query Parameters (Amazon Web Services Signature Version 4)
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
	// and Signature Version 4 Signing Process (https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).
	//
	// If you are using an Amazon Web Services SDK tool or the CLI, you can specify
	// SourceRegion (or --source-region for the CLI) instead of specifying PreSignedUrl
	// manually. Specifying SourceRegion autogenerates a presigned URL that is a
	// valid request for the operation that can run in the source Amazon Web Services
	// Region.
	PreSignedUrl *string `type:"string"`

	// The identifier for the source DB snapshot.
	//
	// If the source snapshot is in the same Amazon Web Services Region as the copy,
	// specify a valid DB snapshot identifier. For example, you might specify rds:mysql-instance1-snapshot-20130805.
	//
	// If the source snapshot is in a different Amazon Web Services Region than
	// the copy, specify a valid DB snapshot ARN. For example, you might specify
	// arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805.
	//
	// If you are copying from a shared manual DB snapshot, this parameter must
	// be the Amazon Resource Name (ARN) of the shared DB snapshot.
	//
	// If you are copying an encrypted snapshot this parameter must be in the ARN
	// format for the source Amazon Web Services Region.
	//
	// Constraints:
	//
	//    * Must specify a valid system snapshot in the "available" state.
	//
	// Example: rds:mydb-2012-04-02-00-01
	//
	// Example: arn:aws:rds:us-west-2:123456789012:snapshot:mysql-instance1-snapshot-20130805
	//
	// SourceDBSnapshotIdentifier is a required field
	SourceDBSnapshotIdentifier *string `type:"string" required:"true"`

	// SourceRegion is the source region where the resource exists. This is not
	// sent over the wire and is only used for presigning. This value should always
	// have the same region as the source ARN.
	SourceRegion *string `type:"string" ignore:"true"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// The external custom Availability Zone (CAZ) identifier for the target CAZ.
	//
	// Example: rds-caz-aiqhTgQv.
	TargetCustomAvailabilityZone *string `type:"string"`

	// The identifier for the copy of the snapshot.
	//
	// Constraints:
	//
	//    * Can't be null, empty, or blank
	//
	//    * Must contain from 1 to 255 letters, numbers, or hyphens
	//
	//    * First character must be a letter
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens
	//
	// Example: my-db-snapshot
	//
	// TargetDBSnapshotIdentifier is a required field
	TargetDBSnapshotIdentifier *string `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 CopyDBSnapshotInput) 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 CopyDBSnapshotInput) GoString() string {
	return s.String()
}

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

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

// SetCopyOptionGroup sets the CopyOptionGroup field's value.
func (s *CopyDBSnapshotInput) SetCopyOptionGroup(v bool) *CopyDBSnapshotInput {
	s.CopyOptionGroup = &v
	return s
}

// SetCopyTags sets the CopyTags field's value.
func (s *CopyDBSnapshotInput) SetCopyTags(v bool) *CopyDBSnapshotInput {
	s.CopyTags = &v
	return s
}

// SetDestinationRegion sets the DestinationRegion field's value.
func (s *CopyDBSnapshotInput) SetDestinationRegion(v string) *CopyDBSnapshotInput {
	s.DestinationRegion = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *CopyDBSnapshotInput) SetKmsKeyId(v string) *CopyDBSnapshotInput {
	s.KmsKeyId = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *CopyDBSnapshotInput) SetOptionGroupName(v string) *CopyDBSnapshotInput {
	s.OptionGroupName = &v
	return s
}

// SetPreSignedUrl sets the PreSignedUrl field's value.
func (s *CopyDBSnapshotInput) SetPreSignedUrl(v string) *CopyDBSnapshotInput {
	s.PreSignedUrl = &v
	return s
}

// SetSourceDBSnapshotIdentifier sets the SourceDBSnapshotIdentifier field's value.
func (s *CopyDBSnapshotInput) SetSourceDBSnapshotIdentifier(v string) *CopyDBSnapshotInput {
	s.SourceDBSnapshotIdentifier = &v
	return s
}

// SetSourceRegion sets the SourceRegion field's value.
func (s *CopyDBSnapshotInput) SetSourceRegion(v string) *CopyDBSnapshotInput {
	s.SourceRegion = &v
	return s
}

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

// SetTargetCustomAvailabilityZone sets the TargetCustomAvailabilityZone field's value.
func (s *CopyDBSnapshotInput) SetTargetCustomAvailabilityZone(v string) *CopyDBSnapshotInput {
	s.TargetCustomAvailabilityZone = &v
	return s
}

// SetTargetDBSnapshotIdentifier sets the TargetDBSnapshotIdentifier field's value.
func (s *CopyDBSnapshotInput) SetTargetDBSnapshotIdentifier(v string) *CopyDBSnapshotInput {
	s.TargetDBSnapshotIdentifier = &v
	return s
}

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

	// Contains the details of an Amazon RDS DB snapshot.
	//
	// This data type is used as a response element in the DescribeDBSnapshots action.
	DBSnapshot *DBSnapshot `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 CopyDBSnapshotOutput) 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 CopyDBSnapshotOutput) GoString() string {
	return s.String()
}

// SetDBSnapshot sets the DBSnapshot field's value.
func (s *CopyDBSnapshotOutput) SetDBSnapshot(v *DBSnapshot) *CopyDBSnapshotOutput {
	s.DBSnapshot = v
	return s
}

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

	// The identifier for the source option group.
	//
	// Constraints:
	//
	//    * Must specify a valid option group.
	//
	// SourceOptionGroupIdentifier is a required field
	SourceOptionGroupIdentifier *string `type:"string" required:"true"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// The description for the copied option group.
	//
	// TargetOptionGroupDescription is a required field
	TargetOptionGroupDescription *string `type:"string" required:"true"`

	// The identifier for the copied option group.
	//
	// Constraints:
	//
	//    * Can't be null, empty, or blank
	//
	//    * Must contain from 1 to 255 letters, numbers, or hyphens
	//
	//    * First character must be a letter
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens
	//
	// Example: my-option-group
	//
	// TargetOptionGroupIdentifier is a required field
	TargetOptionGroupIdentifier *string `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 CopyOptionGroupInput) 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 CopyOptionGroupInput) GoString() string {
	return s.String()
}

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

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

// SetSourceOptionGroupIdentifier sets the SourceOptionGroupIdentifier field's value.
func (s *CopyOptionGroupInput) SetSourceOptionGroupIdentifier(v string) *CopyOptionGroupInput {
	s.SourceOptionGroupIdentifier = &v
	return s
}

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

// SetTargetOptionGroupDescription sets the TargetOptionGroupDescription field's value.
func (s *CopyOptionGroupInput) SetTargetOptionGroupDescription(v string) *CopyOptionGroupInput {
	s.TargetOptionGroupDescription = &v
	return s
}

// SetTargetOptionGroupIdentifier sets the TargetOptionGroupIdentifier field's value.
func (s *CopyOptionGroupInput) SetTargetOptionGroupIdentifier(v string) *CopyOptionGroupInput {
	s.TargetOptionGroupIdentifier = &v
	return s
}

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

	OptionGroup *OptionGroup `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 CopyOptionGroupOutput) 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 CopyOptionGroupOutput) GoString() string {
	return s.String()
}

// SetOptionGroup sets the OptionGroup field's value.
func (s *CopyOptionGroupOutput) SetOptionGroup(v *OptionGroup) *CopyOptionGroupOutput {
	s.OptionGroup = v
	return s
}

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

	// The name of the blue/green deployment.
	//
	// Constraints:
	//
	//    * Can't be the same as an existing blue/green deployment name in the same
	//    account and Amazon Web Services Region.
	//
	// BlueGreenDeploymentName is a required field
	BlueGreenDeploymentName *string `min:"1" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the source production database.
	//
	// Specify the database that you want to clone. The blue/green deployment creates
	// this database in the green environment. You can make updates to the database
	// in the green environment, such as an engine version upgrade. When you are
	// ready, you can switch the database in the green environment to be the production
	// database.
	//
	// Source is a required field
	Source *string `min:"1" type:"string" required:"true"`

	// Tags to assign to the blue/green deployment.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// The DB cluster parameter group associated with the Aurora DB cluster in the
	// green environment.
	//
	// To test parameter changes, specify a DB cluster parameter group that is different
	// from the one associated with the source DB cluster.
	TargetDBClusterParameterGroupName *string `min:"1" type:"string"`

	// Specify the DB instance class for the databases in the green environment.
	//
	// This parameter only applies to RDS DB instances, because DB instances within
	// an Aurora DB cluster can have multiple different instance classes. If you're
	// creating a blue/green deployment from an Aurora DB cluster, don't specify
	// this parameter. After the green environment is created, you can individually
	// modify the instance classes of the DB instances within the green DB cluster.
	TargetDBInstanceClass *string `min:"5" type:"string"`

	// The DB parameter group associated with the DB instance in the green environment.
	//
	// To test parameter changes, specify a DB parameter group that is different
	// from the one associated with the source DB instance.
	TargetDBParameterGroupName *string `min:"1" type:"string"`

	// The engine version of the database in the green environment.
	//
	// Specify the engine version to upgrade to in the green environment.
	TargetEngineVersion *string `min:"1" type:"string"`

	// Whether to upgrade the storage file system configuration on the green database.
	// This option migrates the green DB instance from the older 32-bit file system
	// to the preferred configuration. For more information, see Upgrading the storage
	// file system for a DB instance (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.UpgradeFileSystem).
	UpgradeTargetStorageConfig *bool `type:"boolean"`
}

// 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 CreateBlueGreenDeploymentInput) 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 CreateBlueGreenDeploymentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateBlueGreenDeploymentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateBlueGreenDeploymentInput"}
	if s.BlueGreenDeploymentName == nil {
		invalidParams.Add(request.NewErrParamRequired("BlueGreenDeploymentName"))
	}
	if s.BlueGreenDeploymentName != nil && len(*s.BlueGreenDeploymentName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BlueGreenDeploymentName", 1))
	}
	if s.Source == nil {
		invalidParams.Add(request.NewErrParamRequired("Source"))
	}
	if s.Source != nil && len(*s.Source) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Source", 1))
	}
	if s.TargetDBClusterParameterGroupName != nil && len(*s.TargetDBClusterParameterGroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TargetDBClusterParameterGroupName", 1))
	}
	if s.TargetDBInstanceClass != nil && len(*s.TargetDBInstanceClass) < 5 {
		invalidParams.Add(request.NewErrParamMinLen("TargetDBInstanceClass", 5))
	}
	if s.TargetDBParameterGroupName != nil && len(*s.TargetDBParameterGroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TargetDBParameterGroupName", 1))
	}
	if s.TargetEngineVersion != nil && len(*s.TargetEngineVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TargetEngineVersion", 1))
	}

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

// SetBlueGreenDeploymentName sets the BlueGreenDeploymentName field's value.
func (s *CreateBlueGreenDeploymentInput) SetBlueGreenDeploymentName(v string) *CreateBlueGreenDeploymentInput {
	s.BlueGreenDeploymentName = &v
	return s
}

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

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

// SetTargetDBClusterParameterGroupName sets the TargetDBClusterParameterGroupName field's value.
func (s *CreateBlueGreenDeploymentInput) SetTargetDBClusterParameterGroupName(v string) *CreateBlueGreenDeploymentInput {
	s.TargetDBClusterParameterGroupName = &v
	return s
}

// SetTargetDBInstanceClass sets the TargetDBInstanceClass field's value.
func (s *CreateBlueGreenDeploymentInput) SetTargetDBInstanceClass(v string) *CreateBlueGreenDeploymentInput {
	s.TargetDBInstanceClass = &v
	return s
}

// SetTargetDBParameterGroupName sets the TargetDBParameterGroupName field's value.
func (s *CreateBlueGreenDeploymentInput) SetTargetDBParameterGroupName(v string) *CreateBlueGreenDeploymentInput {
	s.TargetDBParameterGroupName = &v
	return s
}

// SetTargetEngineVersion sets the TargetEngineVersion field's value.
func (s *CreateBlueGreenDeploymentInput) SetTargetEngineVersion(v string) *CreateBlueGreenDeploymentInput {
	s.TargetEngineVersion = &v
	return s
}

// SetUpgradeTargetStorageConfig sets the UpgradeTargetStorageConfig field's value.
func (s *CreateBlueGreenDeploymentInput) SetUpgradeTargetStorageConfig(v bool) *CreateBlueGreenDeploymentInput {
	s.UpgradeTargetStorageConfig = &v
	return s
}

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

	// Details about a blue/green deployment.
	//
	// For more information, see Using Amazon RDS Blue/Green Deployments for database
	// updates (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments.html)
	// in the Amazon RDS User Guide and Using Amazon RDS Blue/Green Deployments
	// for database updates (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html)
	// in the Amazon Aurora User Guide.
	BlueGreenDeployment *BlueGreenDeployment `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 CreateBlueGreenDeploymentOutput) 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 CreateBlueGreenDeploymentOutput) GoString() string {
	return s.String()
}

// SetBlueGreenDeployment sets the BlueGreenDeployment field's value.
func (s *CreateBlueGreenDeploymentOutput) SetBlueGreenDeployment(v *BlueGreenDeployment) *CreateBlueGreenDeploymentOutput {
	s.BlueGreenDeployment = v
	return s
}

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

	// The name of an Amazon S3 bucket that contains database installation files
	// for your CEV. For example, a valid bucket name is my-custom-installation-files.
	DatabaseInstallationFilesS3BucketName *string `min:"3" type:"string"`

	// The Amazon S3 directory that contains the database installation files for
	// your CEV. For example, a valid bucket name is 123456789012/cev1. If this
	// setting isn't specified, no prefix is assumed.
	DatabaseInstallationFilesS3Prefix *string `min:"1" type:"string"`

	// An optional description of your CEV.
	Description *string `min:"1" type:"string"`

	// The database engine. RDS Custom for Oracle supports the following values:
	//
	//    * custom-oracle-ee
	//
	//    * custom-oracle-ee-cdb
	//
	//    * custom-oracle-se2
	//
	//    * custom-oracle-se2-cdb
	//
	// Engine is a required field
	Engine *string `min:"1" type:"string" required:"true"`

	// The name of your CEV. The name format is 19.customized_string. For example,
	// a valid CEV name is 19.my_cev1. This setting is required for RDS Custom for
	// Oracle, but optional for Amazon RDS. The combination of Engine and EngineVersion
	// is unique per customer per Region.
	//
	// EngineVersion is a required field
	EngineVersion *string `min:"1" type:"string" required:"true"`

	// The ID of the Amazon Machine Image (AMI). For RDS Custom for SQL Server,
	// an AMI ID is required to create a CEV. For RDS Custom for Oracle, the default
	// is the most recent AMI available, but you can specify an AMI ID that was
	// used in a different Oracle CEV. Find the AMIs used by your CEVs by calling
	// the DescribeDBEngineVersions (https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBEngineVersions.html)
	// operation.
	ImageId *string `min:"1" type:"string"`

	// The Amazon Web Services KMS key identifier for an encrypted CEV. A symmetric
	// encryption KMS key is required for RDS Custom, but optional for Amazon RDS.
	//
	// If you have an existing symmetric encryption KMS key in your account, you
	// can use it with RDS Custom. No further action is necessary. If you don't
	// already have a symmetric encryption KMS key in your account, follow the instructions
	// in Creating a symmetric encryption KMS key (https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)
	// in the Amazon Web Services Key Management Service Developer Guide.
	//
	// You can choose the same symmetric encryption key when you create a CEV and
	// a DB instance, or choose different keys.
	KMSKeyId *string `min:"1" type:"string"`

	// The CEV manifest, which is a JSON document that describes the installation
	// .zip files stored in Amazon S3. Specify the name/value pairs in a file or
	// a quoted string. RDS Custom applies the patches in the order in which they
	// are listed.
	//
	// The following JSON fields are valid:
	//
	// MediaImportTemplateVersion
	//
	// Version of the CEV manifest. The date is in the format YYYY-MM-DD.
	//
	// databaseInstallationFileNames
	//
	// Ordered list of installation files for the CEV.
	//
	// opatchFileNames
	//
	// Ordered list of OPatch installers used for the Oracle DB engine.
	//
	// psuRuPatchFileNames
	//
	// The PSU and RU patches for this CEV.
	//
	// OtherPatchFileNames
	//
	// The patches that are not in the list of PSU and RU patches. Amazon RDS applies
	// these patches after applying the PSU and RU patches.
	//
	// For more information, see Creating the CEV manifest (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev.html#custom-cev.preparing.manifest)
	// in the Amazon RDS User Guide.
	Manifest *string `min:"1" type:"string"`

	// The ARN of a CEV to use as a source for creating a new CEV. You can specify
	// a different Amazon Machine Imagine (AMI) by using either Source or UseAwsProvidedLatestImage.
	// You can't specify a different JSON manifest when you specify SourceCustomDbEngineVersionIdentifier.
	SourceCustomDbEngineVersionIdentifier *string `min:"1" type:"string"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// Specifies whether to use the latest service-provided Amazon Machine Image
	// (AMI) for the CEV. If you specify UseAwsProvidedLatestImage, you can't also
	// specify ImageId.
	UseAwsProvidedLatestImage *bool `type:"boolean"`
}

// 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 CreateCustomDBEngineVersionInput) 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 CreateCustomDBEngineVersionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateCustomDBEngineVersionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateCustomDBEngineVersionInput"}
	if s.DatabaseInstallationFilesS3BucketName != nil && len(*s.DatabaseInstallationFilesS3BucketName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseInstallationFilesS3BucketName", 3))
	}
	if s.DatabaseInstallationFilesS3Prefix != nil && len(*s.DatabaseInstallationFilesS3Prefix) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseInstallationFilesS3Prefix", 1))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.Engine == nil {
		invalidParams.Add(request.NewErrParamRequired("Engine"))
	}
	if s.Engine != nil && len(*s.Engine) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Engine", 1))
	}
	if s.EngineVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("EngineVersion"))
	}
	if s.EngineVersion != nil && len(*s.EngineVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EngineVersion", 1))
	}
	if s.ImageId != nil && len(*s.ImageId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ImageId", 1))
	}
	if s.KMSKeyId != nil && len(*s.KMSKeyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KMSKeyId", 1))
	}
	if s.Manifest != nil && len(*s.Manifest) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Manifest", 1))
	}
	if s.SourceCustomDbEngineVersionIdentifier != nil && len(*s.SourceCustomDbEngineVersionIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceCustomDbEngineVersionIdentifier", 1))
	}

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

// SetDatabaseInstallationFilesS3BucketName sets the DatabaseInstallationFilesS3BucketName field's value.
func (s *CreateCustomDBEngineVersionInput) SetDatabaseInstallationFilesS3BucketName(v string) *CreateCustomDBEngineVersionInput {
	s.DatabaseInstallationFilesS3BucketName = &v
	return s
}

// SetDatabaseInstallationFilesS3Prefix sets the DatabaseInstallationFilesS3Prefix field's value.
func (s *CreateCustomDBEngineVersionInput) SetDatabaseInstallationFilesS3Prefix(v string) *CreateCustomDBEngineVersionInput {
	s.DatabaseInstallationFilesS3Prefix = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateCustomDBEngineVersionInput) SetDescription(v string) *CreateCustomDBEngineVersionInput {
	s.Description = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *CreateCustomDBEngineVersionInput) SetEngine(v string) *CreateCustomDBEngineVersionInput {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *CreateCustomDBEngineVersionInput) SetEngineVersion(v string) *CreateCustomDBEngineVersionInput {
	s.EngineVersion = &v
	return s
}

// SetImageId sets the ImageId field's value.
func (s *CreateCustomDBEngineVersionInput) SetImageId(v string) *CreateCustomDBEngineVersionInput {
	s.ImageId = &v
	return s
}

// SetKMSKeyId sets the KMSKeyId field's value.
func (s *CreateCustomDBEngineVersionInput) SetKMSKeyId(v string) *CreateCustomDBEngineVersionInput {
	s.KMSKeyId = &v
	return s
}

// SetManifest sets the Manifest field's value.
func (s *CreateCustomDBEngineVersionInput) SetManifest(v string) *CreateCustomDBEngineVersionInput {
	s.Manifest = &v
	return s
}

// SetSourceCustomDbEngineVersionIdentifier sets the SourceCustomDbEngineVersionIdentifier field's value.
func (s *CreateCustomDBEngineVersionInput) SetSourceCustomDbEngineVersionIdentifier(v string) *CreateCustomDBEngineVersionInput {
	s.SourceCustomDbEngineVersionIdentifier = &v
	return s
}

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

// SetUseAwsProvidedLatestImage sets the UseAwsProvidedLatestImage field's value.
func (s *CreateCustomDBEngineVersionInput) SetUseAwsProvidedLatestImage(v bool) *CreateCustomDBEngineVersionInput {
	s.UseAwsProvidedLatestImage = &v
	return s
}

// This data type is used as a response element in the action DescribeDBEngineVersions.
type CreateCustomDBEngineVersionOutput struct {
	_ struct{} `type:"structure"`

	// The creation time of the DB engine version.
	CreateTime *time.Time `type:"timestamp"`

	// JSON string that lists the installation files and parameters that RDS Custom
	// uses to create a custom engine version (CEV). RDS Custom applies the patches
	// in the order in which they're listed in the manifest. You can set the Oracle
	// home, Oracle base, and UNIX/Linux user and group using the installation parameters.
	// For more information, see JSON fields in the CEV manifest (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev.preparing.html#custom-cev.preparing.manifest.fields)
	// in the Amazon RDS User Guide.
	CustomDBEngineVersionManifest *string `min:"1" type:"string"`

	// The description of the database engine.
	DBEngineDescription *string `type:"string"`

	// A value that indicates the source media provider of the AMI based on the
	// usage operation. Applicable for RDS Custom for SQL Server.
	DBEngineMediaType *string `type:"string"`

	// The ARN of the custom engine version.
	DBEngineVersionArn *string `type:"string"`

	// The description of the database engine version.
	DBEngineVersionDescription *string `type:"string"`

	// The name of the DB parameter group family for the database engine.
	DBParameterGroupFamily *string `type:"string"`

	// The name of the Amazon S3 bucket that contains your database installation
	// files.
	DatabaseInstallationFilesS3BucketName *string `type:"string"`

	// The Amazon S3 directory that contains the database installation files. If
	// not specified, then no prefix is assumed.
	DatabaseInstallationFilesS3Prefix *string `type:"string"`

	// The default character set for new instances of this engine version, if the
	// CharacterSetName parameter of the CreateDBInstance API isn't specified.
	DefaultCharacterSet *CharacterSet `type:"structure"`

	// The name of the database engine.
	Engine *string `type:"string"`

	// The version number of the database engine.
	EngineVersion *string `type:"string"`

	// The types of logs that the database engine has available for export to CloudWatch
	// Logs.
	ExportableLogTypes []*string `type:"list"`

	// The EC2 image
	Image *CustomDBEngineVersionAMI `type:"structure"`

	// The Amazon Web Services KMS key identifier for an encrypted CEV. This parameter
	// is required for RDS Custom, but optional for Amazon RDS.
	KMSKeyId *string `type:"string"`

	// The major engine version of the CEV.
	MajorEngineVersion *string `type:"string"`

	// The status of the DB engine version, either available or deprecated.
	Status *string `type:"string"`

	// A list of the supported CA certificate identifiers.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	SupportedCACertificateIdentifiers []*string `type:"list"`

	// A list of the character sets supported by this engine for the CharacterSetName
	// parameter of the CreateDBInstance operation.
	SupportedCharacterSets []*CharacterSet `locationNameList:"CharacterSet" type:"list"`

	// A list of the supported DB engine modes.
	SupportedEngineModes []*string `type:"list"`

	// A list of features supported by the DB engine.
	//
	// The supported features vary by DB engine and DB engine version.
	//
	// To determine the supported features for a specific DB engine and DB engine
	// version using the CLI, use the following command:
	//
	// aws rds describe-db-engine-versions --engine <engine_name> --engine-version
	// <engine_version>
	//
	// For example, to determine the supported features for RDS for PostgreSQL version
	// 13.3 using the CLI, use the following command:
	//
	// aws rds describe-db-engine-versions --engine postgres --engine-version 13.3
	//
	// The supported features are listed under SupportedFeatureNames in the output.
	SupportedFeatureNames []*string `type:"list"`

	// A list of the character sets supported by the Oracle DB engine for the NcharCharacterSetName
	// parameter of the CreateDBInstance operation.
	SupportedNcharCharacterSets []*CharacterSet `locationNameList:"CharacterSet" type:"list"`

	// A list of the time zones supported by this engine for the Timezone parameter
	// of the CreateDBInstance action.
	SupportedTimezones []*Timezone `locationNameList:"Timezone" type:"list"`

	// Indicates whether the engine version supports Babelfish for Aurora PostgreSQL.
	SupportsBabelfish *bool `type:"boolean"`

	// Indicates whether the engine version supports rotating the server certificate
	// without rebooting the DB instance.
	SupportsCertificateRotationWithoutRestart *bool `type:"boolean"`

	// Indicates whether you can use Aurora global databases with a specific DB
	// engine version.
	SupportsGlobalDatabases *bool `type:"boolean"`

	// Indicates whether the DB engine version supports zero-ETL integrations with
	// Amazon Redshift.
	SupportsIntegrations *bool `type:"boolean"`

	// Indicates whether the DB engine version supports Aurora Limitless Database.
	SupportsLimitlessDatabase *bool `type:"boolean"`

	// Indicates whether the DB engine version supports forwarding write operations
	// from reader DB instances to the writer DB instance in the DB cluster. By
	// default, write operations aren't allowed on reader DB instances.
	//
	// Valid for: Aurora DB clusters only
	SupportsLocalWriteForwarding *bool `type:"boolean"`

	// Indicates whether the engine version supports exporting the log types specified
	// by ExportableLogTypes to CloudWatch Logs.
	SupportsLogExportsToCloudwatchLogs *bool `type:"boolean"`

	// Indicates whether you can use Aurora parallel query with a specific DB engine
	// version.
	SupportsParallelQuery *bool `type:"boolean"`

	// Indicates whether the database engine version supports read replicas.
	SupportsReadReplica *bool `type:"boolean"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	TagList []*Tag `locationNameList:"Tag" type:"list"`

	// A list of engine versions that this database engine version can be upgraded
	// to.
	ValidUpgradeTarget []*UpgradeTarget `locationNameList:"UpgradeTarget" 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 CreateCustomDBEngineVersionOutput) 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 CreateCustomDBEngineVersionOutput) GoString() string {
	return s.String()
}

// SetCreateTime sets the CreateTime field's value.
func (s *CreateCustomDBEngineVersionOutput) SetCreateTime(v time.Time) *CreateCustomDBEngineVersionOutput {
	s.CreateTime = &v
	return s
}

// SetCustomDBEngineVersionManifest sets the CustomDBEngineVersionManifest field's value.
func (s *CreateCustomDBEngineVersionOutput) SetCustomDBEngineVersionManifest(v string) *CreateCustomDBEngineVersionOutput {
	s.CustomDBEngineVersionManifest = &v
	return s
}

// SetDBEngineDescription sets the DBEngineDescription field's value.
func (s *CreateCustomDBEngineVersionOutput) SetDBEngineDescription(v string) *CreateCustomDBEngineVersionOutput {
	s.DBEngineDescription = &v
	return s
}

// SetDBEngineMediaType sets the DBEngineMediaType field's value.
func (s *CreateCustomDBEngineVersionOutput) SetDBEngineMediaType(v string) *CreateCustomDBEngineVersionOutput {
	s.DBEngineMediaType = &v
	return s
}

// SetDBEngineVersionArn sets the DBEngineVersionArn field's value.
func (s *CreateCustomDBEngineVersionOutput) SetDBEngineVersionArn(v string) *CreateCustomDBEngineVersionOutput {
	s.DBEngineVersionArn = &v
	return s
}

// SetDBEngineVersionDescription sets the DBEngineVersionDescription field's value.
func (s *CreateCustomDBEngineVersionOutput) SetDBEngineVersionDescription(v string) *CreateCustomDBEngineVersionOutput {
	s.DBEngineVersionDescription = &v
	return s
}

// SetDBParameterGroupFamily sets the DBParameterGroupFamily field's value.
func (s *CreateCustomDBEngineVersionOutput) SetDBParameterGroupFamily(v string) *CreateCustomDBEngineVersionOutput {
	s.DBParameterGroupFamily = &v
	return s
}

// SetDatabaseInstallationFilesS3BucketName sets the DatabaseInstallationFilesS3BucketName field's value.
func (s *CreateCustomDBEngineVersionOutput) SetDatabaseInstallationFilesS3BucketName(v string) *CreateCustomDBEngineVersionOutput {
	s.DatabaseInstallationFilesS3BucketName = &v
	return s
}

// SetDatabaseInstallationFilesS3Prefix sets the DatabaseInstallationFilesS3Prefix field's value.
func (s *CreateCustomDBEngineVersionOutput) SetDatabaseInstallationFilesS3Prefix(v string) *CreateCustomDBEngineVersionOutput {
	s.DatabaseInstallationFilesS3Prefix = &v
	return s
}

// SetDefaultCharacterSet sets the DefaultCharacterSet field's value.
func (s *CreateCustomDBEngineVersionOutput) SetDefaultCharacterSet(v *CharacterSet) *CreateCustomDBEngineVersionOutput {
	s.DefaultCharacterSet = v
	return s
}

// SetEngine sets the Engine field's value.
func (s *CreateCustomDBEngineVersionOutput) SetEngine(v string) *CreateCustomDBEngineVersionOutput {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *CreateCustomDBEngineVersionOutput) SetEngineVersion(v string) *CreateCustomDBEngineVersionOutput {
	s.EngineVersion = &v
	return s
}

// SetExportableLogTypes sets the ExportableLogTypes field's value.
func (s *CreateCustomDBEngineVersionOutput) SetExportableLogTypes(v []*string) *CreateCustomDBEngineVersionOutput {
	s.ExportableLogTypes = v
	return s
}

// SetImage sets the Image field's value.
func (s *CreateCustomDBEngineVersionOutput) SetImage(v *CustomDBEngineVersionAMI) *CreateCustomDBEngineVersionOutput {
	s.Image = v
	return s
}

// SetKMSKeyId sets the KMSKeyId field's value.
func (s *CreateCustomDBEngineVersionOutput) SetKMSKeyId(v string) *CreateCustomDBEngineVersionOutput {
	s.KMSKeyId = &v
	return s
}

// SetMajorEngineVersion sets the MajorEngineVersion field's value.
func (s *CreateCustomDBEngineVersionOutput) SetMajorEngineVersion(v string) *CreateCustomDBEngineVersionOutput {
	s.MajorEngineVersion = &v
	return s
}

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

// SetSupportedCACertificateIdentifiers sets the SupportedCACertificateIdentifiers field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportedCACertificateIdentifiers(v []*string) *CreateCustomDBEngineVersionOutput {
	s.SupportedCACertificateIdentifiers = v
	return s
}

// SetSupportedCharacterSets sets the SupportedCharacterSets field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportedCharacterSets(v []*CharacterSet) *CreateCustomDBEngineVersionOutput {
	s.SupportedCharacterSets = v
	return s
}

// SetSupportedEngineModes sets the SupportedEngineModes field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportedEngineModes(v []*string) *CreateCustomDBEngineVersionOutput {
	s.SupportedEngineModes = v
	return s
}

// SetSupportedFeatureNames sets the SupportedFeatureNames field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportedFeatureNames(v []*string) *CreateCustomDBEngineVersionOutput {
	s.SupportedFeatureNames = v
	return s
}

// SetSupportedNcharCharacterSets sets the SupportedNcharCharacterSets field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportedNcharCharacterSets(v []*CharacterSet) *CreateCustomDBEngineVersionOutput {
	s.SupportedNcharCharacterSets = v
	return s
}

// SetSupportedTimezones sets the SupportedTimezones field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportedTimezones(v []*Timezone) *CreateCustomDBEngineVersionOutput {
	s.SupportedTimezones = v
	return s
}

// SetSupportsBabelfish sets the SupportsBabelfish field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportsBabelfish(v bool) *CreateCustomDBEngineVersionOutput {
	s.SupportsBabelfish = &v
	return s
}

// SetSupportsCertificateRotationWithoutRestart sets the SupportsCertificateRotationWithoutRestart field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportsCertificateRotationWithoutRestart(v bool) *CreateCustomDBEngineVersionOutput {
	s.SupportsCertificateRotationWithoutRestart = &v
	return s
}

// SetSupportsGlobalDatabases sets the SupportsGlobalDatabases field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportsGlobalDatabases(v bool) *CreateCustomDBEngineVersionOutput {
	s.SupportsGlobalDatabases = &v
	return s
}

// SetSupportsIntegrations sets the SupportsIntegrations field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportsIntegrations(v bool) *CreateCustomDBEngineVersionOutput {
	s.SupportsIntegrations = &v
	return s
}

// SetSupportsLimitlessDatabase sets the SupportsLimitlessDatabase field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportsLimitlessDatabase(v bool) *CreateCustomDBEngineVersionOutput {
	s.SupportsLimitlessDatabase = &v
	return s
}

// SetSupportsLocalWriteForwarding sets the SupportsLocalWriteForwarding field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportsLocalWriteForwarding(v bool) *CreateCustomDBEngineVersionOutput {
	s.SupportsLocalWriteForwarding = &v
	return s
}

// SetSupportsLogExportsToCloudwatchLogs sets the SupportsLogExportsToCloudwatchLogs field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportsLogExportsToCloudwatchLogs(v bool) *CreateCustomDBEngineVersionOutput {
	s.SupportsLogExportsToCloudwatchLogs = &v
	return s
}

// SetSupportsParallelQuery sets the SupportsParallelQuery field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportsParallelQuery(v bool) *CreateCustomDBEngineVersionOutput {
	s.SupportsParallelQuery = &v
	return s
}

// SetSupportsReadReplica sets the SupportsReadReplica field's value.
func (s *CreateCustomDBEngineVersionOutput) SetSupportsReadReplica(v bool) *CreateCustomDBEngineVersionOutput {
	s.SupportsReadReplica = &v
	return s
}

// SetTagList sets the TagList field's value.
func (s *CreateCustomDBEngineVersionOutput) SetTagList(v []*Tag) *CreateCustomDBEngineVersionOutput {
	s.TagList = v
	return s
}

// SetValidUpgradeTarget sets the ValidUpgradeTarget field's value.
func (s *CreateCustomDBEngineVersionOutput) SetValidUpgradeTarget(v []*UpgradeTarget) *CreateCustomDBEngineVersionOutput {
	s.ValidUpgradeTarget = v
	return s
}

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

	// The identifier to use for the new endpoint. This parameter is stored as a
	// lowercase string.
	//
	// DBClusterEndpointIdentifier is a required field
	DBClusterEndpointIdentifier *string `type:"string" required:"true"`

	// The DB cluster identifier of the DB cluster associated with the endpoint.
	// This parameter is stored as a lowercase string.
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// The type of the endpoint, one of: READER, WRITER, ANY.
	//
	// EndpointType is a required field
	EndpointType *string `type:"string" required:"true"`

	// List of DB instance identifiers that aren't part of the custom endpoint group.
	// All other eligible instances are reachable through the custom endpoint. This
	// parameter is relevant only if the list of static members is empty.
	ExcludedMembers []*string `type:"list"`

	// List of DB instance identifiers that are part of the custom endpoint group.
	StaticMembers []*string `type:"list"`

	// The tags to be assigned to the Amazon RDS resource.
	Tags []*Tag `locationNameList:"Tag" 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 CreateDBClusterEndpointInput) 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 CreateDBClusterEndpointInput) GoString() string {
	return s.String()
}

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

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

// SetDBClusterEndpointIdentifier sets the DBClusterEndpointIdentifier field's value.
func (s *CreateDBClusterEndpointInput) SetDBClusterEndpointIdentifier(v string) *CreateDBClusterEndpointInput {
	s.DBClusterEndpointIdentifier = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *CreateDBClusterEndpointInput) SetDBClusterIdentifier(v string) *CreateDBClusterEndpointInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetEndpointType sets the EndpointType field's value.
func (s *CreateDBClusterEndpointInput) SetEndpointType(v string) *CreateDBClusterEndpointInput {
	s.EndpointType = &v
	return s
}

// SetExcludedMembers sets the ExcludedMembers field's value.
func (s *CreateDBClusterEndpointInput) SetExcludedMembers(v []*string) *CreateDBClusterEndpointInput {
	s.ExcludedMembers = v
	return s
}

// SetStaticMembers sets the StaticMembers field's value.
func (s *CreateDBClusterEndpointInput) SetStaticMembers(v []*string) *CreateDBClusterEndpointInput {
	s.StaticMembers = v
	return s
}

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

// This data type represents the information you need to connect to an Amazon
// Aurora DB cluster. This data type is used as a response element in the following
// actions:
//
//   - CreateDBClusterEndpoint
//
//   - DescribeDBClusterEndpoints
//
//   - ModifyDBClusterEndpoint
//
//   - DeleteDBClusterEndpoint
//
// For the data structure that represents Amazon RDS DB instance endpoints,
// see Endpoint.
type CreateDBClusterEndpointOutput struct {
	_ struct{} `type:"structure"`

	// The type associated with a custom endpoint. One of: READER, WRITER, ANY.
	CustomEndpointType *string `type:"string"`

	// The Amazon Resource Name (ARN) for the endpoint.
	DBClusterEndpointArn *string `type:"string"`

	// The identifier associated with the endpoint. This parameter is stored as
	// a lowercase string.
	DBClusterEndpointIdentifier *string `type:"string"`

	// A unique system-generated identifier for an endpoint. It remains the same
	// for the whole life of the endpoint.
	DBClusterEndpointResourceIdentifier *string `type:"string"`

	// The DB cluster identifier of the DB cluster associated with the endpoint.
	// This parameter is stored as a lowercase string.
	DBClusterIdentifier *string `type:"string"`

	// The DNS address of the endpoint.
	Endpoint *string `type:"string"`

	// The type of the endpoint. One of: READER, WRITER, CUSTOM.
	EndpointType *string `type:"string"`

	// List of DB instance identifiers that aren't part of the custom endpoint group.
	// All other eligible instances are reachable through the custom endpoint. Only
	// relevant if the list of static members is empty.
	ExcludedMembers []*string `type:"list"`

	// List of DB instance identifiers that are part of the custom endpoint group.
	StaticMembers []*string `type:"list"`

	// The current status of the endpoint. One of: creating, available, deleting,
	// inactive, modifying. The inactive state applies to an endpoint that can't
	// be used for a certain kind of cluster, such as a writer endpoint for a read-only
	// secondary cluster in a global database.
	Status *string `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 CreateDBClusterEndpointOutput) 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 CreateDBClusterEndpointOutput) GoString() string {
	return s.String()
}

// SetCustomEndpointType sets the CustomEndpointType field's value.
func (s *CreateDBClusterEndpointOutput) SetCustomEndpointType(v string) *CreateDBClusterEndpointOutput {
	s.CustomEndpointType = &v
	return s
}

// SetDBClusterEndpointArn sets the DBClusterEndpointArn field's value.
func (s *CreateDBClusterEndpointOutput) SetDBClusterEndpointArn(v string) *CreateDBClusterEndpointOutput {
	s.DBClusterEndpointArn = &v
	return s
}

// SetDBClusterEndpointIdentifier sets the DBClusterEndpointIdentifier field's value.
func (s *CreateDBClusterEndpointOutput) SetDBClusterEndpointIdentifier(v string) *CreateDBClusterEndpointOutput {
	s.DBClusterEndpointIdentifier = &v
	return s
}

// SetDBClusterEndpointResourceIdentifier sets the DBClusterEndpointResourceIdentifier field's value.
func (s *CreateDBClusterEndpointOutput) SetDBClusterEndpointResourceIdentifier(v string) *CreateDBClusterEndpointOutput {
	s.DBClusterEndpointResourceIdentifier = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *CreateDBClusterEndpointOutput) SetDBClusterIdentifier(v string) *CreateDBClusterEndpointOutput {
	s.DBClusterIdentifier = &v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *CreateDBClusterEndpointOutput) SetEndpoint(v string) *CreateDBClusterEndpointOutput {
	s.Endpoint = &v
	return s
}

// SetEndpointType sets the EndpointType field's value.
func (s *CreateDBClusterEndpointOutput) SetEndpointType(v string) *CreateDBClusterEndpointOutput {
	s.EndpointType = &v
	return s
}

// SetExcludedMembers sets the ExcludedMembers field's value.
func (s *CreateDBClusterEndpointOutput) SetExcludedMembers(v []*string) *CreateDBClusterEndpointOutput {
	s.ExcludedMembers = v
	return s
}

// SetStaticMembers sets the StaticMembers field's value.
func (s *CreateDBClusterEndpointOutput) SetStaticMembers(v []*string) *CreateDBClusterEndpointOutput {
	s.StaticMembers = v
	return s
}

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

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

	// The amount of storage in gibibytes (GiB) to allocate to each DB instance
	// in the Multi-AZ DB cluster.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	//
	// This setting is required to create a Multi-AZ DB cluster.
	AllocatedStorage *int64 `type:"integer"`

	// Specifies whether minor engine upgrades are applied automatically to the
	// DB cluster during the maintenance window. By default, minor engine upgrades
	// are applied automatically.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	AutoMinorVersionUpgrade *bool `type:"boolean"`

	// A list of Availability Zones (AZs) where you specifically want to create
	// DB instances in the DB cluster.
	//
	// For information on AZs, see Availability Zones (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.RegionsAndAvailabilityZones.html#Concepts.RegionsAndAvailabilityZones.AvailabilityZones)
	// in the Amazon Aurora User Guide.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	//
	// Constraints:
	//
	//    * Can't specify more than three AZs.
	AvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`

	// The target backtrack window, in seconds. To disable backtracking, set this
	// value to 0.
	//
	// Valid for Cluster Type: Aurora MySQL DB clusters only
	//
	// Default: 0
	//
	// Constraints:
	//
	//    * If specified, this value must be set to a number from 0 to 259,200 (72
	//    hours).
	BacktrackWindow *int64 `type:"long"`

	// The number of days for which automated backups are retained.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Default: 1
	//
	// Constraints:
	//
	//    * Must be a value from 1 to 35.
	BackupRetentionPeriod *int64 `type:"integer"`

	// The CA certificate identifier to use for the DB cluster's server certificate.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters
	CACertificateIdentifier *string `type:"string"`

	// The name of the character set (CharacterSet) to associate the DB cluster
	// with.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	CharacterSetName *string `type:"string"`

	// Specifies whether to copy all tags from the DB cluster to snapshots of the
	// DB cluster. The default is not to copy them.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	CopyTagsToSnapshot *bool `type:"boolean"`

	// The identifier for this DB cluster. This parameter is stored as a lowercase
	// string.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 (for Aurora DB clusters) or 1 to 52 (for Multi-AZ
	//    DB clusters) letters, numbers, or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Example: my-cluster1
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// The compute and memory capacity of each DB instance in the Multi-AZ DB cluster,
	// for example db.m6gd.xlarge. Not all DB instance classes are available in
	// all Amazon Web Services Regions, or for all database engines.
	//
	// For the full list of DB instance classes and availability for your engine,
	// see DB instance class (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
	// in the Amazon RDS User Guide.
	//
	// This setting is required to create a Multi-AZ DB cluster.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	DBClusterInstanceClass *string `type:"string"`

	// The name of the DB cluster parameter group to associate with this DB cluster.
	// If you don't specify a value, then the default DB cluster parameter group
	// for the specified DB engine and version is used.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Constraints:
	//
	//    * If supplied, must match the name of an existing DB cluster parameter
	//    group.
	DBClusterParameterGroupName *string `type:"string"`

	// A DB subnet group to associate with this DB cluster.
	//
	// This setting is required to create a Multi-AZ DB cluster.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Constraints:
	//
	//    * Must match the name of an existing DB subnet group.
	//
	// Example: mydbsubnetgroup
	DBSubnetGroupName *string `type:"string"`

	// Reserved for future use.
	DBSystemId *string `type:"string"`

	// The name for your database of up to 64 alphanumeric characters. A database
	// named postgres is always created. If this parameter is specified, an additional
	// database with this name is created.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	DatabaseName *string `type:"string"`

	// Specifies whether the DB cluster has deletion protection enabled. The database
	// can't be deleted when deletion protection is enabled. By default, deletion
	// protection isn't enabled.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	DeletionProtection *bool `type:"boolean"`

	// DestinationRegion is used for presigning the request to a given region.
	DestinationRegion *string `type:"string"`

	// The Active Directory directory ID to create the DB cluster in.
	//
	// For Amazon Aurora DB clusters, Amazon RDS can use Kerberos authentication
	// to authenticate users that connect to the DB cluster.
	//
	// For more information, see Kerberos authentication (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/kerberos-authentication.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	Domain *string `type:"string"`

	// The name of the IAM role to use when making API calls to the Directory Service.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	DomainIAMRoleName *string `type:"string"`

	// The list of log types that need to be enabled for exporting to CloudWatch
	// Logs.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// The following values are valid for each DB engine:
	//
	//    * Aurora MySQL - audit | error | general | slowquery
	//
	//    * Aurora PostgreSQL - postgresql
	//
	//    * RDS for MySQL - error | general | slowquery
	//
	//    * RDS for PostgreSQL - postgresql | upgrade
	//
	// For more information about exporting CloudWatch Logs for Amazon RDS, see
	// Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
	// in the Amazon RDS User Guide.
	//
	// For more information about exporting CloudWatch Logs for Amazon Aurora, see
	// Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
	// in the Amazon Aurora User Guide.
	EnableCloudwatchLogsExports []*string `type:"list"`

	// Specifies whether to enable this DB cluster to forward write operations to
	// the primary cluster of a global cluster (Aurora global database). By default,
	// write operations are not allowed on Aurora DB clusters that are secondary
	// clusters in an Aurora global database.
	//
	// You can set this value only on Aurora DB clusters that are members of an
	// Aurora global database. With this parameter enabled, a secondary cluster
	// can forward writes to the current primary cluster, and the resulting changes
	// are replicated back to this cluster. For the primary DB cluster of an Aurora
	// global database, this value is used immediately if the primary is demoted
	// by a global cluster API operation, but it does nothing until then.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	EnableGlobalWriteForwarding *bool `type:"boolean"`

	// Specifies whether to enable the HTTP endpoint for the DB cluster. By default,
	// the HTTP endpoint isn't enabled.
	//
	// When enabled, the HTTP endpoint provides a connectionless web service API
	// (RDS Data API) for running SQL queries on the DB cluster. You can also query
	// your database from inside the RDS console with the RDS query editor.
	//
	// RDS Data API is supported with the following DB clusters:
	//
	//    * Aurora PostgreSQL Serverless v2 and provisioned
	//
	//    * Aurora PostgreSQL and Aurora MySQL Serverless v1
	//
	// For more information, see Using RDS Data API (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	EnableHttpEndpoint *bool `type:"boolean"`

	// Specifies whether to enable mapping of Amazon Web Services Identity and Access
	// Management (IAM) accounts to database accounts. By default, mapping isn't
	// enabled.
	//
	// For more information, see IAM Database Authentication (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	EnableIAMDatabaseAuthentication *bool `type:"boolean"`

	// Specifies whether to enable Aurora Limitless Database. You must enable Aurora
	// Limitless Database to create a DB shard group.
	//
	// Valid for: Aurora DB clusters only
	EnableLimitlessDatabase *bool `type:"boolean"`

	// Specifies whether read replicas can forward write operations to the writer
	// DB instance in the DB cluster. By default, write operations aren't allowed
	// on reader DB instances.
	//
	// Valid for: Aurora DB clusters only
	EnableLocalWriteForwarding *bool `type:"boolean"`

	// Specifies whether to turn on Performance Insights for the DB cluster.
	//
	// For more information, see Using Amazon Performance Insights (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html)
	// in the Amazon RDS User Guide.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	EnablePerformanceInsights *bool `type:"boolean"`

	// The database engine to use for this DB cluster.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Valid Values:
	//
	//    * aurora-mysql
	//
	//    * aurora-postgresql
	//
	//    * mysql
	//
	//    * postgres
	//
	//    * neptune - For information about using Amazon Neptune, see the Amazon
	//    Neptune User Guide (https://docs.aws.amazon.com/neptune/latest/userguide/intro.html).
	//
	// Engine is a required field
	Engine *string `type:"string" required:"true"`

	// The life cycle type for this DB cluster.
	//
	// By default, this value is set to open-source-rds-extended-support, which
	// enrolls your DB cluster into Amazon RDS Extended Support. At the end of standard
	// support, you can avoid charges for Extended Support by setting the value
	// to open-source-rds-extended-support-disabled. In this case, creating the
	// DB cluster will fail if the DB major version is past its end of standard
	// support date.
	//
	// You can use this setting to enroll your DB cluster into Amazon RDS Extended
	// Support. With RDS Extended Support, you can run the selected major engine
	// version on your DB cluster past the end of standard support for that engine
	// version. For more information, see the following sections:
	//
	//    * Amazon Aurora (PostgreSQL only) - Using Amazon RDS Extended Support
	//    (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/extended-support.html)
	//    in the Amazon Aurora User Guide
	//
	//    * Amazon RDS - Using Amazon RDS Extended Support (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html)
	//    in the Amazon RDS User Guide
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Valid Values: open-source-rds-extended-support | open-source-rds-extended-support-disabled
	//
	// Default: open-source-rds-extended-support
	EngineLifecycleSupport *string `type:"string"`

	// The DB engine mode of the DB cluster, either provisioned or serverless.
	//
	// The serverless engine mode only applies for Aurora Serverless v1 DB clusters.
	// Aurora Serverless v2 DB clusters use the provisioned engine mode.
	//
	// For information about limitations and requirements for Serverless DB clusters,
	// see the following sections in the Amazon Aurora User Guide:
	//
	//    * Limitations of Aurora Serverless v1 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html#aurora-serverless.limitations)
	//
	//    * Requirements for Aurora Serverless v2 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html)
	//
	// Valid for Cluster Type: Aurora DB clusters only
	EngineMode *string `type:"string"`

	// The version number of the database engine to use.
	//
	// To list all of the available engine versions for Aurora MySQL version 2 (5.7-compatible)
	// and version 3 (MySQL 8.0-compatible), use the following command:
	//
	// aws rds describe-db-engine-versions --engine aurora-mysql --query "DBEngineVersions[].EngineVersion"
	//
	// You can supply either 5.7 or 8.0 to use the default engine version for Aurora
	// MySQL version 2 or version 3, respectively.
	//
	// To list all of the available engine versions for Aurora PostgreSQL, use the
	// following command:
	//
	// aws rds describe-db-engine-versions --engine aurora-postgresql --query "DBEngineVersions[].EngineVersion"
	//
	// To list all of the available engine versions for RDS for MySQL, use the following
	// command:
	//
	// aws rds describe-db-engine-versions --engine mysql --query "DBEngineVersions[].EngineVersion"
	//
	// To list all of the available engine versions for RDS for PostgreSQL, use
	// the following command:
	//
	// aws rds describe-db-engine-versions --engine postgres --query "DBEngineVersions[].EngineVersion"
	//
	// For information about a specific engine, see the following topics:
	//
	//    * Aurora MySQL - see Database engine updates for Amazon Aurora MySQL (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.html)
	//    in the Amazon Aurora User Guide.
	//
	//    * Aurora PostgreSQL - see Amazon Aurora PostgreSQL releases and engine
	//    versions (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html)
	//    in the Amazon Aurora User Guide.
	//
	//    * RDS for MySQL - see Amazon RDS for MySQL (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt)
	//    in the Amazon RDS User Guide.
	//
	//    * RDS for PostgreSQL - see Amazon RDS for PostgreSQL (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts)
	//    in the Amazon RDS User Guide.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	EngineVersion *string `type:"string"`

	// The global cluster ID of an Aurora cluster that becomes the primary cluster
	// in the new global database cluster.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	GlobalClusterIdentifier *string `type:"string"`

	// The amount of Provisioned IOPS (input/output operations per second) to be
	// initially allocated for each DB instance in the Multi-AZ DB cluster.
	//
	// For information about valid IOPS values, see Provisioned IOPS storage (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#USER_PIOPS)
	// in the Amazon RDS User Guide.
	//
	// This setting is required to create a Multi-AZ DB cluster.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	//
	// Constraints:
	//
	//    * Must be a multiple between .5 and 50 of the storage amount for the DB
	//    cluster.
	Iops *int64 `type:"integer"`

	// The Amazon Web Services KMS key identifier for an encrypted DB cluster.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key. To use a KMS key in a different Amazon
	// Web Services account, specify the key ARN or alias ARN.
	//
	// When a KMS key isn't specified in KmsKeyId:
	//
	//    * If ReplicationSourceIdentifier identifies an encrypted source, then
	//    Amazon RDS uses the KMS key used to encrypt the source. Otherwise, Amazon
	//    RDS uses your default KMS key.
	//
	//    * If the StorageEncrypted parameter is enabled and ReplicationSourceIdentifier
	//    isn't specified, then Amazon RDS uses your default KMS key.
	//
	// There is a default KMS key for your Amazon Web Services account. Your Amazon
	// Web Services account has a different default KMS key for each Amazon Web
	// Services Region.
	//
	// If you create a read replica of an encrypted DB cluster in another Amazon
	// Web Services Region, make sure to set KmsKeyId to a KMS key identifier that
	// is valid in the destination Amazon Web Services Region. This KMS key is used
	// to encrypt the read replica in that Amazon Web Services Region.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	KmsKeyId *string `type:"string"`

	// Specifies whether to manage the master user password with Amazon Web Services
	// Secrets Manager.
	//
	// For more information, see Password management with Amazon Web Services Secrets
	// Manager (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html)
	// in the Amazon RDS User Guide and Password management with Amazon Web Services
	// Secrets Manager (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Constraints:
	//
	//    * Can't manage the master user password with Amazon Web Services Secrets
	//    Manager if MasterUserPassword is specified.
	ManageMasterUserPassword *bool `type:"boolean"`

	// The password for the master database user.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Constraints:
	//
	//    * Must contain from 8 to 41 characters.
	//
	//    * Can contain any printable ASCII character except "/", """, or "@".
	//
	//    * Can't be specified if ManageMasterUserPassword is turned on.
	MasterUserPassword *string `type:"string"`

	// The Amazon Web Services KMS key identifier to encrypt a secret that is automatically
	// generated and managed in Amazon Web Services Secrets Manager.
	//
	// This setting is valid only if the master user password is managed by RDS
	// in Amazon Web Services Secrets Manager for the DB cluster.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key. To use a KMS key in a different Amazon
	// Web Services account, specify the key ARN or alias ARN.
	//
	// If you don't specify MasterUserSecretKmsKeyId, then the aws/secretsmanager
	// KMS key is used to encrypt the secret. If the secret is in a different Amazon
	// Web Services account, then you can't use the aws/secretsmanager KMS key to
	// encrypt the secret, and you must use a customer managed KMS key.
	//
	// There is a default KMS key for your Amazon Web Services account. Your Amazon
	// Web Services account has a different default KMS key for each Amazon Web
	// Services Region.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	MasterUserSecretKmsKeyId *string `type:"string"`

	// The name of the master user for the DB cluster.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Constraints:
	//
	//    * Must be 1 to 16 letters or numbers.
	//
	//    * First character must be a letter.
	//
	//    * Can't be a reserved word for the chosen database engine.
	MasterUsername *string `type:"string"`

	// The interval, in seconds, between points when Enhanced Monitoring metrics
	// are collected for the DB cluster. To turn off collecting Enhanced Monitoring
	// metrics, specify 0.
	//
	// If MonitoringRoleArn is specified, also set MonitoringInterval to a value
	// other than 0.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	//
	// Valid Values: 0 | 1 | 5 | 10 | 15 | 30 | 60
	//
	// Default: 0
	MonitoringInterval *int64 `type:"integer"`

	// The Amazon Resource Name (ARN) for the IAM role that permits RDS to send
	// Enhanced Monitoring metrics to Amazon CloudWatch Logs. An example is arn:aws:iam:123456789012:role/emaccess.
	// For information on creating a monitoring role, see Setting up and enabling
	// Enhanced Monitoring (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling)
	// in the Amazon RDS User Guide.
	//
	// If MonitoringInterval is set to a value other than 0, supply a MonitoringRoleArn
	// value.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	MonitoringRoleArn *string `type:"string"`

	// The network type of the DB cluster.
	//
	// The network type is determined by the DBSubnetGroup specified for the DB
	// cluster. A DBSubnetGroup can support only the IPv4 protocol or the IPv4 and
	// the IPv6 protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	//
	// Valid Values: IPV4 | DUAL
	NetworkType *string `type:"string"`

	// The option group to associate the DB cluster with.
	//
	// DB clusters are associated with a default option group that can't be modified.
	OptionGroupName *string `type:"string"`

	// The Amazon Web Services KMS key identifier for encryption of Performance
	// Insights data.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	//
	// If you don't specify a value for PerformanceInsightsKMSKeyId, then Amazon
	// RDS uses your default KMS key. There is a default KMS key for your Amazon
	// Web Services account. Your Amazon Web Services account has a different default
	// KMS key for each Amazon Web Services Region.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	PerformanceInsightsKMSKeyId *string `type:"string"`

	// The number of days to retain Performance Insights data.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	//
	// Valid Values:
	//
	//    * 7
	//
	//    * month * 31, where month is a number of months from 1-23. Examples: 93
	//    (3 months * 31), 341 (11 months * 31), 589 (19 months * 31)
	//
	//    * 731
	//
	// Default: 7 days
	//
	// If you specify a retention period that isn't valid, such as 94, Amazon RDS
	// issues an error.
	PerformanceInsightsRetentionPeriod *int64 `type:"integer"`

	// The port number on which the instances in the DB cluster accept connections.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Valid Values: 1150-65535
	//
	// Default:
	//
	//    * RDS for MySQL and Aurora MySQL - 3306
	//
	//    * RDS for PostgreSQL and Aurora PostgreSQL - 5432
	Port *int64 `type:"integer"`

	// When you are replicating a DB cluster from one Amazon Web Services GovCloud
	// (US) Region to another, an URL that contains a Signature Version 4 signed
	// request for the CreateDBCluster operation to be called in the source Amazon
	// Web Services Region where the DB cluster is replicated from. Specify PreSignedUrl
	// only when you are performing cross-Region replication from an encrypted DB
	// cluster.
	//
	// The presigned URL must be a valid request for the CreateDBCluster API operation
	// that can run in the source Amazon Web Services Region that contains the encrypted
	// DB cluster to copy.
	//
	// The presigned URL request must contain the following parameter values:
	//
	//    * KmsKeyId - The KMS key identifier for the KMS key to use to encrypt
	//    the copy of the DB cluster in the destination Amazon Web Services Region.
	//    This should refer to the same KMS key for both the CreateDBCluster operation
	//    that is called in the destination Amazon Web Services Region, and the
	//    operation contained in the presigned URL.
	//
	//    * DestinationRegion - The name of the Amazon Web Services Region that
	//    Aurora read replica will be created in.
	//
	//    * ReplicationSourceIdentifier - The DB cluster identifier for the encrypted
	//    DB cluster to be copied. This identifier must be in the Amazon Resource
	//    Name (ARN) format for the source Amazon Web Services Region. For example,
	//    if you are copying an encrypted DB cluster from the us-west-2 Amazon Web
	//    Services Region, then your ReplicationSourceIdentifier would look like
	//    Example: arn:aws:rds:us-west-2:123456789012:cluster:aurora-cluster1.
	//
	// To learn how to generate a Signature Version 4 signed request, see Authenticating
	// Requests: Using Query Parameters (Amazon Web Services Signature Version 4)
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
	// and Signature Version 4 Signing Process (https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).
	//
	// If you are using an Amazon Web Services SDK tool or the CLI, you can specify
	// SourceRegion (or --source-region for the CLI) instead of specifying PreSignedUrl
	// manually. Specifying SourceRegion autogenerates a presigned URL that is a
	// valid request for the operation that can run in the source Amazon Web Services
	// Region.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	PreSignedUrl *string `type:"string"`

	// The daily time range during which automated backups are created if automated
	// backups are enabled using the BackupRetentionPeriod parameter.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// The default is a 30-minute window selected at random from an 8-hour block
	// of time for each Amazon Web Services Region. To view the time blocks available,
	// see Backup window (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html#Aurora.Managing.Backups.BackupWindow)
	// in the Amazon Aurora User Guide.
	//
	// Constraints:
	//
	//    * Must be in the format hh24:mi-hh24:mi.
	//
	//    * Must be in Universal Coordinated Time (UTC).
	//
	//    * Must not conflict with the preferred maintenance window.
	//
	//    * Must be at least 30 minutes.
	PreferredBackupWindow *string `type:"string"`

	// The weekly time range during which system maintenance can occur.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// The default is a 30-minute window selected at random from an 8-hour block
	// of time for each Amazon Web Services Region, occurring on a random day of
	// the week. To see the time blocks available, see Adjusting the Preferred DB
	// Cluster Maintenance Window (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow.Aurora)
	// in the Amazon Aurora User Guide.
	//
	// Constraints:
	//
	//    * Must be in the format ddd:hh24:mi-ddd:hh24:mi.
	//
	//    * Days must be one of Mon | Tue | Wed | Thu | Fri | Sat | Sun.
	//
	//    * Must be in Universal Coordinated Time (UTC).
	//
	//    * Must be at least 30 minutes.
	PreferredMaintenanceWindow *string `type:"string"`

	// Specifies whether the DB cluster is publicly accessible.
	//
	// When the DB cluster is publicly accessible and you connect from outside of
	// the DB cluster's virtual private cloud (VPC), its Domain Name System (DNS)
	// endpoint resolves to the public IP address. When you connect from within
	// the same VPC as the DB cluster, the endpoint resolves to the private IP address.
	// Access to the DB cluster is ultimately controlled by the security group it
	// uses. That public access isn't permitted if the security group assigned to
	// the DB cluster doesn't permit it.
	//
	// When the DB cluster isn't publicly accessible, it is an internal DB cluster
	// with a DNS name that resolves to a private IP address.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	//
	// Default: The default behavior varies depending on whether DBSubnetGroupName
	// is specified.
	//
	// If DBSubnetGroupName isn't specified, and PubliclyAccessible isn't specified,
	// the following applies:
	//
	//    * If the default VPC in the target Region doesn’t have an internet gateway
	//    attached to it, the DB cluster is private.
	//
	//    * If the default VPC in the target Region has an internet gateway attached
	//    to it, the DB cluster is public.
	//
	// If DBSubnetGroupName is specified, and PubliclyAccessible isn't specified,
	// the following applies:
	//
	//    * If the subnets are part of a VPC that doesn’t have an internet gateway
	//    attached to it, the DB cluster is private.
	//
	//    * If the subnets are part of a VPC that has an internet gateway attached
	//    to it, the DB cluster is public.
	PubliclyAccessible *bool `type:"boolean"`

	// Reserved for future use.
	RdsCustomClusterConfiguration *RdsCustomClusterConfiguration `type:"structure"`

	// The Amazon Resource Name (ARN) of the source DB instance or DB cluster if
	// this DB cluster is created as a read replica.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	ReplicationSourceIdentifier *string `type:"string"`

	// For DB clusters in serverless DB engine mode, the scaling properties of the
	// DB cluster.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	ScalingConfiguration *ScalingConfiguration `type:"structure"`

	// Contains the scaling configuration of an Aurora Serverless v2 DB cluster.
	//
	// For more information, see Using Amazon Aurora Serverless v2 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html)
	// in the Amazon Aurora User Guide.
	ServerlessV2ScalingConfiguration *ServerlessV2ScalingConfiguration `type:"structure"`

	// SourceRegion is the source region where the resource exists. This is not
	// sent over the wire and is only used for presigning. This value should always
	// have the same region as the source ARN.
	SourceRegion *string `type:"string" ignore:"true"`

	// Specifies whether the DB cluster is encrypted.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	StorageEncrypted *bool `type:"boolean"`

	// The storage type to associate with the DB cluster.
	//
	// For information on storage types for Aurora DB clusters, see Storage configurations
	// for Amazon Aurora DB clusters (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.StorageReliability.html#aurora-storage-type).
	// For information on storage types for Multi-AZ DB clusters, see Settings for
	// creating Multi-AZ DB clusters (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/create-multi-az-db-cluster.html#create-multi-az-db-cluster-settings).
	//
	// This setting is required to create a Multi-AZ DB cluster.
	//
	// When specified for a Multi-AZ DB cluster, a value for the Iops parameter
	// is required.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Valid Values:
	//
	//    * Aurora DB clusters - aurora | aurora-iopt1
	//
	//    * Multi-AZ DB clusters - io1 | io2 | gp3
	//
	// Default:
	//
	//    * Aurora DB clusters - aurora
	//
	//    * Multi-AZ DB clusters - io1
	//
	// When you create an Aurora DB cluster with the storage type set to aurora-iopt1,
	// the storage type is returned in the response. The storage type isn't returned
	// when you set it to aurora.
	StorageType *string `type:"string"`

	// Tags to assign to the DB cluster.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// A list of EC2 VPC security groups to associate with this DB cluster.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	VpcSecurityGroupIds []*string `locationNameList:"VpcSecurityGroupId" 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 CreateDBClusterInput) 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 CreateDBClusterInput) GoString() string {
	return s.String()
}

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

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

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *CreateDBClusterInput) SetAllocatedStorage(v int64) *CreateDBClusterInput {
	s.AllocatedStorage = &v
	return s
}

// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
func (s *CreateDBClusterInput) SetAutoMinorVersionUpgrade(v bool) *CreateDBClusterInput {
	s.AutoMinorVersionUpgrade = &v
	return s
}

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *CreateDBClusterInput) SetAvailabilityZones(v []*string) *CreateDBClusterInput {
	s.AvailabilityZones = v
	return s
}

// SetBacktrackWindow sets the BacktrackWindow field's value.
func (s *CreateDBClusterInput) SetBacktrackWindow(v int64) *CreateDBClusterInput {
	s.BacktrackWindow = &v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *CreateDBClusterInput) SetBackupRetentionPeriod(v int64) *CreateDBClusterInput {
	s.BackupRetentionPeriod = &v
	return s
}

// SetCACertificateIdentifier sets the CACertificateIdentifier field's value.
func (s *CreateDBClusterInput) SetCACertificateIdentifier(v string) *CreateDBClusterInput {
	s.CACertificateIdentifier = &v
	return s
}

// SetCharacterSetName sets the CharacterSetName field's value.
func (s *CreateDBClusterInput) SetCharacterSetName(v string) *CreateDBClusterInput {
	s.CharacterSetName = &v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *CreateDBClusterInput) SetCopyTagsToSnapshot(v bool) *CreateDBClusterInput {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *CreateDBClusterInput) SetDBClusterIdentifier(v string) *CreateDBClusterInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBClusterInstanceClass sets the DBClusterInstanceClass field's value.
func (s *CreateDBClusterInput) SetDBClusterInstanceClass(v string) *CreateDBClusterInput {
	s.DBClusterInstanceClass = &v
	return s
}

// SetDBClusterParameterGroupName sets the DBClusterParameterGroupName field's value.
func (s *CreateDBClusterInput) SetDBClusterParameterGroupName(v string) *CreateDBClusterInput {
	s.DBClusterParameterGroupName = &v
	return s
}

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *CreateDBClusterInput) SetDBSubnetGroupName(v string) *CreateDBClusterInput {
	s.DBSubnetGroupName = &v
	return s
}

// SetDBSystemId sets the DBSystemId field's value.
func (s *CreateDBClusterInput) SetDBSystemId(v string) *CreateDBClusterInput {
	s.DBSystemId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *CreateDBClusterInput) SetDatabaseName(v string) *CreateDBClusterInput {
	s.DatabaseName = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *CreateDBClusterInput) SetDeletionProtection(v bool) *CreateDBClusterInput {
	s.DeletionProtection = &v
	return s
}

// SetDestinationRegion sets the DestinationRegion field's value.
func (s *CreateDBClusterInput) SetDestinationRegion(v string) *CreateDBClusterInput {
	s.DestinationRegion = &v
	return s
}

// SetDomain sets the Domain field's value.
func (s *CreateDBClusterInput) SetDomain(v string) *CreateDBClusterInput {
	s.Domain = &v
	return s
}

// SetDomainIAMRoleName sets the DomainIAMRoleName field's value.
func (s *CreateDBClusterInput) SetDomainIAMRoleName(v string) *CreateDBClusterInput {
	s.DomainIAMRoleName = &v
	return s
}

// SetEnableCloudwatchLogsExports sets the EnableCloudwatchLogsExports field's value.
func (s *CreateDBClusterInput) SetEnableCloudwatchLogsExports(v []*string) *CreateDBClusterInput {
	s.EnableCloudwatchLogsExports = v
	return s
}

// SetEnableGlobalWriteForwarding sets the EnableGlobalWriteForwarding field's value.
func (s *CreateDBClusterInput) SetEnableGlobalWriteForwarding(v bool) *CreateDBClusterInput {
	s.EnableGlobalWriteForwarding = &v
	return s
}

// SetEnableHttpEndpoint sets the EnableHttpEndpoint field's value.
func (s *CreateDBClusterInput) SetEnableHttpEndpoint(v bool) *CreateDBClusterInput {
	s.EnableHttpEndpoint = &v
	return s
}

// SetEnableIAMDatabaseAuthentication sets the EnableIAMDatabaseAuthentication field's value.
func (s *CreateDBClusterInput) SetEnableIAMDatabaseAuthentication(v bool) *CreateDBClusterInput {
	s.EnableIAMDatabaseAuthentication = &v
	return s
}

// SetEnableLimitlessDatabase sets the EnableLimitlessDatabase field's value.
func (s *CreateDBClusterInput) SetEnableLimitlessDatabase(v bool) *CreateDBClusterInput {
	s.EnableLimitlessDatabase = &v
	return s
}

// SetEnableLocalWriteForwarding sets the EnableLocalWriteForwarding field's value.
func (s *CreateDBClusterInput) SetEnableLocalWriteForwarding(v bool) *CreateDBClusterInput {
	s.EnableLocalWriteForwarding = &v
	return s
}

// SetEnablePerformanceInsights sets the EnablePerformanceInsights field's value.
func (s *CreateDBClusterInput) SetEnablePerformanceInsights(v bool) *CreateDBClusterInput {
	s.EnablePerformanceInsights = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *CreateDBClusterInput) SetEngine(v string) *CreateDBClusterInput {
	s.Engine = &v
	return s
}

// SetEngineLifecycleSupport sets the EngineLifecycleSupport field's value.
func (s *CreateDBClusterInput) SetEngineLifecycleSupport(v string) *CreateDBClusterInput {
	s.EngineLifecycleSupport = &v
	return s
}

// SetEngineMode sets the EngineMode field's value.
func (s *CreateDBClusterInput) SetEngineMode(v string) *CreateDBClusterInput {
	s.EngineMode = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *CreateDBClusterInput) SetEngineVersion(v string) *CreateDBClusterInput {
	s.EngineVersion = &v
	return s
}

// SetGlobalClusterIdentifier sets the GlobalClusterIdentifier field's value.
func (s *CreateDBClusterInput) SetGlobalClusterIdentifier(v string) *CreateDBClusterInput {
	s.GlobalClusterIdentifier = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *CreateDBClusterInput) SetIops(v int64) *CreateDBClusterInput {
	s.Iops = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *CreateDBClusterInput) SetKmsKeyId(v string) *CreateDBClusterInput {
	s.KmsKeyId = &v
	return s
}

// SetManageMasterUserPassword sets the ManageMasterUserPassword field's value.
func (s *CreateDBClusterInput) SetManageMasterUserPassword(v bool) *CreateDBClusterInput {
	s.ManageMasterUserPassword = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *CreateDBClusterInput) SetMasterUserPassword(v string) *CreateDBClusterInput {
	s.MasterUserPassword = &v
	return s
}

// SetMasterUserSecretKmsKeyId sets the MasterUserSecretKmsKeyId field's value.
func (s *CreateDBClusterInput) SetMasterUserSecretKmsKeyId(v string) *CreateDBClusterInput {
	s.MasterUserSecretKmsKeyId = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *CreateDBClusterInput) SetMasterUsername(v string) *CreateDBClusterInput {
	s.MasterUsername = &v
	return s
}

// SetMonitoringInterval sets the MonitoringInterval field's value.
func (s *CreateDBClusterInput) SetMonitoringInterval(v int64) *CreateDBClusterInput {
	s.MonitoringInterval = &v
	return s
}

// SetMonitoringRoleArn sets the MonitoringRoleArn field's value.
func (s *CreateDBClusterInput) SetMonitoringRoleArn(v string) *CreateDBClusterInput {
	s.MonitoringRoleArn = &v
	return s
}

// SetNetworkType sets the NetworkType field's value.
func (s *CreateDBClusterInput) SetNetworkType(v string) *CreateDBClusterInput {
	s.NetworkType = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *CreateDBClusterInput) SetOptionGroupName(v string) *CreateDBClusterInput {
	s.OptionGroupName = &v
	return s
}

// SetPerformanceInsightsKMSKeyId sets the PerformanceInsightsKMSKeyId field's value.
func (s *CreateDBClusterInput) SetPerformanceInsightsKMSKeyId(v string) *CreateDBClusterInput {
	s.PerformanceInsightsKMSKeyId = &v
	return s
}

// SetPerformanceInsightsRetentionPeriod sets the PerformanceInsightsRetentionPeriod field's value.
func (s *CreateDBClusterInput) SetPerformanceInsightsRetentionPeriod(v int64) *CreateDBClusterInput {
	s.PerformanceInsightsRetentionPeriod = &v
	return s
}

// SetPort sets the Port field's value.
func (s *CreateDBClusterInput) SetPort(v int64) *CreateDBClusterInput {
	s.Port = &v
	return s
}

// SetPreSignedUrl sets the PreSignedUrl field's value.
func (s *CreateDBClusterInput) SetPreSignedUrl(v string) *CreateDBClusterInput {
	s.PreSignedUrl = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *CreateDBClusterInput) SetPreferredBackupWindow(v string) *CreateDBClusterInput {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *CreateDBClusterInput) SetPreferredMaintenanceWindow(v string) *CreateDBClusterInput {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *CreateDBClusterInput) SetPubliclyAccessible(v bool) *CreateDBClusterInput {
	s.PubliclyAccessible = &v
	return s
}

// SetRdsCustomClusterConfiguration sets the RdsCustomClusterConfiguration field's value.
func (s *CreateDBClusterInput) SetRdsCustomClusterConfiguration(v *RdsCustomClusterConfiguration) *CreateDBClusterInput {
	s.RdsCustomClusterConfiguration = v
	return s
}

// SetReplicationSourceIdentifier sets the ReplicationSourceIdentifier field's value.
func (s *CreateDBClusterInput) SetReplicationSourceIdentifier(v string) *CreateDBClusterInput {
	s.ReplicationSourceIdentifier = &v
	return s
}

// SetScalingConfiguration sets the ScalingConfiguration field's value.
func (s *CreateDBClusterInput) SetScalingConfiguration(v *ScalingConfiguration) *CreateDBClusterInput {
	s.ScalingConfiguration = v
	return s
}

// SetServerlessV2ScalingConfiguration sets the ServerlessV2ScalingConfiguration field's value.
func (s *CreateDBClusterInput) SetServerlessV2ScalingConfiguration(v *ServerlessV2ScalingConfiguration) *CreateDBClusterInput {
	s.ServerlessV2ScalingConfiguration = v
	return s
}

// SetSourceRegion sets the SourceRegion field's value.
func (s *CreateDBClusterInput) SetSourceRegion(v string) *CreateDBClusterInput {
	s.SourceRegion = &v
	return s
}

// SetStorageEncrypted sets the StorageEncrypted field's value.
func (s *CreateDBClusterInput) SetStorageEncrypted(v bool) *CreateDBClusterInput {
	s.StorageEncrypted = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *CreateDBClusterInput) SetStorageType(v string) *CreateDBClusterInput {
	s.StorageType = &v
	return s
}

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

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *CreateDBClusterInput) SetVpcSecurityGroupIds(v []*string) *CreateDBClusterInput {
	s.VpcSecurityGroupIds = v
	return s
}

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

	// Contains the details of an Amazon Aurora DB cluster or Multi-AZ DB cluster.
	//
	// For an Amazon Aurora DB cluster, this data type is used as a response element
	// in the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, PromoteReadReplicaDBCluster, RestoreDBClusterFromS3, RestoreDBClusterFromSnapshot,
	// RestoreDBClusterToPointInTime, StartDBCluster, and StopDBCluster.
	//
	// For a Multi-AZ DB cluster, this data type is used as a response element in
	// the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, RebootDBCluster, RestoreDBClusterFromSnapshot, and RestoreDBClusterToPointInTime.
	//
	// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
	// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
	// in the Amazon Aurora User Guide.
	//
	// For more information on Multi-AZ DB clusters, see Multi-AZ deployments with
	// two readable standby DB instances (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
	// in the Amazon RDS User Guide.
	DBCluster *DBCluster `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 CreateDBClusterOutput) 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 CreateDBClusterOutput) GoString() string {
	return s.String()
}

// SetDBCluster sets the DBCluster field's value.
func (s *CreateDBClusterOutput) SetDBCluster(v *DBCluster) *CreateDBClusterOutput {
	s.DBCluster = v
	return s
}

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

	// The name of the DB cluster parameter group.
	//
	// Constraints:
	//
	//    * Must not match the name of an existing DB cluster parameter group.
	//
	// This value is stored as a lowercase string.
	//
	// DBClusterParameterGroupName is a required field
	DBClusterParameterGroupName *string `type:"string" required:"true"`

	// The DB cluster parameter group family name. A DB cluster parameter group
	// can be associated with one and only one DB cluster parameter group family,
	// and can be applied only to a DB cluster running a database engine and engine
	// version compatible with that DB cluster parameter group family.
	//
	// Aurora MySQL
	//
	// Example: aurora-mysql5.7, aurora-mysql8.0
	//
	// Aurora PostgreSQL
	//
	// Example: aurora-postgresql14
	//
	// RDS for MySQL
	//
	// Example: mysql8.0
	//
	// RDS for PostgreSQL
	//
	// Example: postgres13
	//
	// To list all of the available parameter group families for a DB engine, use
	// the following command:
	//
	// aws rds describe-db-engine-versions --query "DBEngineVersions[].DBParameterGroupFamily"
	// --engine <engine>
	//
	// For example, to list all of the available parameter group families for the
	// Aurora PostgreSQL DB engine, use the following command:
	//
	// aws rds describe-db-engine-versions --query "DBEngineVersions[].DBParameterGroupFamily"
	// --engine aurora-postgresql
	//
	// The output contains duplicates.
	//
	// The following are the valid DB engine values:
	//
	//    * aurora-mysql
	//
	//    * aurora-postgresql
	//
	//    * mysql
	//
	//    * postgres
	//
	// DBParameterGroupFamily is a required field
	DBParameterGroupFamily *string `type:"string" required:"true"`

	// The description for the DB cluster parameter group.
	//
	// Description is a required field
	Description *string `type:"string" required:"true"`

	// Tags to assign to the DB cluster parameter group.
	Tags []*Tag `locationNameList:"Tag" 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 CreateDBClusterParameterGroupInput) 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 CreateDBClusterParameterGroupInput) GoString() string {
	return s.String()
}

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

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

// SetDBClusterParameterGroupName sets the DBClusterParameterGroupName field's value.
func (s *CreateDBClusterParameterGroupInput) SetDBClusterParameterGroupName(v string) *CreateDBClusterParameterGroupInput {
	s.DBClusterParameterGroupName = &v
	return s
}

// SetDBParameterGroupFamily sets the DBParameterGroupFamily field's value.
func (s *CreateDBClusterParameterGroupInput) SetDBParameterGroupFamily(v string) *CreateDBClusterParameterGroupInput {
	s.DBParameterGroupFamily = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateDBClusterParameterGroupInput) SetDescription(v string) *CreateDBClusterParameterGroupInput {
	s.Description = &v
	return s
}

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

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

	// Contains the details of an Amazon RDS DB cluster parameter group.
	//
	// This data type is used as a response element in the DescribeDBClusterParameterGroups
	// action.
	DBClusterParameterGroup *DBClusterParameterGroup `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 CreateDBClusterParameterGroupOutput) 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 CreateDBClusterParameterGroupOutput) GoString() string {
	return s.String()
}

// SetDBClusterParameterGroup sets the DBClusterParameterGroup field's value.
func (s *CreateDBClusterParameterGroupOutput) SetDBClusterParameterGroup(v *DBClusterParameterGroup) *CreateDBClusterParameterGroupOutput {
	s.DBClusterParameterGroup = v
	return s
}

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

	// The identifier of the DB cluster to create a snapshot for. This parameter
	// isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DBCluster.
	//
	// Example: my-cluster1
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// The identifier of the DB cluster snapshot. This parameter is stored as a
	// lowercase string.
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 letters, numbers, or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Example: my-cluster1-snapshot1
	//
	// DBClusterSnapshotIdentifier is a required field
	DBClusterSnapshotIdentifier *string `type:"string" required:"true"`

	// The tags to be assigned to the DB cluster snapshot.
	Tags []*Tag `locationNameList:"Tag" 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 CreateDBClusterSnapshotInput) 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 CreateDBClusterSnapshotInput) GoString() string {
	return s.String()
}

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

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

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *CreateDBClusterSnapshotInput) SetDBClusterIdentifier(v string) *CreateDBClusterSnapshotInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBClusterSnapshotIdentifier sets the DBClusterSnapshotIdentifier field's value.
func (s *CreateDBClusterSnapshotInput) SetDBClusterSnapshotIdentifier(v string) *CreateDBClusterSnapshotInput {
	s.DBClusterSnapshotIdentifier = &v
	return s
}

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

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

	// Contains the details for an Amazon RDS DB cluster snapshot
	//
	// This data type is used as a response element in the DescribeDBClusterSnapshots
	// action.
	DBClusterSnapshot *DBClusterSnapshot `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 CreateDBClusterSnapshotOutput) 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 CreateDBClusterSnapshotOutput) GoString() string {
	return s.String()
}

// SetDBClusterSnapshot sets the DBClusterSnapshot field's value.
func (s *CreateDBClusterSnapshotOutput) SetDBClusterSnapshot(v *DBClusterSnapshot) *CreateDBClusterSnapshotOutput {
	s.DBClusterSnapshot = v
	return s
}

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

	// The amount of storage in gibibytes (GiB) to allocate for the DB instance.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. Aurora cluster
	// volumes automatically grow as the amount of data in your database increases,
	// though you are only charged for the space that you use in an Aurora cluster
	// volume.
	//
	// Amazon RDS Custom
	//
	// Constraints to the amount of storage for each storage type are the following:
	//
	//    * General Purpose (SSD) storage (gp2, gp3): Must be an integer from 40
	//    to 65536 for RDS Custom for Oracle, 16384 for RDS Custom for SQL Server.
	//
	//    * Provisioned IOPS storage (io1, io2): Must be an integer from 40 to 65536
	//    for RDS Custom for Oracle, 16384 for RDS Custom for SQL Server.
	//
	// RDS for Db2
	//
	// Constraints to the amount of storage for each storage type are the following:
	//
	//    * General Purpose (SSD) storage (gp3): Must be an integer from 20 to 65536.
	//
	//    * Provisioned IOPS storage (io1, io2): Must be an integer from 100 to
	//    65536.
	//
	// RDS for MariaDB
	//
	// Constraints to the amount of storage for each storage type are the following:
	//
	//    * General Purpose (SSD) storage (gp2, gp3): Must be an integer from 20
	//    to 65536.
	//
	//    * Provisioned IOPS storage (io1, io2): Must be an integer from 100 to
	//    65536.
	//
	//    * Magnetic storage (standard): Must be an integer from 5 to 3072.
	//
	// RDS for MySQL
	//
	// Constraints to the amount of storage for each storage type are the following:
	//
	//    * General Purpose (SSD) storage (gp2, gp3): Must be an integer from 20
	//    to 65536.
	//
	//    * Provisioned IOPS storage (io1, io2): Must be an integer from 100 to
	//    65536.
	//
	//    * Magnetic storage (standard): Must be an integer from 5 to 3072.
	//
	// RDS for Oracle
	//
	// Constraints to the amount of storage for each storage type are the following:
	//
	//    * General Purpose (SSD) storage (gp2, gp3): Must be an integer from 20
	//    to 65536.
	//
	//    * Provisioned IOPS storage (io1, io2): Must be an integer from 100 to
	//    65536.
	//
	//    * Magnetic storage (standard): Must be an integer from 10 to 3072.
	//
	// RDS for PostgreSQL
	//
	// Constraints to the amount of storage for each storage type are the following:
	//
	//    * General Purpose (SSD) storage (gp2, gp3): Must be an integer from 20
	//    to 65536.
	//
	//    * Provisioned IOPS storage (io1, io2): Must be an integer from 100 to
	//    65536.
	//
	//    * Magnetic storage (standard): Must be an integer from 5 to 3072.
	//
	// RDS for SQL Server
	//
	// Constraints to the amount of storage for each storage type are the following:
	//
	//    * General Purpose (SSD) storage (gp2, gp3): Enterprise and Standard editions:
	//    Must be an integer from 20 to 16384. Web and Express editions: Must be
	//    an integer from 20 to 16384.
	//
	//    * Provisioned IOPS storage (io1, io2): Enterprise and Standard editions:
	//    Must be an integer from 100 to 16384. Web and Express editions: Must be
	//    an integer from 100 to 16384.
	//
	//    * Magnetic storage (standard): Enterprise and Standard editions: Must
	//    be an integer from 20 to 1024. Web and Express editions: Must be an integer
	//    from 20 to 1024.
	AllocatedStorage *int64 `type:"integer"`

	// Specifies whether minor engine upgrades are applied automatically to the
	// DB instance during the maintenance window. By default, minor engine upgrades
	// are applied automatically.
	//
	// If you create an RDS Custom DB instance, you must set AutoMinorVersionUpgrade
	// to false.
	AutoMinorVersionUpgrade *bool `type:"boolean"`

	// The Availability Zone (AZ) where the database will be created. For information
	// on Amazon Web Services Regions and Availability Zones, see Regions and Availability
	// Zones (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html).
	//
	// For Amazon Aurora, each Aurora DB cluster hosts copies of its storage in
	// three separate Availability Zones. Specify one of these Availability Zones.
	// Aurora automatically chooses an appropriate Availability Zone if you don't
	// specify one.
	//
	// Default: A random, system-chosen Availability Zone in the endpoint's Amazon
	// Web Services Region.
	//
	// Constraints:
	//
	//    * The AvailabilityZone parameter can't be specified if the DB instance
	//    is a Multi-AZ deployment.
	//
	//    * The specified Availability Zone must be in the same Amazon Web Services
	//    Region as the current endpoint.
	//
	// Example: us-east-1d
	AvailabilityZone *string `type:"string"`

	// The number of days for which automated backups are retained. Setting this
	// parameter to a positive number enables backups. Setting this parameter to
	// 0 disables automated backups.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. The retention period
	// for automated backups is managed by the DB cluster.
	//
	// Default: 1
	//
	// Constraints:
	//
	//    * Must be a value from 0 to 35.
	//
	//    * Can't be set to 0 if the DB instance is a source to read replicas.
	//
	//    * Can't be set to 0 for an RDS Custom for Oracle DB instance.
	BackupRetentionPeriod *int64 `type:"integer"`

	// The location for storing automated backups and manual snapshots.
	//
	// Valid Values:
	//
	//    * outposts (Amazon Web Services Outposts)
	//
	//    * region (Amazon Web Services Region)
	//
	// Default: region
	//
	// For more information, see Working with Amazon RDS on Amazon Web Services
	// Outposts (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html)
	// in the Amazon RDS User Guide.
	BackupTarget *string `type:"string"`

	// The CA certificate identifier to use for the DB instance's server certificate.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	CACertificateIdentifier *string `type:"string"`

	// For supported engines, the character set (CharacterSet) to associate the
	// DB instance with.
	//
	// This setting doesn't apply to the following DB instances:
	//
	//    * Amazon Aurora - The character set is managed by the DB cluster. For
	//    more information, see CreateDBCluster.
	//
	//    * RDS Custom - However, if you need to change the character set, you can
	//    change it on the database itself.
	CharacterSetName *string `type:"string"`

	// Specifies whether to copy tags from the DB instance to snapshots of the DB
	// instance. By default, tags are not copied.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. Copying tags to
	// snapshots is managed by the DB cluster. Setting this value for an Aurora
	// DB instance has no effect on the DB cluster setting.
	CopyTagsToSnapshot *bool `type:"boolean"`

	// The instance profile associated with the underlying Amazon EC2 instance of
	// an RDS Custom DB instance.
	//
	// This setting is required for RDS Custom.
	//
	// Constraints:
	//
	//    * The profile must exist in your account.
	//
	//    * The profile must have an IAM role that Amazon EC2 has permissions to
	//    assume.
	//
	//    * The instance profile name and the associated IAM role name must start
	//    with the prefix AWSRDSCustom.
	//
	// For the list of permissions required for the IAM role, see Configure IAM
	// and your VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc)
	// in the Amazon RDS User Guide.
	CustomIamInstanceProfile *string `type:"string"`

	// The identifier of the DB cluster that this DB instance will belong to.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	DBClusterIdentifier *string `type:"string"`

	// The compute and memory capacity of the DB instance, for example db.m5.large.
	// Not all DB instance classes are available in all Amazon Web Services Regions,
	// or for all database engines. For the full list of DB instance classes, and
	// availability for your engine, see DB instance classes (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
	// in the Amazon RDS User Guide or Aurora DB instance classes (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html)
	// in the Amazon Aurora User Guide.
	//
	// DBInstanceClass is a required field
	DBInstanceClass *string `type:"string" required:"true"`

	// The identifier for this DB instance. This parameter is stored as a lowercase
	// string.
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 letters, numbers, or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Example: mydbinstance
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// The meaning of this parameter differs according to the database engine you
	// use.
	//
	// Amazon Aurora MySQL
	//
	// The name of the database to create when the primary DB instance of the Aurora
	// MySQL DB cluster is created. If this parameter isn't specified for an Aurora
	// MySQL DB cluster, no database is created in the DB cluster.
	//
	// Constraints:
	//
	//    * Must contain 1 to 64 alphanumeric characters.
	//
	//    * Can't be a word reserved by the database engine.
	//
	// Amazon Aurora PostgreSQL
	//
	// The name of the database to create when the primary DB instance of the Aurora
	// PostgreSQL DB cluster is created. A database named postgres is always created.
	// If this parameter is specified, an additional database with this name is
	// created.
	//
	// Constraints:
	//
	//    * It must contain 1 to 63 alphanumeric characters.
	//
	//    * Must begin with a letter. Subsequent characters can be letters, underscores,
	//    or digits (0 to 9).
	//
	//    * Can't be a word reserved by the database engine.
	//
	// Amazon RDS Custom for Oracle
	//
	// The Oracle System ID (SID) of the created RDS Custom DB instance. If you
	// don't specify a value, the default value is ORCL for non-CDBs and RDSCDB
	// for CDBs.
	//
	// Default: ORCL
	//
	// Constraints:
	//
	//    * Must contain 1 to 8 alphanumeric characters.
	//
	//    * Must contain a letter.
	//
	//    * Can't be a word reserved by the database engine.
	//
	// Amazon RDS Custom for SQL Server
	//
	// Not applicable. Must be null.
	//
	// RDS for Db2
	//
	// The name of the database to create when the DB instance is created. If this
	// parameter isn't specified, no database is created in the DB instance. In
	// some cases, we recommend that you don't add a database name. For more information,
	// see Additional considerations (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-db-instance-prereqs.html#db2-prereqs-additional-considerations)
	// in the Amazon RDS User Guide.
	//
	// Constraints:
	//
	//    * Must contain 1 to 64 letters or numbers.
	//
	//    * Must begin with a letter. Subsequent characters can be letters, underscores,
	//    or digits (0-9).
	//
	//    * Can't be a word reserved by the specified database engine.
	//
	// RDS for MariaDB
	//
	// The name of the database to create when the DB instance is created. If this
	// parameter isn't specified, no database is created in the DB instance.
	//
	// Constraints:
	//
	//    * Must contain 1 to 64 letters or numbers.
	//
	//    * Must begin with a letter. Subsequent characters can be letters, underscores,
	//    or digits (0-9).
	//
	//    * Can't be a word reserved by the specified database engine.
	//
	// RDS for MySQL
	//
	// The name of the database to create when the DB instance is created. If this
	// parameter isn't specified, no database is created in the DB instance.
	//
	// Constraints:
	//
	//    * Must contain 1 to 64 letters or numbers.
	//
	//    * Must begin with a letter. Subsequent characters can be letters, underscores,
	//    or digits (0-9).
	//
	//    * Can't be a word reserved by the specified database engine.
	//
	// RDS for Oracle
	//
	// The Oracle System ID (SID) of the created DB instance. If you don't specify
	// a value, the default value is ORCL. You can't specify the string null, or
	// any other reserved word, for DBName.
	//
	// Default: ORCL
	//
	// Constraints:
	//
	//    * Can't be longer than 8 characters.
	//
	// RDS for PostgreSQL
	//
	// The name of the database to create when the DB instance is created. A database
	// named postgres is always created. If this parameter is specified, an additional
	// database with this name is created.
	//
	// Constraints:
	//
	//    * Must contain 1 to 63 letters, numbers, or underscores.
	//
	//    * Must begin with a letter. Subsequent characters can be letters, underscores,
	//    or digits (0-9).
	//
	//    * Can't be a word reserved by the specified database engine.
	//
	// RDS for SQL Server
	//
	// Not applicable. Must be null.
	DBName *string `type:"string"`

	// The name of the DB parameter group to associate with this DB instance. If
	// you don't specify a value, then Amazon RDS uses the default DB parameter
	// group for the specified DB engine and version.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Constraints:
	//
	//    * Must be 1 to 255 letters, numbers, or hyphens.
	//
	//    * The first character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	DBParameterGroupName *string `type:"string"`

	// A list of DB security groups to associate with this DB instance.
	//
	// This setting applies to the legacy EC2-Classic platform, which is no longer
	// used to create new DB instances. Use the VpcSecurityGroupIds setting instead.
	DBSecurityGroups []*string `locationNameList:"DBSecurityGroupName" type:"list"`

	// A DB subnet group to associate with this DB instance.
	//
	// Constraints:
	//
	//    * Must match the name of an existing DB subnet group.
	//
	//    * Must not be default.
	//
	// Example: mydbsubnetgroup
	DBSubnetGroupName *string `type:"string"`

	// The Oracle system identifier (SID), which is the name of the Oracle database
	// instance that manages your database files. In this context, the term "Oracle
	// database instance" refers exclusively to the system global area (SGA) and
	// Oracle background processes. If you don't specify a SID, the value defaults
	// to RDSCDB. The Oracle SID is also the name of your CDB.
	DBSystemId *string `type:"string"`

	// Indicates whether the DB instance has a dedicated log volume (DLV) enabled.
	DedicatedLogVolume *bool `type:"boolean"`

	// Specifies whether the DB instance has deletion protection enabled. The database
	// can't be deleted when deletion protection is enabled. By default, deletion
	// protection isn't enabled. For more information, see Deleting a DB Instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html).
	//
	// This setting doesn't apply to Amazon Aurora DB instances. You can enable
	// or disable deletion protection for the DB cluster. For more information,
	// see CreateDBCluster. DB instances in a DB cluster can be deleted even when
	// deletion protection is enabled for the DB cluster.
	DeletionProtection *bool `type:"boolean"`

	// The Active Directory directory ID to create the DB instance in. Currently,
	// you can create only Db2, MySQL, Microsoft SQL Server, Oracle, and PostgreSQL
	// DB instances in an Active Directory Domain.
	//
	// For more information, see Kerberos Authentication (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to the following DB instances:
	//
	//    * Amazon Aurora (The domain is managed by the DB cluster.)
	//
	//    * RDS Custom
	Domain *string `type:"string"`

	// The ARN for the Secrets Manager secret with the credentials for the user
	// joining the domain.
	//
	// Example: arn:aws:secretsmanager:region:account-number:secret:myselfmanagedADtestsecret-123456
	DomainAuthSecretArn *string `type:"string"`

	// The IPv4 DNS IP addresses of your primary and secondary Active Directory
	// domain controllers.
	//
	// Constraints:
	//
	//    * Two IP addresses must be provided. If there isn't a secondary domain
	//    controller, use the IP address of the primary domain controller for both
	//    entries in the list.
	//
	// Example: 123.124.125.126,234.235.236.237
	DomainDnsIps []*string `type:"list"`

	// The fully qualified domain name (FQDN) of an Active Directory domain.
	//
	// Constraints:
	//
	//    * Can't be longer than 64 characters.
	//
	// Example: mymanagedADtest.mymanagedAD.mydomain
	DomainFqdn *string `type:"string"`

	// The name of the IAM role to use when making API calls to the Directory Service.
	//
	// This setting doesn't apply to the following DB instances:
	//
	//    * Amazon Aurora (The domain is managed by the DB cluster.)
	//
	//    * RDS Custom
	DomainIAMRoleName *string `type:"string"`

	// The Active Directory organizational unit for your DB instance to join.
	//
	// Constraints:
	//
	//    * Must be in the distinguished name format.
	//
	//    * Can't be longer than 64 characters.
	//
	// Example: OU=mymanagedADtestOU,DC=mymanagedADtest,DC=mymanagedAD,DC=mydomain
	DomainOu *string `type:"string"`

	// The list of log types to enable for exporting to CloudWatch Logs. For more
	// information, see Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to the following DB instances:
	//
	//    * Amazon Aurora (CloudWatch Logs exports are managed by the DB cluster.)
	//
	//    * RDS Custom
	//
	// The following values are valid for each DB engine:
	//
	//    * RDS for Db2 - diag.log | notify.log
	//
	//    * RDS for MariaDB - audit | error | general | slowquery
	//
	//    * RDS for Microsoft SQL Server - agent | error
	//
	//    * RDS for MySQL - audit | error | general | slowquery
	//
	//    * RDS for Oracle - alert | audit | listener | trace | oemagent
	//
	//    * RDS for PostgreSQL - postgresql | upgrade
	EnableCloudwatchLogsExports []*string `type:"list"`

	// Specifies whether to enable a customer-owned IP address (CoIP) for an RDS
	// on Outposts DB instance.
	//
	// A CoIP provides local or external connectivity to resources in your Outpost
	// subnets through your on-premises network. For some use cases, a CoIP can
	// provide lower latency for connections to the DB instance from outside of
	// its virtual private cloud (VPC) on your local network.
	//
	// For more information about RDS on Outposts, see Working with Amazon RDS on
	// Amazon Web Services Outposts (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html)
	// in the Amazon RDS User Guide.
	//
	// For more information about CoIPs, see Customer-owned IP addresses (https://docs.aws.amazon.com/outposts/latest/userguide/routing.html#ip-addressing)
	// in the Amazon Web Services Outposts User Guide.
	EnableCustomerOwnedIp *bool `type:"boolean"`

	// Specifies whether to enable mapping of Amazon Web Services Identity and Access
	// Management (IAM) accounts to database accounts. By default, mapping isn't
	// enabled.
	//
	// For more information, see IAM Database Authentication for MySQL and PostgreSQL
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to the following DB instances:
	//
	//    * Amazon Aurora (Mapping Amazon Web Services IAM accounts to database
	//    accounts is managed by the DB cluster.)
	//
	//    * RDS Custom
	EnableIAMDatabaseAuthentication *bool `type:"boolean"`

	// Specifies whether to enable Performance Insights for the DB instance. For
	// more information, see Using Amazon Performance Insights (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	EnablePerformanceInsights *bool `type:"boolean"`

	// The database engine to use for this DB instance.
	//
	// Not every database engine is available in every Amazon Web Services Region.
	//
	// Valid Values:
	//
	//    * aurora-mysql (for Aurora MySQL DB instances)
	//
	//    * aurora-postgresql (for Aurora PostgreSQL DB instances)
	//
	//    * custom-oracle-ee (for RDS Custom for Oracle DB instances)
	//
	//    * custom-oracle-ee-cdb (for RDS Custom for Oracle DB instances)
	//
	//    * custom-oracle-se2 (for RDS Custom for Oracle DB instances)
	//
	//    * custom-oracle-se2-cdb (for RDS Custom for Oracle DB instances)
	//
	//    * custom-sqlserver-ee (for RDS Custom for SQL Server DB instances)
	//
	//    * custom-sqlserver-se (for RDS Custom for SQL Server DB instances)
	//
	//    * custom-sqlserver-web (for RDS Custom for SQL Server DB instances)
	//
	//    * db2-ae
	//
	//    * db2-se
	//
	//    * mariadb
	//
	//    * mysql
	//
	//    * oracle-ee
	//
	//    * oracle-ee-cdb
	//
	//    * oracle-se2
	//
	//    * oracle-se2-cdb
	//
	//    * postgres
	//
	//    * sqlserver-ee
	//
	//    * sqlserver-se
	//
	//    * sqlserver-ex
	//
	//    * sqlserver-web
	//
	// Engine is a required field
	Engine *string `type:"string" required:"true"`

	// The life cycle type for this DB instance.
	//
	// By default, this value is set to open-source-rds-extended-support, which
	// enrolls your DB instance into Amazon RDS Extended Support. At the end of
	// standard support, you can avoid charges for Extended Support by setting the
	// value to open-source-rds-extended-support-disabled. In this case, creating
	// the DB instance will fail if the DB major version is past its end of standard
	// support date.
	//
	// This setting applies only to RDS for MySQL and RDS for PostgreSQL. For Amazon
	// Aurora DB instances, the life cycle type is managed by the DB cluster.
	//
	// You can use this setting to enroll your DB instance into Amazon RDS Extended
	// Support. With RDS Extended Support, you can run the selected major engine
	// version on your DB instance past the end of standard support for that engine
	// version. For more information, see Using Amazon RDS Extended Support (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html)
	// in the Amazon RDS User Guide.
	//
	// Valid Values: open-source-rds-extended-support | open-source-rds-extended-support-disabled
	//
	// Default: open-source-rds-extended-support
	EngineLifecycleSupport *string `type:"string"`

	// The version number of the database engine to use.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. The version number
	// of the database engine the DB instance uses is managed by the DB cluster.
	//
	// For a list of valid engine versions, use the DescribeDBEngineVersions operation.
	//
	// The following are the database engines and links to information about the
	// major and minor versions that are available with Amazon RDS. Not every database
	// engine is available for every Amazon Web Services Region.
	//
	// Amazon RDS Custom for Oracle
	//
	// A custom engine version (CEV) that you have previously created. This setting
	// is required for RDS Custom for Oracle. The CEV name has the following format:
	// 19.customized_string. A valid CEV name is 19.my_cev1. For more information,
	// see Creating an RDS Custom for Oracle DB instance (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.create)
	// in the Amazon RDS User Guide.
	//
	// Amazon RDS Custom for SQL Server
	//
	// See RDS Custom for SQL Server general requirements (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-reqs-limits-MS.html)
	// in the Amazon RDS User Guide.
	//
	// RDS for Db2
	//
	// For information, see Db2 on Amazon RDS versions (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Db2.html#Db2.Concepts.VersionMgmt)
	// in the Amazon RDS User Guide.
	//
	// RDS for MariaDB
	//
	// For information, see MariaDB on Amazon RDS versions (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt)
	// in the Amazon RDS User Guide.
	//
	// RDS for Microsoft SQL Server
	//
	// For information, see Microsoft SQL Server versions on Amazon RDS (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport)
	// in the Amazon RDS User Guide.
	//
	// RDS for MySQL
	//
	// For information, see MySQL on Amazon RDS versions (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt)
	// in the Amazon RDS User Guide.
	//
	// RDS for Oracle
	//
	// For information, see Oracle Database Engine release notes (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.PatchComposition.html)
	// in the Amazon RDS User Guide.
	//
	// RDS for PostgreSQL
	//
	// For information, see Amazon RDS for PostgreSQL versions and extensions (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts)
	// in the Amazon RDS User Guide.
	EngineVersion *string `type:"string"`

	// The amount of Provisioned IOPS (input/output operations per second) to initially
	// allocate for the DB instance. For information about valid IOPS values, see
	// Amazon RDS DB instance storage (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. Storage is managed
	// by the DB cluster.
	//
	// Constraints:
	//
	//    * For RDS for Db2, MariaDB, MySQL, Oracle, and PostgreSQL - Must be a
	//    multiple between .5 and 50 of the storage amount for the DB instance.
	//
	//    * For RDS for SQL Server - Must be a multiple between 1 and 50 of the
	//    storage amount for the DB instance.
	Iops *int64 `type:"integer"`

	// The Amazon Web Services KMS key identifier for an encrypted DB instance.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key. To use a KMS key in a different Amazon
	// Web Services account, specify the key ARN or alias ARN.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. The Amazon Web
	// Services KMS key identifier is managed by the DB cluster. For more information,
	// see CreateDBCluster.
	//
	// If StorageEncrypted is enabled, and you do not specify a value for the KmsKeyId
	// parameter, then Amazon RDS uses your default KMS key. There is a default
	// KMS key for your Amazon Web Services account. Your Amazon Web Services account
	// has a different default KMS key for each Amazon Web Services Region.
	//
	// For Amazon RDS Custom, a KMS key is required for DB instances. For most RDS
	// engines, if you leave this parameter empty while enabling StorageEncrypted,
	// the engine uses the default KMS key. However, RDS Custom doesn't use the
	// default key when this parameter is empty. You must explicitly specify a key.
	KmsKeyId *string `type:"string"`

	// The license model information for this DB instance.
	//
	// License models for RDS for Db2 require additional configuration. The Bring
	// Your Own License (BYOL) model requires a custom parameter group. The Db2
	// license through Amazon Web Services Marketplace model requires an Amazon
	// Web Services Marketplace subscription. For more information, see RDS for
	// Db2 licensing options (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-licensing.html)
	// in the Amazon RDS User Guide.
	//
	// The default for RDS for Db2 is bring-your-own-license.
	//
	// This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
	//
	// Valid Values:
	//
	//    * RDS for Db2 - bring-your-own-license | marketplace-license
	//
	//    * RDS for MariaDB - general-public-license
	//
	//    * RDS for Microsoft SQL Server - license-included
	//
	//    * RDS for MySQL - general-public-license
	//
	//    * RDS for Oracle - bring-your-own-license | license-included
	//
	//    * RDS for PostgreSQL - postgresql-license
	LicenseModel *string `type:"string"`

	// Specifies whether to manage the master user password with Amazon Web Services
	// Secrets Manager.
	//
	// For more information, see Password management with Amazon Web Services Secrets
	// Manager (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html)
	// in the Amazon RDS User Guide.
	//
	// Constraints:
	//
	//    * Can't manage the master user password with Amazon Web Services Secrets
	//    Manager if MasterUserPassword is specified.
	ManageMasterUserPassword *bool `type:"boolean"`

	// The password for the master user.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. The password for
	// the master user is managed by the DB cluster.
	//
	// Constraints:
	//
	//    * Can't be specified if ManageMasterUserPassword is turned on.
	//
	//    * Can include any printable ASCII character except "/", """, or "@". For
	//    RDS for Oracle, can't include the "&" (ampersand) or the "'" (single quotes)
	//    character.
	//
	// Length Constraints:
	//
	//    * RDS for Db2 - Must contain from 8 to 255 characters.
	//
	//    * RDS for MariaDB - Must contain from 8 to 41 characters.
	//
	//    * RDS for Microsoft SQL Server - Must contain from 8 to 128 characters.
	//
	//    * RDS for MySQL - Must contain from 8 to 41 characters.
	//
	//    * RDS for Oracle - Must contain from 8 to 30 characters.
	//
	//    * RDS for PostgreSQL - Must contain from 8 to 128 characters.
	MasterUserPassword *string `type:"string"`

	// The Amazon Web Services KMS key identifier to encrypt a secret that is automatically
	// generated and managed in Amazon Web Services Secrets Manager.
	//
	// This setting is valid only if the master user password is managed by RDS
	// in Amazon Web Services Secrets Manager for the DB instance.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key. To use a KMS key in a different Amazon
	// Web Services account, specify the key ARN or alias ARN.
	//
	// If you don't specify MasterUserSecretKmsKeyId, then the aws/secretsmanager
	// KMS key is used to encrypt the secret. If the secret is in a different Amazon
	// Web Services account, then you can't use the aws/secretsmanager KMS key to
	// encrypt the secret, and you must use a customer managed KMS key.
	//
	// There is a default KMS key for your Amazon Web Services account. Your Amazon
	// Web Services account has a different default KMS key for each Amazon Web
	// Services Region.
	MasterUserSecretKmsKeyId *string `type:"string"`

	// The name for the master user.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. The name for the
	// master user is managed by the DB cluster.
	//
	// This setting is required for RDS DB instances.
	//
	// Constraints:
	//
	//    * Must be 1 to 16 letters, numbers, or underscores.
	//
	//    * First character must be a letter.
	//
	//    * Can't be a reserved word for the chosen database engine.
	MasterUsername *string `type:"string"`

	// The upper limit in gibibytes (GiB) to which Amazon RDS can automatically
	// scale the storage of the DB instance.
	//
	// For more information about this setting, including limitations that apply
	// to it, see Managing capacity automatically with Amazon RDS storage autoscaling
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to the following DB instances:
	//
	//    * Amazon Aurora (Storage is managed by the DB cluster.)
	//
	//    * RDS Custom
	MaxAllocatedStorage *int64 `type:"integer"`

	// The interval, in seconds, between points when Enhanced Monitoring metrics
	// are collected for the DB instance. To disable collection of Enhanced Monitoring
	// metrics, specify 0.
	//
	// If MonitoringRoleArn is specified, then you must set MonitoringInterval to
	// a value other than 0.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Valid Values: 0 | 1 | 5 | 10 | 15 | 30 | 60
	//
	// Default: 0
	MonitoringInterval *int64 `type:"integer"`

	// The ARN for the IAM role that permits RDS to send enhanced monitoring metrics
	// to Amazon CloudWatch Logs. For example, arn:aws:iam:123456789012:role/emaccess.
	// For information on creating a monitoring role, see Setting Up and Enabling
	// Enhanced Monitoring (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling)
	// in the Amazon RDS User Guide.
	//
	// If MonitoringInterval is set to a value other than 0, then you must supply
	// a MonitoringRoleArn value.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	MonitoringRoleArn *string `type:"string"`

	// Specifies whether the DB instance is a Multi-AZ deployment. You can't set
	// the AvailabilityZone parameter if the DB instance is a Multi-AZ deployment.
	//
	// This setting doesn't apply to the following DB instances:
	//
	//    * Amazon Aurora (DB instance Availability Zones (AZs) are managed by the
	//    DB cluster.)
	//
	//    * RDS Custom
	MultiAZ *bool `type:"boolean"`

	// Specifies whether to use the multi-tenant configuration or the single-tenant
	// configuration (default). This parameter only applies to RDS for Oracle container
	// database (CDB) engines.
	//
	// Note the following restrictions:
	//
	//    * The DB engine that you specify in the request must support the multi-tenant
	//    configuration. If you attempt to enable the multi-tenant configuration
	//    on a DB engine that doesn't support it, the request fails.
	//
	//    * If you specify the multi-tenant configuration when you create your DB
	//    instance, you can't later modify this DB instance to use the single-tenant
	//    configuration.
	MultiTenant *bool `type:"boolean"`

	// The name of the NCHAR character set for the Oracle DB instance.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	NcharCharacterSetName *string `type:"string"`

	// The network type of the DB instance.
	//
	// The network type is determined by the DBSubnetGroup specified for the DB
	// instance. A DBSubnetGroup can support only the IPv4 protocol or the IPv4
	// and the IPv6 protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon RDS User Guide.
	//
	// Valid Values: IPV4 | DUAL
	NetworkType *string `type:"string"`

	// The option group to associate the DB instance with.
	//
	// Permanent options, such as the TDE option for Oracle Advanced Security TDE,
	// can't be removed from an option group. Also, that option group can't be removed
	// from a DB instance after it is associated with a DB instance.
	//
	// This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
	OptionGroupName *string `type:"string"`

	// The Amazon Web Services KMS key identifier for encryption of Performance
	// Insights data.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	//
	// If you don't specify a value for PerformanceInsightsKMSKeyId, then Amazon
	// RDS uses your default KMS key. There is a default KMS key for your Amazon
	// Web Services account. Your Amazon Web Services account has a different default
	// KMS key for each Amazon Web Services Region.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	PerformanceInsightsKMSKeyId *string `type:"string"`

	// The number of days to retain Performance Insights data.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Valid Values:
	//
	//    * 7
	//
	//    * month * 31, where month is a number of months from 1-23. Examples: 93
	//    (3 months * 31), 341 (11 months * 31), 589 (19 months * 31)
	//
	//    * 731
	//
	// Default: 7 days
	//
	// If you specify a retention period that isn't valid, such as 94, Amazon RDS
	// returns an error.
	PerformanceInsightsRetentionPeriod *int64 `type:"integer"`

	// The port number on which the database accepts connections.
	//
	// This setting doesn't apply to Aurora DB instances. The port number is managed
	// by the cluster.
	//
	// Valid Values: 1150-65535
	//
	// Default:
	//
	//    * RDS for Db2 - 50000
	//
	//    * RDS for MariaDB - 3306
	//
	//    * RDS for Microsoft SQL Server - 1433
	//
	//    * RDS for MySQL - 3306
	//
	//    * RDS for Oracle - 1521
	//
	//    * RDS for PostgreSQL - 5432
	//
	// Constraints:
	//
	//    * For RDS for Microsoft SQL Server, the value can't be 1234, 1434, 3260,
	//    3343, 3389, 47001, or 49152-49156.
	Port *int64 `type:"integer"`

	// The daily time range during which automated backups are created if automated
	// backups are enabled, using the BackupRetentionPeriod parameter. The default
	// is a 30-minute window selected at random from an 8-hour block of time for
	// each Amazon Web Services Region. For more information, see Backup window
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. The daily time
	// range for creating automated backups is managed by the DB cluster.
	//
	// Constraints:
	//
	//    * Must be in the format hh24:mi-hh24:mi.
	//
	//    * Must be in Universal Coordinated Time (UTC).
	//
	//    * Must not conflict with the preferred maintenance window.
	//
	//    * Must be at least 30 minutes.
	PreferredBackupWindow *string `type:"string"`

	// The time range each week during which system maintenance can occur. For more
	// information, see Amazon RDS Maintenance Window (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance)
	// in the Amazon RDS User Guide.
	//
	// The default is a 30-minute window selected at random from an 8-hour block
	// of time for each Amazon Web Services Region, occurring on a random day of
	// the week.
	//
	// Constraints:
	//
	//    * Must be in the format ddd:hh24:mi-ddd:hh24:mi.
	//
	//    * The day values must be mon | tue | wed | thu | fri | sat | sun.
	//
	//    * Must be in Universal Coordinated Time (UTC).
	//
	//    * Must not conflict with the preferred backup window.
	//
	//    * Must be at least 30 minutes.
	PreferredMaintenanceWindow *string `type:"string"`

	// The number of CPU cores and the number of threads per core for the DB instance
	// class of the DB instance.
	//
	// This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
	ProcessorFeatures []*ProcessorFeature `locationNameList:"ProcessorFeature" type:"list"`

	// The order of priority in which an Aurora Replica is promoted to the primary
	// instance after a failure of the existing primary instance. For more information,
	// see Fault Tolerance for an Aurora DB Cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraHighAvailability.html#Aurora.Managing.FaultTolerance)
	// in the Amazon Aurora User Guide.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Default: 1
	//
	// Valid Values: 0 - 15
	PromotionTier *int64 `type:"integer"`

	// Specifies whether the DB instance is publicly accessible.
	//
	// When the DB instance is publicly accessible and you connect from outside
	// of the DB instance's virtual private cloud (VPC), its Domain Name System
	// (DNS) endpoint resolves to the public IP address. When you connect from within
	// the same VPC as the DB instance, the endpoint resolves to the private IP
	// address. Access to the DB instance is ultimately controlled by the security
	// group it uses. That public access is not permitted if the security group
	// assigned to the DB instance doesn't permit it.
	//
	// When the DB instance isn't publicly accessible, it is an internal DB instance
	// with a DNS name that resolves to a private IP address.
	//
	// Default: The default behavior varies depending on whether DBSubnetGroupName
	// is specified.
	//
	// If DBSubnetGroupName isn't specified, and PubliclyAccessible isn't specified,
	// the following applies:
	//
	//    * If the default VPC in the target Region doesn’t have an internet gateway
	//    attached to it, the DB instance is private.
	//
	//    * If the default VPC in the target Region has an internet gateway attached
	//    to it, the DB instance is public.
	//
	// If DBSubnetGroupName is specified, and PubliclyAccessible isn't specified,
	// the following applies:
	//
	//    * If the subnets are part of a VPC that doesn’t have an internet gateway
	//    attached to it, the DB instance is private.
	//
	//    * If the subnets are part of a VPC that has an internet gateway attached
	//    to it, the DB instance is public.
	PubliclyAccessible *bool `type:"boolean"`

	// Specifes whether the DB instance is encrypted. By default, it isn't encrypted.
	//
	// For RDS Custom DB instances, either enable this setting or leave it unset.
	// Otherwise, Amazon RDS reports an error.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. The encryption
	// for DB instances is managed by the DB cluster.
	StorageEncrypted *bool `type:"boolean"`

	// The storage throughput value for the DB instance.
	//
	// This setting applies only to the gp3 storage type.
	//
	// This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
	StorageThroughput *int64 `type:"integer"`

	// The storage type to associate with the DB instance.
	//
	// If you specify io1, io2, or gp3, you must also include a value for the Iops
	// parameter.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. Storage is managed
	// by the DB cluster.
	//
	// Valid Values: gp2 | gp3 | io1 | io2 | standard
	//
	// Default: io1, if the Iops parameter is specified. Otherwise, gp2.
	StorageType *string `type:"string"`

	// Tags to assign to the DB instance.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// The ARN from the key store with which to associate the instance for TDE encryption.
	//
	// This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
	TdeCredentialArn *string `type:"string"`

	// The password for the given ARN from the key store in order to access the
	// device.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	TdeCredentialPassword *string `type:"string"`

	// The time zone of the DB instance. The time zone parameter is currently supported
	// only by RDS for Db2 (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-time-zone)
	// and RDS for SQL Server (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.TimeZone).
	Timezone *string `type:"string"`

	// A list of Amazon EC2 VPC security groups to associate with this DB instance.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. The associated
	// list of EC2 VPC security groups is managed by the DB cluster.
	//
	// Default: The default EC2 VPC security group for the DB subnet group's VPC.
	VpcSecurityGroupIds []*string `locationNameList:"VpcSecurityGroupId" 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 CreateDBInstanceInput) 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 CreateDBInstanceInput) GoString() string {
	return s.String()
}

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

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

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *CreateDBInstanceInput) SetAllocatedStorage(v int64) *CreateDBInstanceInput {
	s.AllocatedStorage = &v
	return s
}

// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
func (s *CreateDBInstanceInput) SetAutoMinorVersionUpgrade(v bool) *CreateDBInstanceInput {
	s.AutoMinorVersionUpgrade = &v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *CreateDBInstanceInput) SetAvailabilityZone(v string) *CreateDBInstanceInput {
	s.AvailabilityZone = &v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *CreateDBInstanceInput) SetBackupRetentionPeriod(v int64) *CreateDBInstanceInput {
	s.BackupRetentionPeriod = &v
	return s
}

// SetBackupTarget sets the BackupTarget field's value.
func (s *CreateDBInstanceInput) SetBackupTarget(v string) *CreateDBInstanceInput {
	s.BackupTarget = &v
	return s
}

// SetCACertificateIdentifier sets the CACertificateIdentifier field's value.
func (s *CreateDBInstanceInput) SetCACertificateIdentifier(v string) *CreateDBInstanceInput {
	s.CACertificateIdentifier = &v
	return s
}

// SetCharacterSetName sets the CharacterSetName field's value.
func (s *CreateDBInstanceInput) SetCharacterSetName(v string) *CreateDBInstanceInput {
	s.CharacterSetName = &v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *CreateDBInstanceInput) SetCopyTagsToSnapshot(v bool) *CreateDBInstanceInput {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetCustomIamInstanceProfile sets the CustomIamInstanceProfile field's value.
func (s *CreateDBInstanceInput) SetCustomIamInstanceProfile(v string) *CreateDBInstanceInput {
	s.CustomIamInstanceProfile = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *CreateDBInstanceInput) SetDBClusterIdentifier(v string) *CreateDBInstanceInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *CreateDBInstanceInput) SetDBInstanceClass(v string) *CreateDBInstanceInput {
	s.DBInstanceClass = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *CreateDBInstanceInput) SetDBInstanceIdentifier(v string) *CreateDBInstanceInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDBName sets the DBName field's value.
func (s *CreateDBInstanceInput) SetDBName(v string) *CreateDBInstanceInput {
	s.DBName = &v
	return s
}

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *CreateDBInstanceInput) SetDBParameterGroupName(v string) *CreateDBInstanceInput {
	s.DBParameterGroupName = &v
	return s
}

// SetDBSecurityGroups sets the DBSecurityGroups field's value.
func (s *CreateDBInstanceInput) SetDBSecurityGroups(v []*string) *CreateDBInstanceInput {
	s.DBSecurityGroups = v
	return s
}

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *CreateDBInstanceInput) SetDBSubnetGroupName(v string) *CreateDBInstanceInput {
	s.DBSubnetGroupName = &v
	return s
}

// SetDBSystemId sets the DBSystemId field's value.
func (s *CreateDBInstanceInput) SetDBSystemId(v string) *CreateDBInstanceInput {
	s.DBSystemId = &v
	return s
}

// SetDedicatedLogVolume sets the DedicatedLogVolume field's value.
func (s *CreateDBInstanceInput) SetDedicatedLogVolume(v bool) *CreateDBInstanceInput {
	s.DedicatedLogVolume = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *CreateDBInstanceInput) SetDeletionProtection(v bool) *CreateDBInstanceInput {
	s.DeletionProtection = &v
	return s
}

// SetDomain sets the Domain field's value.
func (s *CreateDBInstanceInput) SetDomain(v string) *CreateDBInstanceInput {
	s.Domain = &v
	return s
}

// SetDomainAuthSecretArn sets the DomainAuthSecretArn field's value.
func (s *CreateDBInstanceInput) SetDomainAuthSecretArn(v string) *CreateDBInstanceInput {
	s.DomainAuthSecretArn = &v
	return s
}

// SetDomainDnsIps sets the DomainDnsIps field's value.
func (s *CreateDBInstanceInput) SetDomainDnsIps(v []*string) *CreateDBInstanceInput {
	s.DomainDnsIps = v
	return s
}

// SetDomainFqdn sets the DomainFqdn field's value.
func (s *CreateDBInstanceInput) SetDomainFqdn(v string) *CreateDBInstanceInput {
	s.DomainFqdn = &v
	return s
}

// SetDomainIAMRoleName sets the DomainIAMRoleName field's value.
func (s *CreateDBInstanceInput) SetDomainIAMRoleName(v string) *CreateDBInstanceInput {
	s.DomainIAMRoleName = &v
	return s
}

// SetDomainOu sets the DomainOu field's value.
func (s *CreateDBInstanceInput) SetDomainOu(v string) *CreateDBInstanceInput {
	s.DomainOu = &v
	return s
}

// SetEnableCloudwatchLogsExports sets the EnableCloudwatchLogsExports field's value.
func (s *CreateDBInstanceInput) SetEnableCloudwatchLogsExports(v []*string) *CreateDBInstanceInput {
	s.EnableCloudwatchLogsExports = v
	return s
}

// SetEnableCustomerOwnedIp sets the EnableCustomerOwnedIp field's value.
func (s *CreateDBInstanceInput) SetEnableCustomerOwnedIp(v bool) *CreateDBInstanceInput {
	s.EnableCustomerOwnedIp = &v
	return s
}

// SetEnableIAMDatabaseAuthentication sets the EnableIAMDatabaseAuthentication field's value.
func (s *CreateDBInstanceInput) SetEnableIAMDatabaseAuthentication(v bool) *CreateDBInstanceInput {
	s.EnableIAMDatabaseAuthentication = &v
	return s
}

// SetEnablePerformanceInsights sets the EnablePerformanceInsights field's value.
func (s *CreateDBInstanceInput) SetEnablePerformanceInsights(v bool) *CreateDBInstanceInput {
	s.EnablePerformanceInsights = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *CreateDBInstanceInput) SetEngine(v string) *CreateDBInstanceInput {
	s.Engine = &v
	return s
}

// SetEngineLifecycleSupport sets the EngineLifecycleSupport field's value.
func (s *CreateDBInstanceInput) SetEngineLifecycleSupport(v string) *CreateDBInstanceInput {
	s.EngineLifecycleSupport = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *CreateDBInstanceInput) SetEngineVersion(v string) *CreateDBInstanceInput {
	s.EngineVersion = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *CreateDBInstanceInput) SetIops(v int64) *CreateDBInstanceInput {
	s.Iops = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *CreateDBInstanceInput) SetKmsKeyId(v string) *CreateDBInstanceInput {
	s.KmsKeyId = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *CreateDBInstanceInput) SetLicenseModel(v string) *CreateDBInstanceInput {
	s.LicenseModel = &v
	return s
}

// SetManageMasterUserPassword sets the ManageMasterUserPassword field's value.
func (s *CreateDBInstanceInput) SetManageMasterUserPassword(v bool) *CreateDBInstanceInput {
	s.ManageMasterUserPassword = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *CreateDBInstanceInput) SetMasterUserPassword(v string) *CreateDBInstanceInput {
	s.MasterUserPassword = &v
	return s
}

// SetMasterUserSecretKmsKeyId sets the MasterUserSecretKmsKeyId field's value.
func (s *CreateDBInstanceInput) SetMasterUserSecretKmsKeyId(v string) *CreateDBInstanceInput {
	s.MasterUserSecretKmsKeyId = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *CreateDBInstanceInput) SetMasterUsername(v string) *CreateDBInstanceInput {
	s.MasterUsername = &v
	return s
}

// SetMaxAllocatedStorage sets the MaxAllocatedStorage field's value.
func (s *CreateDBInstanceInput) SetMaxAllocatedStorage(v int64) *CreateDBInstanceInput {
	s.MaxAllocatedStorage = &v
	return s
}

// SetMonitoringInterval sets the MonitoringInterval field's value.
func (s *CreateDBInstanceInput) SetMonitoringInterval(v int64) *CreateDBInstanceInput {
	s.MonitoringInterval = &v
	return s
}

// SetMonitoringRoleArn sets the MonitoringRoleArn field's value.
func (s *CreateDBInstanceInput) SetMonitoringRoleArn(v string) *CreateDBInstanceInput {
	s.MonitoringRoleArn = &v
	return s
}

// SetMultiAZ sets the MultiAZ field's value.
func (s *CreateDBInstanceInput) SetMultiAZ(v bool) *CreateDBInstanceInput {
	s.MultiAZ = &v
	return s
}

// SetMultiTenant sets the MultiTenant field's value.
func (s *CreateDBInstanceInput) SetMultiTenant(v bool) *CreateDBInstanceInput {
	s.MultiTenant = &v
	return s
}

// SetNcharCharacterSetName sets the NcharCharacterSetName field's value.
func (s *CreateDBInstanceInput) SetNcharCharacterSetName(v string) *CreateDBInstanceInput {
	s.NcharCharacterSetName = &v
	return s
}

// SetNetworkType sets the NetworkType field's value.
func (s *CreateDBInstanceInput) SetNetworkType(v string) *CreateDBInstanceInput {
	s.NetworkType = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *CreateDBInstanceInput) SetOptionGroupName(v string) *CreateDBInstanceInput {
	s.OptionGroupName = &v
	return s
}

// SetPerformanceInsightsKMSKeyId sets the PerformanceInsightsKMSKeyId field's value.
func (s *CreateDBInstanceInput) SetPerformanceInsightsKMSKeyId(v string) *CreateDBInstanceInput {
	s.PerformanceInsightsKMSKeyId = &v
	return s
}

// SetPerformanceInsightsRetentionPeriod sets the PerformanceInsightsRetentionPeriod field's value.
func (s *CreateDBInstanceInput) SetPerformanceInsightsRetentionPeriod(v int64) *CreateDBInstanceInput {
	s.PerformanceInsightsRetentionPeriod = &v
	return s
}

// SetPort sets the Port field's value.
func (s *CreateDBInstanceInput) SetPort(v int64) *CreateDBInstanceInput {
	s.Port = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *CreateDBInstanceInput) SetPreferredBackupWindow(v string) *CreateDBInstanceInput {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *CreateDBInstanceInput) SetPreferredMaintenanceWindow(v string) *CreateDBInstanceInput {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetProcessorFeatures sets the ProcessorFeatures field's value.
func (s *CreateDBInstanceInput) SetProcessorFeatures(v []*ProcessorFeature) *CreateDBInstanceInput {
	s.ProcessorFeatures = v
	return s
}

// SetPromotionTier sets the PromotionTier field's value.
func (s *CreateDBInstanceInput) SetPromotionTier(v int64) *CreateDBInstanceInput {
	s.PromotionTier = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *CreateDBInstanceInput) SetPubliclyAccessible(v bool) *CreateDBInstanceInput {
	s.PubliclyAccessible = &v
	return s
}

// SetStorageEncrypted sets the StorageEncrypted field's value.
func (s *CreateDBInstanceInput) SetStorageEncrypted(v bool) *CreateDBInstanceInput {
	s.StorageEncrypted = &v
	return s
}

// SetStorageThroughput sets the StorageThroughput field's value.
func (s *CreateDBInstanceInput) SetStorageThroughput(v int64) *CreateDBInstanceInput {
	s.StorageThroughput = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *CreateDBInstanceInput) SetStorageType(v string) *CreateDBInstanceInput {
	s.StorageType = &v
	return s
}

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

// SetTdeCredentialArn sets the TdeCredentialArn field's value.
func (s *CreateDBInstanceInput) SetTdeCredentialArn(v string) *CreateDBInstanceInput {
	s.TdeCredentialArn = &v
	return s
}

// SetTdeCredentialPassword sets the TdeCredentialPassword field's value.
func (s *CreateDBInstanceInput) SetTdeCredentialPassword(v string) *CreateDBInstanceInput {
	s.TdeCredentialPassword = &v
	return s
}

// SetTimezone sets the Timezone field's value.
func (s *CreateDBInstanceInput) SetTimezone(v string) *CreateDBInstanceInput {
	s.Timezone = &v
	return s
}

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *CreateDBInstanceInput) SetVpcSecurityGroupIds(v []*string) *CreateDBInstanceInput {
	s.VpcSecurityGroupIds = v
	return s
}

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

	// Contains the details of an Amazon RDS DB instance.
	//
	// This data type is used as a response element in the operations CreateDBInstance,
	// CreateDBInstanceReadReplica, DeleteDBInstance, DescribeDBInstances, ModifyDBInstance,
	// PromoteReadReplica, RebootDBInstance, RestoreDBInstanceFromDBSnapshot, RestoreDBInstanceFromS3,
	// RestoreDBInstanceToPointInTime, StartDBInstance, and StopDBInstance.
	DBInstance *DBInstance `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 CreateDBInstanceOutput) 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 CreateDBInstanceOutput) GoString() string {
	return s.String()
}

// SetDBInstance sets the DBInstance field's value.
func (s *CreateDBInstanceOutput) SetDBInstance(v *DBInstance) *CreateDBInstanceOutput {
	s.DBInstance = v
	return s
}

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

	// The amount of storage (in gibibytes) to allocate initially for the read replica.
	// Follow the allocation rules specified in CreateDBInstance.
	//
	// Be sure to allocate enough storage for your read replica so that the create
	// operation can succeed. You can also allocate additional storage for future
	// growth.
	AllocatedStorage *int64 `type:"integer"`

	// Specifies whether to automatically apply minor engine upgrades to the read
	// replica during the maintenance window.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Default: Inherits the value from the source DB instance.
	AutoMinorVersionUpgrade *bool `type:"boolean"`

	// The Availability Zone (AZ) where the read replica will be created.
	//
	// Default: A random, system-chosen Availability Zone in the endpoint's Amazon
	// Web Services Region.
	//
	// Example: us-east-1d
	AvailabilityZone *string `type:"string"`

	// The CA certificate identifier to use for the read replica's server certificate.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	CACertificateIdentifier *string `type:"string"`

	// Specifies whether to copy all tags from the read replica to snapshots of
	// the read replica. By default, tags aren't copied.
	CopyTagsToSnapshot *bool `type:"boolean"`

	// The instance profile associated with the underlying Amazon EC2 instance of
	// an RDS Custom DB instance. The instance profile must meet the following requirements:
	//
	//    * The profile must exist in your account.
	//
	//    * The profile must have an IAM role that Amazon EC2 has permissions to
	//    assume.
	//
	//    * The instance profile name and the associated IAM role name must start
	//    with the prefix AWSRDSCustom.
	//
	// For the list of permissions required for the IAM role, see Configure IAM
	// and your VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc)
	// in the Amazon RDS User Guide.
	//
	// This setting is required for RDS Custom DB instances.
	CustomIamInstanceProfile *string `type:"string"`

	// The compute and memory capacity of the read replica, for example db.m4.large.
	// Not all DB instance classes are available in all Amazon Web Services Regions,
	// or for all database engines. For the full list of DB instance classes, and
	// availability for your engine, see DB Instance Class (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
	// in the Amazon RDS User Guide.
	//
	// Default: Inherits the value from the source DB instance.
	DBInstanceClass *string `type:"string"`

	// The DB instance identifier of the read replica. This identifier is the unique
	// key that identifies a DB instance. This parameter is stored as a lowercase
	// string.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// The name of the DB parameter group to associate with this DB instance.
	//
	// If you don't specify a value for DBParameterGroupName, then Amazon RDS uses
	// the DBParameterGroup of the source DB instance for a same Region read replica,
	// or the default DBParameterGroup for the specified DB engine for a cross-Region
	// read replica.
	//
	// Specifying a parameter group for this operation is only supported for MySQL
	// DB instances for cross-Region read replicas and for Oracle DB instances.
	// It isn't supported for MySQL DB instances for same Region read replicas or
	// for RDS Custom.
	//
	// Constraints:
	//
	//    * Must be 1 to 255 letters, numbers, or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	DBParameterGroupName *string `type:"string"`

	// A DB subnet group for the DB instance. The new DB instance is created in
	// the VPC associated with the DB subnet group. If no DB subnet group is specified,
	// then the new DB instance isn't created in a VPC.
	//
	// Constraints:
	//
	//    * If supplied, must match the name of an existing DB subnet group.
	//
	//    * The specified DB subnet group must be in the same Amazon Web Services
	//    Region in which the operation is running.
	//
	//    * All read replicas in one Amazon Web Services Region that are created
	//    from the same source DB instance must either: Specify DB subnet groups
	//    from the same VPC. All these read replicas are created in the same VPC.
	//    Not specify a DB subnet group. All these read replicas are created outside
	//    of any VPC.
	//
	// Example: mydbsubnetgroup
	DBSubnetGroupName *string `type:"string"`

	// Indicates whether the DB instance has a dedicated log volume (DLV) enabled.
	DedicatedLogVolume *bool `type:"boolean"`

	// Specifies whether to enable deletion protection for the DB instance. The
	// database can't be deleted when deletion protection is enabled. By default,
	// deletion protection isn't enabled. For more information, see Deleting a DB
	// Instance (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html).
	DeletionProtection *bool `type:"boolean"`

	// DestinationRegion is used for presigning the request to a given region.
	DestinationRegion *string `type:"string"`

	// The Active Directory directory ID to create the DB instance in. Currently,
	// only MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB instances can
	// be created in an Active Directory Domain.
	//
	// For more information, see Kerberos Authentication (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	Domain *string `type:"string"`

	// The ARN for the Secrets Manager secret with the credentials for the user
	// joining the domain.
	//
	// Example: arn:aws:secretsmanager:region:account-number:secret:myselfmanagedADtestsecret-123456
	DomainAuthSecretArn *string `type:"string"`

	// The IPv4 DNS IP addresses of your primary and secondary Active Directory
	// domain controllers.
	//
	// Constraints:
	//
	//    * Two IP addresses must be provided. If there isn't a secondary domain
	//    controller, use the IP address of the primary domain controller for both
	//    entries in the list.
	//
	// Example: 123.124.125.126,234.235.236.237
	DomainDnsIps []*string `type:"list"`

	// The fully qualified domain name (FQDN) of an Active Directory domain.
	//
	// Constraints:
	//
	//    * Can't be longer than 64 characters.
	//
	// Example: mymanagedADtest.mymanagedAD.mydomain
	DomainFqdn *string `type:"string"`

	// The name of the IAM role to use when making API calls to the Directory Service.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	DomainIAMRoleName *string `type:"string"`

	// The Active Directory organizational unit for your DB instance to join.
	//
	// Constraints:
	//
	//    * Must be in the distinguished name format.
	//
	//    * Can't be longer than 64 characters.
	//
	// Example: OU=mymanagedADtestOU,DC=mymanagedADtest,DC=mymanagedAD,DC=mydomain
	DomainOu *string `type:"string"`

	// The list of logs that the new DB instance is to export to CloudWatch Logs.
	// The values in the list depend on the DB engine being used. For more information,
	// see Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	EnableCloudwatchLogsExports []*string `type:"list"`

	// Specifies whether to enable a customer-owned IP address (CoIP) for an RDS
	// on Outposts read replica.
	//
	// A CoIP provides local or external connectivity to resources in your Outpost
	// subnets through your on-premises network. For some use cases, a CoIP can
	// provide lower latency for connections to the read replica from outside of
	// its virtual private cloud (VPC) on your local network.
	//
	// For more information about RDS on Outposts, see Working with Amazon RDS on
	// Amazon Web Services Outposts (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html)
	// in the Amazon RDS User Guide.
	//
	// For more information about CoIPs, see Customer-owned IP addresses (https://docs.aws.amazon.com/outposts/latest/userguide/routing.html#ip-addressing)
	// in the Amazon Web Services Outposts User Guide.
	EnableCustomerOwnedIp *bool `type:"boolean"`

	// Specifies whether to enable mapping of Amazon Web Services Identity and Access
	// Management (IAM) accounts to database accounts. By default, mapping isn't
	// enabled.
	//
	// For more information about IAM database authentication, see IAM Database
	// Authentication for MySQL and PostgreSQL (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	EnableIAMDatabaseAuthentication *bool `type:"boolean"`

	// Specifies whether to enable Performance Insights for the read replica.
	//
	// For more information, see Using Amazon Performance Insights (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	EnablePerformanceInsights *bool `type:"boolean"`

	// The amount of Provisioned IOPS (input/output operations per second) to initially
	// allocate for the DB instance.
	Iops *int64 `type:"integer"`

	// The Amazon Web Services KMS key identifier for an encrypted read replica.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	//
	// If you create an encrypted read replica in the same Amazon Web Services Region
	// as the source DB instance or Multi-AZ DB cluster, don't specify a value for
	// this parameter. A read replica in the same Amazon Web Services Region is
	// always encrypted with the same KMS key as the source DB instance or cluster.
	//
	// If you create an encrypted read replica in a different Amazon Web Services
	// Region, then you must specify a KMS key identifier for the destination Amazon
	// Web Services Region. KMS keys are specific to the Amazon Web Services Region
	// that they are created in, and you can't use KMS keys from one Amazon Web
	// Services Region in another Amazon Web Services Region.
	//
	// You can't create an encrypted read replica from an unencrypted DB instance
	// or Multi-AZ DB cluster.
	//
	// This setting doesn't apply to RDS Custom, which uses the same KMS key as
	// the primary replica.
	KmsKeyId *string `type:"string"`

	// The upper limit in gibibytes (GiB) to which Amazon RDS can automatically
	// scale the storage of the DB instance.
	//
	// For more information about this setting, including limitations that apply
	// to it, see Managing capacity automatically with Amazon RDS storage autoscaling
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling)
	// in the Amazon RDS User Guide.
	MaxAllocatedStorage *int64 `type:"integer"`

	// The interval, in seconds, between points when Enhanced Monitoring metrics
	// are collected for the read replica. To disable collection of Enhanced Monitoring
	// metrics, specify 0. The default is 0.
	//
	// If MonitoringRoleArn is specified, then you must set MonitoringInterval to
	// a value other than 0.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Valid Values: 0, 1, 5, 10, 15, 30, 60
	//
	// Default: 0
	MonitoringInterval *int64 `type:"integer"`

	// The ARN for the IAM role that permits RDS to send enhanced monitoring metrics
	// to Amazon CloudWatch Logs. For example, arn:aws:iam:123456789012:role/emaccess.
	// For information on creating a monitoring role, go to To create an IAM role
	// for Amazon RDS Enhanced Monitoring (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.html#USER_Monitoring.OS.IAMRole)
	// in the Amazon RDS User Guide.
	//
	// If MonitoringInterval is set to a value other than 0, then you must supply
	// a MonitoringRoleArn value.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	MonitoringRoleArn *string `type:"string"`

	// Specifies whether the read replica is in a Multi-AZ deployment.
	//
	// You can create a read replica as a Multi-AZ DB instance. RDS creates a standby
	// of your replica in another Availability Zone for failover support for the
	// replica. Creating your read replica as a Multi-AZ DB instance is independent
	// of whether the source is a Multi-AZ DB instance or a Multi-AZ DB cluster.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	MultiAZ *bool `type:"boolean"`

	// The network type of the DB instance.
	//
	// Valid Values:
	//
	//    * IPV4
	//
	//    * DUAL
	//
	// The network type is determined by the DBSubnetGroup specified for read replica.
	// A DBSubnetGroup can support only the IPv4 protocol or the IPv4 and the IPv6
	// protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon RDS User Guide.
	NetworkType *string `type:"string"`

	// The option group to associate the DB instance with. If not specified, RDS
	// uses the option group associated with the source DB instance or cluster.
	//
	// For SQL Server, you must use the option group associated with the source.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	OptionGroupName *string `type:"string"`

	// The Amazon Web Services KMS key identifier for encryption of Performance
	// Insights data.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	//
	// If you do not specify a value for PerformanceInsightsKMSKeyId, then Amazon
	// RDS uses your default KMS key. There is a default KMS key for your Amazon
	// Web Services account. Your Amazon Web Services account has a different default
	// KMS key for each Amazon Web Services Region.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	PerformanceInsightsKMSKeyId *string `type:"string"`

	// The number of days to retain Performance Insights data.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Valid Values:
	//
	//    * 7
	//
	//    * month * 31, where month is a number of months from 1-23. Examples: 93
	//    (3 months * 31), 341 (11 months * 31), 589 (19 months * 31)
	//
	//    * 731
	//
	// Default: 7 days
	//
	// If you specify a retention period that isn't valid, such as 94, Amazon RDS
	// returns an error.
	PerformanceInsightsRetentionPeriod *int64 `type:"integer"`

	// The port number that the DB instance uses for connections.
	//
	// Valid Values: 1150-65535
	//
	// Default: Inherits the value from the source DB instance.
	Port *int64 `type:"integer"`

	// When you are creating a read replica from one Amazon Web Services GovCloud
	// (US) Region to another or from one China Amazon Web Services Region to another,
	// the URL that contains a Signature Version 4 signed request for the CreateDBInstanceReadReplica
	// API operation in the source Amazon Web Services Region that contains the
	// source DB instance.
	//
	// This setting applies only to Amazon Web Services GovCloud (US) Regions and
	// China Amazon Web Services Regions. It's ignored in other Amazon Web Services
	// Regions.
	//
	// This setting applies only when replicating from a source DB instance. Source
	// DB clusters aren't supported in Amazon Web Services GovCloud (US) Regions
	// and China Amazon Web Services Regions.
	//
	// You must specify this parameter when you create an encrypted read replica
	// from another Amazon Web Services Region by using the Amazon RDS API. Don't
	// specify PreSignedUrl when you are creating an encrypted read replica in the
	// same Amazon Web Services Region.
	//
	// The presigned URL must be a valid request for the CreateDBInstanceReadReplica
	// API operation that can run in the source Amazon Web Services Region that
	// contains the encrypted source DB instance. The presigned URL request must
	// contain the following parameter values:
	//
	//    * DestinationRegion - The Amazon Web Services Region that the encrypted
	//    read replica is created in. This Amazon Web Services Region is the same
	//    one where the CreateDBInstanceReadReplica operation is called that contains
	//    this presigned URL. For example, if you create an encrypted DB instance
	//    in the us-west-1 Amazon Web Services Region, from a source DB instance
	//    in the us-east-2 Amazon Web Services Region, then you call the CreateDBInstanceReadReplica
	//    operation in the us-east-1 Amazon Web Services Region and provide a presigned
	//    URL that contains a call to the CreateDBInstanceReadReplica operation
	//    in the us-west-2 Amazon Web Services Region. For this example, the DestinationRegion
	//    in the presigned URL must be set to the us-east-1 Amazon Web Services
	//    Region.
	//
	//    * KmsKeyId - The KMS key identifier for the key to use to encrypt the
	//    read replica in the destination Amazon Web Services Region. This is the
	//    same identifier for both the CreateDBInstanceReadReplica operation that
	//    is called in the destination Amazon Web Services Region, and the operation
	//    contained in the presigned URL.
	//
	//    * SourceDBInstanceIdentifier - The DB instance identifier for the encrypted
	//    DB instance to be replicated. This identifier must be in the Amazon Resource
	//    Name (ARN) format for the source Amazon Web Services Region. For example,
	//    if you are creating an encrypted read replica from a DB instance in the
	//    us-west-2 Amazon Web Services Region, then your SourceDBInstanceIdentifier
	//    looks like the following example: arn:aws:rds:us-west-2:123456789012:instance:mysql-instance1-20161115.
	//
	// To learn how to generate a Signature Version 4 signed request, see Authenticating
	// Requests: Using Query Parameters (Amazon Web Services Signature Version 4)
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
	// and Signature Version 4 Signing Process (https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).
	//
	// If you are using an Amazon Web Services SDK tool or the CLI, you can specify
	// SourceRegion (or --source-region for the CLI) instead of specifying PreSignedUrl
	// manually. Specifying SourceRegion autogenerates a presigned URL that is a
	// valid request for the operation that can run in the source Amazon Web Services
	// Region.
	//
	// SourceRegion isn't supported for SQL Server, because Amazon RDS for SQL Server
	// doesn't support cross-Region read replicas.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	PreSignedUrl *string `type:"string"`

	// The number of CPU cores and the number of threads per core for the DB instance
	// class of the DB instance.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	ProcessorFeatures []*ProcessorFeature `locationNameList:"ProcessorFeature" type:"list"`

	// Specifies whether the DB instance is publicly accessible.
	//
	// When the DB cluster is publicly accessible, its Domain Name System (DNS)
	// endpoint resolves to the private IP address from within the DB cluster's
	// virtual private cloud (VPC). It resolves to the public IP address from outside
	// of the DB cluster's VPC. Access to the DB cluster is ultimately controlled
	// by the security group it uses. That public access isn't permitted if the
	// security group assigned to the DB cluster doesn't permit it.
	//
	// When the DB instance isn't publicly accessible, it is an internal DB instance
	// with a DNS name that resolves to a private IP address.
	//
	// For more information, see CreateDBInstance.
	PubliclyAccessible *bool `type:"boolean"`

	// The open mode of the replica database: mounted or read-only.
	//
	// This parameter is only supported for Oracle DB instances.
	//
	// Mounted DB replicas are included in Oracle Database Enterprise Edition. The
	// main use case for mounted replicas is cross-Region disaster recovery. The
	// primary database doesn't use Active Data Guard to transmit information to
	// the mounted replica. Because it doesn't accept user connections, a mounted
	// replica can't serve a read-only workload.
	//
	// You can create a combination of mounted and read-only DB replicas for the
	// same primary DB instance. For more information, see Working with Oracle Read
	// Replicas for Amazon RDS (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-read-replicas.html)
	// in the Amazon RDS User Guide.
	//
	// For RDS Custom, you must specify this parameter and set it to mounted. The
	// value won't be set by default. After replica creation, you can manage the
	// open mode manually.
	ReplicaMode *string `type:"string" enum:"ReplicaMode"`

	// The identifier of the Multi-AZ DB cluster that will act as the source for
	// the read replica. Each DB cluster can have up to 15 read replicas.
	//
	// Constraints:
	//
	//    * Must be the identifier of an existing Multi-AZ DB cluster.
	//
	//    * Can't be specified if the SourceDBInstanceIdentifier parameter is also
	//    specified.
	//
	//    * The specified DB cluster must have automatic backups enabled, that is,
	//    its backup retention period must be greater than 0.
	//
	//    * The source DB cluster must be in the same Amazon Web Services Region
	//    as the read replica. Cross-Region replication isn't supported.
	SourceDBClusterIdentifier *string `type:"string"`

	// The identifier of the DB instance that will act as the source for the read
	// replica. Each DB instance can have up to 15 read replicas, with the exception
	// of Oracle and SQL Server, which can have up to five.
	//
	// Constraints:
	//
	//    * Must be the identifier of an existing Db2, MariaDB, MySQL, Oracle, PostgreSQL,
	//    or SQL Server DB instance.
	//
	//    * Can't be specified if the SourceDBClusterIdentifier parameter is also
	//    specified.
	//
	//    * For the limitations of Oracle read replicas, see Version and licensing
	//    considerations for RDS for Oracle replicas (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-read-replicas.limitations.html#oracle-read-replicas.limitations.versions-and-licenses)
	//    in the Amazon RDS User Guide.
	//
	//    * For the limitations of SQL Server read replicas, see Read replica limitations
	//    with SQL Server (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.ReadReplicas.html#SQLServer.ReadReplicas.Limitations)
	//    in the Amazon RDS User Guide.
	//
	//    * The specified DB instance must have automatic backups enabled, that
	//    is, its backup retention period must be greater than 0.
	//
	//    * If the source DB instance is in the same Amazon Web Services Region
	//    as the read replica, specify a valid DB instance identifier.
	//
	//    * If the source DB instance is in a different Amazon Web Services Region
	//    from the read replica, specify a valid DB instance ARN. For more information,
	//    see Constructing an ARN for Amazon RDS (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing)
	//    in the Amazon RDS User Guide. This doesn't apply to SQL Server or RDS
	//    Custom, which don't support cross-Region replicas.
	SourceDBInstanceIdentifier *string `type:"string"`

	// SourceRegion is the source region where the resource exists. This is not
	// sent over the wire and is only used for presigning. This value should always
	// have the same region as the source ARN.
	SourceRegion *string `type:"string" ignore:"true"`

	// Specifies the storage throughput value for the read replica.
	//
	// This setting doesn't apply to RDS Custom or Amazon Aurora DB instances.
	StorageThroughput *int64 `type:"integer"`

	// The storage type to associate with the read replica.
	//
	// If you specify io1, io2, or gp3, you must also include a value for the Iops
	// parameter.
	//
	// Valid Values: gp2 | gp3 | io1 | io2 | standard
	//
	// Default: io1 if the Iops parameter is specified. Otherwise, gp2.
	StorageType *string `type:"string"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// Whether to upgrade the storage file system configuration on the read replica.
	// This option migrates the read replica from the old storage file system layout
	// to the preferred layout.
	UpgradeStorageConfig *bool `type:"boolean"`

	// Specifies whether the DB instance class of the DB instance uses its default
	// processor features.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	UseDefaultProcessorFeatures *bool `type:"boolean"`

	// A list of Amazon EC2 VPC security groups to associate with the read replica.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Default: The default EC2 VPC security group for the DB subnet group's VPC.
	VpcSecurityGroupIds []*string `locationNameList:"VpcSecurityGroupId" 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 CreateDBInstanceReadReplicaInput) 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 CreateDBInstanceReadReplicaInput) GoString() string {
	return s.String()
}

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

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

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *CreateDBInstanceReadReplicaInput) SetAllocatedStorage(v int64) *CreateDBInstanceReadReplicaInput {
	s.AllocatedStorage = &v
	return s
}

// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
func (s *CreateDBInstanceReadReplicaInput) SetAutoMinorVersionUpgrade(v bool) *CreateDBInstanceReadReplicaInput {
	s.AutoMinorVersionUpgrade = &v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *CreateDBInstanceReadReplicaInput) SetAvailabilityZone(v string) *CreateDBInstanceReadReplicaInput {
	s.AvailabilityZone = &v
	return s
}

// SetCACertificateIdentifier sets the CACertificateIdentifier field's value.
func (s *CreateDBInstanceReadReplicaInput) SetCACertificateIdentifier(v string) *CreateDBInstanceReadReplicaInput {
	s.CACertificateIdentifier = &v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *CreateDBInstanceReadReplicaInput) SetCopyTagsToSnapshot(v bool) *CreateDBInstanceReadReplicaInput {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetCustomIamInstanceProfile sets the CustomIamInstanceProfile field's value.
func (s *CreateDBInstanceReadReplicaInput) SetCustomIamInstanceProfile(v string) *CreateDBInstanceReadReplicaInput {
	s.CustomIamInstanceProfile = &v
	return s
}

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *CreateDBInstanceReadReplicaInput) SetDBInstanceClass(v string) *CreateDBInstanceReadReplicaInput {
	s.DBInstanceClass = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *CreateDBInstanceReadReplicaInput) SetDBInstanceIdentifier(v string) *CreateDBInstanceReadReplicaInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *CreateDBInstanceReadReplicaInput) SetDBParameterGroupName(v string) *CreateDBInstanceReadReplicaInput {
	s.DBParameterGroupName = &v
	return s
}

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *CreateDBInstanceReadReplicaInput) SetDBSubnetGroupName(v string) *CreateDBInstanceReadReplicaInput {
	s.DBSubnetGroupName = &v
	return s
}

// SetDedicatedLogVolume sets the DedicatedLogVolume field's value.
func (s *CreateDBInstanceReadReplicaInput) SetDedicatedLogVolume(v bool) *CreateDBInstanceReadReplicaInput {
	s.DedicatedLogVolume = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *CreateDBInstanceReadReplicaInput) SetDeletionProtection(v bool) *CreateDBInstanceReadReplicaInput {
	s.DeletionProtection = &v
	return s
}

// SetDestinationRegion sets the DestinationRegion field's value.
func (s *CreateDBInstanceReadReplicaInput) SetDestinationRegion(v string) *CreateDBInstanceReadReplicaInput {
	s.DestinationRegion = &v
	return s
}

// SetDomain sets the Domain field's value.
func (s *CreateDBInstanceReadReplicaInput) SetDomain(v string) *CreateDBInstanceReadReplicaInput {
	s.Domain = &v
	return s
}

// SetDomainAuthSecretArn sets the DomainAuthSecretArn field's value.
func (s *CreateDBInstanceReadReplicaInput) SetDomainAuthSecretArn(v string) *CreateDBInstanceReadReplicaInput {
	s.DomainAuthSecretArn = &v
	return s
}

// SetDomainDnsIps sets the DomainDnsIps field's value.
func (s *CreateDBInstanceReadReplicaInput) SetDomainDnsIps(v []*string) *CreateDBInstanceReadReplicaInput {
	s.DomainDnsIps = v
	return s
}

// SetDomainFqdn sets the DomainFqdn field's value.
func (s *CreateDBInstanceReadReplicaInput) SetDomainFqdn(v string) *CreateDBInstanceReadReplicaInput {
	s.DomainFqdn = &v
	return s
}

// SetDomainIAMRoleName sets the DomainIAMRoleName field's value.
func (s *CreateDBInstanceReadReplicaInput) SetDomainIAMRoleName(v string) *CreateDBInstanceReadReplicaInput {
	s.DomainIAMRoleName = &v
	return s
}

// SetDomainOu sets the DomainOu field's value.
func (s *CreateDBInstanceReadReplicaInput) SetDomainOu(v string) *CreateDBInstanceReadReplicaInput {
	s.DomainOu = &v
	return s
}

// SetEnableCloudwatchLogsExports sets the EnableCloudwatchLogsExports field's value.
func (s *CreateDBInstanceReadReplicaInput) SetEnableCloudwatchLogsExports(v []*string) *CreateDBInstanceReadReplicaInput {
	s.EnableCloudwatchLogsExports = v
	return s
}

// SetEnableCustomerOwnedIp sets the EnableCustomerOwnedIp field's value.
func (s *CreateDBInstanceReadReplicaInput) SetEnableCustomerOwnedIp(v bool) *CreateDBInstanceReadReplicaInput {
	s.EnableCustomerOwnedIp = &v
	return s
}

// SetEnableIAMDatabaseAuthentication sets the EnableIAMDatabaseAuthentication field's value.
func (s *CreateDBInstanceReadReplicaInput) SetEnableIAMDatabaseAuthentication(v bool) *CreateDBInstanceReadReplicaInput {
	s.EnableIAMDatabaseAuthentication = &v
	return s
}

// SetEnablePerformanceInsights sets the EnablePerformanceInsights field's value.
func (s *CreateDBInstanceReadReplicaInput) SetEnablePerformanceInsights(v bool) *CreateDBInstanceReadReplicaInput {
	s.EnablePerformanceInsights = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *CreateDBInstanceReadReplicaInput) SetIops(v int64) *CreateDBInstanceReadReplicaInput {
	s.Iops = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *CreateDBInstanceReadReplicaInput) SetKmsKeyId(v string) *CreateDBInstanceReadReplicaInput {
	s.KmsKeyId = &v
	return s
}

// SetMaxAllocatedStorage sets the MaxAllocatedStorage field's value.
func (s *CreateDBInstanceReadReplicaInput) SetMaxAllocatedStorage(v int64) *CreateDBInstanceReadReplicaInput {
	s.MaxAllocatedStorage = &v
	return s
}

// SetMonitoringInterval sets the MonitoringInterval field's value.
func (s *CreateDBInstanceReadReplicaInput) SetMonitoringInterval(v int64) *CreateDBInstanceReadReplicaInput {
	s.MonitoringInterval = &v
	return s
}

// SetMonitoringRoleArn sets the MonitoringRoleArn field's value.
func (s *CreateDBInstanceReadReplicaInput) SetMonitoringRoleArn(v string) *CreateDBInstanceReadReplicaInput {
	s.MonitoringRoleArn = &v
	return s
}

// SetMultiAZ sets the MultiAZ field's value.
func (s *CreateDBInstanceReadReplicaInput) SetMultiAZ(v bool) *CreateDBInstanceReadReplicaInput {
	s.MultiAZ = &v
	return s
}

// SetNetworkType sets the NetworkType field's value.
func (s *CreateDBInstanceReadReplicaInput) SetNetworkType(v string) *CreateDBInstanceReadReplicaInput {
	s.NetworkType = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *CreateDBInstanceReadReplicaInput) SetOptionGroupName(v string) *CreateDBInstanceReadReplicaInput {
	s.OptionGroupName = &v
	return s
}

// SetPerformanceInsightsKMSKeyId sets the PerformanceInsightsKMSKeyId field's value.
func (s *CreateDBInstanceReadReplicaInput) SetPerformanceInsightsKMSKeyId(v string) *CreateDBInstanceReadReplicaInput {
	s.PerformanceInsightsKMSKeyId = &v
	return s
}

// SetPerformanceInsightsRetentionPeriod sets the PerformanceInsightsRetentionPeriod field's value.
func (s *CreateDBInstanceReadReplicaInput) SetPerformanceInsightsRetentionPeriod(v int64) *CreateDBInstanceReadReplicaInput {
	s.PerformanceInsightsRetentionPeriod = &v
	return s
}

// SetPort sets the Port field's value.
func (s *CreateDBInstanceReadReplicaInput) SetPort(v int64) *CreateDBInstanceReadReplicaInput {
	s.Port = &v
	return s
}

// SetPreSignedUrl sets the PreSignedUrl field's value.
func (s *CreateDBInstanceReadReplicaInput) SetPreSignedUrl(v string) *CreateDBInstanceReadReplicaInput {
	s.PreSignedUrl = &v
	return s
}

// SetProcessorFeatures sets the ProcessorFeatures field's value.
func (s *CreateDBInstanceReadReplicaInput) SetProcessorFeatures(v []*ProcessorFeature) *CreateDBInstanceReadReplicaInput {
	s.ProcessorFeatures = v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *CreateDBInstanceReadReplicaInput) SetPubliclyAccessible(v bool) *CreateDBInstanceReadReplicaInput {
	s.PubliclyAccessible = &v
	return s
}

// SetReplicaMode sets the ReplicaMode field's value.
func (s *CreateDBInstanceReadReplicaInput) SetReplicaMode(v string) *CreateDBInstanceReadReplicaInput {
	s.ReplicaMode = &v
	return s
}

// SetSourceDBClusterIdentifier sets the SourceDBClusterIdentifier field's value.
func (s *CreateDBInstanceReadReplicaInput) SetSourceDBClusterIdentifier(v string) *CreateDBInstanceReadReplicaInput {
	s.SourceDBClusterIdentifier = &v
	return s
}

// SetSourceDBInstanceIdentifier sets the SourceDBInstanceIdentifier field's value.
func (s *CreateDBInstanceReadReplicaInput) SetSourceDBInstanceIdentifier(v string) *CreateDBInstanceReadReplicaInput {
	s.SourceDBInstanceIdentifier = &v
	return s
}

// SetSourceRegion sets the SourceRegion field's value.
func (s *CreateDBInstanceReadReplicaInput) SetSourceRegion(v string) *CreateDBInstanceReadReplicaInput {
	s.SourceRegion = &v
	return s
}

// SetStorageThroughput sets the StorageThroughput field's value.
func (s *CreateDBInstanceReadReplicaInput) SetStorageThroughput(v int64) *CreateDBInstanceReadReplicaInput {
	s.StorageThroughput = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *CreateDBInstanceReadReplicaInput) SetStorageType(v string) *CreateDBInstanceReadReplicaInput {
	s.StorageType = &v
	return s
}

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

// SetUpgradeStorageConfig sets the UpgradeStorageConfig field's value.
func (s *CreateDBInstanceReadReplicaInput) SetUpgradeStorageConfig(v bool) *CreateDBInstanceReadReplicaInput {
	s.UpgradeStorageConfig = &v
	return s
}

// SetUseDefaultProcessorFeatures sets the UseDefaultProcessorFeatures field's value.
func (s *CreateDBInstanceReadReplicaInput) SetUseDefaultProcessorFeatures(v bool) *CreateDBInstanceReadReplicaInput {
	s.UseDefaultProcessorFeatures = &v
	return s
}

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *CreateDBInstanceReadReplicaInput) SetVpcSecurityGroupIds(v []*string) *CreateDBInstanceReadReplicaInput {
	s.VpcSecurityGroupIds = v
	return s
}

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

	// Contains the details of an Amazon RDS DB instance.
	//
	// This data type is used as a response element in the operations CreateDBInstance,
	// CreateDBInstanceReadReplica, DeleteDBInstance, DescribeDBInstances, ModifyDBInstance,
	// PromoteReadReplica, RebootDBInstance, RestoreDBInstanceFromDBSnapshot, RestoreDBInstanceFromS3,
	// RestoreDBInstanceToPointInTime, StartDBInstance, and StopDBInstance.
	DBInstance *DBInstance `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 CreateDBInstanceReadReplicaOutput) 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 CreateDBInstanceReadReplicaOutput) GoString() string {
	return s.String()
}

// SetDBInstance sets the DBInstance field's value.
func (s *CreateDBInstanceReadReplicaOutput) SetDBInstance(v *DBInstance) *CreateDBInstanceReadReplicaOutput {
	s.DBInstance = v
	return s
}

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

	// The DB parameter group family name. A DB parameter group can be associated
	// with one and only one DB parameter group family, and can be applied only
	// to a DB instance running a database engine and engine version compatible
	// with that DB parameter group family.
	//
	// To list all of the available parameter group families for a DB engine, use
	// the following command:
	//
	// aws rds describe-db-engine-versions --query "DBEngineVersions[].DBParameterGroupFamily"
	// --engine <engine>
	//
	// For example, to list all of the available parameter group families for the
	// MySQL DB engine, use the following command:
	//
	// aws rds describe-db-engine-versions --query "DBEngineVersions[].DBParameterGroupFamily"
	// --engine mysql
	//
	// The output contains duplicates.
	//
	// The following are the valid DB engine values:
	//
	//    * aurora-mysql
	//
	//    * aurora-postgresql
	//
	//    * db2-ae
	//
	//    * db2-se
	//
	//    * mysql
	//
	//    * oracle-ee
	//
	//    * oracle-ee-cdb
	//
	//    * oracle-se2
	//
	//    * oracle-se2-cdb
	//
	//    * postgres
	//
	//    * sqlserver-ee
	//
	//    * sqlserver-se
	//
	//    * sqlserver-ex
	//
	//    * sqlserver-web
	//
	// DBParameterGroupFamily is a required field
	DBParameterGroupFamily *string `type:"string" required:"true"`

	// The name of the DB parameter group.
	//
	// Constraints:
	//
	//    * Must be 1 to 255 letters, numbers, or hyphens.
	//
	//    * First character must be a letter
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens
	//
	// This value is stored as a lowercase string.
	//
	// DBParameterGroupName is a required field
	DBParameterGroupName *string `type:"string" required:"true"`

	// The description for the DB parameter group.
	//
	// Description is a required field
	Description *string `type:"string" required:"true"`

	// Tags to assign to the DB parameter group.
	Tags []*Tag `locationNameList:"Tag" 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 CreateDBParameterGroupInput) 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 CreateDBParameterGroupInput) GoString() string {
	return s.String()
}

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

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

// SetDBParameterGroupFamily sets the DBParameterGroupFamily field's value.
func (s *CreateDBParameterGroupInput) SetDBParameterGroupFamily(v string) *CreateDBParameterGroupInput {
	s.DBParameterGroupFamily = &v
	return s
}

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *CreateDBParameterGroupInput) SetDBParameterGroupName(v string) *CreateDBParameterGroupInput {
	s.DBParameterGroupName = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateDBParameterGroupInput) SetDescription(v string) *CreateDBParameterGroupInput {
	s.Description = &v
	return s
}

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

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

	// Contains the details of an Amazon RDS DB parameter group.
	//
	// This data type is used as a response element in the DescribeDBParameterGroups
	// action.
	DBParameterGroup *DBParameterGroup `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 CreateDBParameterGroupOutput) 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 CreateDBParameterGroupOutput) GoString() string {
	return s.String()
}

// SetDBParameterGroup sets the DBParameterGroup field's value.
func (s *CreateDBParameterGroupOutput) SetDBParameterGroup(v *DBParameterGroup) *CreateDBParameterGroupOutput {
	s.DBParameterGroup = v
	return s
}

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

	// The name of the DB proxy endpoint to create.
	//
	// DBProxyEndpointName is a required field
	DBProxyEndpointName *string `min:"1" type:"string" required:"true"`

	// The name of the DB proxy associated with the DB proxy endpoint that you create.
	//
	// DBProxyName is a required field
	DBProxyName *string `min:"1" type:"string" required:"true"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// The role of the DB proxy endpoint. The role determines whether the endpoint
	// can be used for read/write or only read operations. The default is READ_WRITE.
	// The only role that proxies for RDS for Microsoft SQL Server support is READ_WRITE.
	TargetRole *string `type:"string" enum:"DBProxyEndpointTargetRole"`

	// The VPC security group IDs for the DB proxy endpoint that you create. You
	// can specify a different set of security group IDs than for the original DB
	// proxy. The default is the default security group for the VPC.
	VpcSecurityGroupIds []*string `type:"list"`

	// The VPC subnet IDs for the DB proxy endpoint that you create. You can specify
	// a different set of subnet IDs than for the original DB proxy.
	//
	// VpcSubnetIds is a required field
	VpcSubnetIds []*string `type:"list" 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 CreateDBProxyEndpointInput) 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 CreateDBProxyEndpointInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateDBProxyEndpointInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateDBProxyEndpointInput"}
	if s.DBProxyEndpointName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBProxyEndpointName"))
	}
	if s.DBProxyEndpointName != nil && len(*s.DBProxyEndpointName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DBProxyEndpointName", 1))
	}
	if s.DBProxyName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBProxyName"))
	}
	if s.DBProxyName != nil && len(*s.DBProxyName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DBProxyName", 1))
	}
	if s.VpcSubnetIds == nil {
		invalidParams.Add(request.NewErrParamRequired("VpcSubnetIds"))
	}

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

// SetDBProxyEndpointName sets the DBProxyEndpointName field's value.
func (s *CreateDBProxyEndpointInput) SetDBProxyEndpointName(v string) *CreateDBProxyEndpointInput {
	s.DBProxyEndpointName = &v
	return s
}

// SetDBProxyName sets the DBProxyName field's value.
func (s *CreateDBProxyEndpointInput) SetDBProxyName(v string) *CreateDBProxyEndpointInput {
	s.DBProxyName = &v
	return s
}

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

// SetTargetRole sets the TargetRole field's value.
func (s *CreateDBProxyEndpointInput) SetTargetRole(v string) *CreateDBProxyEndpointInput {
	s.TargetRole = &v
	return s
}

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *CreateDBProxyEndpointInput) SetVpcSecurityGroupIds(v []*string) *CreateDBProxyEndpointInput {
	s.VpcSecurityGroupIds = v
	return s
}

// SetVpcSubnetIds sets the VpcSubnetIds field's value.
func (s *CreateDBProxyEndpointInput) SetVpcSubnetIds(v []*string) *CreateDBProxyEndpointInput {
	s.VpcSubnetIds = v
	return s
}

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

	// The DBProxyEndpoint object that is created by the API operation. The DB proxy
	// endpoint that you create might provide capabilities such as read/write or
	// read-only operations, or using a different VPC than the proxy's default VPC.
	DBProxyEndpoint *DBProxyEndpoint `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 CreateDBProxyEndpointOutput) 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 CreateDBProxyEndpointOutput) GoString() string {
	return s.String()
}

// SetDBProxyEndpoint sets the DBProxyEndpoint field's value.
func (s *CreateDBProxyEndpointOutput) SetDBProxyEndpoint(v *DBProxyEndpoint) *CreateDBProxyEndpointOutput {
	s.DBProxyEndpoint = v
	return s
}

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

	// The authorization mechanism that the proxy uses.
	//
	// Auth is a required field
	Auth []*UserAuthConfig `type:"list" required:"true"`

	// The identifier for the proxy. This name must be unique for all proxies owned
	// by your Amazon Web Services account in the specified Amazon Web Services
	// Region. An identifier must begin with a letter and must contain only ASCII
	// letters, digits, and hyphens; it can't end with a hyphen or contain two consecutive
	// hyphens.
	//
	// DBProxyName is a required field
	DBProxyName *string `type:"string" required:"true"`

	// Specifies whether the proxy includes detailed information about SQL statements
	// in its logs. This information helps you to debug issues involving SQL behavior
	// or the performance and scalability of the proxy connections. The debug information
	// includes the text of SQL statements that you submit through the proxy. Thus,
	// only enable this setting when needed for debugging, and only when you have
	// security measures in place to safeguard any sensitive information that appears
	// in the logs.
	DebugLogging *bool `type:"boolean"`

	// The kinds of databases that the proxy can connect to. This value determines
	// which database network protocol the proxy recognizes when it interprets network
	// traffic to and from the database. For Aurora MySQL, RDS for MariaDB, and
	// RDS for MySQL databases, specify MYSQL. For Aurora PostgreSQL and RDS for
	// PostgreSQL databases, specify POSTGRESQL. For RDS for Microsoft SQL Server,
	// specify SQLSERVER.
	//
	// EngineFamily is a required field
	EngineFamily *string `type:"string" required:"true" enum:"EngineFamily"`

	// The number of seconds that a connection to the proxy can be inactive before
	// the proxy disconnects it. You can set this value higher or lower than the
	// connection timeout limit for the associated database.
	IdleClientTimeout *int64 `type:"integer"`

	// Specifies whether Transport Layer Security (TLS) encryption is required for
	// connections to the proxy. By enabling this setting, you can enforce encrypted
	// TLS connections to the proxy.
	RequireTLS *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) of the IAM role that the proxy uses to access
	// secrets in Amazon Web Services Secrets Manager.
	//
	// RoleArn is a required field
	RoleArn *string `type:"string" required:"true"`

	// An optional set of key-value pairs to associate arbitrary data of your choosing
	// with the proxy.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// One or more VPC security group IDs to associate with the new proxy.
	VpcSecurityGroupIds []*string `type:"list"`

	// One or more VPC subnet IDs to associate with the new proxy.
	//
	// VpcSubnetIds is a required field
	VpcSubnetIds []*string `type:"list" 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 CreateDBProxyInput) 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 CreateDBProxyInput) GoString() string {
	return s.String()
}

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

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

// SetAuth sets the Auth field's value.
func (s *CreateDBProxyInput) SetAuth(v []*UserAuthConfig) *CreateDBProxyInput {
	s.Auth = v
	return s
}

// SetDBProxyName sets the DBProxyName field's value.
func (s *CreateDBProxyInput) SetDBProxyName(v string) *CreateDBProxyInput {
	s.DBProxyName = &v
	return s
}

// SetDebugLogging sets the DebugLogging field's value.
func (s *CreateDBProxyInput) SetDebugLogging(v bool) *CreateDBProxyInput {
	s.DebugLogging = &v
	return s
}

// SetEngineFamily sets the EngineFamily field's value.
func (s *CreateDBProxyInput) SetEngineFamily(v string) *CreateDBProxyInput {
	s.EngineFamily = &v
	return s
}

// SetIdleClientTimeout sets the IdleClientTimeout field's value.
func (s *CreateDBProxyInput) SetIdleClientTimeout(v int64) *CreateDBProxyInput {
	s.IdleClientTimeout = &v
	return s
}

// SetRequireTLS sets the RequireTLS field's value.
func (s *CreateDBProxyInput) SetRequireTLS(v bool) *CreateDBProxyInput {
	s.RequireTLS = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *CreateDBProxyInput) SetRoleArn(v string) *CreateDBProxyInput {
	s.RoleArn = &v
	return s
}

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

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *CreateDBProxyInput) SetVpcSecurityGroupIds(v []*string) *CreateDBProxyInput {
	s.VpcSecurityGroupIds = v
	return s
}

// SetVpcSubnetIds sets the VpcSubnetIds field's value.
func (s *CreateDBProxyInput) SetVpcSubnetIds(v []*string) *CreateDBProxyInput {
	s.VpcSubnetIds = v
	return s
}

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

	// The DBProxy structure corresponding to the new proxy.
	DBProxy *DBProxy `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 CreateDBProxyOutput) 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 CreateDBProxyOutput) GoString() string {
	return s.String()
}

// SetDBProxy sets the DBProxy field's value.
func (s *CreateDBProxyOutput) SetDBProxy(v *DBProxy) *CreateDBProxyOutput {
	s.DBProxy = v
	return s
}

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

	// The description for the DB security group.
	//
	// DBSecurityGroupDescription is a required field
	DBSecurityGroupDescription *string `type:"string" required:"true"`

	// The name for the DB security group. This value is stored as a lowercase string.
	//
	// Constraints:
	//
	//    * Must be 1 to 255 letters, numbers, or hyphens.
	//
	//    * First character must be a letter
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens
	//
	//    * Must not be "Default"
	//
	// Example: mysecuritygroup
	//
	// DBSecurityGroupName is a required field
	DBSecurityGroupName *string `type:"string" required:"true"`

	// Tags to assign to the DB security group.
	Tags []*Tag `locationNameList:"Tag" 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 CreateDBSecurityGroupInput) 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 CreateDBSecurityGroupInput) GoString() string {
	return s.String()
}

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

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

// SetDBSecurityGroupDescription sets the DBSecurityGroupDescription field's value.
func (s *CreateDBSecurityGroupInput) SetDBSecurityGroupDescription(v string) *CreateDBSecurityGroupInput {
	s.DBSecurityGroupDescription = &v
	return s
}

// SetDBSecurityGroupName sets the DBSecurityGroupName field's value.
func (s *CreateDBSecurityGroupInput) SetDBSecurityGroupName(v string) *CreateDBSecurityGroupInput {
	s.DBSecurityGroupName = &v
	return s
}

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

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

	// Contains the details for an Amazon RDS DB security group.
	//
	// This data type is used as a response element in the DescribeDBSecurityGroups
	// action.
	DBSecurityGroup *DBSecurityGroup `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 CreateDBSecurityGroupOutput) 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 CreateDBSecurityGroupOutput) GoString() string {
	return s.String()
}

// SetDBSecurityGroup sets the DBSecurityGroup field's value.
func (s *CreateDBSecurityGroupOutput) SetDBSecurityGroup(v *DBSecurityGroup) *CreateDBSecurityGroupOutput {
	s.DBSecurityGroup = v
	return s
}

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

	// Specifies whether to create standby instances for the DB shard group. Valid
	// values are the following:
	//
	//    * 0 - Creates a single, primary DB instance for each physical shard. This
	//    is the default value, and the only one supported for the preview.
	//
	//    * 1 - Creates a primary DB instance and a standby instance in a different
	//    Availability Zone (AZ) for each physical shard.
	//
	//    * 2 - Creates a primary DB instance and two standby instances in different
	//    AZs for each physical shard.
	ComputeRedundancy *int64 `type:"integer"`

	// The name of the primary DB cluster for the DB shard group.
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// The name of the DB shard group.
	//
	// DBShardGroupIdentifier is a required field
	DBShardGroupIdentifier *string `type:"string" required:"true"`

	// The maximum capacity of the DB shard group in Aurora capacity units (ACUs).
	//
	// MaxACU is a required field
	MaxACU *float64 `type:"double" required:"true"`

	// Specifies whether the DB shard group is publicly accessible.
	//
	// When the DB shard group is publicly accessible, its Domain Name System (DNS)
	// endpoint resolves to the private IP address from within the DB shard group's
	// virtual private cloud (VPC). It resolves to the public IP address from outside
	// of the DB shard group's VPC. Access to the DB shard group is ultimately controlled
	// by the security group it uses. That public access is not permitted if the
	// security group assigned to the DB shard group doesn't permit it.
	//
	// When the DB shard group isn't publicly accessible, it is an internal DB shard
	// group with a DNS name that resolves to a private IP address.
	//
	// Default: The default behavior varies depending on whether DBSubnetGroupName
	// is specified.
	//
	// If DBSubnetGroupName isn't specified, and PubliclyAccessible isn't specified,
	// the following applies:
	//
	//    * If the default VPC in the target Region doesn’t have an internet gateway
	//    attached to it, the DB shard group is private.
	//
	//    * If the default VPC in the target Region has an internet gateway attached
	//    to it, the DB shard group is public.
	//
	// If DBSubnetGroupName is specified, and PubliclyAccessible isn't specified,
	// the following applies:
	//
	//    * If the subnets are part of a VPC that doesn’t have an internet gateway
	//    attached to it, the DB shard group is private.
	//
	//    * If the subnets are part of a VPC that has an internet gateway attached
	//    to it, the DB shard group is public.
	PubliclyAccessible *bool `type:"boolean"`
}

// 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 CreateDBShardGroupInput) 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 CreateDBShardGroupInput) GoString() string {
	return s.String()
}

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

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

// SetComputeRedundancy sets the ComputeRedundancy field's value.
func (s *CreateDBShardGroupInput) SetComputeRedundancy(v int64) *CreateDBShardGroupInput {
	s.ComputeRedundancy = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *CreateDBShardGroupInput) SetDBClusterIdentifier(v string) *CreateDBShardGroupInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBShardGroupIdentifier sets the DBShardGroupIdentifier field's value.
func (s *CreateDBShardGroupInput) SetDBShardGroupIdentifier(v string) *CreateDBShardGroupInput {
	s.DBShardGroupIdentifier = &v
	return s
}

// SetMaxACU sets the MaxACU field's value.
func (s *CreateDBShardGroupInput) SetMaxACU(v float64) *CreateDBShardGroupInput {
	s.MaxACU = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *CreateDBShardGroupInput) SetPubliclyAccessible(v bool) *CreateDBShardGroupInput {
	s.PubliclyAccessible = &v
	return s
}

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

	// Specifies whether to create standby instances for the DB shard group. Valid
	// values are the following:
	//
	//    * 0 - Creates a single, primary DB instance for each physical shard. This
	//    is the default value, and the only one supported for the preview.
	//
	//    * 1 - Creates a primary DB instance and a standby instance in a different
	//    Availability Zone (AZ) for each physical shard.
	//
	//    * 2 - Creates a primary DB instance and two standby instances in different
	//    AZs for each physical shard.
	ComputeRedundancy *int64 `type:"integer"`

	// The name of the primary DB cluster for the DB shard group.
	DBClusterIdentifier *string `type:"string"`

	// The name of the DB shard group.
	DBShardGroupIdentifier *string `min:"1" type:"string"`

	// The Amazon Web Services Region-unique, immutable identifier for the DB shard
	// group.
	DBShardGroupResourceId *string `type:"string"`

	// The connection endpoint for the DB shard group.
	Endpoint *string `type:"string"`

	// The maximum capacity of the DB shard group in Aurora capacity units (ACUs).
	MaxACU *float64 `type:"double"`

	// Indicates whether the DB shard group is publicly accessible.
	//
	// When the DB shard group is publicly accessible, its Domain Name System (DNS)
	// endpoint resolves to the private IP address from within the DB shard group's
	// virtual private cloud (VPC). It resolves to the public IP address from outside
	// of the DB shard group's VPC. Access to the DB shard group is ultimately controlled
	// by the security group it uses. That public access isn't permitted if the
	// security group assigned to the DB shard group doesn't permit it.
	//
	// When the DB shard group isn't publicly accessible, it is an internal DB shard
	// group with a DNS name that resolves to a private IP address.
	//
	// For more information, see CreateDBShardGroup.
	//
	// This setting is only for Aurora Limitless Database.
	PubliclyAccessible *bool `type:"boolean"`

	// The status of the DB shard group.
	Status *string `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 CreateDBShardGroupOutput) 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 CreateDBShardGroupOutput) GoString() string {
	return s.String()
}

// SetComputeRedundancy sets the ComputeRedundancy field's value.
func (s *CreateDBShardGroupOutput) SetComputeRedundancy(v int64) *CreateDBShardGroupOutput {
	s.ComputeRedundancy = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *CreateDBShardGroupOutput) SetDBClusterIdentifier(v string) *CreateDBShardGroupOutput {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBShardGroupIdentifier sets the DBShardGroupIdentifier field's value.
func (s *CreateDBShardGroupOutput) SetDBShardGroupIdentifier(v string) *CreateDBShardGroupOutput {
	s.DBShardGroupIdentifier = &v
	return s
}

// SetDBShardGroupResourceId sets the DBShardGroupResourceId field's value.
func (s *CreateDBShardGroupOutput) SetDBShardGroupResourceId(v string) *CreateDBShardGroupOutput {
	s.DBShardGroupResourceId = &v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *CreateDBShardGroupOutput) SetEndpoint(v string) *CreateDBShardGroupOutput {
	s.Endpoint = &v
	return s
}

// SetMaxACU sets the MaxACU field's value.
func (s *CreateDBShardGroupOutput) SetMaxACU(v float64) *CreateDBShardGroupOutput {
	s.MaxACU = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *CreateDBShardGroupOutput) SetPubliclyAccessible(v bool) *CreateDBShardGroupOutput {
	s.PubliclyAccessible = &v
	return s
}

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

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

	// The identifier of the DB instance that you want to create the snapshot of.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DBInstance.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// The identifier for the DB snapshot.
	//
	// Constraints:
	//
	//    * Can't be null, empty, or blank
	//
	//    * Must contain from 1 to 255 letters, numbers, or hyphens
	//
	//    * First character must be a letter
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens
	//
	// Example: my-snapshot-id
	//
	// DBSnapshotIdentifier is a required field
	DBSnapshotIdentifier *string `type:"string" required:"true"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" 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 CreateDBSnapshotInput) 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 CreateDBSnapshotInput) GoString() string {
	return s.String()
}

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

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

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *CreateDBSnapshotInput) SetDBInstanceIdentifier(v string) *CreateDBSnapshotInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDBSnapshotIdentifier sets the DBSnapshotIdentifier field's value.
func (s *CreateDBSnapshotInput) SetDBSnapshotIdentifier(v string) *CreateDBSnapshotInput {
	s.DBSnapshotIdentifier = &v
	return s
}

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

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

	// Contains the details of an Amazon RDS DB snapshot.
	//
	// This data type is used as a response element in the DescribeDBSnapshots action.
	DBSnapshot *DBSnapshot `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 CreateDBSnapshotOutput) 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 CreateDBSnapshotOutput) GoString() string {
	return s.String()
}

// SetDBSnapshot sets the DBSnapshot field's value.
func (s *CreateDBSnapshotOutput) SetDBSnapshot(v *DBSnapshot) *CreateDBSnapshotOutput {
	s.DBSnapshot = v
	return s
}

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

	// The description for the DB subnet group.
	//
	// DBSubnetGroupDescription is a required field
	DBSubnetGroupDescription *string `type:"string" required:"true"`

	// The name for the DB subnet group. This value is stored as a lowercase string.
	//
	// Constraints:
	//
	//    * Must contain no more than 255 letters, numbers, periods, underscores,
	//    spaces, or hyphens.
	//
	//    * Must not be default.
	//
	//    * First character must be a letter.
	//
	// Example: mydbsubnetgroup
	//
	// DBSubnetGroupName is a required field
	DBSubnetGroupName *string `type:"string" required:"true"`

	// The EC2 Subnet IDs for the DB subnet group.
	//
	// SubnetIds is a required field
	SubnetIds []*string `locationNameList:"SubnetIdentifier" type:"list" required:"true"`

	// Tags to assign to the DB subnet group.
	Tags []*Tag `locationNameList:"Tag" 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 CreateDBSubnetGroupInput) 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 CreateDBSubnetGroupInput) GoString() string {
	return s.String()
}

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

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

// SetDBSubnetGroupDescription sets the DBSubnetGroupDescription field's value.
func (s *CreateDBSubnetGroupInput) SetDBSubnetGroupDescription(v string) *CreateDBSubnetGroupInput {
	s.DBSubnetGroupDescription = &v
	return s
}

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *CreateDBSubnetGroupInput) SetDBSubnetGroupName(v string) *CreateDBSubnetGroupInput {
	s.DBSubnetGroupName = &v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *CreateDBSubnetGroupInput) SetSubnetIds(v []*string) *CreateDBSubnetGroupInput {
	s.SubnetIds = v
	return s
}

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

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

	// Contains the details of an Amazon RDS DB subnet group.
	//
	// This data type is used as a response element in the DescribeDBSubnetGroups
	// action.
	DBSubnetGroup *DBSubnetGroup `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 CreateDBSubnetGroupOutput) 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 CreateDBSubnetGroupOutput) GoString() string {
	return s.String()
}

// SetDBSubnetGroup sets the DBSubnetGroup field's value.
func (s *CreateDBSubnetGroupOutput) SetDBSubnetGroup(v *DBSubnetGroup) *CreateDBSubnetGroupOutput {
	s.DBSubnetGroup = v
	return s
}

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

	// Specifies whether to activate the subscription. If the event notification
	// subscription isn't activated, the subscription is created but not active.
	Enabled *bool `type:"boolean"`

	// A list of event categories for a particular source type (SourceType) that
	// you want to subscribe to. You can see a list of the categories for a given
	// source type in the "Amazon RDS event categories and event messages" section
	// of the Amazon RDS User Guide (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.Messages.html)
	// or the Amazon Aurora User Guide (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Events.Messages.html).
	// You can also see this list by using the DescribeEventCategories operation.
	EventCategories []*string `locationNameList:"EventCategory" type:"list"`

	// The Amazon Resource Name (ARN) of the SNS topic created for event notification.
	// SNS automatically creates the ARN when you create a topic and subscribe to
	// it.
	//
	// RDS doesn't support FIFO (first in, first out) topics. For more information,
	// see Message ordering and deduplication (FIFO topics) (https://docs.aws.amazon.com/sns/latest/dg/sns-fifo-topics.html)
	// in the Amazon Simple Notification Service Developer Guide.
	//
	// SnsTopicArn is a required field
	SnsTopicArn *string `type:"string" required:"true"`

	// The list of identifiers of the event sources for which events are returned.
	// If not specified, then all sources are included in the response. An identifier
	// must begin with a letter and must contain only ASCII letters, digits, and
	// hyphens. It can't end with a hyphen or contain two consecutive hyphens.
	//
	// Constraints:
	//
	//    * If SourceIds are supplied, SourceType must also be provided.
	//
	//    * If the source type is a DB instance, a DBInstanceIdentifier value must
	//    be supplied.
	//
	//    * If the source type is a DB cluster, a DBClusterIdentifier value must
	//    be supplied.
	//
	//    * If the source type is a DB parameter group, a DBParameterGroupName value
	//    must be supplied.
	//
	//    * If the source type is a DB security group, a DBSecurityGroupName value
	//    must be supplied.
	//
	//    * If the source type is a DB snapshot, a DBSnapshotIdentifier value must
	//    be supplied.
	//
	//    * If the source type is a DB cluster snapshot, a DBClusterSnapshotIdentifier
	//    value must be supplied.
	//
	//    * If the source type is an RDS Proxy, a DBProxyName value must be supplied.
	SourceIds []*string `locationNameList:"SourceId" type:"list"`

	// The type of source that is generating the events. For example, if you want
	// to be notified of events generated by a DB instance, you set this parameter
	// to db-instance. For RDS Proxy events, specify db-proxy. If this value isn't
	// specified, all events are returned.
	//
	// Valid Values:db-instance | db-cluster | db-parameter-group | db-security-group
	// | db-snapshot | db-cluster-snapshot | db-proxy | zero-etl | custom-engine-version
	// | blue-green-deployment
	SourceType *string `type:"string"`

	// The name of the subscription.
	//
	// Constraints: The name must be less than 255 characters.
	//
	// SubscriptionName is a required field
	SubscriptionName *string `type:"string" required:"true"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" 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 CreateEventSubscriptionInput) 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 CreateEventSubscriptionInput) GoString() string {
	return s.String()
}

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

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

// SetEnabled sets the Enabled field's value.
func (s *CreateEventSubscriptionInput) SetEnabled(v bool) *CreateEventSubscriptionInput {
	s.Enabled = &v
	return s
}

// SetEventCategories sets the EventCategories field's value.
func (s *CreateEventSubscriptionInput) SetEventCategories(v []*string) *CreateEventSubscriptionInput {
	s.EventCategories = v
	return s
}

// SetSnsTopicArn sets the SnsTopicArn field's value.
func (s *CreateEventSubscriptionInput) SetSnsTopicArn(v string) *CreateEventSubscriptionInput {
	s.SnsTopicArn = &v
	return s
}

// SetSourceIds sets the SourceIds field's value.
func (s *CreateEventSubscriptionInput) SetSourceIds(v []*string) *CreateEventSubscriptionInput {
	s.SourceIds = v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *CreateEventSubscriptionInput) SetSourceType(v string) *CreateEventSubscriptionInput {
	s.SourceType = &v
	return s
}

// SetSubscriptionName sets the SubscriptionName field's value.
func (s *CreateEventSubscriptionInput) SetSubscriptionName(v string) *CreateEventSubscriptionInput {
	s.SubscriptionName = &v
	return s
}

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

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

	// Contains the results of a successful invocation of the DescribeEventSubscriptions
	// action.
	EventSubscription *EventSubscription `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 CreateEventSubscriptionOutput) 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 CreateEventSubscriptionOutput) GoString() string {
	return s.String()
}

// SetEventSubscription sets the EventSubscription field's value.
func (s *CreateEventSubscriptionOutput) SetEventSubscription(v *EventSubscription) *CreateEventSubscriptionOutput {
	s.EventSubscription = v
	return s
}

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

	// The name for your database of up to 64 alphanumeric characters. If you don't
	// specify a name, Amazon Aurora doesn't create a database in the global database
	// cluster.
	//
	// Constraints:
	//
	//    * Can't be specified if SourceDBClusterIdentifier is specified. In this
	//    case, Amazon Aurora uses the database name from the source DB cluster.
	DatabaseName *string `type:"string"`

	// Specifies whether to enable deletion protection for the new global database
	// cluster. The global database can't be deleted when deletion protection is
	// enabled.
	DeletionProtection *bool `type:"boolean"`

	// The database engine to use for this global database cluster.
	//
	// Valid Values: aurora-mysql | aurora-postgresql
	//
	// Constraints:
	//
	//    * Can't be specified if SourceDBClusterIdentifier is specified. In this
	//    case, Amazon Aurora uses the engine of the source DB cluster.
	Engine *string `type:"string"`

	// The life cycle type for this global database cluster.
	//
	// By default, this value is set to open-source-rds-extended-support, which
	// enrolls your global cluster into Amazon RDS Extended Support. At the end
	// of standard support, you can avoid charges for Extended Support by setting
	// the value to open-source-rds-extended-support-disabled. In this case, creating
	// the global cluster will fail if the DB major version is past its end of standard
	// support date.
	//
	// This setting only applies to Aurora PostgreSQL-based global databases.
	//
	// You can use this setting to enroll your global cluster into Amazon RDS Extended
	// Support. With RDS Extended Support, you can run the selected major engine
	// version on your global cluster past the end of standard support for that
	// engine version. For more information, see Using Amazon RDS Extended Support
	// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/extended-support.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid Values: open-source-rds-extended-support | open-source-rds-extended-support-disabled
	//
	// Default: open-source-rds-extended-support
	EngineLifecycleSupport *string `type:"string"`

	// The engine version to use for this global database cluster.
	//
	// Constraints:
	//
	//    * Can't be specified if SourceDBClusterIdentifier is specified. In this
	//    case, Amazon Aurora uses the engine version of the source DB cluster.
	EngineVersion *string `type:"string"`

	// The cluster identifier for this global database cluster. This parameter is
	// stored as a lowercase string.
	GlobalClusterIdentifier *string `type:"string"`

	// The Amazon Resource Name (ARN) to use as the primary cluster of the global
	// database.
	//
	// If you provide a value for this parameter, don't specify values for the following
	// settings because Amazon Aurora uses the values from the specified source
	// DB cluster:
	//
	//    * DatabaseName
	//
	//    * Engine
	//
	//    * EngineVersion
	//
	//    * StorageEncrypted
	SourceDBClusterIdentifier *string `type:"string"`

	// Specifies whether to enable storage encryption for the new global database
	// cluster.
	//
	// Constraints:
	//
	//    * Can't be specified if SourceDBClusterIdentifier is specified. In this
	//    case, Amazon Aurora uses the setting from the source DB cluster.
	StorageEncrypted *bool `type:"boolean"`
}

// 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 CreateGlobalClusterInput) 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 CreateGlobalClusterInput) GoString() string {
	return s.String()
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *CreateGlobalClusterInput) SetDatabaseName(v string) *CreateGlobalClusterInput {
	s.DatabaseName = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *CreateGlobalClusterInput) SetDeletionProtection(v bool) *CreateGlobalClusterInput {
	s.DeletionProtection = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *CreateGlobalClusterInput) SetEngine(v string) *CreateGlobalClusterInput {
	s.Engine = &v
	return s
}

// SetEngineLifecycleSupport sets the EngineLifecycleSupport field's value.
func (s *CreateGlobalClusterInput) SetEngineLifecycleSupport(v string) *CreateGlobalClusterInput {
	s.EngineLifecycleSupport = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *CreateGlobalClusterInput) SetEngineVersion(v string) *CreateGlobalClusterInput {
	s.EngineVersion = &v
	return s
}

// SetGlobalClusterIdentifier sets the GlobalClusterIdentifier field's value.
func (s *CreateGlobalClusterInput) SetGlobalClusterIdentifier(v string) *CreateGlobalClusterInput {
	s.GlobalClusterIdentifier = &v
	return s
}

// SetSourceDBClusterIdentifier sets the SourceDBClusterIdentifier field's value.
func (s *CreateGlobalClusterInput) SetSourceDBClusterIdentifier(v string) *CreateGlobalClusterInput {
	s.SourceDBClusterIdentifier = &v
	return s
}

// SetStorageEncrypted sets the StorageEncrypted field's value.
func (s *CreateGlobalClusterInput) SetStorageEncrypted(v bool) *CreateGlobalClusterInput {
	s.StorageEncrypted = &v
	return s
}

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

	// A data type representing an Aurora global database.
	GlobalCluster *GlobalCluster `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 CreateGlobalClusterOutput) 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 CreateGlobalClusterOutput) GoString() string {
	return s.String()
}

// SetGlobalCluster sets the GlobalCluster field's value.
func (s *CreateGlobalClusterOutput) SetGlobalCluster(v *GlobalCluster) *CreateGlobalClusterOutput {
	s.GlobalCluster = v
	return s
}

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

	// An optional set of non-secret key–value pairs that contains additional
	// contextual information about the data. For more information, see Encryption
	// context (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)
	// in the Amazon Web Services Key Management Service Developer Guide.
	//
	// You can only include this parameter if you specify the KMSKeyId parameter.
	AdditionalEncryptionContext map[string]*string `type:"map"`

	// Data filtering options for the integration. For more information, see Data
	// filtering for Aurora zero-ETL integrations with Amazon Redshift (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.filtering.html).
	//
	// Valid for: Integrations with Aurora MySQL source DB clusters only
	DataFilter *string `min:"1" type:"string"`

	// A description of the integration.
	Description *string `type:"string"`

	// The name of the integration.
	//
	// IntegrationName is a required field
	IntegrationName *string `min:"1" type:"string" required:"true"`

	// The Amazon Web Services Key Management System (Amazon Web Services KMS) key
	// identifier for the key to use to encrypt the integration. If you don't specify
	// an encryption key, RDS uses a default Amazon Web Services owned key.
	KMSKeyId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the database to use as the source for replication.
	//
	// SourceArn is a required field
	SourceArn *string `min:"1" type:"string" required:"true"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// The ARN of the Redshift data warehouse to use as the target for replication.
	//
	// TargetArn is a required field
	TargetArn *string `min:"20" 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 CreateIntegrationInput) 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 CreateIntegrationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateIntegrationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateIntegrationInput"}
	if s.DataFilter != nil && len(*s.DataFilter) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataFilter", 1))
	}
	if s.IntegrationName == nil {
		invalidParams.Add(request.NewErrParamRequired("IntegrationName"))
	}
	if s.IntegrationName != nil && len(*s.IntegrationName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IntegrationName", 1))
	}
	if s.SourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceArn"))
	}
	if s.SourceArn != nil && len(*s.SourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceArn", 1))
	}
	if s.TargetArn == nil {
		invalidParams.Add(request.NewErrParamRequired("TargetArn"))
	}
	if s.TargetArn != nil && len(*s.TargetArn) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("TargetArn", 20))
	}

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

// SetAdditionalEncryptionContext sets the AdditionalEncryptionContext field's value.
func (s *CreateIntegrationInput) SetAdditionalEncryptionContext(v map[string]*string) *CreateIntegrationInput {
	s.AdditionalEncryptionContext = v
	return s
}

// SetDataFilter sets the DataFilter field's value.
func (s *CreateIntegrationInput) SetDataFilter(v string) *CreateIntegrationInput {
	s.DataFilter = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateIntegrationInput) SetDescription(v string) *CreateIntegrationInput {
	s.Description = &v
	return s
}

// SetIntegrationName sets the IntegrationName field's value.
func (s *CreateIntegrationInput) SetIntegrationName(v string) *CreateIntegrationInput {
	s.IntegrationName = &v
	return s
}

// SetKMSKeyId sets the KMSKeyId field's value.
func (s *CreateIntegrationInput) SetKMSKeyId(v string) *CreateIntegrationInput {
	s.KMSKeyId = &v
	return s
}

// SetSourceArn sets the SourceArn field's value.
func (s *CreateIntegrationInput) SetSourceArn(v string) *CreateIntegrationInput {
	s.SourceArn = &v
	return s
}

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

// SetTargetArn sets the TargetArn field's value.
func (s *CreateIntegrationInput) SetTargetArn(v string) *CreateIntegrationInput {
	s.TargetArn = &v
	return s
}

// A zero-ETL integration with Amazon Redshift.
type CreateIntegrationOutput struct {
	_ struct{} `type:"structure"`

	// The encryption context for the integration. For more information, see Encryption
	// context (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)
	// in the Amazon Web Services Key Management Service Developer Guide.
	AdditionalEncryptionContext map[string]*string `type:"map"`

	// The time when the integration was created, in Universal Coordinated Time
	// (UTC).
	CreateTime *time.Time `type:"timestamp"`

	// Data filters for the integration. These filters determine which tables from
	// the source database are sent to the target Amazon Redshift data warehouse.
	DataFilter *string `min:"1" type:"string"`

	// A description of the integration.
	Description *string `type:"string"`

	// Any errors associated with the integration.
	Errors []*IntegrationError `locationNameList:"IntegrationError" type:"list"`

	// The ARN of the integration.
	IntegrationArn *string `min:"1" type:"string"`

	// The name of the integration.
	IntegrationName *string `min:"1" type:"string"`

	// The Amazon Web Services Key Management System (Amazon Web Services KMS) key
	// identifier for the key used to to encrypt the integration.
	KMSKeyId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the database used as the source for replication.
	SourceArn *string `min:"1" type:"string"`

	// The current status of the integration.
	Status *string `type:"string" enum:"IntegrationStatus"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// The ARN of the Redshift data warehouse used as the target for replication.
	TargetArn *string `min:"20" 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 CreateIntegrationOutput) 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 CreateIntegrationOutput) GoString() string {
	return s.String()
}

// SetAdditionalEncryptionContext sets the AdditionalEncryptionContext field's value.
func (s *CreateIntegrationOutput) SetAdditionalEncryptionContext(v map[string]*string) *CreateIntegrationOutput {
	s.AdditionalEncryptionContext = v
	return s
}

// SetCreateTime sets the CreateTime field's value.
func (s *CreateIntegrationOutput) SetCreateTime(v time.Time) *CreateIntegrationOutput {
	s.CreateTime = &v
	return s
}

// SetDataFilter sets the DataFilter field's value.
func (s *CreateIntegrationOutput) SetDataFilter(v string) *CreateIntegrationOutput {
	s.DataFilter = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateIntegrationOutput) SetDescription(v string) *CreateIntegrationOutput {
	s.Description = &v
	return s
}

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

// SetIntegrationArn sets the IntegrationArn field's value.
func (s *CreateIntegrationOutput) SetIntegrationArn(v string) *CreateIntegrationOutput {
	s.IntegrationArn = &v
	return s
}

// SetIntegrationName sets the IntegrationName field's value.
func (s *CreateIntegrationOutput) SetIntegrationName(v string) *CreateIntegrationOutput {
	s.IntegrationName = &v
	return s
}

// SetKMSKeyId sets the KMSKeyId field's value.
func (s *CreateIntegrationOutput) SetKMSKeyId(v string) *CreateIntegrationOutput {
	s.KMSKeyId = &v
	return s
}

// SetSourceArn sets the SourceArn field's value.
func (s *CreateIntegrationOutput) SetSourceArn(v string) *CreateIntegrationOutput {
	s.SourceArn = &v
	return s
}

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

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

// SetTargetArn sets the TargetArn field's value.
func (s *CreateIntegrationOutput) SetTargetArn(v string) *CreateIntegrationOutput {
	s.TargetArn = &v
	return s
}

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

	// The name of the engine to associate this option group with.
	//
	// Valid Values:
	//
	//    * db2-ae
	//
	//    * db2-se
	//
	//    * mariadb
	//
	//    * mysql
	//
	//    * oracle-ee
	//
	//    * oracle-ee-cdb
	//
	//    * oracle-se2
	//
	//    * oracle-se2-cdb
	//
	//    * postgres
	//
	//    * sqlserver-ee
	//
	//    * sqlserver-se
	//
	//    * sqlserver-ex
	//
	//    * sqlserver-web
	//
	// EngineName is a required field
	EngineName *string `type:"string" required:"true"`

	// Specifies the major version of the engine that this option group should be
	// associated with.
	//
	// MajorEngineVersion is a required field
	MajorEngineVersion *string `type:"string" required:"true"`

	// The description of the option group.
	//
	// OptionGroupDescription is a required field
	OptionGroupDescription *string `type:"string" required:"true"`

	// Specifies the name of the option group to be created.
	//
	// Constraints:
	//
	//    * Must be 1 to 255 letters, numbers, or hyphens
	//
	//    * First character must be a letter
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens
	//
	// Example: myoptiongroup
	//
	// OptionGroupName is a required field
	OptionGroupName *string `type:"string" required:"true"`

	// Tags to assign to the option group.
	Tags []*Tag `locationNameList:"Tag" 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 CreateOptionGroupInput) 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 CreateOptionGroupInput) GoString() string {
	return s.String()
}

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

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

// SetEngineName sets the EngineName field's value.
func (s *CreateOptionGroupInput) SetEngineName(v string) *CreateOptionGroupInput {
	s.EngineName = &v
	return s
}

// SetMajorEngineVersion sets the MajorEngineVersion field's value.
func (s *CreateOptionGroupInput) SetMajorEngineVersion(v string) *CreateOptionGroupInput {
	s.MajorEngineVersion = &v
	return s
}

// SetOptionGroupDescription sets the OptionGroupDescription field's value.
func (s *CreateOptionGroupInput) SetOptionGroupDescription(v string) *CreateOptionGroupInput {
	s.OptionGroupDescription = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *CreateOptionGroupInput) SetOptionGroupName(v string) *CreateOptionGroupInput {
	s.OptionGroupName = &v
	return s
}

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

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

	OptionGroup *OptionGroup `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 CreateOptionGroupOutput) 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 CreateOptionGroupOutput) GoString() string {
	return s.String()
}

// SetOptionGroup sets the OptionGroup field's value.
func (s *CreateOptionGroupOutput) SetOptionGroup(v *OptionGroup) *CreateOptionGroupOutput {
	s.OptionGroup = v
	return s
}

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

	// The character set for your tenant database. If you don't specify a value,
	// the character set name defaults to AL32UTF8.
	CharacterSetName *string `type:"string"`

	// The user-supplied DB instance identifier. RDS creates your tenant database
	// in this DB instance. This parameter isn't case-sensitive.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// The password for the master user in your tenant database.
	//
	// Constraints:
	//
	//    * Must be 8 to 30 characters.
	//
	//    * Can include any printable ASCII character except forward slash (/),
	//    double quote ("), at symbol (@), ampersand (&), or single quote (').
	//
	// MasterUserPassword is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateTenantDatabaseInput's
	// String and GoString methods.
	//
	// MasterUserPassword is a required field
	MasterUserPassword *string `type:"string" required:"true" sensitive:"true"`

	// The name for the master user account in your tenant database. RDS creates
	// this user account in the tenant database and grants privileges to the master
	// user. This parameter is case-sensitive.
	//
	// Constraints:
	//
	//    * Must be 1 to 16 letters, numbers, or underscores.
	//
	//    * First character must be a letter.
	//
	//    * Can't be a reserved word for the chosen database engine.
	//
	// MasterUsername is a required field
	MasterUsername *string `type:"string" required:"true"`

	// The NCHAR value for the tenant database.
	NcharCharacterSetName *string `type:"string"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// The user-supplied name of the tenant database that you want to create in
	// your DB instance. This parameter has the same constraints as DBName in CreateDBInstance.
	//
	// TenantDBName is a required field
	TenantDBName *string `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 CreateTenantDatabaseInput) 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 CreateTenantDatabaseInput) GoString() string {
	return s.String()
}

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

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

// SetCharacterSetName sets the CharacterSetName field's value.
func (s *CreateTenantDatabaseInput) SetCharacterSetName(v string) *CreateTenantDatabaseInput {
	s.CharacterSetName = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *CreateTenantDatabaseInput) SetDBInstanceIdentifier(v string) *CreateTenantDatabaseInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *CreateTenantDatabaseInput) SetMasterUserPassword(v string) *CreateTenantDatabaseInput {
	s.MasterUserPassword = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *CreateTenantDatabaseInput) SetMasterUsername(v string) *CreateTenantDatabaseInput {
	s.MasterUsername = &v
	return s
}

// SetNcharCharacterSetName sets the NcharCharacterSetName field's value.
func (s *CreateTenantDatabaseInput) SetNcharCharacterSetName(v string) *CreateTenantDatabaseInput {
	s.NcharCharacterSetName = &v
	return s
}

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

// SetTenantDBName sets the TenantDBName field's value.
func (s *CreateTenantDatabaseInput) SetTenantDBName(v string) *CreateTenantDatabaseInput {
	s.TenantDBName = &v
	return s
}

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

	// A tenant database in the DB instance. This data type is an element in the
	// response to the DescribeTenantDatabases action.
	TenantDatabase *TenantDatabase `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 CreateTenantDatabaseOutput) 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 CreateTenantDatabaseOutput) GoString() string {
	return s.String()
}

// SetTenantDatabase sets the TenantDatabase field's value.
func (s *CreateTenantDatabaseOutput) SetTenantDatabase(v *TenantDatabase) *CreateTenantDatabaseOutput {
	s.TenantDatabase = v
	return s
}

// A value that indicates the AMI information.
type CustomDBEngineVersionAMI struct {
	_ struct{} `type:"structure"`

	// A value that indicates the ID of the AMI.
	ImageId *string `type:"string"`

	// A value that indicates the status of a custom engine version (CEV).
	Status *string `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 CustomDBEngineVersionAMI) 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 CustomDBEngineVersionAMI) GoString() string {
	return s.String()
}

// SetImageId sets the ImageId field's value.
func (s *CustomDBEngineVersionAMI) SetImageId(v string) *CustomDBEngineVersionAMI {
	s.ImageId = &v
	return s
}

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

// Contains the details of an Amazon Aurora DB cluster or Multi-AZ DB cluster.
//
// For an Amazon Aurora DB cluster, this data type is used as a response element
// in the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
// ModifyDBCluster, PromoteReadReplicaDBCluster, RestoreDBClusterFromS3, RestoreDBClusterFromSnapshot,
// RestoreDBClusterToPointInTime, StartDBCluster, and StopDBCluster.
//
// For a Multi-AZ DB cluster, this data type is used as a response element in
// the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
// ModifyDBCluster, RebootDBCluster, RestoreDBClusterFromSnapshot, and RestoreDBClusterToPointInTime.
//
// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
// in the Amazon Aurora User Guide.
//
// For more information on Multi-AZ DB clusters, see Multi-AZ deployments with
// two readable standby DB instances (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
// in the Amazon RDS User Guide.
type DBCluster struct {
	_ struct{} `type:"structure"`

	// The name of the Amazon Kinesis data stream used for the database activity
	// stream.
	ActivityStreamKinesisStreamName *string `type:"string"`

	// The Amazon Web Services KMS key identifier used for encrypting messages in
	// the database activity stream.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	ActivityStreamKmsKeyId *string `type:"string"`

	// The mode of the database activity stream. Database events such as a change
	// or access generate an activity stream event. The database session can handle
	// these events either synchronously or asynchronously.
	ActivityStreamMode *string `type:"string" enum:"ActivityStreamMode"`

	// The status of the database activity stream.
	ActivityStreamStatus *string `type:"string" enum:"ActivityStreamStatus"`

	// For all database engines except Amazon Aurora, AllocatedStorage specifies
	// the allocated storage size in gibibytes (GiB). For Aurora, AllocatedStorage
	// always returns 1, because Aurora DB cluster storage size isn't fixed, but
	// instead automatically adjusts as needed.
	AllocatedStorage *int64 `type:"integer"`

	// A list of the Amazon Web Services Identity and Access Management (IAM) roles
	// that are associated with the DB cluster. IAM roles that are associated with
	// a DB cluster grant permission for the DB cluster to access other Amazon Web
	// Services on your behalf.
	AssociatedRoles []*DBClusterRole `locationNameList:"DBClusterRole" type:"list"`

	// Indicates whether minor version patches are applied automatically.
	//
	// This setting is only for non-Aurora Multi-AZ DB clusters.
	AutoMinorVersionUpgrade *bool `type:"boolean"`

	// The time when a stopped DB cluster is restarted automatically.
	AutomaticRestartTime *time.Time `type:"timestamp"`

	// The list of Availability Zones (AZs) where instances in the DB cluster can
	// be created.
	AvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`

	// The Amazon Resource Name (ARN) of the recovery point in Amazon Web Services
	// Backup.
	AwsBackupRecoveryPointArn *string `type:"string"`

	// The number of change records stored for Backtrack.
	BacktrackConsumedChangeRecords *int64 `type:"long"`

	// The target backtrack window, in seconds. If this value is set to 0, backtracking
	// is disabled for the DB cluster. Otherwise, backtracking is enabled.
	BacktrackWindow *int64 `type:"long"`

	// The number of days for which automatic DB snapshots are retained.
	BackupRetentionPeriod *int64 `type:"integer"`

	// The current capacity of an Aurora Serverless v1 DB cluster. The capacity
	// is 0 (zero) when the cluster is paused.
	//
	// For more information about Aurora Serverless v1, see Using Amazon Aurora
	// Serverless v1 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html)
	// in the Amazon Aurora User Guide.
	Capacity *int64 `type:"integer"`

	// The details of the DB instance’s server certificate.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	CertificateDetails *CertificateDetails `type:"structure"`

	// If present, specifies the name of the character set that this cluster is
	// associated with.
	CharacterSetName *string `type:"string"`

	// The ID of the clone group with which the DB cluster is associated.
	CloneGroupId *string `type:"string"`

	// The time when the DB cluster was created, in Universal Coordinated Time (UTC).
	ClusterCreateTime *time.Time `type:"timestamp"`

	// Indicates whether tags are copied from the DB cluster to snapshots of the
	// DB cluster.
	CopyTagsToSnapshot *bool `type:"boolean"`

	// Indicates whether the DB cluster is a clone of a DB cluster owned by a different
	// Amazon Web Services account.
	CrossAccountClone *bool `type:"boolean"`

	// The custom endpoints associated with the DB cluster.
	CustomEndpoints []*string `type:"list"`

	// The Amazon Resource Name (ARN) for the DB cluster.
	DBClusterArn *string `type:"string"`

	// The user-supplied identifier for the DB cluster. This identifier is the unique
	// key that identifies a DB cluster.
	DBClusterIdentifier *string `type:"string"`

	// The name of the compute and memory capacity class of the DB instance.
	//
	// This setting is only for non-Aurora Multi-AZ DB clusters.
	DBClusterInstanceClass *string `type:"string"`

	// The list of DB instances that make up the DB cluster.
	DBClusterMembers []*DBClusterMember `locationNameList:"DBClusterMember" type:"list"`

	// The list of option group memberships for this DB cluster.
	DBClusterOptionGroupMemberships []*DBClusterOptionGroupStatus `locationNameList:"DBClusterOptionGroup" type:"list"`

	// The name of the DB cluster parameter group for the DB cluster.
	DBClusterParameterGroup *string `type:"string"`

	// Information about the subnet group associated with the DB cluster, including
	// the name, description, and subnets in the subnet group.
	DBSubnetGroup *string `type:"string"`

	// Reserved for future use.
	DBSystemId *string `type:"string"`

	// The name of the initial database that was specified for the DB cluster when
	// it was created, if one was provided. This same name is returned for the life
	// of the DB cluster.
	DatabaseName *string `type:"string"`

	// The Amazon Web Services Region-unique, immutable identifier for the DB cluster.
	// This identifier is found in Amazon Web Services CloudTrail log entries whenever
	// the KMS key for the DB cluster is accessed.
	DbClusterResourceId *string `type:"string"`

	// Indicates whether the DB cluster has deletion protection enabled. The database
	// can't be deleted when deletion protection is enabled.
	DeletionProtection *bool `type:"boolean"`

	// The Active Directory Domain membership records associated with the DB cluster.
	DomainMemberships []*DomainMembership `locationNameList:"DomainMembership" type:"list"`

	// The earliest time to which a DB cluster can be backtracked.
	EarliestBacktrackTime *time.Time `type:"timestamp"`

	// The earliest time to which a database can be restored with point-in-time
	// restore.
	EarliestRestorableTime *time.Time `type:"timestamp"`

	// A list of log types that this DB cluster is configured to export to CloudWatch
	// Logs.
	//
	// Log types vary by DB engine. For information about the log types for each
	// DB engine, see Amazon RDS Database Log Files (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html)
	// in the Amazon Aurora User Guide.
	EnabledCloudwatchLogsExports []*string `type:"list"`

	// The connection endpoint for the primary instance of the DB cluster.
	Endpoint *string `type:"string"`

	// The database engine used for this DB cluster.
	Engine *string `type:"string"`

	// The life cycle type for the DB cluster.
	//
	// For more information, see CreateDBCluster.
	EngineLifecycleSupport *string `type:"string"`

	// The DB engine mode of the DB cluster, either provisioned or serverless.
	//
	// For more information, see CreateDBCluster (https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html).
	EngineMode *string `type:"string"`

	// The version of the database engine.
	EngineVersion *string `type:"string"`

	// Indicates whether write forwarding is enabled for a secondary cluster in
	// an Aurora global database. Because write forwarding takes time to enable,
	// check the value of GlobalWriteForwardingStatus to confirm that the request
	// has completed before using the write forwarding feature for this cluster.
	GlobalWriteForwardingRequested *bool `type:"boolean"`

	// The status of write forwarding for a secondary cluster in an Aurora global
	// database.
	GlobalWriteForwardingStatus *string `type:"string" enum:"WriteForwardingStatus"`

	// The ID that Amazon Route 53 assigns when you create a hosted zone.
	HostedZoneId *string `type:"string"`

	// Indicates whether the HTTP endpoint is enabled for an Aurora DB cluster.
	//
	// When enabled, the HTTP endpoint provides a connectionless web service API
	// (RDS Data API) for running SQL queries on the DB cluster. You can also query
	// your database from inside the RDS console with the RDS query editor.
	//
	// For more information, see Using RDS Data API (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html)
	// in the Amazon Aurora User Guide.
	HttpEndpointEnabled *bool `type:"boolean"`

	// Indicates whether the mapping of Amazon Web Services Identity and Access
	// Management (IAM) accounts to database accounts is enabled.
	IAMDatabaseAuthenticationEnabled *bool `type:"boolean"`

	// The next time you can modify the DB cluster to use the aurora-iopt1 storage
	// type.
	//
	// This setting is only for Aurora DB clusters.
	IOOptimizedNextAllowedModificationTime *time.Time `type:"timestamp"`

	// The Provisioned IOPS (I/O operations per second) value.
	//
	// This setting is only for non-Aurora Multi-AZ DB clusters.
	Iops *int64 `type:"integer"`

	// If StorageEncrypted is enabled, the Amazon Web Services KMS key identifier
	// for the encrypted DB cluster.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	KmsKeyId *string `type:"string"`

	// The latest time to which a database can be restored with point-in-time restore.
	LatestRestorableTime *time.Time `type:"timestamp"`

	// The details for Aurora Limitless Database.
	LimitlessDatabase *LimitlessDatabase `type:"structure"`

	// Indicates whether an Aurora DB cluster has in-cluster write forwarding enabled,
	// not enabled, requested, or is in the process of enabling it.
	LocalWriteForwardingStatus *string `type:"string" enum:"LocalWriteForwardingStatus"`

	// The secret managed by RDS in Amazon Web Services Secrets Manager for the
	// master user password.
	//
	// For more information, see Password management with Amazon Web Services Secrets
	// Manager (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html)
	// in the Amazon RDS User Guide and Password management with Amazon Web Services
	// Secrets Manager (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html)
	// in the Amazon Aurora User Guide.
	MasterUserSecret *MasterUserSecret `type:"structure"`

	// The master username for the DB cluster.
	MasterUsername *string `type:"string"`

	// The interval, in seconds, between points when Enhanced Monitoring metrics
	// are collected for the DB cluster.
	//
	// This setting is only for non-Aurora Multi-AZ DB clusters.
	MonitoringInterval *int64 `type:"integer"`

	// The ARN for the IAM role that permits RDS to send Enhanced Monitoring metrics
	// to Amazon CloudWatch Logs.
	//
	// This setting is only for non-Aurora Multi-AZ DB clusters.
	MonitoringRoleArn *string `type:"string"`

	// Indicates whether the DB cluster has instances in multiple Availability Zones.
	MultiAZ *bool `type:"boolean"`

	// The network type of the DB instance.
	//
	// The network type is determined by the DBSubnetGroup specified for the DB
	// cluster. A DBSubnetGroup can support only the IPv4 protocol or the IPv4 and
	// the IPv6 protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon Aurora User Guide.
	//
	// This setting is only for Aurora DB clusters.
	//
	// Valid Values: IPV4 | DUAL
	NetworkType *string `type:"string"`

	// Information about pending changes to the DB cluster. This information is
	// returned only when there are pending changes. Specific changes are identified
	// by subelements.
	PendingModifiedValues *ClusterPendingModifiedValues `type:"structure"`

	// The progress of the operation as a percentage.
	PercentProgress *string `type:"string"`

	// Indicates whether Performance Insights is enabled for the DB cluster.
	//
	// This setting is only for non-Aurora Multi-AZ DB clusters.
	PerformanceInsightsEnabled *bool `type:"boolean"`

	// The Amazon Web Services KMS key identifier for encryption of Performance
	// Insights data.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	//
	// This setting is only for non-Aurora Multi-AZ DB clusters.
	PerformanceInsightsKMSKeyId *string `type:"string"`

	// The number of days to retain Performance Insights data.
	//
	// This setting is only for non-Aurora Multi-AZ DB clusters.
	//
	// Valid Values:
	//
	//    * 7
	//
	//    * month * 31, where month is a number of months from 1-23. Examples: 93
	//    (3 months * 31), 341 (11 months * 31), 589 (19 months * 31)
	//
	//    * 731
	//
	// Default: 7 days
	PerformanceInsightsRetentionPeriod *int64 `type:"integer"`

	// The port that the database engine is listening on.
	Port *int64 `type:"integer"`

	// The daily time range during which automated backups are created if automated
	// backups are enabled, as determined by the BackupRetentionPeriod.
	PreferredBackupWindow *string `type:"string"`

	// The weekly time range during which system maintenance can occur, in Universal
	// Coordinated Time (UTC).
	PreferredMaintenanceWindow *string `type:"string"`

	// Indicates whether the DB cluster is publicly accessible.
	//
	// When the DB cluster is publicly accessible and you connect from outside of
	// the DB cluster's virtual private cloud (VPC), its Domain Name System (DNS)
	// endpoint resolves to the public IP address. When you connect from within
	// the same VPC as the DB cluster, the endpoint resolves to the private IP address.
	// Access to the DB cluster is ultimately controlled by the security group it
	// uses. That public access isn't permitted if the security group assigned to
	// the DB cluster doesn't permit it.
	//
	// When the DB cluster isn't publicly accessible, it is an internal DB cluster
	// with a DNS name that resolves to a private IP address.
	//
	// For more information, see CreateDBCluster.
	//
	// This setting is only for non-Aurora Multi-AZ DB clusters.
	PubliclyAccessible *bool `type:"boolean"`

	// Reserved for future use.
	RdsCustomClusterConfiguration *RdsCustomClusterConfiguration `type:"structure"`

	// Contains one or more identifiers of the read replicas associated with this
	// DB cluster.
	ReadReplicaIdentifiers []*string `locationNameList:"ReadReplicaIdentifier" type:"list"`

	// The reader endpoint for the DB cluster. The reader endpoint for a DB cluster
	// load-balances connections across the Aurora Replicas that are available in
	// a DB cluster. As clients request new connections to the reader endpoint,
	// Aurora distributes the connection requests among the Aurora Replicas in the
	// DB cluster. This functionality can help balance your read workload across
	// multiple Aurora Replicas in your DB cluster.
	//
	// If a failover occurs, and the Aurora Replica that you are connected to is
	// promoted to be the primary instance, your connection is dropped. To continue
	// sending your read workload to other Aurora Replicas in the cluster, you can
	// then reconnect to the reader endpoint.
	ReaderEndpoint *string `type:"string"`

	// The identifier of the source DB cluster if this DB cluster is a read replica.
	ReplicationSourceIdentifier *string `type:"string"`

	// The scaling configuration for an Aurora DB cluster in serverless DB engine
	// mode.
	//
	// For more information, see Using Amazon Aurora Serverless v1 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html)
	// in the Amazon Aurora User Guide.
	ScalingConfigurationInfo *ScalingConfigurationInfo `type:"structure"`

	// The scaling configuration for an Aurora Serverless v2 DB cluster.
	//
	// For more information, see Using Amazon Aurora Serverless v2 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html)
	// in the Amazon Aurora User Guide.
	ServerlessV2ScalingConfiguration *ServerlessV2ScalingConfigurationInfo `type:"structure"`

	// The current state of this DB cluster.
	Status *string `type:"string"`

	// Reserved for future use.
	StatusInfos []*DBClusterStatusInfo `locationNameList:"DBClusterStatusInfo" type:"list"`

	// Indicates whether the DB cluster is encrypted.
	StorageEncrypted *bool `type:"boolean"`

	// The storage throughput for the DB cluster. The throughput is automatically
	// set based on the IOPS that you provision, and is not configurable.
	//
	// This setting is only for non-Aurora Multi-AZ DB clusters.
	StorageThroughput *int64 `type:"integer"`

	// The storage type associated with the DB cluster.
	StorageType *string `type:"string"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	TagList []*Tag `locationNameList:"Tag" type:"list"`

	// The list of VPC security groups that the DB cluster belongs to.
	VpcSecurityGroups []*VpcSecurityGroupMembership `locationNameList:"VpcSecurityGroupMembership" 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 DBCluster) 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 DBCluster) GoString() string {
	return s.String()
}

// SetActivityStreamKinesisStreamName sets the ActivityStreamKinesisStreamName field's value.
func (s *DBCluster) SetActivityStreamKinesisStreamName(v string) *DBCluster {
	s.ActivityStreamKinesisStreamName = &v
	return s
}

// SetActivityStreamKmsKeyId sets the ActivityStreamKmsKeyId field's value.
func (s *DBCluster) SetActivityStreamKmsKeyId(v string) *DBCluster {
	s.ActivityStreamKmsKeyId = &v
	return s
}

// SetActivityStreamMode sets the ActivityStreamMode field's value.
func (s *DBCluster) SetActivityStreamMode(v string) *DBCluster {
	s.ActivityStreamMode = &v
	return s
}

// SetActivityStreamStatus sets the ActivityStreamStatus field's value.
func (s *DBCluster) SetActivityStreamStatus(v string) *DBCluster {
	s.ActivityStreamStatus = &v
	return s
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *DBCluster) SetAllocatedStorage(v int64) *DBCluster {
	s.AllocatedStorage = &v
	return s
}

// SetAssociatedRoles sets the AssociatedRoles field's value.
func (s *DBCluster) SetAssociatedRoles(v []*DBClusterRole) *DBCluster {
	s.AssociatedRoles = v
	return s
}

// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
func (s *DBCluster) SetAutoMinorVersionUpgrade(v bool) *DBCluster {
	s.AutoMinorVersionUpgrade = &v
	return s
}

// SetAutomaticRestartTime sets the AutomaticRestartTime field's value.
func (s *DBCluster) SetAutomaticRestartTime(v time.Time) *DBCluster {
	s.AutomaticRestartTime = &v
	return s
}

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *DBCluster) SetAvailabilityZones(v []*string) *DBCluster {
	s.AvailabilityZones = v
	return s
}

// SetAwsBackupRecoveryPointArn sets the AwsBackupRecoveryPointArn field's value.
func (s *DBCluster) SetAwsBackupRecoveryPointArn(v string) *DBCluster {
	s.AwsBackupRecoveryPointArn = &v
	return s
}

// SetBacktrackConsumedChangeRecords sets the BacktrackConsumedChangeRecords field's value.
func (s *DBCluster) SetBacktrackConsumedChangeRecords(v int64) *DBCluster {
	s.BacktrackConsumedChangeRecords = &v
	return s
}

// SetBacktrackWindow sets the BacktrackWindow field's value.
func (s *DBCluster) SetBacktrackWindow(v int64) *DBCluster {
	s.BacktrackWindow = &v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *DBCluster) SetBackupRetentionPeriod(v int64) *DBCluster {
	s.BackupRetentionPeriod = &v
	return s
}

// SetCapacity sets the Capacity field's value.
func (s *DBCluster) SetCapacity(v int64) *DBCluster {
	s.Capacity = &v
	return s
}

// SetCertificateDetails sets the CertificateDetails field's value.
func (s *DBCluster) SetCertificateDetails(v *CertificateDetails) *DBCluster {
	s.CertificateDetails = v
	return s
}

// SetCharacterSetName sets the CharacterSetName field's value.
func (s *DBCluster) SetCharacterSetName(v string) *DBCluster {
	s.CharacterSetName = &v
	return s
}

// SetCloneGroupId sets the CloneGroupId field's value.
func (s *DBCluster) SetCloneGroupId(v string) *DBCluster {
	s.CloneGroupId = &v
	return s
}

// SetClusterCreateTime sets the ClusterCreateTime field's value.
func (s *DBCluster) SetClusterCreateTime(v time.Time) *DBCluster {
	s.ClusterCreateTime = &v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *DBCluster) SetCopyTagsToSnapshot(v bool) *DBCluster {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetCrossAccountClone sets the CrossAccountClone field's value.
func (s *DBCluster) SetCrossAccountClone(v bool) *DBCluster {
	s.CrossAccountClone = &v
	return s
}

// SetCustomEndpoints sets the CustomEndpoints field's value.
func (s *DBCluster) SetCustomEndpoints(v []*string) *DBCluster {
	s.CustomEndpoints = v
	return s
}

// SetDBClusterArn sets the DBClusterArn field's value.
func (s *DBCluster) SetDBClusterArn(v string) *DBCluster {
	s.DBClusterArn = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *DBCluster) SetDBClusterIdentifier(v string) *DBCluster {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBClusterInstanceClass sets the DBClusterInstanceClass field's value.
func (s *DBCluster) SetDBClusterInstanceClass(v string) *DBCluster {
	s.DBClusterInstanceClass = &v
	return s
}

// SetDBClusterMembers sets the DBClusterMembers field's value.
func (s *DBCluster) SetDBClusterMembers(v []*DBClusterMember) *DBCluster {
	s.DBClusterMembers = v
	return s
}

// SetDBClusterOptionGroupMemberships sets the DBClusterOptionGroupMemberships field's value.
func (s *DBCluster) SetDBClusterOptionGroupMemberships(v []*DBClusterOptionGroupStatus) *DBCluster {
	s.DBClusterOptionGroupMemberships = v
	return s
}

// SetDBClusterParameterGroup sets the DBClusterParameterGroup field's value.
func (s *DBCluster) SetDBClusterParameterGroup(v string) *DBCluster {
	s.DBClusterParameterGroup = &v
	return s
}

// SetDBSubnetGroup sets the DBSubnetGroup field's value.
func (s *DBCluster) SetDBSubnetGroup(v string) *DBCluster {
	s.DBSubnetGroup = &v
	return s
}

// SetDBSystemId sets the DBSystemId field's value.
func (s *DBCluster) SetDBSystemId(v string) *DBCluster {
	s.DBSystemId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *DBCluster) SetDatabaseName(v string) *DBCluster {
	s.DatabaseName = &v
	return s
}

// SetDbClusterResourceId sets the DbClusterResourceId field's value.
func (s *DBCluster) SetDbClusterResourceId(v string) *DBCluster {
	s.DbClusterResourceId = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *DBCluster) SetDeletionProtection(v bool) *DBCluster {
	s.DeletionProtection = &v
	return s
}

// SetDomainMemberships sets the DomainMemberships field's value.
func (s *DBCluster) SetDomainMemberships(v []*DomainMembership) *DBCluster {
	s.DomainMemberships = v
	return s
}

// SetEarliestBacktrackTime sets the EarliestBacktrackTime field's value.
func (s *DBCluster) SetEarliestBacktrackTime(v time.Time) *DBCluster {
	s.EarliestBacktrackTime = &v
	return s
}

// SetEarliestRestorableTime sets the EarliestRestorableTime field's value.
func (s *DBCluster) SetEarliestRestorableTime(v time.Time) *DBCluster {
	s.EarliestRestorableTime = &v
	return s
}

// SetEnabledCloudwatchLogsExports sets the EnabledCloudwatchLogsExports field's value.
func (s *DBCluster) SetEnabledCloudwatchLogsExports(v []*string) *DBCluster {
	s.EnabledCloudwatchLogsExports = v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *DBCluster) SetEndpoint(v string) *DBCluster {
	s.Endpoint = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *DBCluster) SetEngine(v string) *DBCluster {
	s.Engine = &v
	return s
}

// SetEngineLifecycleSupport sets the EngineLifecycleSupport field's value.
func (s *DBCluster) SetEngineLifecycleSupport(v string) *DBCluster {
	s.EngineLifecycleSupport = &v
	return s
}

// SetEngineMode sets the EngineMode field's value.
func (s *DBCluster) SetEngineMode(v string) *DBCluster {
	s.EngineMode = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *DBCluster) SetEngineVersion(v string) *DBCluster {
	s.EngineVersion = &v
	return s
}

// SetGlobalWriteForwardingRequested sets the GlobalWriteForwardingRequested field's value.
func (s *DBCluster) SetGlobalWriteForwardingRequested(v bool) *DBCluster {
	s.GlobalWriteForwardingRequested = &v
	return s
}

// SetGlobalWriteForwardingStatus sets the GlobalWriteForwardingStatus field's value.
func (s *DBCluster) SetGlobalWriteForwardingStatus(v string) *DBCluster {
	s.GlobalWriteForwardingStatus = &v
	return s
}

// SetHostedZoneId sets the HostedZoneId field's value.
func (s *DBCluster) SetHostedZoneId(v string) *DBCluster {
	s.HostedZoneId = &v
	return s
}

// SetHttpEndpointEnabled sets the HttpEndpointEnabled field's value.
func (s *DBCluster) SetHttpEndpointEnabled(v bool) *DBCluster {
	s.HttpEndpointEnabled = &v
	return s
}

// SetIAMDatabaseAuthenticationEnabled sets the IAMDatabaseAuthenticationEnabled field's value.
func (s *DBCluster) SetIAMDatabaseAuthenticationEnabled(v bool) *DBCluster {
	s.IAMDatabaseAuthenticationEnabled = &v
	return s
}

// SetIOOptimizedNextAllowedModificationTime sets the IOOptimizedNextAllowedModificationTime field's value.
func (s *DBCluster) SetIOOptimizedNextAllowedModificationTime(v time.Time) *DBCluster {
	s.IOOptimizedNextAllowedModificationTime = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *DBCluster) SetIops(v int64) *DBCluster {
	s.Iops = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *DBCluster) SetKmsKeyId(v string) *DBCluster {
	s.KmsKeyId = &v
	return s
}

// SetLatestRestorableTime sets the LatestRestorableTime field's value.
func (s *DBCluster) SetLatestRestorableTime(v time.Time) *DBCluster {
	s.LatestRestorableTime = &v
	return s
}

// SetLimitlessDatabase sets the LimitlessDatabase field's value.
func (s *DBCluster) SetLimitlessDatabase(v *LimitlessDatabase) *DBCluster {
	s.LimitlessDatabase = v
	return s
}

// SetLocalWriteForwardingStatus sets the LocalWriteForwardingStatus field's value.
func (s *DBCluster) SetLocalWriteForwardingStatus(v string) *DBCluster {
	s.LocalWriteForwardingStatus = &v
	return s
}

// SetMasterUserSecret sets the MasterUserSecret field's value.
func (s *DBCluster) SetMasterUserSecret(v *MasterUserSecret) *DBCluster {
	s.MasterUserSecret = v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *DBCluster) SetMasterUsername(v string) *DBCluster {
	s.MasterUsername = &v
	return s
}

// SetMonitoringInterval sets the MonitoringInterval field's value.
func (s *DBCluster) SetMonitoringInterval(v int64) *DBCluster {
	s.MonitoringInterval = &v
	return s
}

// SetMonitoringRoleArn sets the MonitoringRoleArn field's value.
func (s *DBCluster) SetMonitoringRoleArn(v string) *DBCluster {
	s.MonitoringRoleArn = &v
	return s
}

// SetMultiAZ sets the MultiAZ field's value.
func (s *DBCluster) SetMultiAZ(v bool) *DBCluster {
	s.MultiAZ = &v
	return s
}

// SetNetworkType sets the NetworkType field's value.
func (s *DBCluster) SetNetworkType(v string) *DBCluster {
	s.NetworkType = &v
	return s
}

// SetPendingModifiedValues sets the PendingModifiedValues field's value.
func (s *DBCluster) SetPendingModifiedValues(v *ClusterPendingModifiedValues) *DBCluster {
	s.PendingModifiedValues = v
	return s
}

// SetPercentProgress sets the PercentProgress field's value.
func (s *DBCluster) SetPercentProgress(v string) *DBCluster {
	s.PercentProgress = &v
	return s
}

// SetPerformanceInsightsEnabled sets the PerformanceInsightsEnabled field's value.
func (s *DBCluster) SetPerformanceInsightsEnabled(v bool) *DBCluster {
	s.PerformanceInsightsEnabled = &v
	return s
}

// SetPerformanceInsightsKMSKeyId sets the PerformanceInsightsKMSKeyId field's value.
func (s *DBCluster) SetPerformanceInsightsKMSKeyId(v string) *DBCluster {
	s.PerformanceInsightsKMSKeyId = &v
	return s
}

// SetPerformanceInsightsRetentionPeriod sets the PerformanceInsightsRetentionPeriod field's value.
func (s *DBCluster) SetPerformanceInsightsRetentionPeriod(v int64) *DBCluster {
	s.PerformanceInsightsRetentionPeriod = &v
	return s
}

// SetPort sets the Port field's value.
func (s *DBCluster) SetPort(v int64) *DBCluster {
	s.Port = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *DBCluster) SetPreferredBackupWindow(v string) *DBCluster {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *DBCluster) SetPreferredMaintenanceWindow(v string) *DBCluster {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *DBCluster) SetPubliclyAccessible(v bool) *DBCluster {
	s.PubliclyAccessible = &v
	return s
}

// SetRdsCustomClusterConfiguration sets the RdsCustomClusterConfiguration field's value.
func (s *DBCluster) SetRdsCustomClusterConfiguration(v *RdsCustomClusterConfiguration) *DBCluster {
	s.RdsCustomClusterConfiguration = v
	return s
}

// SetReadReplicaIdentifiers sets the ReadReplicaIdentifiers field's value.
func (s *DBCluster) SetReadReplicaIdentifiers(v []*string) *DBCluster {
	s.ReadReplicaIdentifiers = v
	return s
}

// SetReaderEndpoint sets the ReaderEndpoint field's value.
func (s *DBCluster) SetReaderEndpoint(v string) *DBCluster {
	s.ReaderEndpoint = &v
	return s
}

// SetReplicationSourceIdentifier sets the ReplicationSourceIdentifier field's value.
func (s *DBCluster) SetReplicationSourceIdentifier(v string) *DBCluster {
	s.ReplicationSourceIdentifier = &v
	return s
}

// SetScalingConfigurationInfo sets the ScalingConfigurationInfo field's value.
func (s *DBCluster) SetScalingConfigurationInfo(v *ScalingConfigurationInfo) *DBCluster {
	s.ScalingConfigurationInfo = v
	return s
}

// SetServerlessV2ScalingConfiguration sets the ServerlessV2ScalingConfiguration field's value.
func (s *DBCluster) SetServerlessV2ScalingConfiguration(v *ServerlessV2ScalingConfigurationInfo) *DBCluster {
	s.ServerlessV2ScalingConfiguration = v
	return s
}

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

// SetStatusInfos sets the StatusInfos field's value.
func (s *DBCluster) SetStatusInfos(v []*DBClusterStatusInfo) *DBCluster {
	s.StatusInfos = v
	return s
}

// SetStorageEncrypted sets the StorageEncrypted field's value.
func (s *DBCluster) SetStorageEncrypted(v bool) *DBCluster {
	s.StorageEncrypted = &v
	return s
}

// SetStorageThroughput sets the StorageThroughput field's value.
func (s *DBCluster) SetStorageThroughput(v int64) *DBCluster {
	s.StorageThroughput = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *DBCluster) SetStorageType(v string) *DBCluster {
	s.StorageType = &v
	return s
}

// SetTagList sets the TagList field's value.
func (s *DBCluster) SetTagList(v []*Tag) *DBCluster {
	s.TagList = v
	return s
}

// SetVpcSecurityGroups sets the VpcSecurityGroups field's value.
func (s *DBCluster) SetVpcSecurityGroups(v []*VpcSecurityGroupMembership) *DBCluster {
	s.VpcSecurityGroups = v
	return s
}

// An automated backup of a DB cluster. It consists of system backups, transaction
// logs, and the database cluster properties that existed at the time you deleted
// the source cluster.
type DBClusterAutomatedBackup struct {
	_ struct{} `type:"structure"`

	// For all database engines except Amazon Aurora, AllocatedStorage specifies
	// the allocated storage size in gibibytes (GiB). For Aurora, AllocatedStorage
	// always returns 1, because Aurora DB cluster storage size isn't fixed, but
	// instead automatically adjusts as needed.
	AllocatedStorage *int64 `type:"integer"`

	// The Availability Zones where instances in the DB cluster can be created.
	// For information on Amazon Web Services Regions and Availability Zones, see
	// Regions and Availability Zones (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.RegionsAndAvailabilityZones.html).
	AvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`

	// The Amazon Resource Name (ARN) of the recovery point in Amazon Web Services
	// Backup.
	AwsBackupRecoveryPointArn *string `type:"string"`

	// The retention period for the automated backups.
	BackupRetentionPeriod *int64 `type:"integer"`

	// The time when the DB cluster was created, in Universal Coordinated Time (UTC).
	ClusterCreateTime *time.Time `type:"timestamp"`

	// The Amazon Resource Name (ARN) for the source DB cluster.
	DBClusterArn *string `type:"string"`

	// The Amazon Resource Name (ARN) for the automated backups.
	DBClusterAutomatedBackupsArn *string `type:"string"`

	// The identifier for the source DB cluster, which can't be changed and which
	// is unique to an Amazon Web Services Region.
	DBClusterIdentifier *string `type:"string"`

	// The resource ID for the source DB cluster, which can't be changed and which
	// is unique to an Amazon Web Services Region.
	DbClusterResourceId *string `type:"string"`

	// The name of the database engine for this automated backup.
	Engine *string `type:"string"`

	// The engine mode of the database engine for the automated backup.
	EngineMode *string `type:"string"`

	// The version of the database engine for the automated backup.
	EngineVersion *string `type:"string"`

	// Indicates whether mapping of Amazon Web Services Identity and Access Management
	// (IAM) accounts to database accounts is enabled.
	IAMDatabaseAuthenticationEnabled *bool `type:"boolean"`

	// The IOPS (I/O operations per second) value for the automated backup.
	//
	// This setting is only for non-Aurora Multi-AZ DB clusters.
	Iops *int64 `type:"integer"`

	// The Amazon Web Services KMS key ID for an automated backup.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	KmsKeyId *string `type:"string"`

	// The license model information for this DB cluster automated backup.
	LicenseModel *string `type:"string"`

	// The master user name of the automated backup.
	MasterUsername *string `type:"string"`

	// The port number that the automated backup used for connections.
	//
	// Default: Inherits from the source DB cluster
	//
	// Valid Values: 1150-65535
	Port *int64 `type:"integer"`

	// The Amazon Web Services Region associated with the automated backup.
	Region *string `type:"string"`

	// Earliest and latest time an instance can be restored to:
	RestoreWindow *RestoreWindow `type:"structure"`

	// A list of status information for an automated backup:
	//
	//    * retained - Automated backups for deleted clusters.
	Status *string `type:"string"`

	// Indicates whether the source DB cluster is encrypted.
	StorageEncrypted *bool `type:"boolean"`

	// The storage throughput for the automated backup. The throughput is automatically
	// set based on the IOPS that you provision, and is not configurable.
	//
	// This setting is only for non-Aurora Multi-AZ DB clusters.
	StorageThroughput *int64 `type:"integer"`

	// The storage type associated with the DB cluster.
	//
	// This setting is only for non-Aurora Multi-AZ DB clusters.
	StorageType *string `type:"string"`

	// The VPC ID associated with the DB cluster.
	VpcId *string `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 DBClusterAutomatedBackup) 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 DBClusterAutomatedBackup) GoString() string {
	return s.String()
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *DBClusterAutomatedBackup) SetAllocatedStorage(v int64) *DBClusterAutomatedBackup {
	s.AllocatedStorage = &v
	return s
}

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *DBClusterAutomatedBackup) SetAvailabilityZones(v []*string) *DBClusterAutomatedBackup {
	s.AvailabilityZones = v
	return s
}

// SetAwsBackupRecoveryPointArn sets the AwsBackupRecoveryPointArn field's value.
func (s *DBClusterAutomatedBackup) SetAwsBackupRecoveryPointArn(v string) *DBClusterAutomatedBackup {
	s.AwsBackupRecoveryPointArn = &v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *DBClusterAutomatedBackup) SetBackupRetentionPeriod(v int64) *DBClusterAutomatedBackup {
	s.BackupRetentionPeriod = &v
	return s
}

// SetClusterCreateTime sets the ClusterCreateTime field's value.
func (s *DBClusterAutomatedBackup) SetClusterCreateTime(v time.Time) *DBClusterAutomatedBackup {
	s.ClusterCreateTime = &v
	return s
}

// SetDBClusterArn sets the DBClusterArn field's value.
func (s *DBClusterAutomatedBackup) SetDBClusterArn(v string) *DBClusterAutomatedBackup {
	s.DBClusterArn = &v
	return s
}

// SetDBClusterAutomatedBackupsArn sets the DBClusterAutomatedBackupsArn field's value.
func (s *DBClusterAutomatedBackup) SetDBClusterAutomatedBackupsArn(v string) *DBClusterAutomatedBackup {
	s.DBClusterAutomatedBackupsArn = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *DBClusterAutomatedBackup) SetDBClusterIdentifier(v string) *DBClusterAutomatedBackup {
	s.DBClusterIdentifier = &v
	return s
}

// SetDbClusterResourceId sets the DbClusterResourceId field's value.
func (s *DBClusterAutomatedBackup) SetDbClusterResourceId(v string) *DBClusterAutomatedBackup {
	s.DbClusterResourceId = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *DBClusterAutomatedBackup) SetEngine(v string) *DBClusterAutomatedBackup {
	s.Engine = &v
	return s
}

// SetEngineMode sets the EngineMode field's value.
func (s *DBClusterAutomatedBackup) SetEngineMode(v string) *DBClusterAutomatedBackup {
	s.EngineMode = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *DBClusterAutomatedBackup) SetEngineVersion(v string) *DBClusterAutomatedBackup {
	s.EngineVersion = &v
	return s
}

// SetIAMDatabaseAuthenticationEnabled sets the IAMDatabaseAuthenticationEnabled field's value.
func (s *DBClusterAutomatedBackup) SetIAMDatabaseAuthenticationEnabled(v bool) *DBClusterAutomatedBackup {
	s.IAMDatabaseAuthenticationEnabled = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *DBClusterAutomatedBackup) SetIops(v int64) *DBClusterAutomatedBackup {
	s.Iops = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *DBClusterAutomatedBackup) SetKmsKeyId(v string) *DBClusterAutomatedBackup {
	s.KmsKeyId = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *DBClusterAutomatedBackup) SetLicenseModel(v string) *DBClusterAutomatedBackup {
	s.LicenseModel = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *DBClusterAutomatedBackup) SetMasterUsername(v string) *DBClusterAutomatedBackup {
	s.MasterUsername = &v
	return s
}

// SetPort sets the Port field's value.
func (s *DBClusterAutomatedBackup) SetPort(v int64) *DBClusterAutomatedBackup {
	s.Port = &v
	return s
}

// SetRegion sets the Region field's value.
func (s *DBClusterAutomatedBackup) SetRegion(v string) *DBClusterAutomatedBackup {
	s.Region = &v
	return s
}

// SetRestoreWindow sets the RestoreWindow field's value.
func (s *DBClusterAutomatedBackup) SetRestoreWindow(v *RestoreWindow) *DBClusterAutomatedBackup {
	s.RestoreWindow = v
	return s
}

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

// SetStorageEncrypted sets the StorageEncrypted field's value.
func (s *DBClusterAutomatedBackup) SetStorageEncrypted(v bool) *DBClusterAutomatedBackup {
	s.StorageEncrypted = &v
	return s
}

// SetStorageThroughput sets the StorageThroughput field's value.
func (s *DBClusterAutomatedBackup) SetStorageThroughput(v int64) *DBClusterAutomatedBackup {
	s.StorageThroughput = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *DBClusterAutomatedBackup) SetStorageType(v string) *DBClusterAutomatedBackup {
	s.StorageType = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *DBClusterAutomatedBackup) SetVpcId(v string) *DBClusterAutomatedBackup {
	s.VpcId = &v
	return s
}

// This data type represents the information you need to connect to an Amazon
// Aurora DB cluster. This data type is used as a response element in the following
// actions:
//
//   - CreateDBClusterEndpoint
//
//   - DescribeDBClusterEndpoints
//
//   - ModifyDBClusterEndpoint
//
//   - DeleteDBClusterEndpoint
//
// For the data structure that represents Amazon RDS DB instance endpoints,
// see Endpoint.
type DBClusterEndpoint struct {
	_ struct{} `type:"structure"`

	// The type associated with a custom endpoint. One of: READER, WRITER, ANY.
	CustomEndpointType *string `type:"string"`

	// The Amazon Resource Name (ARN) for the endpoint.
	DBClusterEndpointArn *string `type:"string"`

	// The identifier associated with the endpoint. This parameter is stored as
	// a lowercase string.
	DBClusterEndpointIdentifier *string `type:"string"`

	// A unique system-generated identifier for an endpoint. It remains the same
	// for the whole life of the endpoint.
	DBClusterEndpointResourceIdentifier *string `type:"string"`

	// The DB cluster identifier of the DB cluster associated with the endpoint.
	// This parameter is stored as a lowercase string.
	DBClusterIdentifier *string `type:"string"`

	// The DNS address of the endpoint.
	Endpoint *string `type:"string"`

	// The type of the endpoint. One of: READER, WRITER, CUSTOM.
	EndpointType *string `type:"string"`

	// List of DB instance identifiers that aren't part of the custom endpoint group.
	// All other eligible instances are reachable through the custom endpoint. Only
	// relevant if the list of static members is empty.
	ExcludedMembers []*string `type:"list"`

	// List of DB instance identifiers that are part of the custom endpoint group.
	StaticMembers []*string `type:"list"`

	// The current status of the endpoint. One of: creating, available, deleting,
	// inactive, modifying. The inactive state applies to an endpoint that can't
	// be used for a certain kind of cluster, such as a writer endpoint for a read-only
	// secondary cluster in a global database.
	Status *string `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 DBClusterEndpoint) 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 DBClusterEndpoint) GoString() string {
	return s.String()
}

// SetCustomEndpointType sets the CustomEndpointType field's value.
func (s *DBClusterEndpoint) SetCustomEndpointType(v string) *DBClusterEndpoint {
	s.CustomEndpointType = &v
	return s
}

// SetDBClusterEndpointArn sets the DBClusterEndpointArn field's value.
func (s *DBClusterEndpoint) SetDBClusterEndpointArn(v string) *DBClusterEndpoint {
	s.DBClusterEndpointArn = &v
	return s
}

// SetDBClusterEndpointIdentifier sets the DBClusterEndpointIdentifier field's value.
func (s *DBClusterEndpoint) SetDBClusterEndpointIdentifier(v string) *DBClusterEndpoint {
	s.DBClusterEndpointIdentifier = &v
	return s
}

// SetDBClusterEndpointResourceIdentifier sets the DBClusterEndpointResourceIdentifier field's value.
func (s *DBClusterEndpoint) SetDBClusterEndpointResourceIdentifier(v string) *DBClusterEndpoint {
	s.DBClusterEndpointResourceIdentifier = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *DBClusterEndpoint) SetDBClusterIdentifier(v string) *DBClusterEndpoint {
	s.DBClusterIdentifier = &v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *DBClusterEndpoint) SetEndpoint(v string) *DBClusterEndpoint {
	s.Endpoint = &v
	return s
}

// SetEndpointType sets the EndpointType field's value.
func (s *DBClusterEndpoint) SetEndpointType(v string) *DBClusterEndpoint {
	s.EndpointType = &v
	return s
}

// SetExcludedMembers sets the ExcludedMembers field's value.
func (s *DBClusterEndpoint) SetExcludedMembers(v []*string) *DBClusterEndpoint {
	s.ExcludedMembers = v
	return s
}

// SetStaticMembers sets the StaticMembers field's value.
func (s *DBClusterEndpoint) SetStaticMembers(v []*string) *DBClusterEndpoint {
	s.StaticMembers = v
	return s
}

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

// Contains information about an instance that is part of a DB cluster.
type DBClusterMember struct {
	_ struct{} `type:"structure"`

	// Specifies the status of the DB cluster parameter group for this member of
	// the DB cluster.
	DBClusterParameterGroupStatus *string `type:"string"`

	// Specifies the instance identifier for this member of the DB cluster.
	DBInstanceIdentifier *string `type:"string"`

	// Indicates whether the cluster member is the primary DB instance for the DB
	// cluster.
	IsClusterWriter *bool `type:"boolean"`

	// A value that specifies the order in which an Aurora Replica is promoted to
	// the primary instance after a failure of the existing primary instance. For
	// more information, see Fault Tolerance for an Aurora DB Cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html#Aurora.Managing.FaultTolerance)
	// in the Amazon Aurora User Guide.
	PromotionTier *int64 `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 DBClusterMember) 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 DBClusterMember) GoString() string {
	return s.String()
}

// SetDBClusterParameterGroupStatus sets the DBClusterParameterGroupStatus field's value.
func (s *DBClusterMember) SetDBClusterParameterGroupStatus(v string) *DBClusterMember {
	s.DBClusterParameterGroupStatus = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DBClusterMember) SetDBInstanceIdentifier(v string) *DBClusterMember {
	s.DBInstanceIdentifier = &v
	return s
}

// SetIsClusterWriter sets the IsClusterWriter field's value.
func (s *DBClusterMember) SetIsClusterWriter(v bool) *DBClusterMember {
	s.IsClusterWriter = &v
	return s
}

// SetPromotionTier sets the PromotionTier field's value.
func (s *DBClusterMember) SetPromotionTier(v int64) *DBClusterMember {
	s.PromotionTier = &v
	return s
}

// Contains status information for a DB cluster option group.
type DBClusterOptionGroupStatus struct {
	_ struct{} `type:"structure"`

	// Specifies the name of the DB cluster option group.
	DBClusterOptionGroupName *string `type:"string"`

	// Specifies the status of the DB cluster option group.
	Status *string `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 DBClusterOptionGroupStatus) 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 DBClusterOptionGroupStatus) GoString() string {
	return s.String()
}

// SetDBClusterOptionGroupName sets the DBClusterOptionGroupName field's value.
func (s *DBClusterOptionGroupStatus) SetDBClusterOptionGroupName(v string) *DBClusterOptionGroupStatus {
	s.DBClusterOptionGroupName = &v
	return s
}

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

// Contains the details of an Amazon RDS DB cluster parameter group.
//
// This data type is used as a response element in the DescribeDBClusterParameterGroups
// action.
type DBClusterParameterGroup struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the DB cluster parameter group.
	DBClusterParameterGroupArn *string `type:"string"`

	// The name of the DB cluster parameter group.
	DBClusterParameterGroupName *string `type:"string"`

	// The name of the DB parameter group family that this DB cluster parameter
	// group is compatible with.
	DBParameterGroupFamily *string `type:"string"`

	// Provides the customer-specified description for this DB cluster parameter
	// group.
	Description *string `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 DBClusterParameterGroup) 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 DBClusterParameterGroup) GoString() string {
	return s.String()
}

// SetDBClusterParameterGroupArn sets the DBClusterParameterGroupArn field's value.
func (s *DBClusterParameterGroup) SetDBClusterParameterGroupArn(v string) *DBClusterParameterGroup {
	s.DBClusterParameterGroupArn = &v
	return s
}

// SetDBClusterParameterGroupName sets the DBClusterParameterGroupName field's value.
func (s *DBClusterParameterGroup) SetDBClusterParameterGroupName(v string) *DBClusterParameterGroup {
	s.DBClusterParameterGroupName = &v
	return s
}

// SetDBParameterGroupFamily sets the DBParameterGroupFamily field's value.
func (s *DBClusterParameterGroup) SetDBParameterGroupFamily(v string) *DBClusterParameterGroup {
	s.DBParameterGroupFamily = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *DBClusterParameterGroup) SetDescription(v string) *DBClusterParameterGroup {
	s.Description = &v
	return s
}

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

	// The name of the DB cluster parameter group.
	//
	// Constraints:
	//
	//    * Must be 1 to 255 letters or numbers.
	//
	//    * First character must be a letter
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens
	//
	// This value is stored as a lowercase string.
	DBClusterParameterGroupName *string `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 DBClusterParameterGroupNameMessage) 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 DBClusterParameterGroupNameMessage) GoString() string {
	return s.String()
}

// SetDBClusterParameterGroupName sets the DBClusterParameterGroupName field's value.
func (s *DBClusterParameterGroupNameMessage) SetDBClusterParameterGroupName(v string) *DBClusterParameterGroupNameMessage {
	s.DBClusterParameterGroupName = &v
	return s
}

// Describes an Amazon Web Services Identity and Access Management (IAM) role
// that is associated with a DB cluster.
type DBClusterRole struct {
	_ struct{} `type:"structure"`

	// The name of the feature associated with the Amazon Web Services Identity
	// and Access Management (IAM) role. For information about supported feature
	// names, see DBEngineVersion.
	FeatureName *string `type:"string"`

	// The Amazon Resource Name (ARN) of the IAM role that is associated with the
	// DB cluster.
	RoleArn *string `type:"string"`

	// Describes the state of association between the IAM role and the DB cluster.
	// The Status property returns one of the following values:
	//
	//    * ACTIVE - the IAM role ARN is associated with the DB cluster and can
	//    be used to access other Amazon Web Services on your behalf.
	//
	//    * PENDING - the IAM role ARN is being associated with the DB cluster.
	//
	//    * INVALID - the IAM role ARN is associated with the DB cluster, but the
	//    DB cluster is unable to assume the IAM role in order to access other Amazon
	//    Web Services on your behalf.
	Status *string `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 DBClusterRole) 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 DBClusterRole) GoString() string {
	return s.String()
}

// SetFeatureName sets the FeatureName field's value.
func (s *DBClusterRole) SetFeatureName(v string) *DBClusterRole {
	s.FeatureName = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *DBClusterRole) SetRoleArn(v string) *DBClusterRole {
	s.RoleArn = &v
	return s
}

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

// Contains the details for an Amazon RDS DB cluster snapshot
//
// This data type is used as a response element in the DescribeDBClusterSnapshots
// action.
type DBClusterSnapshot struct {
	_ struct{} `type:"structure"`

	// The allocated storage size of the DB cluster snapshot in gibibytes (GiB).
	AllocatedStorage *int64 `type:"integer"`

	// The list of Availability Zones (AZs) where instances in the DB cluster snapshot
	// can be restored.
	AvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`

	// The time when the DB cluster was created, in Universal Coordinated Time (UTC).
	ClusterCreateTime *time.Time `type:"timestamp"`

	// The DB cluster identifier of the DB cluster that this DB cluster snapshot
	// was created from.
	DBClusterIdentifier *string `type:"string"`

	// The Amazon Resource Name (ARN) for the DB cluster snapshot.
	DBClusterSnapshotArn *string `type:"string"`

	// The identifier for the DB cluster snapshot.
	DBClusterSnapshotIdentifier *string `type:"string"`

	// Reserved for future use.
	DBSystemId *string `type:"string"`

	// The resource ID of the DB cluster that this DB cluster snapshot was created
	// from.
	DbClusterResourceId *string `type:"string"`

	// The name of the database engine for this DB cluster snapshot.
	Engine *string `type:"string"`

	// The engine mode of the database engine for this DB cluster snapshot.
	EngineMode *string `type:"string"`

	// The version of the database engine for this DB cluster snapshot.
	EngineVersion *string `type:"string"`

	// Indicates whether mapping of Amazon Web Services Identity and Access Management
	// (IAM) accounts to database accounts is enabled.
	IAMDatabaseAuthenticationEnabled *bool `type:"boolean"`

	// If StorageEncrypted is true, the Amazon Web Services KMS key identifier for
	// the encrypted DB cluster snapshot.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	KmsKeyId *string `type:"string"`

	// The license model information for this DB cluster snapshot.
	LicenseModel *string `type:"string"`

	// The master username for this DB cluster snapshot.
	MasterUsername *string `type:"string"`

	// The percentage of the estimated data that has been transferred.
	PercentProgress *int64 `type:"integer"`

	// The port that the DB cluster was listening on at the time of the snapshot.
	Port *int64 `type:"integer"`

	// The time when the snapshot was taken, in Universal Coordinated Time (UTC).
	SnapshotCreateTime *time.Time `type:"timestamp"`

	// The type of the DB cluster snapshot.
	SnapshotType *string `type:"string"`

	// If the DB cluster snapshot was copied from a source DB cluster snapshot,
	// the Amazon Resource Name (ARN) for the source DB cluster snapshot, otherwise,
	// a null value.
	SourceDBClusterSnapshotArn *string `type:"string"`

	// The status of this DB cluster snapshot. Valid statuses are the following:
	//
	//    * available
	//
	//    * copying
	//
	//    * creating
	Status *string `type:"string"`

	// Indicates whether the DB cluster snapshot is encrypted.
	StorageEncrypted *bool `type:"boolean"`

	// The storage throughput for the DB cluster snapshot. The throughput is automatically
	// set based on the IOPS that you provision, and is not configurable.
	//
	// This setting is only for non-Aurora Multi-AZ DB clusters.
	StorageThroughput *int64 `type:"integer"`

	// The storage type associated with the DB cluster snapshot.
	//
	// This setting is only for Aurora DB clusters.
	StorageType *string `type:"string"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	TagList []*Tag `locationNameList:"Tag" type:"list"`

	// The VPC ID associated with the DB cluster snapshot.
	VpcId *string `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 DBClusterSnapshot) 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 DBClusterSnapshot) GoString() string {
	return s.String()
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *DBClusterSnapshot) SetAllocatedStorage(v int64) *DBClusterSnapshot {
	s.AllocatedStorage = &v
	return s
}

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *DBClusterSnapshot) SetAvailabilityZones(v []*string) *DBClusterSnapshot {
	s.AvailabilityZones = v
	return s
}

// SetClusterCreateTime sets the ClusterCreateTime field's value.
func (s *DBClusterSnapshot) SetClusterCreateTime(v time.Time) *DBClusterSnapshot {
	s.ClusterCreateTime = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *DBClusterSnapshot) SetDBClusterIdentifier(v string) *DBClusterSnapshot {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBClusterSnapshotArn sets the DBClusterSnapshotArn field's value.
func (s *DBClusterSnapshot) SetDBClusterSnapshotArn(v string) *DBClusterSnapshot {
	s.DBClusterSnapshotArn = &v
	return s
}

// SetDBClusterSnapshotIdentifier sets the DBClusterSnapshotIdentifier field's value.
func (s *DBClusterSnapshot) SetDBClusterSnapshotIdentifier(v string) *DBClusterSnapshot {
	s.DBClusterSnapshotIdentifier = &v
	return s
}

// SetDBSystemId sets the DBSystemId field's value.
func (s *DBClusterSnapshot) SetDBSystemId(v string) *DBClusterSnapshot {
	s.DBSystemId = &v
	return s
}

// SetDbClusterResourceId sets the DbClusterResourceId field's value.
func (s *DBClusterSnapshot) SetDbClusterResourceId(v string) *DBClusterSnapshot {
	s.DbClusterResourceId = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *DBClusterSnapshot) SetEngine(v string) *DBClusterSnapshot {
	s.Engine = &v
	return s
}

// SetEngineMode sets the EngineMode field's value.
func (s *DBClusterSnapshot) SetEngineMode(v string) *DBClusterSnapshot {
	s.EngineMode = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *DBClusterSnapshot) SetEngineVersion(v string) *DBClusterSnapshot {
	s.EngineVersion = &v
	return s
}

// SetIAMDatabaseAuthenticationEnabled sets the IAMDatabaseAuthenticationEnabled field's value.
func (s *DBClusterSnapshot) SetIAMDatabaseAuthenticationEnabled(v bool) *DBClusterSnapshot {
	s.IAMDatabaseAuthenticationEnabled = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *DBClusterSnapshot) SetKmsKeyId(v string) *DBClusterSnapshot {
	s.KmsKeyId = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *DBClusterSnapshot) SetLicenseModel(v string) *DBClusterSnapshot {
	s.LicenseModel = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *DBClusterSnapshot) SetMasterUsername(v string) *DBClusterSnapshot {
	s.MasterUsername = &v
	return s
}

// SetPercentProgress sets the PercentProgress field's value.
func (s *DBClusterSnapshot) SetPercentProgress(v int64) *DBClusterSnapshot {
	s.PercentProgress = &v
	return s
}

// SetPort sets the Port field's value.
func (s *DBClusterSnapshot) SetPort(v int64) *DBClusterSnapshot {
	s.Port = &v
	return s
}

// SetSnapshotCreateTime sets the SnapshotCreateTime field's value.
func (s *DBClusterSnapshot) SetSnapshotCreateTime(v time.Time) *DBClusterSnapshot {
	s.SnapshotCreateTime = &v
	return s
}

// SetSnapshotType sets the SnapshotType field's value.
func (s *DBClusterSnapshot) SetSnapshotType(v string) *DBClusterSnapshot {
	s.SnapshotType = &v
	return s
}

// SetSourceDBClusterSnapshotArn sets the SourceDBClusterSnapshotArn field's value.
func (s *DBClusterSnapshot) SetSourceDBClusterSnapshotArn(v string) *DBClusterSnapshot {
	s.SourceDBClusterSnapshotArn = &v
	return s
}

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

// SetStorageEncrypted sets the StorageEncrypted field's value.
func (s *DBClusterSnapshot) SetStorageEncrypted(v bool) *DBClusterSnapshot {
	s.StorageEncrypted = &v
	return s
}

// SetStorageThroughput sets the StorageThroughput field's value.
func (s *DBClusterSnapshot) SetStorageThroughput(v int64) *DBClusterSnapshot {
	s.StorageThroughput = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *DBClusterSnapshot) SetStorageType(v string) *DBClusterSnapshot {
	s.StorageType = &v
	return s
}

// SetTagList sets the TagList field's value.
func (s *DBClusterSnapshot) SetTagList(v []*Tag) *DBClusterSnapshot {
	s.TagList = v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *DBClusterSnapshot) SetVpcId(v string) *DBClusterSnapshot {
	s.VpcId = &v
	return s
}

// Contains the name and values of a manual DB cluster snapshot attribute.
//
// Manual DB cluster snapshot attributes are used to authorize other Amazon
// Web Services accounts to restore a manual DB cluster snapshot. For more information,
// see the ModifyDBClusterSnapshotAttribute API action.
type DBClusterSnapshotAttribute struct {
	_ struct{} `type:"structure"`

	// The name of the manual DB cluster snapshot attribute.
	//
	// The attribute named restore refers to the list of Amazon Web Services accounts
	// that have permission to copy or restore the manual DB cluster snapshot. For
	// more information, see the ModifyDBClusterSnapshotAttribute API action.
	AttributeName *string `type:"string"`

	// The value(s) for the manual DB cluster snapshot attribute.
	//
	// If the AttributeName field is set to restore, then this element returns a
	// list of IDs of the Amazon Web Services accounts that are authorized to copy
	// or restore the manual DB cluster snapshot. If a value of all is in the list,
	// then the manual DB cluster snapshot is public and available for any Amazon
	// Web Services account to copy or restore.
	AttributeValues []*string `locationNameList:"AttributeValue" 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 DBClusterSnapshotAttribute) 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 DBClusterSnapshotAttribute) GoString() string {
	return s.String()
}

// SetAttributeName sets the AttributeName field's value.
func (s *DBClusterSnapshotAttribute) SetAttributeName(v string) *DBClusterSnapshotAttribute {
	s.AttributeName = &v
	return s
}

// SetAttributeValues sets the AttributeValues field's value.
func (s *DBClusterSnapshotAttribute) SetAttributeValues(v []*string) *DBClusterSnapshotAttribute {
	s.AttributeValues = v
	return s
}

// Contains the results of a successful call to the DescribeDBClusterSnapshotAttributes
// API action.
//
// Manual DB cluster snapshot attributes are used to authorize other Amazon
// Web Services accounts to copy or restore a manual DB cluster snapshot. For
// more information, see the ModifyDBClusterSnapshotAttribute API action.
type DBClusterSnapshotAttributesResult struct {
	_ struct{} `type:"structure"`

	// The list of attributes and values for the manual DB cluster snapshot.
	DBClusterSnapshotAttributes []*DBClusterSnapshotAttribute `locationNameList:"DBClusterSnapshotAttribute" type:"list"`

	// The identifier of the manual DB cluster snapshot that the attributes apply
	// to.
	DBClusterSnapshotIdentifier *string `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 DBClusterSnapshotAttributesResult) 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 DBClusterSnapshotAttributesResult) GoString() string {
	return s.String()
}

// SetDBClusterSnapshotAttributes sets the DBClusterSnapshotAttributes field's value.
func (s *DBClusterSnapshotAttributesResult) SetDBClusterSnapshotAttributes(v []*DBClusterSnapshotAttribute) *DBClusterSnapshotAttributesResult {
	s.DBClusterSnapshotAttributes = v
	return s
}

// SetDBClusterSnapshotIdentifier sets the DBClusterSnapshotIdentifier field's value.
func (s *DBClusterSnapshotAttributesResult) SetDBClusterSnapshotIdentifier(v string) *DBClusterSnapshotAttributesResult {
	s.DBClusterSnapshotIdentifier = &v
	return s
}

// Reserved for future use.
type DBClusterStatusInfo struct {
	_ struct{} `type:"structure"`

	// Reserved for future use.
	Message *string `type:"string"`

	// Reserved for future use.
	Normal *bool `type:"boolean"`

	// Reserved for future use.
	Status *string `type:"string"`

	// Reserved for future use.
	StatusType *string `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 DBClusterStatusInfo) 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 DBClusterStatusInfo) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *DBClusterStatusInfo) SetMessage(v string) *DBClusterStatusInfo {
	s.Message = &v
	return s
}

// SetNormal sets the Normal field's value.
func (s *DBClusterStatusInfo) SetNormal(v bool) *DBClusterStatusInfo {
	s.Normal = &v
	return s
}

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

// SetStatusType sets the StatusType field's value.
func (s *DBClusterStatusInfo) SetStatusType(v string) *DBClusterStatusInfo {
	s.StatusType = &v
	return s
}

// This data type is used as a response element in the action DescribeDBEngineVersions.
type DBEngineVersion struct {
	_ struct{} `type:"structure"`

	// The creation time of the DB engine version.
	CreateTime *time.Time `type:"timestamp"`

	// JSON string that lists the installation files and parameters that RDS Custom
	// uses to create a custom engine version (CEV). RDS Custom applies the patches
	// in the order in which they're listed in the manifest. You can set the Oracle
	// home, Oracle base, and UNIX/Linux user and group using the installation parameters.
	// For more information, see JSON fields in the CEV manifest (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev.preparing.html#custom-cev.preparing.manifest.fields)
	// in the Amazon RDS User Guide.
	CustomDBEngineVersionManifest *string `min:"1" type:"string"`

	// The description of the database engine.
	DBEngineDescription *string `type:"string"`

	// A value that indicates the source media provider of the AMI based on the
	// usage operation. Applicable for RDS Custom for SQL Server.
	DBEngineMediaType *string `type:"string"`

	// The ARN of the custom engine version.
	DBEngineVersionArn *string `type:"string"`

	// The description of the database engine version.
	DBEngineVersionDescription *string `type:"string"`

	// The name of the DB parameter group family for the database engine.
	DBParameterGroupFamily *string `type:"string"`

	// The name of the Amazon S3 bucket that contains your database installation
	// files.
	DatabaseInstallationFilesS3BucketName *string `type:"string"`

	// The Amazon S3 directory that contains the database installation files. If
	// not specified, then no prefix is assumed.
	DatabaseInstallationFilesS3Prefix *string `type:"string"`

	// The default character set for new instances of this engine version, if the
	// CharacterSetName parameter of the CreateDBInstance API isn't specified.
	DefaultCharacterSet *CharacterSet `type:"structure"`

	// The name of the database engine.
	Engine *string `type:"string"`

	// The version number of the database engine.
	EngineVersion *string `type:"string"`

	// The types of logs that the database engine has available for export to CloudWatch
	// Logs.
	ExportableLogTypes []*string `type:"list"`

	// The EC2 image
	Image *CustomDBEngineVersionAMI `type:"structure"`

	// The Amazon Web Services KMS key identifier for an encrypted CEV. This parameter
	// is required for RDS Custom, but optional for Amazon RDS.
	KMSKeyId *string `type:"string"`

	// The major engine version of the CEV.
	MajorEngineVersion *string `type:"string"`

	// The status of the DB engine version, either available or deprecated.
	Status *string `type:"string"`

	// A list of the supported CA certificate identifiers.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	SupportedCACertificateIdentifiers []*string `type:"list"`

	// A list of the character sets supported by this engine for the CharacterSetName
	// parameter of the CreateDBInstance operation.
	SupportedCharacterSets []*CharacterSet `locationNameList:"CharacterSet" type:"list"`

	// A list of the supported DB engine modes.
	SupportedEngineModes []*string `type:"list"`

	// A list of features supported by the DB engine.
	//
	// The supported features vary by DB engine and DB engine version.
	//
	// To determine the supported features for a specific DB engine and DB engine
	// version using the CLI, use the following command:
	//
	// aws rds describe-db-engine-versions --engine <engine_name> --engine-version
	// <engine_version>
	//
	// For example, to determine the supported features for RDS for PostgreSQL version
	// 13.3 using the CLI, use the following command:
	//
	// aws rds describe-db-engine-versions --engine postgres --engine-version 13.3
	//
	// The supported features are listed under SupportedFeatureNames in the output.
	SupportedFeatureNames []*string `type:"list"`

	// A list of the character sets supported by the Oracle DB engine for the NcharCharacterSetName
	// parameter of the CreateDBInstance operation.
	SupportedNcharCharacterSets []*CharacterSet `locationNameList:"CharacterSet" type:"list"`

	// A list of the time zones supported by this engine for the Timezone parameter
	// of the CreateDBInstance action.
	SupportedTimezones []*Timezone `locationNameList:"Timezone" type:"list"`

	// Indicates whether the engine version supports Babelfish for Aurora PostgreSQL.
	SupportsBabelfish *bool `type:"boolean"`

	// Indicates whether the engine version supports rotating the server certificate
	// without rebooting the DB instance.
	SupportsCertificateRotationWithoutRestart *bool `type:"boolean"`

	// Indicates whether you can use Aurora global databases with a specific DB
	// engine version.
	SupportsGlobalDatabases *bool `type:"boolean"`

	// Indicates whether the DB engine version supports zero-ETL integrations with
	// Amazon Redshift.
	SupportsIntegrations *bool `type:"boolean"`

	// Indicates whether the DB engine version supports Aurora Limitless Database.
	SupportsLimitlessDatabase *bool `type:"boolean"`

	// Indicates whether the DB engine version supports forwarding write operations
	// from reader DB instances to the writer DB instance in the DB cluster. By
	// default, write operations aren't allowed on reader DB instances.
	//
	// Valid for: Aurora DB clusters only
	SupportsLocalWriteForwarding *bool `type:"boolean"`

	// Indicates whether the engine version supports exporting the log types specified
	// by ExportableLogTypes to CloudWatch Logs.
	SupportsLogExportsToCloudwatchLogs *bool `type:"boolean"`

	// Indicates whether you can use Aurora parallel query with a specific DB engine
	// version.
	SupportsParallelQuery *bool `type:"boolean"`

	// Indicates whether the database engine version supports read replicas.
	SupportsReadReplica *bool `type:"boolean"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	TagList []*Tag `locationNameList:"Tag" type:"list"`

	// A list of engine versions that this database engine version can be upgraded
	// to.
	ValidUpgradeTarget []*UpgradeTarget `locationNameList:"UpgradeTarget" 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 DBEngineVersion) 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 DBEngineVersion) GoString() string {
	return s.String()
}

// SetCreateTime sets the CreateTime field's value.
func (s *DBEngineVersion) SetCreateTime(v time.Time) *DBEngineVersion {
	s.CreateTime = &v
	return s
}

// SetCustomDBEngineVersionManifest sets the CustomDBEngineVersionManifest field's value.
func (s *DBEngineVersion) SetCustomDBEngineVersionManifest(v string) *DBEngineVersion {
	s.CustomDBEngineVersionManifest = &v
	return s
}

// SetDBEngineDescription sets the DBEngineDescription field's value.
func (s *DBEngineVersion) SetDBEngineDescription(v string) *DBEngineVersion {
	s.DBEngineDescription = &v
	return s
}

// SetDBEngineMediaType sets the DBEngineMediaType field's value.
func (s *DBEngineVersion) SetDBEngineMediaType(v string) *DBEngineVersion {
	s.DBEngineMediaType = &v
	return s
}

// SetDBEngineVersionArn sets the DBEngineVersionArn field's value.
func (s *DBEngineVersion) SetDBEngineVersionArn(v string) *DBEngineVersion {
	s.DBEngineVersionArn = &v
	return s
}

// SetDBEngineVersionDescription sets the DBEngineVersionDescription field's value.
func (s *DBEngineVersion) SetDBEngineVersionDescription(v string) *DBEngineVersion {
	s.DBEngineVersionDescription = &v
	return s
}

// SetDBParameterGroupFamily sets the DBParameterGroupFamily field's value.
func (s *DBEngineVersion) SetDBParameterGroupFamily(v string) *DBEngineVersion {
	s.DBParameterGroupFamily = &v
	return s
}

// SetDatabaseInstallationFilesS3BucketName sets the DatabaseInstallationFilesS3BucketName field's value.
func (s *DBEngineVersion) SetDatabaseInstallationFilesS3BucketName(v string) *DBEngineVersion {
	s.DatabaseInstallationFilesS3BucketName = &v
	return s
}

// SetDatabaseInstallationFilesS3Prefix sets the DatabaseInstallationFilesS3Prefix field's value.
func (s *DBEngineVersion) SetDatabaseInstallationFilesS3Prefix(v string) *DBEngineVersion {
	s.DatabaseInstallationFilesS3Prefix = &v
	return s
}

// SetDefaultCharacterSet sets the DefaultCharacterSet field's value.
func (s *DBEngineVersion) SetDefaultCharacterSet(v *CharacterSet) *DBEngineVersion {
	s.DefaultCharacterSet = v
	return s
}

// SetEngine sets the Engine field's value.
func (s *DBEngineVersion) SetEngine(v string) *DBEngineVersion {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *DBEngineVersion) SetEngineVersion(v string) *DBEngineVersion {
	s.EngineVersion = &v
	return s
}

// SetExportableLogTypes sets the ExportableLogTypes field's value.
func (s *DBEngineVersion) SetExportableLogTypes(v []*string) *DBEngineVersion {
	s.ExportableLogTypes = v
	return s
}

// SetImage sets the Image field's value.
func (s *DBEngineVersion) SetImage(v *CustomDBEngineVersionAMI) *DBEngineVersion {
	s.Image = v
	return s
}

// SetKMSKeyId sets the KMSKeyId field's value.
func (s *DBEngineVersion) SetKMSKeyId(v string) *DBEngineVersion {
	s.KMSKeyId = &v
	return s
}

// SetMajorEngineVersion sets the MajorEngineVersion field's value.
func (s *DBEngineVersion) SetMajorEngineVersion(v string) *DBEngineVersion {
	s.MajorEngineVersion = &v
	return s
}

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

// SetSupportedCACertificateIdentifiers sets the SupportedCACertificateIdentifiers field's value.
func (s *DBEngineVersion) SetSupportedCACertificateIdentifiers(v []*string) *DBEngineVersion {
	s.SupportedCACertificateIdentifiers = v
	return s
}

// SetSupportedCharacterSets sets the SupportedCharacterSets field's value.
func (s *DBEngineVersion) SetSupportedCharacterSets(v []*CharacterSet) *DBEngineVersion {
	s.SupportedCharacterSets = v
	return s
}

// SetSupportedEngineModes sets the SupportedEngineModes field's value.
func (s *DBEngineVersion) SetSupportedEngineModes(v []*string) *DBEngineVersion {
	s.SupportedEngineModes = v
	return s
}

// SetSupportedFeatureNames sets the SupportedFeatureNames field's value.
func (s *DBEngineVersion) SetSupportedFeatureNames(v []*string) *DBEngineVersion {
	s.SupportedFeatureNames = v
	return s
}

// SetSupportedNcharCharacterSets sets the SupportedNcharCharacterSets field's value.
func (s *DBEngineVersion) SetSupportedNcharCharacterSets(v []*CharacterSet) *DBEngineVersion {
	s.SupportedNcharCharacterSets = v
	return s
}

// SetSupportedTimezones sets the SupportedTimezones field's value.
func (s *DBEngineVersion) SetSupportedTimezones(v []*Timezone) *DBEngineVersion {
	s.SupportedTimezones = v
	return s
}

// SetSupportsBabelfish sets the SupportsBabelfish field's value.
func (s *DBEngineVersion) SetSupportsBabelfish(v bool) *DBEngineVersion {
	s.SupportsBabelfish = &v
	return s
}

// SetSupportsCertificateRotationWithoutRestart sets the SupportsCertificateRotationWithoutRestart field's value.
func (s *DBEngineVersion) SetSupportsCertificateRotationWithoutRestart(v bool) *DBEngineVersion {
	s.SupportsCertificateRotationWithoutRestart = &v
	return s
}

// SetSupportsGlobalDatabases sets the SupportsGlobalDatabases field's value.
func (s *DBEngineVersion) SetSupportsGlobalDatabases(v bool) *DBEngineVersion {
	s.SupportsGlobalDatabases = &v
	return s
}

// SetSupportsIntegrations sets the SupportsIntegrations field's value.
func (s *DBEngineVersion) SetSupportsIntegrations(v bool) *DBEngineVersion {
	s.SupportsIntegrations = &v
	return s
}

// SetSupportsLimitlessDatabase sets the SupportsLimitlessDatabase field's value.
func (s *DBEngineVersion) SetSupportsLimitlessDatabase(v bool) *DBEngineVersion {
	s.SupportsLimitlessDatabase = &v
	return s
}

// SetSupportsLocalWriteForwarding sets the SupportsLocalWriteForwarding field's value.
func (s *DBEngineVersion) SetSupportsLocalWriteForwarding(v bool) *DBEngineVersion {
	s.SupportsLocalWriteForwarding = &v
	return s
}

// SetSupportsLogExportsToCloudwatchLogs sets the SupportsLogExportsToCloudwatchLogs field's value.
func (s *DBEngineVersion) SetSupportsLogExportsToCloudwatchLogs(v bool) *DBEngineVersion {
	s.SupportsLogExportsToCloudwatchLogs = &v
	return s
}

// SetSupportsParallelQuery sets the SupportsParallelQuery field's value.
func (s *DBEngineVersion) SetSupportsParallelQuery(v bool) *DBEngineVersion {
	s.SupportsParallelQuery = &v
	return s
}

// SetSupportsReadReplica sets the SupportsReadReplica field's value.
func (s *DBEngineVersion) SetSupportsReadReplica(v bool) *DBEngineVersion {
	s.SupportsReadReplica = &v
	return s
}

// SetTagList sets the TagList field's value.
func (s *DBEngineVersion) SetTagList(v []*Tag) *DBEngineVersion {
	s.TagList = v
	return s
}

// SetValidUpgradeTarget sets the ValidUpgradeTarget field's value.
func (s *DBEngineVersion) SetValidUpgradeTarget(v []*UpgradeTarget) *DBEngineVersion {
	s.ValidUpgradeTarget = v
	return s
}

// Contains the details of an Amazon RDS DB instance.
//
// This data type is used as a response element in the operations CreateDBInstance,
// CreateDBInstanceReadReplica, DeleteDBInstance, DescribeDBInstances, ModifyDBInstance,
// PromoteReadReplica, RebootDBInstance, RestoreDBInstanceFromDBSnapshot, RestoreDBInstanceFromS3,
// RestoreDBInstanceToPointInTime, StartDBInstance, and StopDBInstance.
type DBInstance struct {
	_ struct{} `type:"structure"`

	// Indicates whether engine-native audit fields are included in the database
	// activity stream.
	ActivityStreamEngineNativeAuditFieldsIncluded *bool `type:"boolean"`

	// The name of the Amazon Kinesis data stream used for the database activity
	// stream.
	ActivityStreamKinesisStreamName *string `type:"string"`

	// The Amazon Web Services KMS key identifier used for encrypting messages in
	// the database activity stream. The Amazon Web Services KMS key identifier
	// is the key ARN, key ID, alias ARN, or alias name for the KMS key.
	ActivityStreamKmsKeyId *string `type:"string"`

	// The mode of the database activity stream. Database events such as a change
	// or access generate an activity stream event. RDS for Oracle always handles
	// these events asynchronously.
	ActivityStreamMode *string `type:"string" enum:"ActivityStreamMode"`

	// The status of the policy state of the activity stream.
	ActivityStreamPolicyStatus *string `type:"string" enum:"ActivityStreamPolicyStatus"`

	// The status of the database activity stream.
	ActivityStreamStatus *string `type:"string" enum:"ActivityStreamStatus"`

	// The amount of storage in gibibytes (GiB) allocated for the DB instance.
	AllocatedStorage *int64 `type:"integer"`

	// The Amazon Web Services Identity and Access Management (IAM) roles associated
	// with the DB instance.
	AssociatedRoles []*DBInstanceRole `locationNameList:"DBInstanceRole" type:"list"`

	// Indicates whether minor version patches are applied automatically.
	AutoMinorVersionUpgrade *bool `type:"boolean"`

	// The time when a stopped DB instance is restarted automatically.
	AutomaticRestartTime *time.Time `type:"timestamp"`

	// The automation mode of the RDS Custom DB instance: full or all paused. If
	// full, the DB instance automates monitoring and instance recovery. If all
	// paused, the instance pauses automation for the duration set by --resume-full-automation-mode-minutes.
	AutomationMode *string `type:"string" enum:"AutomationMode"`

	// The name of the Availability Zone where the DB instance is located.
	AvailabilityZone *string `type:"string"`

	// The Amazon Resource Name (ARN) of the recovery point in Amazon Web Services
	// Backup.
	AwsBackupRecoveryPointArn *string `type:"string"`

	// The number of days for which automatic DB snapshots are retained.
	BackupRetentionPeriod *int64 `type:"integer"`

	// The location where automated backups and manual snapshots are stored: Amazon
	// Web Services Outposts or the Amazon Web Services Region.
	BackupTarget *string `type:"string"`

	// The identifier of the CA certificate for this DB instance.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	CACertificateIdentifier *string `type:"string"`

	// The details of the DB instance's server certificate.
	CertificateDetails *CertificateDetails `type:"structure"`

	// If present, specifies the name of the character set that this instance is
	// associated with.
	CharacterSetName *string `type:"string"`

	// Indicates whether tags are copied from the DB instance to snapshots of the
	// DB instance.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. Copying tags to
	// snapshots is managed by the DB cluster. Setting this value for an Aurora
	// DB instance has no effect on the DB cluster setting. For more information,
	// see DBCluster.
	CopyTagsToSnapshot *bool `type:"boolean"`

	// The instance profile associated with the underlying Amazon EC2 instance of
	// an RDS Custom DB instance. The instance profile must meet the following requirements:
	//
	//    * The profile must exist in your account.
	//
	//    * The profile must have an IAM role that Amazon EC2 has permissions to
	//    assume.
	//
	//    * The instance profile name and the associated IAM role name must start
	//    with the prefix AWSRDSCustom.
	//
	// For the list of permissions required for the IAM role, see Configure IAM
	// and your VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc)
	// in the Amazon RDS User Guide.
	CustomIamInstanceProfile *string `type:"string"`

	// Indicates whether a customer-owned IP address (CoIP) is enabled for an RDS
	// on Outposts DB instance.
	//
	// A CoIP provides local or external connectivity to resources in your Outpost
	// subnets through your on-premises network. For some use cases, a CoIP can
	// provide lower latency for connections to the DB instance from outside of
	// its virtual private cloud (VPC) on your local network.
	//
	// For more information about RDS on Outposts, see Working with Amazon RDS on
	// Amazon Web Services Outposts (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html)
	// in the Amazon RDS User Guide.
	//
	// For more information about CoIPs, see Customer-owned IP addresses (https://docs.aws.amazon.com/outposts/latest/userguide/routing.html#ip-addressing)
	// in the Amazon Web Services Outposts User Guide.
	CustomerOwnedIpEnabled *bool `type:"boolean"`

	// If the DB instance is a member of a DB cluster, indicates the name of the
	// DB cluster that the DB instance is a member of.
	DBClusterIdentifier *string `type:"string"`

	// The Amazon Resource Name (ARN) for the DB instance.
	DBInstanceArn *string `type:"string"`

	// The list of replicated automated backups associated with the DB instance.
	DBInstanceAutomatedBackupsReplications []*DBInstanceAutomatedBackupsReplication `locationNameList:"DBInstanceAutomatedBackupsReplication" type:"list"`

	// The name of the compute and memory capacity class of the DB instance.
	DBInstanceClass *string `type:"string"`

	// The user-supplied database identifier. This identifier is the unique key
	// that identifies a DB instance.
	DBInstanceIdentifier *string `type:"string"`

	// The current state of this database.
	//
	// For information about DB instance statuses, see Viewing DB instance status
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/accessing-monitoring.html#Overview.DBInstance.Status)
	// in the Amazon RDS User Guide.
	DBInstanceStatus *string `type:"string"`

	// The initial database name that you provided (if required) when you created
	// the DB instance. This name is returned for the life of your DB instance.
	// For an RDS for Oracle CDB instance, the name identifies the PDB rather than
	// the CDB.
	DBName *string `type:"string"`

	// The list of DB parameter groups applied to this DB instance.
	DBParameterGroups []*DBParameterGroupStatus `locationNameList:"DBParameterGroup" type:"list"`

	// A list of DB security group elements containing DBSecurityGroup.Name and
	// DBSecurityGroup.Status subelements.
	DBSecurityGroups []*DBSecurityGroupMembership `locationNameList:"DBSecurityGroup" type:"list"`

	// Information about the subnet group associated with the DB instance, including
	// the name, description, and subnets in the subnet group.
	DBSubnetGroup *DBSubnetGroup `type:"structure"`

	// The Oracle system ID (Oracle SID) for a container database (CDB). The Oracle
	// SID is also the name of the CDB. This setting is only valid for RDS Custom
	// DB instances.
	DBSystemId *string `type:"string"`

	// The port that the DB instance listens on. If the DB instance is part of a
	// DB cluster, this can be a different port than the DB cluster port.
	DbInstancePort *int64 `type:"integer"`

	// The Amazon Web Services Region-unique, immutable identifier for the DB instance.
	// This identifier is found in Amazon Web Services CloudTrail log entries whenever
	// the Amazon Web Services KMS key for the DB instance is accessed.
	DbiResourceId *string `type:"string"`

	// Indicates whether the DB instance has a dedicated log volume (DLV) enabled.
	DedicatedLogVolume *bool `type:"boolean"`

	// Indicates whether the DB instance has deletion protection enabled. The database
	// can't be deleted when deletion protection is enabled. For more information,
	// see Deleting a DB Instance (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html).
	DeletionProtection *bool `type:"boolean"`

	// The Active Directory Domain membership records associated with the DB instance.
	DomainMemberships []*DomainMembership `locationNameList:"DomainMembership" type:"list"`

	// A list of log types that this DB instance is configured to export to CloudWatch
	// Logs.
	//
	// Log types vary by DB engine. For information about the log types for each
	// DB engine, see Monitoring Amazon RDS log files (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html)
	// in the Amazon RDS User Guide.
	EnabledCloudwatchLogsExports []*string `type:"list"`

	// The connection endpoint for the DB instance.
	//
	// The endpoint might not be shown for instances with the status of creating.
	Endpoint *Endpoint `type:"structure"`

	// The database engine used for this DB instance.
	Engine *string `type:"string"`

	// The life cycle type for the DB instance.
	//
	// For more information, see CreateDBInstance.
	EngineLifecycleSupport *string `type:"string"`

	// The version of the database engine.
	EngineVersion *string `type:"string"`

	// The Amazon Resource Name (ARN) of the Amazon CloudWatch Logs log stream that
	// receives the Enhanced Monitoring metrics data for the DB instance.
	EnhancedMonitoringResourceArn *string `type:"string"`

	// Indicates whether mapping of Amazon Web Services Identity and Access Management
	// (IAM) accounts to database accounts is enabled for the DB instance.
	//
	// For a list of engine versions that support IAM database authentication, see
	// IAM database authentication (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RDS_Fea_Regions_DB-eng.Feature.IamDatabaseAuthentication.html)
	// in the Amazon RDS User Guide and IAM database authentication in Aurora (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.Aurora_Fea_Regions_DB-eng.Feature.IAMdbauth.html)
	// in the Amazon Aurora User Guide.
	IAMDatabaseAuthenticationEnabled *bool `type:"boolean"`

	// The date and time when the DB instance was created.
	InstanceCreateTime *time.Time `type:"timestamp"`

	// The Provisioned IOPS (I/O operations per second) value for the DB instance.
	Iops *int64 `type:"integer"`

	// Indicates whether an upgrade is recommended for the storage file system configuration
	// on the DB instance. To migrate to the preferred configuration, you can either
	// create a blue/green deployment, or create a read replica from the DB instance.
	// For more information, see Upgrading the storage file system for a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.UpgradeFileSystem).
	IsStorageConfigUpgradeAvailable *bool `type:"boolean"`

	// If StorageEncrypted is enabled, the Amazon Web Services KMS key identifier
	// for the encrypted DB instance.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	KmsKeyId *string `type:"string"`

	// The latest time to which a database in this DB instance can be restored with
	// point-in-time restore.
	LatestRestorableTime *time.Time `type:"timestamp"`

	// The license model information for this DB instance. This setting doesn't
	// apply to Amazon Aurora or RDS Custom DB instances.
	LicenseModel *string `type:"string"`

	// The listener connection endpoint for SQL Server Always On.
	ListenerEndpoint *Endpoint `type:"structure"`

	// The secret managed by RDS in Amazon Web Services Secrets Manager for the
	// master user password.
	//
	// For more information, see Password management with Amazon Web Services Secrets
	// Manager (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html)
	// in the Amazon RDS User Guide.
	MasterUserSecret *MasterUserSecret `type:"structure"`

	// The master username for the DB instance.
	MasterUsername *string `type:"string"`

	// The upper limit in gibibytes (GiB) to which Amazon RDS can automatically
	// scale the storage of the DB instance.
	MaxAllocatedStorage *int64 `type:"integer"`

	// The interval, in seconds, between points when Enhanced Monitoring metrics
	// are collected for the DB instance.
	MonitoringInterval *int64 `type:"integer"`

	// The ARN for the IAM role that permits RDS to send Enhanced Monitoring metrics
	// to Amazon CloudWatch Logs.
	MonitoringRoleArn *string `type:"string"`

	// Indicates whether the DB instance is a Multi-AZ deployment. This setting
	// doesn't apply to RDS Custom DB instances.
	MultiAZ *bool `type:"boolean"`

	// Specifies whether the DB instance is in the multi-tenant configuration (TRUE)
	// or the single-tenant configuration (FALSE).
	MultiTenant *bool `type:"boolean"`

	// The name of the NCHAR character set for the Oracle DB instance. This character
	// set specifies the Unicode encoding for data stored in table columns of type
	// NCHAR, NCLOB, or NVARCHAR2.
	NcharCharacterSetName *string `type:"string"`

	// The network type of the DB instance.
	//
	// The network type is determined by the DBSubnetGroup specified for the DB
	// instance. A DBSubnetGroup can support only the IPv4 protocol or the IPv4
	// and the IPv6 protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon RDS User Guide and Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid Values: IPV4 | DUAL
	NetworkType *string `type:"string"`

	// The list of option group memberships for this DB instance.
	OptionGroupMemberships []*OptionGroupMembership `locationNameList:"OptionGroupMembership" type:"list"`

	// Information about pending changes to the DB instance. This information is
	// returned only when there are pending changes. Specific changes are identified
	// by subelements.
	PendingModifiedValues *PendingModifiedValues `type:"structure"`

	// The progress of the storage optimization operation as a percentage.
	PercentProgress *string `type:"string"`

	// Indicates whether Performance Insights is enabled for the DB instance.
	PerformanceInsightsEnabled *bool `type:"boolean"`

	// The Amazon Web Services KMS key identifier for encryption of Performance
	// Insights data.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	PerformanceInsightsKMSKeyId *string `type:"string"`

	// The number of days to retain Performance Insights data.
	//
	// Valid Values:
	//
	//    * 7
	//
	//    * month * 31, where month is a number of months from 1-23. Examples: 93
	//    (3 months * 31), 341 (11 months * 31), 589 (19 months * 31)
	//
	//    * 731
	//
	// Default: 7 days
	PerformanceInsightsRetentionPeriod *int64 `type:"integer"`

	// The daily time range during which automated backups are created if automated
	// backups are enabled, as determined by the BackupRetentionPeriod.
	PreferredBackupWindow *string `type:"string"`

	// The weekly time range during which system maintenance can occur, in Universal
	// Coordinated Time (UTC).
	PreferredMaintenanceWindow *string `type:"string"`

	// The number of CPU cores and the number of threads per core for the DB instance
	// class of the DB instance.
	ProcessorFeatures []*ProcessorFeature `locationNameList:"ProcessorFeature" type:"list"`

	// The order of priority in which an Aurora Replica is promoted to the primary
	// instance after a failure of the existing primary instance. For more information,
	// see Fault Tolerance for an Aurora DB Cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraHighAvailability.html#Aurora.Managing.FaultTolerance)
	// in the Amazon Aurora User Guide.
	PromotionTier *int64 `type:"integer"`

	// Indicates whether the DB instance is publicly accessible.
	//
	// When the DB instance is publicly accessible and you connect from outside
	// of the DB instance's virtual private cloud (VPC), its Domain Name System
	// (DNS) endpoint resolves to the public IP address. When you connect from within
	// the same VPC as the DB instance, the endpoint resolves to the private IP
	// address. Access to the DB cluster is ultimately controlled by the security
	// group it uses. That public access isn't permitted if the security group assigned
	// to the DB cluster doesn't permit it.
	//
	// When the DB instance isn't publicly accessible, it is an internal DB instance
	// with a DNS name that resolves to a private IP address.
	//
	// For more information, see CreateDBInstance.
	PubliclyAccessible *bool `type:"boolean"`

	// The identifiers of Aurora DB clusters to which the RDS DB instance is replicated
	// as a read replica. For example, when you create an Aurora read replica of
	// an RDS for MySQL DB instance, the Aurora MySQL DB cluster for the Aurora
	// read replica is shown. This output doesn't contain information about cross-Region
	// Aurora read replicas.
	//
	// Currently, each RDS DB instance can have only one Aurora read replica.
	ReadReplicaDBClusterIdentifiers []*string `locationNameList:"ReadReplicaDBClusterIdentifier" type:"list"`

	// The identifiers of the read replicas associated with this DB instance.
	ReadReplicaDBInstanceIdentifiers []*string `locationNameList:"ReadReplicaDBInstanceIdentifier" type:"list"`

	// The identifier of the source DB cluster if this DB instance is a read replica.
	ReadReplicaSourceDBClusterIdentifier *string `type:"string"`

	// The identifier of the source DB instance if this DB instance is a read replica.
	ReadReplicaSourceDBInstanceIdentifier *string `type:"string"`

	// The open mode of an Oracle read replica. The default is open-read-only. For
	// more information, see Working with Oracle Read Replicas for Amazon RDS (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-read-replicas.html)
	// in the Amazon RDS User Guide.
	//
	// This attribute is only supported in RDS for Oracle.
	ReplicaMode *string `type:"string" enum:"ReplicaMode"`

	// The number of minutes to pause the automation. When the time period ends,
	// RDS Custom resumes full automation. The minimum value is 60 (default). The
	// maximum value is 1,440.
	ResumeFullAutomationModeTime *time.Time `type:"timestamp"`

	// If present, specifies the name of the secondary Availability Zone for a DB
	// instance with multi-AZ support.
	SecondaryAvailabilityZone *string `type:"string"`

	// The status of a read replica. If the DB instance isn't a read replica, the
	// value is blank.
	StatusInfos []*DBInstanceStatusInfo `locationNameList:"DBInstanceStatusInfo" type:"list"`

	// Indicates whether the DB instance is encrypted.
	StorageEncrypted *bool `type:"boolean"`

	// The storage throughput for the DB instance.
	//
	// This setting applies only to the gp3 storage type.
	StorageThroughput *int64 `type:"integer"`

	// The storage type associated with the DB instance.
	StorageType *string `type:"string"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	TagList []*Tag `locationNameList:"Tag" type:"list"`

	// The ARN from the key store with which the instance is associated for TDE
	// encryption.
	TdeCredentialArn *string `type:"string"`

	// The time zone of the DB instance. In most cases, the Timezone element is
	// empty. Timezone content appears only for RDS for Db2 and RDS for SQL Server
	// DB instances that were created with a time zone specified.
	Timezone *string `type:"string"`

	// The list of Amazon EC2 VPC security groups that the DB instance belongs to.
	VpcSecurityGroups []*VpcSecurityGroupMembership `locationNameList:"VpcSecurityGroupMembership" 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 DBInstance) 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 DBInstance) GoString() string {
	return s.String()
}

// SetActivityStreamEngineNativeAuditFieldsIncluded sets the ActivityStreamEngineNativeAuditFieldsIncluded field's value.
func (s *DBInstance) SetActivityStreamEngineNativeAuditFieldsIncluded(v bool) *DBInstance {
	s.ActivityStreamEngineNativeAuditFieldsIncluded = &v
	return s
}

// SetActivityStreamKinesisStreamName sets the ActivityStreamKinesisStreamName field's value.
func (s *DBInstance) SetActivityStreamKinesisStreamName(v string) *DBInstance {
	s.ActivityStreamKinesisStreamName = &v
	return s
}

// SetActivityStreamKmsKeyId sets the ActivityStreamKmsKeyId field's value.
func (s *DBInstance) SetActivityStreamKmsKeyId(v string) *DBInstance {
	s.ActivityStreamKmsKeyId = &v
	return s
}

// SetActivityStreamMode sets the ActivityStreamMode field's value.
func (s *DBInstance) SetActivityStreamMode(v string) *DBInstance {
	s.ActivityStreamMode = &v
	return s
}

// SetActivityStreamPolicyStatus sets the ActivityStreamPolicyStatus field's value.
func (s *DBInstance) SetActivityStreamPolicyStatus(v string) *DBInstance {
	s.ActivityStreamPolicyStatus = &v
	return s
}

// SetActivityStreamStatus sets the ActivityStreamStatus field's value.
func (s *DBInstance) SetActivityStreamStatus(v string) *DBInstance {
	s.ActivityStreamStatus = &v
	return s
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *DBInstance) SetAllocatedStorage(v int64) *DBInstance {
	s.AllocatedStorage = &v
	return s
}

// SetAssociatedRoles sets the AssociatedRoles field's value.
func (s *DBInstance) SetAssociatedRoles(v []*DBInstanceRole) *DBInstance {
	s.AssociatedRoles = v
	return s
}

// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
func (s *DBInstance) SetAutoMinorVersionUpgrade(v bool) *DBInstance {
	s.AutoMinorVersionUpgrade = &v
	return s
}

// SetAutomaticRestartTime sets the AutomaticRestartTime field's value.
func (s *DBInstance) SetAutomaticRestartTime(v time.Time) *DBInstance {
	s.AutomaticRestartTime = &v
	return s
}

// SetAutomationMode sets the AutomationMode field's value.
func (s *DBInstance) SetAutomationMode(v string) *DBInstance {
	s.AutomationMode = &v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *DBInstance) SetAvailabilityZone(v string) *DBInstance {
	s.AvailabilityZone = &v
	return s
}

// SetAwsBackupRecoveryPointArn sets the AwsBackupRecoveryPointArn field's value.
func (s *DBInstance) SetAwsBackupRecoveryPointArn(v string) *DBInstance {
	s.AwsBackupRecoveryPointArn = &v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *DBInstance) SetBackupRetentionPeriod(v int64) *DBInstance {
	s.BackupRetentionPeriod = &v
	return s
}

// SetBackupTarget sets the BackupTarget field's value.
func (s *DBInstance) SetBackupTarget(v string) *DBInstance {
	s.BackupTarget = &v
	return s
}

// SetCACertificateIdentifier sets the CACertificateIdentifier field's value.
func (s *DBInstance) SetCACertificateIdentifier(v string) *DBInstance {
	s.CACertificateIdentifier = &v
	return s
}

// SetCertificateDetails sets the CertificateDetails field's value.
func (s *DBInstance) SetCertificateDetails(v *CertificateDetails) *DBInstance {
	s.CertificateDetails = v
	return s
}

// SetCharacterSetName sets the CharacterSetName field's value.
func (s *DBInstance) SetCharacterSetName(v string) *DBInstance {
	s.CharacterSetName = &v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *DBInstance) SetCopyTagsToSnapshot(v bool) *DBInstance {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetCustomIamInstanceProfile sets the CustomIamInstanceProfile field's value.
func (s *DBInstance) SetCustomIamInstanceProfile(v string) *DBInstance {
	s.CustomIamInstanceProfile = &v
	return s
}

// SetCustomerOwnedIpEnabled sets the CustomerOwnedIpEnabled field's value.
func (s *DBInstance) SetCustomerOwnedIpEnabled(v bool) *DBInstance {
	s.CustomerOwnedIpEnabled = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *DBInstance) SetDBClusterIdentifier(v string) *DBInstance {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBInstanceArn sets the DBInstanceArn field's value.
func (s *DBInstance) SetDBInstanceArn(v string) *DBInstance {
	s.DBInstanceArn = &v
	return s
}

// SetDBInstanceAutomatedBackupsReplications sets the DBInstanceAutomatedBackupsReplications field's value.
func (s *DBInstance) SetDBInstanceAutomatedBackupsReplications(v []*DBInstanceAutomatedBackupsReplication) *DBInstance {
	s.DBInstanceAutomatedBackupsReplications = v
	return s
}

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *DBInstance) SetDBInstanceClass(v string) *DBInstance {
	s.DBInstanceClass = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DBInstance) SetDBInstanceIdentifier(v string) *DBInstance {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDBInstanceStatus sets the DBInstanceStatus field's value.
func (s *DBInstance) SetDBInstanceStatus(v string) *DBInstance {
	s.DBInstanceStatus = &v
	return s
}

// SetDBName sets the DBName field's value.
func (s *DBInstance) SetDBName(v string) *DBInstance {
	s.DBName = &v
	return s
}

// SetDBParameterGroups sets the DBParameterGroups field's value.
func (s *DBInstance) SetDBParameterGroups(v []*DBParameterGroupStatus) *DBInstance {
	s.DBParameterGroups = v
	return s
}

// SetDBSecurityGroups sets the DBSecurityGroups field's value.
func (s *DBInstance) SetDBSecurityGroups(v []*DBSecurityGroupMembership) *DBInstance {
	s.DBSecurityGroups = v
	return s
}

// SetDBSubnetGroup sets the DBSubnetGroup field's value.
func (s *DBInstance) SetDBSubnetGroup(v *DBSubnetGroup) *DBInstance {
	s.DBSubnetGroup = v
	return s
}

// SetDBSystemId sets the DBSystemId field's value.
func (s *DBInstance) SetDBSystemId(v string) *DBInstance {
	s.DBSystemId = &v
	return s
}

// SetDbInstancePort sets the DbInstancePort field's value.
func (s *DBInstance) SetDbInstancePort(v int64) *DBInstance {
	s.DbInstancePort = &v
	return s
}

// SetDbiResourceId sets the DbiResourceId field's value.
func (s *DBInstance) SetDbiResourceId(v string) *DBInstance {
	s.DbiResourceId = &v
	return s
}

// SetDedicatedLogVolume sets the DedicatedLogVolume field's value.
func (s *DBInstance) SetDedicatedLogVolume(v bool) *DBInstance {
	s.DedicatedLogVolume = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *DBInstance) SetDeletionProtection(v bool) *DBInstance {
	s.DeletionProtection = &v
	return s
}

// SetDomainMemberships sets the DomainMemberships field's value.
func (s *DBInstance) SetDomainMemberships(v []*DomainMembership) *DBInstance {
	s.DomainMemberships = v
	return s
}

// SetEnabledCloudwatchLogsExports sets the EnabledCloudwatchLogsExports field's value.
func (s *DBInstance) SetEnabledCloudwatchLogsExports(v []*string) *DBInstance {
	s.EnabledCloudwatchLogsExports = v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *DBInstance) SetEndpoint(v *Endpoint) *DBInstance {
	s.Endpoint = v
	return s
}

// SetEngine sets the Engine field's value.
func (s *DBInstance) SetEngine(v string) *DBInstance {
	s.Engine = &v
	return s
}

// SetEngineLifecycleSupport sets the EngineLifecycleSupport field's value.
func (s *DBInstance) SetEngineLifecycleSupport(v string) *DBInstance {
	s.EngineLifecycleSupport = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *DBInstance) SetEngineVersion(v string) *DBInstance {
	s.EngineVersion = &v
	return s
}

// SetEnhancedMonitoringResourceArn sets the EnhancedMonitoringResourceArn field's value.
func (s *DBInstance) SetEnhancedMonitoringResourceArn(v string) *DBInstance {
	s.EnhancedMonitoringResourceArn = &v
	return s
}

// SetIAMDatabaseAuthenticationEnabled sets the IAMDatabaseAuthenticationEnabled field's value.
func (s *DBInstance) SetIAMDatabaseAuthenticationEnabled(v bool) *DBInstance {
	s.IAMDatabaseAuthenticationEnabled = &v
	return s
}

// SetInstanceCreateTime sets the InstanceCreateTime field's value.
func (s *DBInstance) SetInstanceCreateTime(v time.Time) *DBInstance {
	s.InstanceCreateTime = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *DBInstance) SetIops(v int64) *DBInstance {
	s.Iops = &v
	return s
}

// SetIsStorageConfigUpgradeAvailable sets the IsStorageConfigUpgradeAvailable field's value.
func (s *DBInstance) SetIsStorageConfigUpgradeAvailable(v bool) *DBInstance {
	s.IsStorageConfigUpgradeAvailable = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *DBInstance) SetKmsKeyId(v string) *DBInstance {
	s.KmsKeyId = &v
	return s
}

// SetLatestRestorableTime sets the LatestRestorableTime field's value.
func (s *DBInstance) SetLatestRestorableTime(v time.Time) *DBInstance {
	s.LatestRestorableTime = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *DBInstance) SetLicenseModel(v string) *DBInstance {
	s.LicenseModel = &v
	return s
}

// SetListenerEndpoint sets the ListenerEndpoint field's value.
func (s *DBInstance) SetListenerEndpoint(v *Endpoint) *DBInstance {
	s.ListenerEndpoint = v
	return s
}

// SetMasterUserSecret sets the MasterUserSecret field's value.
func (s *DBInstance) SetMasterUserSecret(v *MasterUserSecret) *DBInstance {
	s.MasterUserSecret = v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *DBInstance) SetMasterUsername(v string) *DBInstance {
	s.MasterUsername = &v
	return s
}

// SetMaxAllocatedStorage sets the MaxAllocatedStorage field's value.
func (s *DBInstance) SetMaxAllocatedStorage(v int64) *DBInstance {
	s.MaxAllocatedStorage = &v
	return s
}

// SetMonitoringInterval sets the MonitoringInterval field's value.
func (s *DBInstance) SetMonitoringInterval(v int64) *DBInstance {
	s.MonitoringInterval = &v
	return s
}

// SetMonitoringRoleArn sets the MonitoringRoleArn field's value.
func (s *DBInstance) SetMonitoringRoleArn(v string) *DBInstance {
	s.MonitoringRoleArn = &v
	return s
}

// SetMultiAZ sets the MultiAZ field's value.
func (s *DBInstance) SetMultiAZ(v bool) *DBInstance {
	s.MultiAZ = &v
	return s
}

// SetMultiTenant sets the MultiTenant field's value.
func (s *DBInstance) SetMultiTenant(v bool) *DBInstance {
	s.MultiTenant = &v
	return s
}

// SetNcharCharacterSetName sets the NcharCharacterSetName field's value.
func (s *DBInstance) SetNcharCharacterSetName(v string) *DBInstance {
	s.NcharCharacterSetName = &v
	return s
}

// SetNetworkType sets the NetworkType field's value.
func (s *DBInstance) SetNetworkType(v string) *DBInstance {
	s.NetworkType = &v
	return s
}

// SetOptionGroupMemberships sets the OptionGroupMemberships field's value.
func (s *DBInstance) SetOptionGroupMemberships(v []*OptionGroupMembership) *DBInstance {
	s.OptionGroupMemberships = v
	return s
}

// SetPendingModifiedValues sets the PendingModifiedValues field's value.
func (s *DBInstance) SetPendingModifiedValues(v *PendingModifiedValues) *DBInstance {
	s.PendingModifiedValues = v
	return s
}

// SetPercentProgress sets the PercentProgress field's value.
func (s *DBInstance) SetPercentProgress(v string) *DBInstance {
	s.PercentProgress = &v
	return s
}

// SetPerformanceInsightsEnabled sets the PerformanceInsightsEnabled field's value.
func (s *DBInstance) SetPerformanceInsightsEnabled(v bool) *DBInstance {
	s.PerformanceInsightsEnabled = &v
	return s
}

// SetPerformanceInsightsKMSKeyId sets the PerformanceInsightsKMSKeyId field's value.
func (s *DBInstance) SetPerformanceInsightsKMSKeyId(v string) *DBInstance {
	s.PerformanceInsightsKMSKeyId = &v
	return s
}

// SetPerformanceInsightsRetentionPeriod sets the PerformanceInsightsRetentionPeriod field's value.
func (s *DBInstance) SetPerformanceInsightsRetentionPeriod(v int64) *DBInstance {
	s.PerformanceInsightsRetentionPeriod = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *DBInstance) SetPreferredBackupWindow(v string) *DBInstance {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *DBInstance) SetPreferredMaintenanceWindow(v string) *DBInstance {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetProcessorFeatures sets the ProcessorFeatures field's value.
func (s *DBInstance) SetProcessorFeatures(v []*ProcessorFeature) *DBInstance {
	s.ProcessorFeatures = v
	return s
}

// SetPromotionTier sets the PromotionTier field's value.
func (s *DBInstance) SetPromotionTier(v int64) *DBInstance {
	s.PromotionTier = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *DBInstance) SetPubliclyAccessible(v bool) *DBInstance {
	s.PubliclyAccessible = &v
	return s
}

// SetReadReplicaDBClusterIdentifiers sets the ReadReplicaDBClusterIdentifiers field's value.
func (s *DBInstance) SetReadReplicaDBClusterIdentifiers(v []*string) *DBInstance {
	s.ReadReplicaDBClusterIdentifiers = v
	return s
}

// SetReadReplicaDBInstanceIdentifiers sets the ReadReplicaDBInstanceIdentifiers field's value.
func (s *DBInstance) SetReadReplicaDBInstanceIdentifiers(v []*string) *DBInstance {
	s.ReadReplicaDBInstanceIdentifiers = v
	return s
}

// SetReadReplicaSourceDBClusterIdentifier sets the ReadReplicaSourceDBClusterIdentifier field's value.
func (s *DBInstance) SetReadReplicaSourceDBClusterIdentifier(v string) *DBInstance {
	s.ReadReplicaSourceDBClusterIdentifier = &v
	return s
}

// SetReadReplicaSourceDBInstanceIdentifier sets the ReadReplicaSourceDBInstanceIdentifier field's value.
func (s *DBInstance) SetReadReplicaSourceDBInstanceIdentifier(v string) *DBInstance {
	s.ReadReplicaSourceDBInstanceIdentifier = &v
	return s
}

// SetReplicaMode sets the ReplicaMode field's value.
func (s *DBInstance) SetReplicaMode(v string) *DBInstance {
	s.ReplicaMode = &v
	return s
}

// SetResumeFullAutomationModeTime sets the ResumeFullAutomationModeTime field's value.
func (s *DBInstance) SetResumeFullAutomationModeTime(v time.Time) *DBInstance {
	s.ResumeFullAutomationModeTime = &v
	return s
}

// SetSecondaryAvailabilityZone sets the SecondaryAvailabilityZone field's value.
func (s *DBInstance) SetSecondaryAvailabilityZone(v string) *DBInstance {
	s.SecondaryAvailabilityZone = &v
	return s
}

// SetStatusInfos sets the StatusInfos field's value.
func (s *DBInstance) SetStatusInfos(v []*DBInstanceStatusInfo) *DBInstance {
	s.StatusInfos = v
	return s
}

// SetStorageEncrypted sets the StorageEncrypted field's value.
func (s *DBInstance) SetStorageEncrypted(v bool) *DBInstance {
	s.StorageEncrypted = &v
	return s
}

// SetStorageThroughput sets the StorageThroughput field's value.
func (s *DBInstance) SetStorageThroughput(v int64) *DBInstance {
	s.StorageThroughput = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *DBInstance) SetStorageType(v string) *DBInstance {
	s.StorageType = &v
	return s
}

// SetTagList sets the TagList field's value.
func (s *DBInstance) SetTagList(v []*Tag) *DBInstance {
	s.TagList = v
	return s
}

// SetTdeCredentialArn sets the TdeCredentialArn field's value.
func (s *DBInstance) SetTdeCredentialArn(v string) *DBInstance {
	s.TdeCredentialArn = &v
	return s
}

// SetTimezone sets the Timezone field's value.
func (s *DBInstance) SetTimezone(v string) *DBInstance {
	s.Timezone = &v
	return s
}

// SetVpcSecurityGroups sets the VpcSecurityGroups field's value.
func (s *DBInstance) SetVpcSecurityGroups(v []*VpcSecurityGroupMembership) *DBInstance {
	s.VpcSecurityGroups = v
	return s
}

// An automated backup of a DB instance. It consists of system backups, transaction
// logs, and the database instance properties that existed at the time you deleted
// the source instance.
type DBInstanceAutomatedBackup struct {
	_ struct{} `type:"structure"`

	// The allocated storage size for the the automated backup in gibibytes (GiB).
	AllocatedStorage *int64 `type:"integer"`

	// The Availability Zone that the automated backup was created in. For information
	// on Amazon Web Services Regions and Availability Zones, see Regions and Availability
	// Zones (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html).
	AvailabilityZone *string `type:"string"`

	// The Amazon Resource Name (ARN) of the recovery point in Amazon Web Services
	// Backup.
	AwsBackupRecoveryPointArn *string `type:"string"`

	// The retention period for the automated backups.
	BackupRetentionPeriod *int64 `type:"integer"`

	// The location where automated backups are stored: Amazon Web Services Outposts
	// or the Amazon Web Services Region.
	BackupTarget *string `type:"string"`

	// The Amazon Resource Name (ARN) for the automated backups.
	DBInstanceArn *string `type:"string"`

	// The Amazon Resource Name (ARN) for the replicated automated backups.
	DBInstanceAutomatedBackupsArn *string `type:"string"`

	// The list of replications to different Amazon Web Services Regions associated
	// with the automated backup.
	DBInstanceAutomatedBackupsReplications []*DBInstanceAutomatedBackupsReplication `locationNameList:"DBInstanceAutomatedBackupsReplication" type:"list"`

	// The identifier for the source DB instance, which can't be changed and which
	// is unique to an Amazon Web Services Region.
	DBInstanceIdentifier *string `type:"string"`

	// The resource ID for the source DB instance, which can't be changed and which
	// is unique to an Amazon Web Services Region.
	DbiResourceId *string `type:"string"`

	// Indicates whether the DB instance has a dedicated log volume (DLV) enabled.
	DedicatedLogVolume *bool `type:"boolean"`

	// Indicates whether the automated backup is encrypted.
	Encrypted *bool `type:"boolean"`

	// The name of the database engine for this automated backup.
	Engine *string `type:"string"`

	// The version of the database engine for the automated backup.
	EngineVersion *string `type:"string"`

	// True if mapping of Amazon Web Services Identity and Access Management (IAM)
	// accounts to database accounts is enabled, and otherwise false.
	IAMDatabaseAuthenticationEnabled *bool `type:"boolean"`

	// The date and time when the DB instance was created.
	InstanceCreateTime *time.Time `type:"timestamp"`

	// The IOPS (I/O operations per second) value for the automated backup.
	Iops *int64 `type:"integer"`

	// The Amazon Web Services KMS key ID for an automated backup.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	KmsKeyId *string `type:"string"`

	// The license model information for the automated backup.
	LicenseModel *string `type:"string"`

	// The master user name of an automated backup.
	MasterUsername *string `type:"string"`

	// Specifies whether the automatic backup is for a DB instance in the multi-tenant
	// configuration (TRUE) or the single-tenant configuration (FALSE).
	MultiTenant *bool `type:"boolean"`

	// The option group the automated backup is associated with. If omitted, the
	// default option group for the engine specified is used.
	OptionGroupName *string `type:"string"`

	// The port number that the automated backup used for connections.
	//
	// Default: Inherits from the source DB instance
	//
	// Valid Values: 1150-65535
	Port *int64 `type:"integer"`

	// The Amazon Web Services Region associated with the automated backup.
	Region *string `type:"string"`

	// The earliest and latest time a DB instance can be restored to.
	RestoreWindow *RestoreWindow `type:"structure"`

	// A list of status information for an automated backup:
	//
	//    * active - Automated backups for current instances.
	//
	//    * retained - Automated backups for deleted instances.
	//
	//    * creating - Automated backups that are waiting for the first automated
	//    snapshot to be available.
	Status *string `type:"string"`

	// The storage throughput for the automated backup.
	StorageThroughput *int64 `type:"integer"`

	// The storage type associated with the automated backup.
	StorageType *string `type:"string"`

	// The ARN from the key store with which the automated backup is associated
	// for TDE encryption.
	TdeCredentialArn *string `type:"string"`

	// The time zone of the automated backup. In most cases, the Timezone element
	// is empty. Timezone content appears only for Microsoft SQL Server DB instances
	// that were created with a time zone specified.
	Timezone *string `type:"string"`

	// The VPC ID associated with the DB instance.
	VpcId *string `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 DBInstanceAutomatedBackup) 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 DBInstanceAutomatedBackup) GoString() string {
	return s.String()
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *DBInstanceAutomatedBackup) SetAllocatedStorage(v int64) *DBInstanceAutomatedBackup {
	s.AllocatedStorage = &v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *DBInstanceAutomatedBackup) SetAvailabilityZone(v string) *DBInstanceAutomatedBackup {
	s.AvailabilityZone = &v
	return s
}

// SetAwsBackupRecoveryPointArn sets the AwsBackupRecoveryPointArn field's value.
func (s *DBInstanceAutomatedBackup) SetAwsBackupRecoveryPointArn(v string) *DBInstanceAutomatedBackup {
	s.AwsBackupRecoveryPointArn = &v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *DBInstanceAutomatedBackup) SetBackupRetentionPeriod(v int64) *DBInstanceAutomatedBackup {
	s.BackupRetentionPeriod = &v
	return s
}

// SetBackupTarget sets the BackupTarget field's value.
func (s *DBInstanceAutomatedBackup) SetBackupTarget(v string) *DBInstanceAutomatedBackup {
	s.BackupTarget = &v
	return s
}

// SetDBInstanceArn sets the DBInstanceArn field's value.
func (s *DBInstanceAutomatedBackup) SetDBInstanceArn(v string) *DBInstanceAutomatedBackup {
	s.DBInstanceArn = &v
	return s
}

// SetDBInstanceAutomatedBackupsArn sets the DBInstanceAutomatedBackupsArn field's value.
func (s *DBInstanceAutomatedBackup) SetDBInstanceAutomatedBackupsArn(v string) *DBInstanceAutomatedBackup {
	s.DBInstanceAutomatedBackupsArn = &v
	return s
}

// SetDBInstanceAutomatedBackupsReplications sets the DBInstanceAutomatedBackupsReplications field's value.
func (s *DBInstanceAutomatedBackup) SetDBInstanceAutomatedBackupsReplications(v []*DBInstanceAutomatedBackupsReplication) *DBInstanceAutomatedBackup {
	s.DBInstanceAutomatedBackupsReplications = v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DBInstanceAutomatedBackup) SetDBInstanceIdentifier(v string) *DBInstanceAutomatedBackup {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDbiResourceId sets the DbiResourceId field's value.
func (s *DBInstanceAutomatedBackup) SetDbiResourceId(v string) *DBInstanceAutomatedBackup {
	s.DbiResourceId = &v
	return s
}

// SetDedicatedLogVolume sets the DedicatedLogVolume field's value.
func (s *DBInstanceAutomatedBackup) SetDedicatedLogVolume(v bool) *DBInstanceAutomatedBackup {
	s.DedicatedLogVolume = &v
	return s
}

// SetEncrypted sets the Encrypted field's value.
func (s *DBInstanceAutomatedBackup) SetEncrypted(v bool) *DBInstanceAutomatedBackup {
	s.Encrypted = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *DBInstanceAutomatedBackup) SetEngine(v string) *DBInstanceAutomatedBackup {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *DBInstanceAutomatedBackup) SetEngineVersion(v string) *DBInstanceAutomatedBackup {
	s.EngineVersion = &v
	return s
}

// SetIAMDatabaseAuthenticationEnabled sets the IAMDatabaseAuthenticationEnabled field's value.
func (s *DBInstanceAutomatedBackup) SetIAMDatabaseAuthenticationEnabled(v bool) *DBInstanceAutomatedBackup {
	s.IAMDatabaseAuthenticationEnabled = &v
	return s
}

// SetInstanceCreateTime sets the InstanceCreateTime field's value.
func (s *DBInstanceAutomatedBackup) SetInstanceCreateTime(v time.Time) *DBInstanceAutomatedBackup {
	s.InstanceCreateTime = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *DBInstanceAutomatedBackup) SetIops(v int64) *DBInstanceAutomatedBackup {
	s.Iops = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *DBInstanceAutomatedBackup) SetKmsKeyId(v string) *DBInstanceAutomatedBackup {
	s.KmsKeyId = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *DBInstanceAutomatedBackup) SetLicenseModel(v string) *DBInstanceAutomatedBackup {
	s.LicenseModel = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *DBInstanceAutomatedBackup) SetMasterUsername(v string) *DBInstanceAutomatedBackup {
	s.MasterUsername = &v
	return s
}

// SetMultiTenant sets the MultiTenant field's value.
func (s *DBInstanceAutomatedBackup) SetMultiTenant(v bool) *DBInstanceAutomatedBackup {
	s.MultiTenant = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *DBInstanceAutomatedBackup) SetOptionGroupName(v string) *DBInstanceAutomatedBackup {
	s.OptionGroupName = &v
	return s
}

// SetPort sets the Port field's value.
func (s *DBInstanceAutomatedBackup) SetPort(v int64) *DBInstanceAutomatedBackup {
	s.Port = &v
	return s
}

// SetRegion sets the Region field's value.
func (s *DBInstanceAutomatedBackup) SetRegion(v string) *DBInstanceAutomatedBackup {
	s.Region = &v
	return s
}

// SetRestoreWindow sets the RestoreWindow field's value.
func (s *DBInstanceAutomatedBackup) SetRestoreWindow(v *RestoreWindow) *DBInstanceAutomatedBackup {
	s.RestoreWindow = v
	return s
}

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

// SetStorageThroughput sets the StorageThroughput field's value.
func (s *DBInstanceAutomatedBackup) SetStorageThroughput(v int64) *DBInstanceAutomatedBackup {
	s.StorageThroughput = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *DBInstanceAutomatedBackup) SetStorageType(v string) *DBInstanceAutomatedBackup {
	s.StorageType = &v
	return s
}

// SetTdeCredentialArn sets the TdeCredentialArn field's value.
func (s *DBInstanceAutomatedBackup) SetTdeCredentialArn(v string) *DBInstanceAutomatedBackup {
	s.TdeCredentialArn = &v
	return s
}

// SetTimezone sets the Timezone field's value.
func (s *DBInstanceAutomatedBackup) SetTimezone(v string) *DBInstanceAutomatedBackup {
	s.Timezone = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *DBInstanceAutomatedBackup) SetVpcId(v string) *DBInstanceAutomatedBackup {
	s.VpcId = &v
	return s
}

// Automated backups of a DB instance replicated to another Amazon Web Services
// Region. They consist of system backups, transaction logs, and database instance
// properties.
type DBInstanceAutomatedBackupsReplication struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the replicated automated backups.
	DBInstanceAutomatedBackupsArn *string `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 DBInstanceAutomatedBackupsReplication) 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 DBInstanceAutomatedBackupsReplication) GoString() string {
	return s.String()
}

// SetDBInstanceAutomatedBackupsArn sets the DBInstanceAutomatedBackupsArn field's value.
func (s *DBInstanceAutomatedBackupsReplication) SetDBInstanceAutomatedBackupsArn(v string) *DBInstanceAutomatedBackupsReplication {
	s.DBInstanceAutomatedBackupsArn = &v
	return s
}

// Information about an Amazon Web Services Identity and Access Management (IAM)
// role that is associated with a DB instance.
type DBInstanceRole struct {
	_ struct{} `type:"structure"`

	// The name of the feature associated with the Amazon Web Services Identity
	// and Access Management (IAM) role. For information about supported feature
	// names, see DBEngineVersion.
	FeatureName *string `type:"string"`

	// The Amazon Resource Name (ARN) of the IAM role that is associated with the
	// DB instance.
	RoleArn *string `type:"string"`

	// Information about the state of association between the IAM role and the DB
	// instance. The Status property returns one of the following values:
	//
	//    * ACTIVE - the IAM role ARN is associated with the DB instance and can
	//    be used to access other Amazon Web Services services on your behalf.
	//
	//    * PENDING - the IAM role ARN is being associated with the DB instance.
	//
	//    * INVALID - the IAM role ARN is associated with the DB instance, but the
	//    DB instance is unable to assume the IAM role in order to access other
	//    Amazon Web Services services on your behalf.
	Status *string `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 DBInstanceRole) 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 DBInstanceRole) GoString() string {
	return s.String()
}

// SetFeatureName sets the FeatureName field's value.
func (s *DBInstanceRole) SetFeatureName(v string) *DBInstanceRole {
	s.FeatureName = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *DBInstanceRole) SetRoleArn(v string) *DBInstanceRole {
	s.RoleArn = &v
	return s
}

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

// Provides a list of status information for a DB instance.
type DBInstanceStatusInfo struct {
	_ struct{} `type:"structure"`

	// Details of the error if there is an error for the instance. If the instance
	// isn't in an error state, this value is blank.
	Message *string `type:"string"`

	// Indicates whether the instance is operating normally (TRUE) or is in an error
	// state (FALSE).
	Normal *bool `type:"boolean"`

	// The status of the DB instance. For a StatusType of read replica, the values
	// can be replicating, replication stop point set, replication stop point reached,
	// error, stopped, or terminated.
	Status *string `type:"string"`

	// This value is currently "read replication."
	StatusType *string `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 DBInstanceStatusInfo) 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 DBInstanceStatusInfo) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *DBInstanceStatusInfo) SetMessage(v string) *DBInstanceStatusInfo {
	s.Message = &v
	return s
}

// SetNormal sets the Normal field's value.
func (s *DBInstanceStatusInfo) SetNormal(v bool) *DBInstanceStatusInfo {
	s.Normal = &v
	return s
}

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

// SetStatusType sets the StatusType field's value.
func (s *DBInstanceStatusInfo) SetStatusType(v string) *DBInstanceStatusInfo {
	s.StatusType = &v
	return s
}

// Contains the details of an Amazon RDS DB parameter group.
//
// This data type is used as a response element in the DescribeDBParameterGroups
// action.
type DBParameterGroup struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the DB parameter group.
	DBParameterGroupArn *string `type:"string"`

	// The name of the DB parameter group family that this DB parameter group is
	// compatible with.
	DBParameterGroupFamily *string `type:"string"`

	// The name of the DB parameter group.
	DBParameterGroupName *string `type:"string"`

	// Provides the customer-specified description for this DB parameter group.
	Description *string `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 DBParameterGroup) 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 DBParameterGroup) GoString() string {
	return s.String()
}

// SetDBParameterGroupArn sets the DBParameterGroupArn field's value.
func (s *DBParameterGroup) SetDBParameterGroupArn(v string) *DBParameterGroup {
	s.DBParameterGroupArn = &v
	return s
}

// SetDBParameterGroupFamily sets the DBParameterGroupFamily field's value.
func (s *DBParameterGroup) SetDBParameterGroupFamily(v string) *DBParameterGroup {
	s.DBParameterGroupFamily = &v
	return s
}

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *DBParameterGroup) SetDBParameterGroupName(v string) *DBParameterGroup {
	s.DBParameterGroupName = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *DBParameterGroup) SetDescription(v string) *DBParameterGroup {
	s.Description = &v
	return s
}

// Contains the result of a successful invocation of the ModifyDBParameterGroup
// or ResetDBParameterGroup operation.
type DBParameterGroupNameMessage struct {
	_ struct{} `type:"structure"`

	// The name of the DB parameter group.
	DBParameterGroupName *string `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 DBParameterGroupNameMessage) 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 DBParameterGroupNameMessage) GoString() string {
	return s.String()
}

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *DBParameterGroupNameMessage) SetDBParameterGroupName(v string) *DBParameterGroupNameMessage {
	s.DBParameterGroupName = &v
	return s
}

// The status of the DB parameter group.
//
// This data type is used as a response element in the following actions:
//
//   - CreateDBInstance
//
//   - CreateDBInstanceReadReplica
//
//   - DeleteDBInstance
//
//   - ModifyDBInstance
//
//   - RebootDBInstance
//
//   - RestoreDBInstanceFromDBSnapshot
type DBParameterGroupStatus struct {
	_ struct{} `type:"structure"`

	// The name of the DB parameter group.
	DBParameterGroupName *string `type:"string"`

	// The status of parameter updates.
	ParameterApplyStatus *string `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 DBParameterGroupStatus) 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 DBParameterGroupStatus) GoString() string {
	return s.String()
}

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *DBParameterGroupStatus) SetDBParameterGroupName(v string) *DBParameterGroupStatus {
	s.DBParameterGroupName = &v
	return s
}

// SetParameterApplyStatus sets the ParameterApplyStatus field's value.
func (s *DBParameterGroupStatus) SetParameterApplyStatus(v string) *DBParameterGroupStatus {
	s.ParameterApplyStatus = &v
	return s
}

// The data structure representing a proxy managed by the RDS Proxy.
//
// This data type is used as a response element in the DescribeDBProxies action.
type DBProxy struct {
	_ struct{} `type:"structure"`

	// One or more data structures specifying the authorization mechanism to connect
	// to the associated RDS DB instance or Aurora DB cluster.
	Auth []*UserAuthConfigInfo `type:"list"`

	// The date and time when the proxy was first created.
	CreatedDate *time.Time `type:"timestamp"`

	// The Amazon Resource Name (ARN) for the proxy.
	DBProxyArn *string `type:"string"`

	// The identifier for the proxy. This name must be unique for all proxies owned
	// by your Amazon Web Services account in the specified Amazon Web Services
	// Region.
	DBProxyName *string `type:"string"`

	// Indicates whether the proxy includes detailed information about SQL statements
	// in its logs. This information helps you to debug issues involving SQL behavior
	// or the performance and scalability of the proxy connections. The debug information
	// includes the text of SQL statements that you submit through the proxy. Thus,
	// only enable this setting when needed for debugging, and only when you have
	// security measures in place to safeguard any sensitive information that appears
	// in the logs.
	DebugLogging *bool `type:"boolean"`

	// The endpoint that you can use to connect to the DB proxy. You include the
	// endpoint value in the connection string for a database client application.
	Endpoint *string `type:"string"`

	// The kinds of databases that the proxy can connect to. This value determines
	// which database network protocol the proxy recognizes when it interprets network
	// traffic to and from the database. MYSQL supports Aurora MySQL, RDS for MariaDB,
	// and RDS for MySQL databases. POSTGRESQL supports Aurora PostgreSQL and RDS
	// for PostgreSQL databases. SQLSERVER supports RDS for Microsoft SQL Server
	// databases.
	EngineFamily *string `type:"string"`

	// The number of seconds a connection to the proxy can have no activity before
	// the proxy drops the client connection. The proxy keeps the underlying database
	// connection open and puts it back into the connection pool for reuse by later
	// connection requests.
	//
	// Default: 1800 (30 minutes)
	//
	// Constraints: 1 to 28,800
	IdleClientTimeout *int64 `type:"integer"`

	// Indicates whether Transport Layer Security (TLS) encryption is required for
	// connections to the proxy.
	RequireTLS *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) for the IAM role that the proxy uses to access
	// Amazon Secrets Manager.
	RoleArn *string `type:"string"`

	// The current status of this proxy. A status of available means the proxy is
	// ready to handle requests. Other values indicate that you must wait for the
	// proxy to be ready, or take some action to resolve an issue.
	Status *string `type:"string" enum:"DBProxyStatus"`

	// The date and time when the proxy was last updated.
	UpdatedDate *time.Time `type:"timestamp"`

	// Provides the VPC ID of the DB proxy.
	VpcId *string `type:"string"`

	// Provides a list of VPC security groups that the proxy belongs to.
	VpcSecurityGroupIds []*string `type:"list"`

	// The EC2 subnet IDs for the proxy.
	VpcSubnetIds []*string `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 DBProxy) 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 DBProxy) GoString() string {
	return s.String()
}

// SetAuth sets the Auth field's value.
func (s *DBProxy) SetAuth(v []*UserAuthConfigInfo) *DBProxy {
	s.Auth = v
	return s
}

// SetCreatedDate sets the CreatedDate field's value.
func (s *DBProxy) SetCreatedDate(v time.Time) *DBProxy {
	s.CreatedDate = &v
	return s
}

// SetDBProxyArn sets the DBProxyArn field's value.
func (s *DBProxy) SetDBProxyArn(v string) *DBProxy {
	s.DBProxyArn = &v
	return s
}

// SetDBProxyName sets the DBProxyName field's value.
func (s *DBProxy) SetDBProxyName(v string) *DBProxy {
	s.DBProxyName = &v
	return s
}

// SetDebugLogging sets the DebugLogging field's value.
func (s *DBProxy) SetDebugLogging(v bool) *DBProxy {
	s.DebugLogging = &v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *DBProxy) SetEndpoint(v string) *DBProxy {
	s.Endpoint = &v
	return s
}

// SetEngineFamily sets the EngineFamily field's value.
func (s *DBProxy) SetEngineFamily(v string) *DBProxy {
	s.EngineFamily = &v
	return s
}

// SetIdleClientTimeout sets the IdleClientTimeout field's value.
func (s *DBProxy) SetIdleClientTimeout(v int64) *DBProxy {
	s.IdleClientTimeout = &v
	return s
}

// SetRequireTLS sets the RequireTLS field's value.
func (s *DBProxy) SetRequireTLS(v bool) *DBProxy {
	s.RequireTLS = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *DBProxy) SetRoleArn(v string) *DBProxy {
	s.RoleArn = &v
	return s
}

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

// SetUpdatedDate sets the UpdatedDate field's value.
func (s *DBProxy) SetUpdatedDate(v time.Time) *DBProxy {
	s.UpdatedDate = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *DBProxy) SetVpcId(v string) *DBProxy {
	s.VpcId = &v
	return s
}

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *DBProxy) SetVpcSecurityGroupIds(v []*string) *DBProxy {
	s.VpcSecurityGroupIds = v
	return s
}

// SetVpcSubnetIds sets the VpcSubnetIds field's value.
func (s *DBProxy) SetVpcSubnetIds(v []*string) *DBProxy {
	s.VpcSubnetIds = v
	return s
}

// The data structure representing an endpoint associated with a DB proxy. RDS
// automatically creates one endpoint for each DB proxy. For Aurora DB clusters,
// you can associate additional endpoints with the same DB proxy. These endpoints
// can be read/write or read-only. They can also reside in different VPCs than
// the associated DB proxy.
//
// This data type is used as a response element in the DescribeDBProxyEndpoints
// operation.
type DBProxyEndpoint struct {
	_ struct{} `type:"structure"`

	// The date and time when the DB proxy endpoint was first created.
	CreatedDate *time.Time `type:"timestamp"`

	// The Amazon Resource Name (ARN) for the DB proxy endpoint.
	DBProxyEndpointArn *string `type:"string"`

	// The name for the DB proxy endpoint. An identifier must begin with a letter
	// and must contain only ASCII letters, digits, and hyphens; it can't end with
	// a hyphen or contain two consecutive hyphens.
	DBProxyEndpointName *string `type:"string"`

	// The identifier for the DB proxy that is associated with this DB proxy endpoint.
	DBProxyName *string `type:"string"`

	// The endpoint that you can use to connect to the DB proxy. You include the
	// endpoint value in the connection string for a database client application.
	Endpoint *string `type:"string"`

	// Indicates whether this endpoint is the default endpoint for the associated
	// DB proxy. Default DB proxy endpoints always have read/write capability. Other
	// endpoints that you associate with the DB proxy can be either read/write or
	// read-only.
	IsDefault *bool `type:"boolean"`

	// The current status of this DB proxy endpoint. A status of available means
	// the endpoint is ready to handle requests. Other values indicate that you
	// must wait for the endpoint to be ready, or take some action to resolve an
	// issue.
	Status *string `type:"string" enum:"DBProxyEndpointStatus"`

	// A value that indicates whether the DB proxy endpoint can be used for read/write
	// or read-only operations.
	TargetRole *string `type:"string" enum:"DBProxyEndpointTargetRole"`

	// Provides the VPC ID of the DB proxy endpoint.
	VpcId *string `type:"string"`

	// Provides a list of VPC security groups that the DB proxy endpoint belongs
	// to.
	VpcSecurityGroupIds []*string `type:"list"`

	// The EC2 subnet IDs for the DB proxy endpoint.
	VpcSubnetIds []*string `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 DBProxyEndpoint) 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 DBProxyEndpoint) GoString() string {
	return s.String()
}

// SetCreatedDate sets the CreatedDate field's value.
func (s *DBProxyEndpoint) SetCreatedDate(v time.Time) *DBProxyEndpoint {
	s.CreatedDate = &v
	return s
}

// SetDBProxyEndpointArn sets the DBProxyEndpointArn field's value.
func (s *DBProxyEndpoint) SetDBProxyEndpointArn(v string) *DBProxyEndpoint {
	s.DBProxyEndpointArn = &v
	return s
}

// SetDBProxyEndpointName sets the DBProxyEndpointName field's value.
func (s *DBProxyEndpoint) SetDBProxyEndpointName(v string) *DBProxyEndpoint {
	s.DBProxyEndpointName = &v
	return s
}

// SetDBProxyName sets the DBProxyName field's value.
func (s *DBProxyEndpoint) SetDBProxyName(v string) *DBProxyEndpoint {
	s.DBProxyName = &v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *DBProxyEndpoint) SetEndpoint(v string) *DBProxyEndpoint {
	s.Endpoint = &v
	return s
}

// SetIsDefault sets the IsDefault field's value.
func (s *DBProxyEndpoint) SetIsDefault(v bool) *DBProxyEndpoint {
	s.IsDefault = &v
	return s
}

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

// SetTargetRole sets the TargetRole field's value.
func (s *DBProxyEndpoint) SetTargetRole(v string) *DBProxyEndpoint {
	s.TargetRole = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *DBProxyEndpoint) SetVpcId(v string) *DBProxyEndpoint {
	s.VpcId = &v
	return s
}

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *DBProxyEndpoint) SetVpcSecurityGroupIds(v []*string) *DBProxyEndpoint {
	s.VpcSecurityGroupIds = v
	return s
}

// SetVpcSubnetIds sets the VpcSubnetIds field's value.
func (s *DBProxyEndpoint) SetVpcSubnetIds(v []*string) *DBProxyEndpoint {
	s.VpcSubnetIds = v
	return s
}

// Contains the details for an RDS Proxy target. It represents an RDS DB instance
// or Aurora DB cluster that the proxy can connect to. One or more targets are
// associated with an RDS Proxy target group.
//
// This data type is used as a response element in the DescribeDBProxyTargets
// action.
type DBProxyTarget struct {
	_ struct{} `type:"structure"`

	// The writer endpoint for the RDS DB instance or Aurora DB cluster.
	Endpoint *string `type:"string"`

	// The port that the RDS Proxy uses to connect to the target RDS DB instance
	// or Aurora DB cluster.
	Port *int64 `type:"integer"`

	// The identifier representing the target. It can be the instance identifier
	// for an RDS DB instance, or the cluster identifier for an Aurora DB cluster.
	RdsResourceId *string `type:"string"`

	// A value that indicates whether the target of the proxy can be used for read/write
	// or read-only operations.
	Role *string `type:"string" enum:"TargetRole"`

	// The Amazon Resource Name (ARN) for the RDS DB instance or Aurora DB cluster.
	TargetArn *string `type:"string"`

	// Information about the connection health of the RDS Proxy target.
	TargetHealth *TargetHealth `type:"structure"`

	// The DB cluster identifier when the target represents an Aurora DB cluster.
	// This field is blank when the target represents an RDS DB instance.
	TrackedClusterId *string `type:"string"`

	// Specifies the kind of database, such as an RDS DB instance or an Aurora DB
	// cluster, that the target represents.
	Type *string `type:"string" enum:"TargetType"`
}

// 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 DBProxyTarget) 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 DBProxyTarget) GoString() string {
	return s.String()
}

// SetEndpoint sets the Endpoint field's value.
func (s *DBProxyTarget) SetEndpoint(v string) *DBProxyTarget {
	s.Endpoint = &v
	return s
}

// SetPort sets the Port field's value.
func (s *DBProxyTarget) SetPort(v int64) *DBProxyTarget {
	s.Port = &v
	return s
}

// SetRdsResourceId sets the RdsResourceId field's value.
func (s *DBProxyTarget) SetRdsResourceId(v string) *DBProxyTarget {
	s.RdsResourceId = &v
	return s
}

// SetRole sets the Role field's value.
func (s *DBProxyTarget) SetRole(v string) *DBProxyTarget {
	s.Role = &v
	return s
}

// SetTargetArn sets the TargetArn field's value.
func (s *DBProxyTarget) SetTargetArn(v string) *DBProxyTarget {
	s.TargetArn = &v
	return s
}

// SetTargetHealth sets the TargetHealth field's value.
func (s *DBProxyTarget) SetTargetHealth(v *TargetHealth) *DBProxyTarget {
	s.TargetHealth = v
	return s
}

// SetTrackedClusterId sets the TrackedClusterId field's value.
func (s *DBProxyTarget) SetTrackedClusterId(v string) *DBProxyTarget {
	s.TrackedClusterId = &v
	return s
}

// SetType sets the Type field's value.
func (s *DBProxyTarget) SetType(v string) *DBProxyTarget {
	s.Type = &v
	return s
}

// Represents a set of RDS DB instances, Aurora DB clusters, or both that a
// proxy can connect to. Currently, each target group is associated with exactly
// one RDS DB instance or Aurora DB cluster.
//
// This data type is used as a response element in the DescribeDBProxyTargetGroups
// action.
type DBProxyTargetGroup struct {
	_ struct{} `type:"structure"`

	// The settings that determine the size and behavior of the connection pool
	// for the target group.
	ConnectionPoolConfig *ConnectionPoolConfigurationInfo `type:"structure"`

	// The date and time when the target group was first created.
	CreatedDate *time.Time `type:"timestamp"`

	// The identifier for the RDS proxy associated with this target group.
	DBProxyName *string `type:"string"`

	// Indicates whether this target group is the first one used for connection
	// requests by the associated proxy. Because each proxy is currently associated
	// with a single target group, currently this setting is always true.
	IsDefault *bool `type:"boolean"`

	// The current status of this target group. A status of available means the
	// target group is correctly associated with a database. Other values indicate
	// that you must wait for the target group to be ready, or take some action
	// to resolve an issue.
	Status *string `type:"string"`

	// The Amazon Resource Name (ARN) representing the target group.
	TargetGroupArn *string `type:"string"`

	// The identifier for the target group. This name must be unique for all target
	// groups owned by your Amazon Web Services account in the specified Amazon
	// Web Services Region.
	TargetGroupName *string `type:"string"`

	// The date and time when the target group was last updated.
	UpdatedDate *time.Time `type:"timestamp"`
}

// 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 DBProxyTargetGroup) 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 DBProxyTargetGroup) GoString() string {
	return s.String()
}

// SetConnectionPoolConfig sets the ConnectionPoolConfig field's value.
func (s *DBProxyTargetGroup) SetConnectionPoolConfig(v *ConnectionPoolConfigurationInfo) *DBProxyTargetGroup {
	s.ConnectionPoolConfig = v
	return s
}

// SetCreatedDate sets the CreatedDate field's value.
func (s *DBProxyTargetGroup) SetCreatedDate(v time.Time) *DBProxyTargetGroup {
	s.CreatedDate = &v
	return s
}

// SetDBProxyName sets the DBProxyName field's value.
func (s *DBProxyTargetGroup) SetDBProxyName(v string) *DBProxyTargetGroup {
	s.DBProxyName = &v
	return s
}

// SetIsDefault sets the IsDefault field's value.
func (s *DBProxyTargetGroup) SetIsDefault(v bool) *DBProxyTargetGroup {
	s.IsDefault = &v
	return s
}

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

// SetTargetGroupArn sets the TargetGroupArn field's value.
func (s *DBProxyTargetGroup) SetTargetGroupArn(v string) *DBProxyTargetGroup {
	s.TargetGroupArn = &v
	return s
}

// SetTargetGroupName sets the TargetGroupName field's value.
func (s *DBProxyTargetGroup) SetTargetGroupName(v string) *DBProxyTargetGroup {
	s.TargetGroupName = &v
	return s
}

// SetUpdatedDate sets the UpdatedDate field's value.
func (s *DBProxyTargetGroup) SetUpdatedDate(v time.Time) *DBProxyTargetGroup {
	s.UpdatedDate = &v
	return s
}

// The recommendation for your DB instances, DB clusters, and DB parameter groups.
type DBRecommendation struct {
	_ struct{} `type:"structure"`

	// Additional information about the recommendation. The information might contain
	// markdown.
	AdditionalInfo *string `type:"string"`

	// The category of the recommendation.
	//
	// Valid values:
	//
	//    * performance efficiency
	//
	//    * security
	//
	//    * reliability
	//
	//    * cost optimization
	//
	//    * operational excellence
	//
	//    * sustainability
	Category *string `type:"string"`

	// The time when the recommendation was created. For example, 2023-09-28T01:13:53.931000+00:00.
	CreatedTime *time.Time `type:"timestamp"`

	// A detailed description of the recommendation. The description might contain
	// markdown.
	Description *string `type:"string"`

	// A short description of the issue identified for this recommendation. The
	// description might contain markdown.
	Detection *string `type:"string"`

	// A short description that explains the possible impact of an issue.
	Impact *string `type:"string"`

	// Details of the issue that caused the recommendation.
	IssueDetails *IssueDetails `type:"structure"`

	// A link to documentation that provides additional information about the recommendation.
	Links []*DocLink `type:"list"`

	// The reason why this recommendation was created. The information might contain
	// markdown.
	Reason *string `type:"string"`

	// A short description of the recommendation to resolve an issue. The description
	// might contain markdown.
	Recommendation *string `type:"string"`

	// The unique identifier of the recommendation.
	RecommendationId *string `type:"string"`

	// A list of recommended actions.
	RecommendedActions []*RecommendedAction `type:"list"`

	// The Amazon Resource Name (ARN) of the RDS resource associated with the recommendation.
	ResourceArn *string `type:"string"`

	// The severity level of the recommendation. The severity level can help you
	// decide the urgency with which to address the recommendation.
	//
	// Valid values:
	//
	//    * high
	//
	//    * medium
	//
	//    * low
	//
	//    * informational
	Severity *string `type:"string"`

	// The Amazon Web Services service that generated the recommendations.
	Source *string `type:"string"`

	// The current status of the recommendation.
	//
	// Valid values:
	//
	//    * active - The recommendations which are ready for you to apply.
	//
	//    * pending - The applied or scheduled recommendations which are in progress.
	//
	//    * resolved - The recommendations which are completed.
	//
	//    * dismissed - The recommendations that you dismissed.
	Status *string `type:"string"`

	// A short description of the recommendation type. The description might contain
	// markdown.
	TypeDetection *string `type:"string"`

	// A value that indicates the type of recommendation. This value determines
	// how the description is rendered.
	TypeId *string `type:"string"`

	// A short description that summarizes the recommendation to fix all the issues
	// of the recommendation type. The description might contain markdown.
	TypeRecommendation *string `type:"string"`

	// The time when the recommendation was last updated.
	UpdatedTime *time.Time `type:"timestamp"`
}

// 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 DBRecommendation) 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 DBRecommendation) GoString() string {
	return s.String()
}

// SetAdditionalInfo sets the AdditionalInfo field's value.
func (s *DBRecommendation) SetAdditionalInfo(v string) *DBRecommendation {
	s.AdditionalInfo = &v
	return s
}

// SetCategory sets the Category field's value.
func (s *DBRecommendation) SetCategory(v string) *DBRecommendation {
	s.Category = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *DBRecommendation) SetCreatedTime(v time.Time) *DBRecommendation {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *DBRecommendation) SetDescription(v string) *DBRecommendation {
	s.Description = &v
	return s
}

// SetDetection sets the Detection field's value.
func (s *DBRecommendation) SetDetection(v string) *DBRecommendation {
	s.Detection = &v
	return s
}

// SetImpact sets the Impact field's value.
func (s *DBRecommendation) SetImpact(v string) *DBRecommendation {
	s.Impact = &v
	return s
}

// SetIssueDetails sets the IssueDetails field's value.
func (s *DBRecommendation) SetIssueDetails(v *IssueDetails) *DBRecommendation {
	s.IssueDetails = v
	return s
}

// SetLinks sets the Links field's value.
func (s *DBRecommendation) SetLinks(v []*DocLink) *DBRecommendation {
	s.Links = v
	return s
}

// SetReason sets the Reason field's value.
func (s *DBRecommendation) SetReason(v string) *DBRecommendation {
	s.Reason = &v
	return s
}

// SetRecommendation sets the Recommendation field's value.
func (s *DBRecommendation) SetRecommendation(v string) *DBRecommendation {
	s.Recommendation = &v
	return s
}

// SetRecommendationId sets the RecommendationId field's value.
func (s *DBRecommendation) SetRecommendationId(v string) *DBRecommendation {
	s.RecommendationId = &v
	return s
}

// SetRecommendedActions sets the RecommendedActions field's value.
func (s *DBRecommendation) SetRecommendedActions(v []*RecommendedAction) *DBRecommendation {
	s.RecommendedActions = v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *DBRecommendation) SetResourceArn(v string) *DBRecommendation {
	s.ResourceArn = &v
	return s
}

// SetSeverity sets the Severity field's value.
func (s *DBRecommendation) SetSeverity(v string) *DBRecommendation {
	s.Severity = &v
	return s
}

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

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

// SetTypeDetection sets the TypeDetection field's value.
func (s *DBRecommendation) SetTypeDetection(v string) *DBRecommendation {
	s.TypeDetection = &v
	return s
}

// SetTypeId sets the TypeId field's value.
func (s *DBRecommendation) SetTypeId(v string) *DBRecommendation {
	s.TypeId = &v
	return s
}

// SetTypeRecommendation sets the TypeRecommendation field's value.
func (s *DBRecommendation) SetTypeRecommendation(v string) *DBRecommendation {
	s.TypeRecommendation = &v
	return s
}

// SetUpdatedTime sets the UpdatedTime field's value.
func (s *DBRecommendation) SetUpdatedTime(v time.Time) *DBRecommendation {
	s.UpdatedTime = &v
	return s
}

// Contains the details for an Amazon RDS DB security group.
//
// This data type is used as a response element in the DescribeDBSecurityGroups
// action.
type DBSecurityGroup struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the DB security group.
	DBSecurityGroupArn *string `type:"string"`

	// Provides the description of the DB security group.
	DBSecurityGroupDescription *string `type:"string"`

	// Specifies the name of the DB security group.
	DBSecurityGroupName *string `type:"string"`

	// Contains a list of EC2SecurityGroup elements.
	EC2SecurityGroups []*EC2SecurityGroup `locationNameList:"EC2SecurityGroup" type:"list"`

	// Contains a list of IPRange elements.
	IPRanges []*IPRange `locationNameList:"IPRange" type:"list"`

	// Provides the Amazon Web Services ID of the owner of a specific DB security
	// group.
	OwnerId *string `type:"string"`

	// Provides the VpcId of the DB security group.
	VpcId *string `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 DBSecurityGroup) 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 DBSecurityGroup) GoString() string {
	return s.String()
}

// SetDBSecurityGroupArn sets the DBSecurityGroupArn field's value.
func (s *DBSecurityGroup) SetDBSecurityGroupArn(v string) *DBSecurityGroup {
	s.DBSecurityGroupArn = &v
	return s
}

// SetDBSecurityGroupDescription sets the DBSecurityGroupDescription field's value.
func (s *DBSecurityGroup) SetDBSecurityGroupDescription(v string) *DBSecurityGroup {
	s.DBSecurityGroupDescription = &v
	return s
}

// SetDBSecurityGroupName sets the DBSecurityGroupName field's value.
func (s *DBSecurityGroup) SetDBSecurityGroupName(v string) *DBSecurityGroup {
	s.DBSecurityGroupName = &v
	return s
}

// SetEC2SecurityGroups sets the EC2SecurityGroups field's value.
func (s *DBSecurityGroup) SetEC2SecurityGroups(v []*EC2SecurityGroup) *DBSecurityGroup {
	s.EC2SecurityGroups = v
	return s
}

// SetIPRanges sets the IPRanges field's value.
func (s *DBSecurityGroup) SetIPRanges(v []*IPRange) *DBSecurityGroup {
	s.IPRanges = v
	return s
}

// SetOwnerId sets the OwnerId field's value.
func (s *DBSecurityGroup) SetOwnerId(v string) *DBSecurityGroup {
	s.OwnerId = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *DBSecurityGroup) SetVpcId(v string) *DBSecurityGroup {
	s.VpcId = &v
	return s
}

// This data type is used as a response element in the following actions:
//
//   - ModifyDBInstance
//
//   - RebootDBInstance
//
//   - RestoreDBInstanceFromDBSnapshot
//
//   - RestoreDBInstanceToPointInTime
type DBSecurityGroupMembership struct {
	_ struct{} `type:"structure"`

	// The name of the DB security group.
	DBSecurityGroupName *string `type:"string"`

	// The status of the DB security group.
	Status *string `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 DBSecurityGroupMembership) 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 DBSecurityGroupMembership) GoString() string {
	return s.String()
}

// SetDBSecurityGroupName sets the DBSecurityGroupName field's value.
func (s *DBSecurityGroupMembership) SetDBSecurityGroupName(v string) *DBSecurityGroupMembership {
	s.DBSecurityGroupName = &v
	return s
}

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

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

	// Specifies whether to create standby instances for the DB shard group. Valid
	// values are the following:
	//
	//    * 0 - Creates a single, primary DB instance for each physical shard. This
	//    is the default value, and the only one supported for the preview.
	//
	//    * 1 - Creates a primary DB instance and a standby instance in a different
	//    Availability Zone (AZ) for each physical shard.
	//
	//    * 2 - Creates a primary DB instance and two standby instances in different
	//    AZs for each physical shard.
	ComputeRedundancy *int64 `type:"integer"`

	// The name of the primary DB cluster for the DB shard group.
	DBClusterIdentifier *string `type:"string"`

	// The name of the DB shard group.
	DBShardGroupIdentifier *string `min:"1" type:"string"`

	// The Amazon Web Services Region-unique, immutable identifier for the DB shard
	// group.
	DBShardGroupResourceId *string `type:"string"`

	// The connection endpoint for the DB shard group.
	Endpoint *string `type:"string"`

	// The maximum capacity of the DB shard group in Aurora capacity units (ACUs).
	MaxACU *float64 `type:"double"`

	// Indicates whether the DB shard group is publicly accessible.
	//
	// When the DB shard group is publicly accessible, its Domain Name System (DNS)
	// endpoint resolves to the private IP address from within the DB shard group's
	// virtual private cloud (VPC). It resolves to the public IP address from outside
	// of the DB shard group's VPC. Access to the DB shard group is ultimately controlled
	// by the security group it uses. That public access isn't permitted if the
	// security group assigned to the DB shard group doesn't permit it.
	//
	// When the DB shard group isn't publicly accessible, it is an internal DB shard
	// group with a DNS name that resolves to a private IP address.
	//
	// For more information, see CreateDBShardGroup.
	//
	// This setting is only for Aurora Limitless Database.
	PubliclyAccessible *bool `type:"boolean"`

	// The status of the DB shard group.
	Status *string `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 DBShardGroup) 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 DBShardGroup) GoString() string {
	return s.String()
}

// SetComputeRedundancy sets the ComputeRedundancy field's value.
func (s *DBShardGroup) SetComputeRedundancy(v int64) *DBShardGroup {
	s.ComputeRedundancy = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *DBShardGroup) SetDBClusterIdentifier(v string) *DBShardGroup {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBShardGroupIdentifier sets the DBShardGroupIdentifier field's value.
func (s *DBShardGroup) SetDBShardGroupIdentifier(v string) *DBShardGroup {
	s.DBShardGroupIdentifier = &v
	return s
}

// SetDBShardGroupResourceId sets the DBShardGroupResourceId field's value.
func (s *DBShardGroup) SetDBShardGroupResourceId(v string) *DBShardGroup {
	s.DBShardGroupResourceId = &v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *DBShardGroup) SetEndpoint(v string) *DBShardGroup {
	s.Endpoint = &v
	return s
}

// SetMaxACU sets the MaxACU field's value.
func (s *DBShardGroup) SetMaxACU(v float64) *DBShardGroup {
	s.MaxACU = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *DBShardGroup) SetPubliclyAccessible(v bool) *DBShardGroup {
	s.PubliclyAccessible = &v
	return s
}

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

// Contains the details of an Amazon RDS DB snapshot.
//
// This data type is used as a response element in the DescribeDBSnapshots action.
type DBSnapshot struct {
	_ struct{} `type:"structure"`

	// Specifies the allocated storage size in gibibytes (GiB).
	AllocatedStorage *int64 `type:"integer"`

	// Specifies the name of the Availability Zone the DB instance was located in
	// at the time of the DB snapshot.
	AvailabilityZone *string `type:"string"`

	// Specifies the DB instance identifier of the DB instance this DB snapshot
	// was created from.
	DBInstanceIdentifier *string `type:"string"`

	// The Amazon Resource Name (ARN) for the DB snapshot.
	DBSnapshotArn *string `type:"string"`

	// Specifies the identifier for the DB snapshot.
	DBSnapshotIdentifier *string `type:"string"`

	// The Oracle system identifier (SID), which is the name of the Oracle database
	// instance that manages your database files. The Oracle SID is also the name
	// of your CDB.
	DBSystemId *string `type:"string"`

	// The identifier for the source DB instance, which can't be changed and which
	// is unique to an Amazon Web Services Region.
	DbiResourceId *string `type:"string"`

	// Indicates whether the DB instance has a dedicated log volume (DLV) enabled.
	DedicatedLogVolume *bool `type:"boolean"`

	// Indicates whether the DB snapshot is encrypted.
	Encrypted *bool `type:"boolean"`

	// Specifies the name of the database engine.
	Engine *string `type:"string"`

	// Specifies the version of the database engine.
	EngineVersion *string `type:"string"`

	// Indicates whether mapping of Amazon Web Services Identity and Access Management
	// (IAM) accounts to database accounts is enabled.
	IAMDatabaseAuthenticationEnabled *bool `type:"boolean"`

	// Specifies the time in Coordinated Universal Time (UTC) when the DB instance,
	// from which the snapshot was taken, was created.
	InstanceCreateTime *time.Time `type:"timestamp"`

	// Specifies the Provisioned IOPS (I/O operations per second) value of the DB
	// instance at the time of the snapshot.
	Iops *int64 `type:"integer"`

	// If Encrypted is true, the Amazon Web Services KMS key identifier for the
	// encrypted DB snapshot.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	KmsKeyId *string `type:"string"`

	// License model information for the restored DB instance.
	LicenseModel *string `type:"string"`

	// Provides the master username for the DB snapshot.
	MasterUsername *string `type:"string"`

	// Indicates whether the snapshot is of a DB instance using the multi-tenant
	// configuration (TRUE) or the single-tenant configuration (FALSE).
	MultiTenant *bool `type:"boolean"`

	// Provides the option group name for the DB snapshot.
	OptionGroupName *string `type:"string"`

	// Specifies the time of the CreateDBSnapshot operation in Coordinated Universal
	// Time (UTC). Doesn't change when the snapshot is copied.
	OriginalSnapshotCreateTime *time.Time `type:"timestamp"`

	// The percentage of the estimated data that has been transferred.
	PercentProgress *int64 `type:"integer"`

	// Specifies the port that the database engine was listening on at the time
	// of the snapshot.
	Port *int64 `type:"integer"`

	// The number of CPU cores and the number of threads per core for the DB instance
	// class of the DB instance when the DB snapshot was created.
	ProcessorFeatures []*ProcessorFeature `locationNameList:"ProcessorFeature" type:"list"`

	// Specifies when the snapshot was taken in Coordinated Universal Time (UTC).
	// Changes for the copy when the snapshot is copied.
	SnapshotCreateTime *time.Time `type:"timestamp"`

	// The timestamp of the most recent transaction applied to the database that
	// you're backing up. Thus, if you restore a snapshot, SnapshotDatabaseTime
	// is the most recent transaction in the restored DB instance. In contrast,
	// originalSnapshotCreateTime specifies the system time that the snapshot completed.
	//
	// If you back up a read replica, you can determine the replica lag by comparing
	// SnapshotDatabaseTime with originalSnapshotCreateTime. For example, if originalSnapshotCreateTime
	// is two hours later than SnapshotDatabaseTime, then the replica lag is two
	// hours.
	SnapshotDatabaseTime *time.Time `type:"timestamp"`

	// Specifies where manual snapshots are stored: Amazon Web Services Outposts
	// or the Amazon Web Services Region.
	SnapshotTarget *string `type:"string"`

	// Provides the type of the DB snapshot.
	SnapshotType *string `type:"string"`

	// The DB snapshot Amazon Resource Name (ARN) that the DB snapshot was copied
	// from. It only has a value in the case of a cross-account or cross-Region
	// copy.
	SourceDBSnapshotIdentifier *string `type:"string"`

	// The Amazon Web Services Region that the DB snapshot was created in or copied
	// from.
	SourceRegion *string `type:"string"`

	// Specifies the status of this DB snapshot.
	Status *string `type:"string"`

	// Specifies the storage throughput for the DB snapshot.
	StorageThroughput *int64 `type:"integer"`

	// Specifies the storage type associated with DB snapshot.
	StorageType *string `type:"string"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	TagList []*Tag `locationNameList:"Tag" type:"list"`

	// The ARN from the key store with which to associate the instance for TDE encryption.
	TdeCredentialArn *string `type:"string"`

	// The time zone of the DB snapshot. In most cases, the Timezone element is
	// empty. Timezone content appears only for snapshots taken from Microsoft SQL
	// Server DB instances that were created with a time zone specified.
	Timezone *string `type:"string"`

	// Provides the VPC ID associated with the DB snapshot.
	VpcId *string `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 DBSnapshot) 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 DBSnapshot) GoString() string {
	return s.String()
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *DBSnapshot) SetAllocatedStorage(v int64) *DBSnapshot {
	s.AllocatedStorage = &v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *DBSnapshot) SetAvailabilityZone(v string) *DBSnapshot {
	s.AvailabilityZone = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DBSnapshot) SetDBInstanceIdentifier(v string) *DBSnapshot {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDBSnapshotArn sets the DBSnapshotArn field's value.
func (s *DBSnapshot) SetDBSnapshotArn(v string) *DBSnapshot {
	s.DBSnapshotArn = &v
	return s
}

// SetDBSnapshotIdentifier sets the DBSnapshotIdentifier field's value.
func (s *DBSnapshot) SetDBSnapshotIdentifier(v string) *DBSnapshot {
	s.DBSnapshotIdentifier = &v
	return s
}

// SetDBSystemId sets the DBSystemId field's value.
func (s *DBSnapshot) SetDBSystemId(v string) *DBSnapshot {
	s.DBSystemId = &v
	return s
}

// SetDbiResourceId sets the DbiResourceId field's value.
func (s *DBSnapshot) SetDbiResourceId(v string) *DBSnapshot {
	s.DbiResourceId = &v
	return s
}

// SetDedicatedLogVolume sets the DedicatedLogVolume field's value.
func (s *DBSnapshot) SetDedicatedLogVolume(v bool) *DBSnapshot {
	s.DedicatedLogVolume = &v
	return s
}

// SetEncrypted sets the Encrypted field's value.
func (s *DBSnapshot) SetEncrypted(v bool) *DBSnapshot {
	s.Encrypted = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *DBSnapshot) SetEngine(v string) *DBSnapshot {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *DBSnapshot) SetEngineVersion(v string) *DBSnapshot {
	s.EngineVersion = &v
	return s
}

// SetIAMDatabaseAuthenticationEnabled sets the IAMDatabaseAuthenticationEnabled field's value.
func (s *DBSnapshot) SetIAMDatabaseAuthenticationEnabled(v bool) *DBSnapshot {
	s.IAMDatabaseAuthenticationEnabled = &v
	return s
}

// SetInstanceCreateTime sets the InstanceCreateTime field's value.
func (s *DBSnapshot) SetInstanceCreateTime(v time.Time) *DBSnapshot {
	s.InstanceCreateTime = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *DBSnapshot) SetIops(v int64) *DBSnapshot {
	s.Iops = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *DBSnapshot) SetKmsKeyId(v string) *DBSnapshot {
	s.KmsKeyId = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *DBSnapshot) SetLicenseModel(v string) *DBSnapshot {
	s.LicenseModel = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *DBSnapshot) SetMasterUsername(v string) *DBSnapshot {
	s.MasterUsername = &v
	return s
}

// SetMultiTenant sets the MultiTenant field's value.
func (s *DBSnapshot) SetMultiTenant(v bool) *DBSnapshot {
	s.MultiTenant = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *DBSnapshot) SetOptionGroupName(v string) *DBSnapshot {
	s.OptionGroupName = &v
	return s
}

// SetOriginalSnapshotCreateTime sets the OriginalSnapshotCreateTime field's value.
func (s *DBSnapshot) SetOriginalSnapshotCreateTime(v time.Time) *DBSnapshot {
	s.OriginalSnapshotCreateTime = &v
	return s
}

// SetPercentProgress sets the PercentProgress field's value.
func (s *DBSnapshot) SetPercentProgress(v int64) *DBSnapshot {
	s.PercentProgress = &v
	return s
}

// SetPort sets the Port field's value.
func (s *DBSnapshot) SetPort(v int64) *DBSnapshot {
	s.Port = &v
	return s
}

// SetProcessorFeatures sets the ProcessorFeatures field's value.
func (s *DBSnapshot) SetProcessorFeatures(v []*ProcessorFeature) *DBSnapshot {
	s.ProcessorFeatures = v
	return s
}

// SetSnapshotCreateTime sets the SnapshotCreateTime field's value.
func (s *DBSnapshot) SetSnapshotCreateTime(v time.Time) *DBSnapshot {
	s.SnapshotCreateTime = &v
	return s
}

// SetSnapshotDatabaseTime sets the SnapshotDatabaseTime field's value.
func (s *DBSnapshot) SetSnapshotDatabaseTime(v time.Time) *DBSnapshot {
	s.SnapshotDatabaseTime = &v
	return s
}

// SetSnapshotTarget sets the SnapshotTarget field's value.
func (s *DBSnapshot) SetSnapshotTarget(v string) *DBSnapshot {
	s.SnapshotTarget = &v
	return s
}

// SetSnapshotType sets the SnapshotType field's value.
func (s *DBSnapshot) SetSnapshotType(v string) *DBSnapshot {
	s.SnapshotType = &v
	return s
}

// SetSourceDBSnapshotIdentifier sets the SourceDBSnapshotIdentifier field's value.
func (s *DBSnapshot) SetSourceDBSnapshotIdentifier(v string) *DBSnapshot {
	s.SourceDBSnapshotIdentifier = &v
	return s
}

// SetSourceRegion sets the SourceRegion field's value.
func (s *DBSnapshot) SetSourceRegion(v string) *DBSnapshot {
	s.SourceRegion = &v
	return s
}

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

// SetStorageThroughput sets the StorageThroughput field's value.
func (s *DBSnapshot) SetStorageThroughput(v int64) *DBSnapshot {
	s.StorageThroughput = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *DBSnapshot) SetStorageType(v string) *DBSnapshot {
	s.StorageType = &v
	return s
}

// SetTagList sets the TagList field's value.
func (s *DBSnapshot) SetTagList(v []*Tag) *DBSnapshot {
	s.TagList = v
	return s
}

// SetTdeCredentialArn sets the TdeCredentialArn field's value.
func (s *DBSnapshot) SetTdeCredentialArn(v string) *DBSnapshot {
	s.TdeCredentialArn = &v
	return s
}

// SetTimezone sets the Timezone field's value.
func (s *DBSnapshot) SetTimezone(v string) *DBSnapshot {
	s.Timezone = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *DBSnapshot) SetVpcId(v string) *DBSnapshot {
	s.VpcId = &v
	return s
}

// Contains the name and values of a manual DB snapshot attribute
//
// Manual DB snapshot attributes are used to authorize other Amazon Web Services
// accounts to restore a manual DB snapshot. For more information, see the ModifyDBSnapshotAttribute
// API.
type DBSnapshotAttribute struct {
	_ struct{} `type:"structure"`

	// The name of the manual DB snapshot attribute.
	//
	// The attribute named restore refers to the list of Amazon Web Services accounts
	// that have permission to copy or restore the manual DB cluster snapshot. For
	// more information, see the ModifyDBSnapshotAttribute API action.
	AttributeName *string `type:"string"`

	// The value or values for the manual DB snapshot attribute.
	//
	// If the AttributeName field is set to restore, then this element returns a
	// list of IDs of the Amazon Web Services accounts that are authorized to copy
	// or restore the manual DB snapshot. If a value of all is in the list, then
	// the manual DB snapshot is public and available for any Amazon Web Services
	// account to copy or restore.
	AttributeValues []*string `locationNameList:"AttributeValue" 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 DBSnapshotAttribute) 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 DBSnapshotAttribute) GoString() string {
	return s.String()
}

// SetAttributeName sets the AttributeName field's value.
func (s *DBSnapshotAttribute) SetAttributeName(v string) *DBSnapshotAttribute {
	s.AttributeName = &v
	return s
}

// SetAttributeValues sets the AttributeValues field's value.
func (s *DBSnapshotAttribute) SetAttributeValues(v []*string) *DBSnapshotAttribute {
	s.AttributeValues = v
	return s
}

// Contains the results of a successful call to the DescribeDBSnapshotAttributes
// API action.
//
// Manual DB snapshot attributes are used to authorize other Amazon Web Services
// accounts to copy or restore a manual DB snapshot. For more information, see
// the ModifyDBSnapshotAttribute API action.
type DBSnapshotAttributesResult struct {
	_ struct{} `type:"structure"`

	// The list of attributes and values for the manual DB snapshot.
	DBSnapshotAttributes []*DBSnapshotAttribute `locationNameList:"DBSnapshotAttribute" type:"list"`

	// The identifier of the manual DB snapshot that the attributes apply to.
	DBSnapshotIdentifier *string `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 DBSnapshotAttributesResult) 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 DBSnapshotAttributesResult) GoString() string {
	return s.String()
}

// SetDBSnapshotAttributes sets the DBSnapshotAttributes field's value.
func (s *DBSnapshotAttributesResult) SetDBSnapshotAttributes(v []*DBSnapshotAttribute) *DBSnapshotAttributesResult {
	s.DBSnapshotAttributes = v
	return s
}

// SetDBSnapshotIdentifier sets the DBSnapshotIdentifier field's value.
func (s *DBSnapshotAttributesResult) SetDBSnapshotIdentifier(v string) *DBSnapshotAttributesResult {
	s.DBSnapshotIdentifier = &v
	return s
}

// Contains the details of a tenant database in a snapshot of a DB instance.
type DBSnapshotTenantDatabase struct {
	_ struct{} `type:"structure"`

	// The name of the character set of a tenant database.
	CharacterSetName *string `type:"string"`

	// The ID for the DB instance that contains the tenant databases.
	DBInstanceIdentifier *string `type:"string"`

	// The identifier for the snapshot of the DB instance.
	DBSnapshotIdentifier *string `type:"string"`

	// The Amazon Resource Name (ARN) for the snapshot tenant database.
	DBSnapshotTenantDatabaseARN *string `type:"string"`

	// The resource identifier of the source CDB instance. This identifier can't
	// be changed and is unique to an Amazon Web Services Region.
	DbiResourceId *string `type:"string"`

	// The name of the database engine.
	EngineName *string `type:"string"`

	// The master username of the tenant database.
	MasterUsername *string `type:"string"`

	// The NCHAR character set name of the tenant database.
	NcharCharacterSetName *string `type:"string"`

	// The type of DB snapshot.
	SnapshotType *string `type:"string"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	TagList []*Tag `locationNameList:"Tag" type:"list"`

	// The name of the tenant database.
	TenantDBName *string `type:"string"`

	// The time the DB snapshot was taken, specified in Coordinated Universal Time
	// (UTC). If you copy the snapshot, the creation time changes.
	TenantDatabaseCreateTime *time.Time `type:"timestamp"`

	// The resource ID of the tenant database.
	TenantDatabaseResourceId *string `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 DBSnapshotTenantDatabase) 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 DBSnapshotTenantDatabase) GoString() string {
	return s.String()
}

// SetCharacterSetName sets the CharacterSetName field's value.
func (s *DBSnapshotTenantDatabase) SetCharacterSetName(v string) *DBSnapshotTenantDatabase {
	s.CharacterSetName = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DBSnapshotTenantDatabase) SetDBInstanceIdentifier(v string) *DBSnapshotTenantDatabase {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDBSnapshotIdentifier sets the DBSnapshotIdentifier field's value.
func (s *DBSnapshotTenantDatabase) SetDBSnapshotIdentifier(v string) *DBSnapshotTenantDatabase {
	s.DBSnapshotIdentifier = &v
	return s
}

// SetDBSnapshotTenantDatabaseARN sets the DBSnapshotTenantDatabaseARN field's value.
func (s *DBSnapshotTenantDatabase) SetDBSnapshotTenantDatabaseARN(v string) *DBSnapshotTenantDatabase {
	s.DBSnapshotTenantDatabaseARN = &v
	return s
}

// SetDbiResourceId sets the DbiResourceId field's value.
func (s *DBSnapshotTenantDatabase) SetDbiResourceId(v string) *DBSnapshotTenantDatabase {
	s.DbiResourceId = &v
	return s
}

// SetEngineName sets the EngineName field's value.
func (s *DBSnapshotTenantDatabase) SetEngineName(v string) *DBSnapshotTenantDatabase {
	s.EngineName = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *DBSnapshotTenantDatabase) SetMasterUsername(v string) *DBSnapshotTenantDatabase {
	s.MasterUsername = &v
	return s
}

// SetNcharCharacterSetName sets the NcharCharacterSetName field's value.
func (s *DBSnapshotTenantDatabase) SetNcharCharacterSetName(v string) *DBSnapshotTenantDatabase {
	s.NcharCharacterSetName = &v
	return s
}

// SetSnapshotType sets the SnapshotType field's value.
func (s *DBSnapshotTenantDatabase) SetSnapshotType(v string) *DBSnapshotTenantDatabase {
	s.SnapshotType = &v
	return s
}

// SetTagList sets the TagList field's value.
func (s *DBSnapshotTenantDatabase) SetTagList(v []*Tag) *DBSnapshotTenantDatabase {
	s.TagList = v
	return s
}

// SetTenantDBName sets the TenantDBName field's value.
func (s *DBSnapshotTenantDatabase) SetTenantDBName(v string) *DBSnapshotTenantDatabase {
	s.TenantDBName = &v
	return s
}

// SetTenantDatabaseCreateTime sets the TenantDatabaseCreateTime field's value.
func (s *DBSnapshotTenantDatabase) SetTenantDatabaseCreateTime(v time.Time) *DBSnapshotTenantDatabase {
	s.TenantDatabaseCreateTime = &v
	return s
}

// SetTenantDatabaseResourceId sets the TenantDatabaseResourceId field's value.
func (s *DBSnapshotTenantDatabase) SetTenantDatabaseResourceId(v string) *DBSnapshotTenantDatabase {
	s.TenantDatabaseResourceId = &v
	return s
}

// Contains the details of an Amazon RDS DB subnet group.
//
// This data type is used as a response element in the DescribeDBSubnetGroups
// action.
type DBSubnetGroup struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the DB subnet group.
	DBSubnetGroupArn *string `type:"string"`

	// Provides the description of the DB subnet group.
	DBSubnetGroupDescription *string `type:"string"`

	// The name of the DB subnet group.
	DBSubnetGroupName *string `type:"string"`

	// Provides the status of the DB subnet group.
	SubnetGroupStatus *string `type:"string"`

	// Contains a list of Subnet elements.
	Subnets []*Subnet `locationNameList:"Subnet" type:"list"`

	// The network type of the DB subnet group.
	//
	// Valid values:
	//
	//    * IPV4
	//
	//    * DUAL
	//
	// A DBSubnetGroup can support only the IPv4 protocol or the IPv4 and the IPv6
	// protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon RDS User Guide.
	SupportedNetworkTypes []*string `type:"list"`

	// Provides the VpcId of the DB subnet group.
	VpcId *string `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 DBSubnetGroup) 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 DBSubnetGroup) GoString() string {
	return s.String()
}

// SetDBSubnetGroupArn sets the DBSubnetGroupArn field's value.
func (s *DBSubnetGroup) SetDBSubnetGroupArn(v string) *DBSubnetGroup {
	s.DBSubnetGroupArn = &v
	return s
}

// SetDBSubnetGroupDescription sets the DBSubnetGroupDescription field's value.
func (s *DBSubnetGroup) SetDBSubnetGroupDescription(v string) *DBSubnetGroup {
	s.DBSubnetGroupDescription = &v
	return s
}

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *DBSubnetGroup) SetDBSubnetGroupName(v string) *DBSubnetGroup {
	s.DBSubnetGroupName = &v
	return s
}

// SetSubnetGroupStatus sets the SubnetGroupStatus field's value.
func (s *DBSubnetGroup) SetSubnetGroupStatus(v string) *DBSubnetGroup {
	s.SubnetGroupStatus = &v
	return s
}

// SetSubnets sets the Subnets field's value.
func (s *DBSubnetGroup) SetSubnets(v []*Subnet) *DBSubnetGroup {
	s.Subnets = v
	return s
}

// SetSupportedNetworkTypes sets the SupportedNetworkTypes field's value.
func (s *DBSubnetGroup) SetSupportedNetworkTypes(v []*string) *DBSubnetGroup {
	s.SupportedNetworkTypes = v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *DBSubnetGroup) SetVpcId(v string) *DBSubnetGroup {
	s.VpcId = &v
	return s
}

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

	// The unique identifier of the blue/green deployment to delete. This parameter
	// isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must match an existing blue/green deployment identifier.
	//
	// BlueGreenDeploymentIdentifier is a required field
	BlueGreenDeploymentIdentifier *string `min:"1" type:"string" required:"true"`

	// Specifies whether to delete the resources in the green environment. You can't
	// specify this option if the blue/green deployment status (https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_BlueGreenDeployment.html)
	// is SWITCHOVER_COMPLETED.
	DeleteTarget *bool `type:"boolean"`
}

// 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 DeleteBlueGreenDeploymentInput) 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 DeleteBlueGreenDeploymentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteBlueGreenDeploymentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteBlueGreenDeploymentInput"}
	if s.BlueGreenDeploymentIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("BlueGreenDeploymentIdentifier"))
	}
	if s.BlueGreenDeploymentIdentifier != nil && len(*s.BlueGreenDeploymentIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BlueGreenDeploymentIdentifier", 1))
	}

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

// SetBlueGreenDeploymentIdentifier sets the BlueGreenDeploymentIdentifier field's value.
func (s *DeleteBlueGreenDeploymentInput) SetBlueGreenDeploymentIdentifier(v string) *DeleteBlueGreenDeploymentInput {
	s.BlueGreenDeploymentIdentifier = &v
	return s
}

// SetDeleteTarget sets the DeleteTarget field's value.
func (s *DeleteBlueGreenDeploymentInput) SetDeleteTarget(v bool) *DeleteBlueGreenDeploymentInput {
	s.DeleteTarget = &v
	return s
}

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

	// Details about a blue/green deployment.
	//
	// For more information, see Using Amazon RDS Blue/Green Deployments for database
	// updates (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments.html)
	// in the Amazon RDS User Guide and Using Amazon RDS Blue/Green Deployments
	// for database updates (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html)
	// in the Amazon Aurora User Guide.
	BlueGreenDeployment *BlueGreenDeployment `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 DeleteBlueGreenDeploymentOutput) 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 DeleteBlueGreenDeploymentOutput) GoString() string {
	return s.String()
}

// SetBlueGreenDeployment sets the BlueGreenDeployment field's value.
func (s *DeleteBlueGreenDeploymentOutput) SetBlueGreenDeployment(v *BlueGreenDeployment) *DeleteBlueGreenDeploymentOutput {
	s.BlueGreenDeployment = v
	return s
}

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

	// The database engine. RDS Custom for Oracle supports the following values:
	//
	//    * custom-oracle-ee
	//
	//    * custom-oracle-ee-cdb
	//
	//    * custom-oracle-se2
	//
	//    * custom-oracle-se2-cdb
	//
	// Engine is a required field
	Engine *string `min:"1" type:"string" required:"true"`

	// The custom engine version (CEV) for your DB instance. This option is required
	// for RDS Custom, but optional for Amazon RDS. The combination of Engine and
	// EngineVersion is unique per customer per Amazon Web Services Region.
	//
	// EngineVersion is a required field
	EngineVersion *string `min:"1" 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 DeleteCustomDBEngineVersionInput) 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 DeleteCustomDBEngineVersionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteCustomDBEngineVersionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteCustomDBEngineVersionInput"}
	if s.Engine == nil {
		invalidParams.Add(request.NewErrParamRequired("Engine"))
	}
	if s.Engine != nil && len(*s.Engine) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Engine", 1))
	}
	if s.EngineVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("EngineVersion"))
	}
	if s.EngineVersion != nil && len(*s.EngineVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EngineVersion", 1))
	}

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

// SetEngine sets the Engine field's value.
func (s *DeleteCustomDBEngineVersionInput) SetEngine(v string) *DeleteCustomDBEngineVersionInput {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *DeleteCustomDBEngineVersionInput) SetEngineVersion(v string) *DeleteCustomDBEngineVersionInput {
	s.EngineVersion = &v
	return s
}

// This data type is used as a response element in the action DescribeDBEngineVersions.
type DeleteCustomDBEngineVersionOutput struct {
	_ struct{} `type:"structure"`

	// The creation time of the DB engine version.
	CreateTime *time.Time `type:"timestamp"`

	// JSON string that lists the installation files and parameters that RDS Custom
	// uses to create a custom engine version (CEV). RDS Custom applies the patches
	// in the order in which they're listed in the manifest. You can set the Oracle
	// home, Oracle base, and UNIX/Linux user and group using the installation parameters.
	// For more information, see JSON fields in the CEV manifest (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev.preparing.html#custom-cev.preparing.manifest.fields)
	// in the Amazon RDS User Guide.
	CustomDBEngineVersionManifest *string `min:"1" type:"string"`

	// The description of the database engine.
	DBEngineDescription *string `type:"string"`

	// A value that indicates the source media provider of the AMI based on the
	// usage operation. Applicable for RDS Custom for SQL Server.
	DBEngineMediaType *string `type:"string"`

	// The ARN of the custom engine version.
	DBEngineVersionArn *string `type:"string"`

	// The description of the database engine version.
	DBEngineVersionDescription *string `type:"string"`

	// The name of the DB parameter group family for the database engine.
	DBParameterGroupFamily *string `type:"string"`

	// The name of the Amazon S3 bucket that contains your database installation
	// files.
	DatabaseInstallationFilesS3BucketName *string `type:"string"`

	// The Amazon S3 directory that contains the database installation files. If
	// not specified, then no prefix is assumed.
	DatabaseInstallationFilesS3Prefix *string `type:"string"`

	// The default character set for new instances of this engine version, if the
	// CharacterSetName parameter of the CreateDBInstance API isn't specified.
	DefaultCharacterSet *CharacterSet `type:"structure"`

	// The name of the database engine.
	Engine *string `type:"string"`

	// The version number of the database engine.
	EngineVersion *string `type:"string"`

	// The types of logs that the database engine has available for export to CloudWatch
	// Logs.
	ExportableLogTypes []*string `type:"list"`

	// The EC2 image
	Image *CustomDBEngineVersionAMI `type:"structure"`

	// The Amazon Web Services KMS key identifier for an encrypted CEV. This parameter
	// is required for RDS Custom, but optional for Amazon RDS.
	KMSKeyId *string `type:"string"`

	// The major engine version of the CEV.
	MajorEngineVersion *string `type:"string"`

	// The status of the DB engine version, either available or deprecated.
	Status *string `type:"string"`

	// A list of the supported CA certificate identifiers.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	SupportedCACertificateIdentifiers []*string `type:"list"`

	// A list of the character sets supported by this engine for the CharacterSetName
	// parameter of the CreateDBInstance operation.
	SupportedCharacterSets []*CharacterSet `locationNameList:"CharacterSet" type:"list"`

	// A list of the supported DB engine modes.
	SupportedEngineModes []*string `type:"list"`

	// A list of features supported by the DB engine.
	//
	// The supported features vary by DB engine and DB engine version.
	//
	// To determine the supported features for a specific DB engine and DB engine
	// version using the CLI, use the following command:
	//
	// aws rds describe-db-engine-versions --engine <engine_name> --engine-version
	// <engine_version>
	//
	// For example, to determine the supported features for RDS for PostgreSQL version
	// 13.3 using the CLI, use the following command:
	//
	// aws rds describe-db-engine-versions --engine postgres --engine-version 13.3
	//
	// The supported features are listed under SupportedFeatureNames in the output.
	SupportedFeatureNames []*string `type:"list"`

	// A list of the character sets supported by the Oracle DB engine for the NcharCharacterSetName
	// parameter of the CreateDBInstance operation.
	SupportedNcharCharacterSets []*CharacterSet `locationNameList:"CharacterSet" type:"list"`

	// A list of the time zones supported by this engine for the Timezone parameter
	// of the CreateDBInstance action.
	SupportedTimezones []*Timezone `locationNameList:"Timezone" type:"list"`

	// Indicates whether the engine version supports Babelfish for Aurora PostgreSQL.
	SupportsBabelfish *bool `type:"boolean"`

	// Indicates whether the engine version supports rotating the server certificate
	// without rebooting the DB instance.
	SupportsCertificateRotationWithoutRestart *bool `type:"boolean"`

	// Indicates whether you can use Aurora global databases with a specific DB
	// engine version.
	SupportsGlobalDatabases *bool `type:"boolean"`

	// Indicates whether the DB engine version supports zero-ETL integrations with
	// Amazon Redshift.
	SupportsIntegrations *bool `type:"boolean"`

	// Indicates whether the DB engine version supports Aurora Limitless Database.
	SupportsLimitlessDatabase *bool `type:"boolean"`

	// Indicates whether the DB engine version supports forwarding write operations
	// from reader DB instances to the writer DB instance in the DB cluster. By
	// default, write operations aren't allowed on reader DB instances.
	//
	// Valid for: Aurora DB clusters only
	SupportsLocalWriteForwarding *bool `type:"boolean"`

	// Indicates whether the engine version supports exporting the log types specified
	// by ExportableLogTypes to CloudWatch Logs.
	SupportsLogExportsToCloudwatchLogs *bool `type:"boolean"`

	// Indicates whether you can use Aurora parallel query with a specific DB engine
	// version.
	SupportsParallelQuery *bool `type:"boolean"`

	// Indicates whether the database engine version supports read replicas.
	SupportsReadReplica *bool `type:"boolean"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	TagList []*Tag `locationNameList:"Tag" type:"list"`

	// A list of engine versions that this database engine version can be upgraded
	// to.
	ValidUpgradeTarget []*UpgradeTarget `locationNameList:"UpgradeTarget" 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 DeleteCustomDBEngineVersionOutput) 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 DeleteCustomDBEngineVersionOutput) GoString() string {
	return s.String()
}

// SetCreateTime sets the CreateTime field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetCreateTime(v time.Time) *DeleteCustomDBEngineVersionOutput {
	s.CreateTime = &v
	return s
}

// SetCustomDBEngineVersionManifest sets the CustomDBEngineVersionManifest field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetCustomDBEngineVersionManifest(v string) *DeleteCustomDBEngineVersionOutput {
	s.CustomDBEngineVersionManifest = &v
	return s
}

// SetDBEngineDescription sets the DBEngineDescription field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetDBEngineDescription(v string) *DeleteCustomDBEngineVersionOutput {
	s.DBEngineDescription = &v
	return s
}

// SetDBEngineMediaType sets the DBEngineMediaType field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetDBEngineMediaType(v string) *DeleteCustomDBEngineVersionOutput {
	s.DBEngineMediaType = &v
	return s
}

// SetDBEngineVersionArn sets the DBEngineVersionArn field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetDBEngineVersionArn(v string) *DeleteCustomDBEngineVersionOutput {
	s.DBEngineVersionArn = &v
	return s
}

// SetDBEngineVersionDescription sets the DBEngineVersionDescription field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetDBEngineVersionDescription(v string) *DeleteCustomDBEngineVersionOutput {
	s.DBEngineVersionDescription = &v
	return s
}

// SetDBParameterGroupFamily sets the DBParameterGroupFamily field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetDBParameterGroupFamily(v string) *DeleteCustomDBEngineVersionOutput {
	s.DBParameterGroupFamily = &v
	return s
}

// SetDatabaseInstallationFilesS3BucketName sets the DatabaseInstallationFilesS3BucketName field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetDatabaseInstallationFilesS3BucketName(v string) *DeleteCustomDBEngineVersionOutput {
	s.DatabaseInstallationFilesS3BucketName = &v
	return s
}

// SetDatabaseInstallationFilesS3Prefix sets the DatabaseInstallationFilesS3Prefix field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetDatabaseInstallationFilesS3Prefix(v string) *DeleteCustomDBEngineVersionOutput {
	s.DatabaseInstallationFilesS3Prefix = &v
	return s
}

// SetDefaultCharacterSet sets the DefaultCharacterSet field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetDefaultCharacterSet(v *CharacterSet) *DeleteCustomDBEngineVersionOutput {
	s.DefaultCharacterSet = v
	return s
}

// SetEngine sets the Engine field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetEngine(v string) *DeleteCustomDBEngineVersionOutput {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetEngineVersion(v string) *DeleteCustomDBEngineVersionOutput {
	s.EngineVersion = &v
	return s
}

// SetExportableLogTypes sets the ExportableLogTypes field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetExportableLogTypes(v []*string) *DeleteCustomDBEngineVersionOutput {
	s.ExportableLogTypes = v
	return s
}

// SetImage sets the Image field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetImage(v *CustomDBEngineVersionAMI) *DeleteCustomDBEngineVersionOutput {
	s.Image = v
	return s
}

// SetKMSKeyId sets the KMSKeyId field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetKMSKeyId(v string) *DeleteCustomDBEngineVersionOutput {
	s.KMSKeyId = &v
	return s
}

// SetMajorEngineVersion sets the MajorEngineVersion field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetMajorEngineVersion(v string) *DeleteCustomDBEngineVersionOutput {
	s.MajorEngineVersion = &v
	return s
}

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

// SetSupportedCACertificateIdentifiers sets the SupportedCACertificateIdentifiers field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportedCACertificateIdentifiers(v []*string) *DeleteCustomDBEngineVersionOutput {
	s.SupportedCACertificateIdentifiers = v
	return s
}

// SetSupportedCharacterSets sets the SupportedCharacterSets field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportedCharacterSets(v []*CharacterSet) *DeleteCustomDBEngineVersionOutput {
	s.SupportedCharacterSets = v
	return s
}

// SetSupportedEngineModes sets the SupportedEngineModes field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportedEngineModes(v []*string) *DeleteCustomDBEngineVersionOutput {
	s.SupportedEngineModes = v
	return s
}

// SetSupportedFeatureNames sets the SupportedFeatureNames field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportedFeatureNames(v []*string) *DeleteCustomDBEngineVersionOutput {
	s.SupportedFeatureNames = v
	return s
}

// SetSupportedNcharCharacterSets sets the SupportedNcharCharacterSets field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportedNcharCharacterSets(v []*CharacterSet) *DeleteCustomDBEngineVersionOutput {
	s.SupportedNcharCharacterSets = v
	return s
}

// SetSupportedTimezones sets the SupportedTimezones field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportedTimezones(v []*Timezone) *DeleteCustomDBEngineVersionOutput {
	s.SupportedTimezones = v
	return s
}

// SetSupportsBabelfish sets the SupportsBabelfish field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportsBabelfish(v bool) *DeleteCustomDBEngineVersionOutput {
	s.SupportsBabelfish = &v
	return s
}

// SetSupportsCertificateRotationWithoutRestart sets the SupportsCertificateRotationWithoutRestart field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportsCertificateRotationWithoutRestart(v bool) *DeleteCustomDBEngineVersionOutput {
	s.SupportsCertificateRotationWithoutRestart = &v
	return s
}

// SetSupportsGlobalDatabases sets the SupportsGlobalDatabases field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportsGlobalDatabases(v bool) *DeleteCustomDBEngineVersionOutput {
	s.SupportsGlobalDatabases = &v
	return s
}

// SetSupportsIntegrations sets the SupportsIntegrations field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportsIntegrations(v bool) *DeleteCustomDBEngineVersionOutput {
	s.SupportsIntegrations = &v
	return s
}

// SetSupportsLimitlessDatabase sets the SupportsLimitlessDatabase field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportsLimitlessDatabase(v bool) *DeleteCustomDBEngineVersionOutput {
	s.SupportsLimitlessDatabase = &v
	return s
}

// SetSupportsLocalWriteForwarding sets the SupportsLocalWriteForwarding field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportsLocalWriteForwarding(v bool) *DeleteCustomDBEngineVersionOutput {
	s.SupportsLocalWriteForwarding = &v
	return s
}

// SetSupportsLogExportsToCloudwatchLogs sets the SupportsLogExportsToCloudwatchLogs field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportsLogExportsToCloudwatchLogs(v bool) *DeleteCustomDBEngineVersionOutput {
	s.SupportsLogExportsToCloudwatchLogs = &v
	return s
}

// SetSupportsParallelQuery sets the SupportsParallelQuery field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportsParallelQuery(v bool) *DeleteCustomDBEngineVersionOutput {
	s.SupportsParallelQuery = &v
	return s
}

// SetSupportsReadReplica sets the SupportsReadReplica field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetSupportsReadReplica(v bool) *DeleteCustomDBEngineVersionOutput {
	s.SupportsReadReplica = &v
	return s
}

// SetTagList sets the TagList field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetTagList(v []*Tag) *DeleteCustomDBEngineVersionOutput {
	s.TagList = v
	return s
}

// SetValidUpgradeTarget sets the ValidUpgradeTarget field's value.
func (s *DeleteCustomDBEngineVersionOutput) SetValidUpgradeTarget(v []*UpgradeTarget) *DeleteCustomDBEngineVersionOutput {
	s.ValidUpgradeTarget = v
	return s
}

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

	// The identifier for the source DB cluster, which can't be changed and which
	// is unique to an Amazon Web Services Region.
	//
	// DbClusterResourceId is a required field
	DbClusterResourceId *string `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 DeleteDBClusterAutomatedBackupInput) 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 DeleteDBClusterAutomatedBackupInput) GoString() string {
	return s.String()
}

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

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

// SetDbClusterResourceId sets the DbClusterResourceId field's value.
func (s *DeleteDBClusterAutomatedBackupInput) SetDbClusterResourceId(v string) *DeleteDBClusterAutomatedBackupInput {
	s.DbClusterResourceId = &v
	return s
}

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

	// An automated backup of a DB cluster. It consists of system backups, transaction
	// logs, and the database cluster properties that existed at the time you deleted
	// the source cluster.
	DBClusterAutomatedBackup *DBClusterAutomatedBackup `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 DeleteDBClusterAutomatedBackupOutput) 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 DeleteDBClusterAutomatedBackupOutput) GoString() string {
	return s.String()
}

// SetDBClusterAutomatedBackup sets the DBClusterAutomatedBackup field's value.
func (s *DeleteDBClusterAutomatedBackupOutput) SetDBClusterAutomatedBackup(v *DBClusterAutomatedBackup) *DeleteDBClusterAutomatedBackupOutput {
	s.DBClusterAutomatedBackup = v
	return s
}

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

	// The identifier associated with the custom endpoint. This parameter is stored
	// as a lowercase string.
	//
	// DBClusterEndpointIdentifier is a required field
	DBClusterEndpointIdentifier *string `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 DeleteDBClusterEndpointInput) 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 DeleteDBClusterEndpointInput) GoString() string {
	return s.String()
}

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

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

// SetDBClusterEndpointIdentifier sets the DBClusterEndpointIdentifier field's value.
func (s *DeleteDBClusterEndpointInput) SetDBClusterEndpointIdentifier(v string) *DeleteDBClusterEndpointInput {
	s.DBClusterEndpointIdentifier = &v
	return s
}

// This data type represents the information you need to connect to an Amazon
// Aurora DB cluster. This data type is used as a response element in the following
// actions:
//
//   - CreateDBClusterEndpoint
//
//   - DescribeDBClusterEndpoints
//
//   - ModifyDBClusterEndpoint
//
//   - DeleteDBClusterEndpoint
//
// For the data structure that represents Amazon RDS DB instance endpoints,
// see Endpoint.
type DeleteDBClusterEndpointOutput struct {
	_ struct{} `type:"structure"`

	// The type associated with a custom endpoint. One of: READER, WRITER, ANY.
	CustomEndpointType *string `type:"string"`

	// The Amazon Resource Name (ARN) for the endpoint.
	DBClusterEndpointArn *string `type:"string"`

	// The identifier associated with the endpoint. This parameter is stored as
	// a lowercase string.
	DBClusterEndpointIdentifier *string `type:"string"`

	// A unique system-generated identifier for an endpoint. It remains the same
	// for the whole life of the endpoint.
	DBClusterEndpointResourceIdentifier *string `type:"string"`

	// The DB cluster identifier of the DB cluster associated with the endpoint.
	// This parameter is stored as a lowercase string.
	DBClusterIdentifier *string `type:"string"`

	// The DNS address of the endpoint.
	Endpoint *string `type:"string"`

	// The type of the endpoint. One of: READER, WRITER, CUSTOM.
	EndpointType *string `type:"string"`

	// List of DB instance identifiers that aren't part of the custom endpoint group.
	// All other eligible instances are reachable through the custom endpoint. Only
	// relevant if the list of static members is empty.
	ExcludedMembers []*string `type:"list"`

	// List of DB instance identifiers that are part of the custom endpoint group.
	StaticMembers []*string `type:"list"`

	// The current status of the endpoint. One of: creating, available, deleting,
	// inactive, modifying. The inactive state applies to an endpoint that can't
	// be used for a certain kind of cluster, such as a writer endpoint for a read-only
	// secondary cluster in a global database.
	Status *string `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 DeleteDBClusterEndpointOutput) 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 DeleteDBClusterEndpointOutput) GoString() string {
	return s.String()
}

// SetCustomEndpointType sets the CustomEndpointType field's value.
func (s *DeleteDBClusterEndpointOutput) SetCustomEndpointType(v string) *DeleteDBClusterEndpointOutput {
	s.CustomEndpointType = &v
	return s
}

// SetDBClusterEndpointArn sets the DBClusterEndpointArn field's value.
func (s *DeleteDBClusterEndpointOutput) SetDBClusterEndpointArn(v string) *DeleteDBClusterEndpointOutput {
	s.DBClusterEndpointArn = &v
	return s
}

// SetDBClusterEndpointIdentifier sets the DBClusterEndpointIdentifier field's value.
func (s *DeleteDBClusterEndpointOutput) SetDBClusterEndpointIdentifier(v string) *DeleteDBClusterEndpointOutput {
	s.DBClusterEndpointIdentifier = &v
	return s
}

// SetDBClusterEndpointResourceIdentifier sets the DBClusterEndpointResourceIdentifier field's value.
func (s *DeleteDBClusterEndpointOutput) SetDBClusterEndpointResourceIdentifier(v string) *DeleteDBClusterEndpointOutput {
	s.DBClusterEndpointResourceIdentifier = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *DeleteDBClusterEndpointOutput) SetDBClusterIdentifier(v string) *DeleteDBClusterEndpointOutput {
	s.DBClusterIdentifier = &v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *DeleteDBClusterEndpointOutput) SetEndpoint(v string) *DeleteDBClusterEndpointOutput {
	s.Endpoint = &v
	return s
}

// SetEndpointType sets the EndpointType field's value.
func (s *DeleteDBClusterEndpointOutput) SetEndpointType(v string) *DeleteDBClusterEndpointOutput {
	s.EndpointType = &v
	return s
}

// SetExcludedMembers sets the ExcludedMembers field's value.
func (s *DeleteDBClusterEndpointOutput) SetExcludedMembers(v []*string) *DeleteDBClusterEndpointOutput {
	s.ExcludedMembers = v
	return s
}

// SetStaticMembers sets the StaticMembers field's value.
func (s *DeleteDBClusterEndpointOutput) SetStaticMembers(v []*string) *DeleteDBClusterEndpointOutput {
	s.StaticMembers = v
	return s
}

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

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

	// The DB cluster identifier for the DB cluster to be deleted. This parameter
	// isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must match an existing DBClusterIdentifier.
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// Specifies whether to remove automated backups immediately after the DB cluster
	// is deleted. This parameter isn't case-sensitive. The default is to remove
	// automated backups immediately after the DB cluster is deleted.
	//
	// You must delete automated backups for Amazon RDS Multi-AZ DB clusters. For
	// more information about managing automated backups for RDS Multi-AZ DB clusters,
	// see Managing automated backups (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ManagingAutomatedBackups.html).
	DeleteAutomatedBackups *bool `type:"boolean"`

	// The DB cluster snapshot identifier of the new DB cluster snapshot created
	// when SkipFinalSnapshot is disabled.
	//
	// Specifying this parameter and also skipping the creation of a final DB cluster
	// snapshot with the SkipFinalShapshot parameter results in an error.
	//
	// Constraints:
	//
	//    * Must be 1 to 255 letters, numbers, or hyphens.
	//
	//    * First character must be a letter
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens
	FinalDBSnapshotIdentifier *string `type:"string"`

	// Specifies whether to skip the creation of a final DB cluster snapshot before
	// the DB cluster is deleted. If skip is specified, no DB cluster snapshot is
	// created. If skip isn't specified, a DB cluster snapshot is created before
	// the DB cluster is deleted. By default, skip isn't specified, and the DB cluster
	// snapshot is created. By default, this parameter is disabled.
	//
	// You must specify a FinalDBSnapshotIdentifier parameter if SkipFinalSnapshot
	// is disabled.
	SkipFinalSnapshot *bool `type:"boolean"`
}

// 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 DeleteDBClusterInput) 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 DeleteDBClusterInput) GoString() string {
	return s.String()
}

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

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

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *DeleteDBClusterInput) SetDBClusterIdentifier(v string) *DeleteDBClusterInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetDeleteAutomatedBackups sets the DeleteAutomatedBackups field's value.
func (s *DeleteDBClusterInput) SetDeleteAutomatedBackups(v bool) *DeleteDBClusterInput {
	s.DeleteAutomatedBackups = &v
	return s
}

// SetFinalDBSnapshotIdentifier sets the FinalDBSnapshotIdentifier field's value.
func (s *DeleteDBClusterInput) SetFinalDBSnapshotIdentifier(v string) *DeleteDBClusterInput {
	s.FinalDBSnapshotIdentifier = &v
	return s
}

// SetSkipFinalSnapshot sets the SkipFinalSnapshot field's value.
func (s *DeleteDBClusterInput) SetSkipFinalSnapshot(v bool) *DeleteDBClusterInput {
	s.SkipFinalSnapshot = &v
	return s
}

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

	// Contains the details of an Amazon Aurora DB cluster or Multi-AZ DB cluster.
	//
	// For an Amazon Aurora DB cluster, this data type is used as a response element
	// in the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, PromoteReadReplicaDBCluster, RestoreDBClusterFromS3, RestoreDBClusterFromSnapshot,
	// RestoreDBClusterToPointInTime, StartDBCluster, and StopDBCluster.
	//
	// For a Multi-AZ DB cluster, this data type is used as a response element in
	// the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, RebootDBCluster, RestoreDBClusterFromSnapshot, and RestoreDBClusterToPointInTime.
	//
	// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
	// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
	// in the Amazon Aurora User Guide.
	//
	// For more information on Multi-AZ DB clusters, see Multi-AZ deployments with
	// two readable standby DB instances (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
	// in the Amazon RDS User Guide.
	DBCluster *DBCluster `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 DeleteDBClusterOutput) 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 DeleteDBClusterOutput) GoString() string {
	return s.String()
}

// SetDBCluster sets the DBCluster field's value.
func (s *DeleteDBClusterOutput) SetDBCluster(v *DBCluster) *DeleteDBClusterOutput {
	s.DBCluster = v
	return s
}

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

	// The name of the DB cluster parameter group.
	//
	// Constraints:
	//
	//    * Must be the name of an existing DB cluster parameter group.
	//
	//    * You can't delete a default DB cluster parameter group.
	//
	//    * Can't be associated with any DB clusters.
	//
	// DBClusterParameterGroupName is a required field
	DBClusterParameterGroupName *string `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 DeleteDBClusterParameterGroupInput) 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 DeleteDBClusterParameterGroupInput) GoString() string {
	return s.String()
}

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

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

// SetDBClusterParameterGroupName sets the DBClusterParameterGroupName field's value.
func (s *DeleteDBClusterParameterGroupInput) SetDBClusterParameterGroupName(v string) *DeleteDBClusterParameterGroupInput {
	s.DBClusterParameterGroupName = &v
	return s
}

type DeleteDBClusterParameterGroupOutput 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 DeleteDBClusterParameterGroupOutput) 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 DeleteDBClusterParameterGroupOutput) GoString() string {
	return s.String()
}

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

	// The identifier of the DB cluster snapshot to delete.
	//
	// Constraints: Must be the name of an existing DB cluster snapshot in the available
	// state.
	//
	// DBClusterSnapshotIdentifier is a required field
	DBClusterSnapshotIdentifier *string `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 DeleteDBClusterSnapshotInput) 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 DeleteDBClusterSnapshotInput) GoString() string {
	return s.String()
}

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

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

// SetDBClusterSnapshotIdentifier sets the DBClusterSnapshotIdentifier field's value.
func (s *DeleteDBClusterSnapshotInput) SetDBClusterSnapshotIdentifier(v string) *DeleteDBClusterSnapshotInput {
	s.DBClusterSnapshotIdentifier = &v
	return s
}

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

	// Contains the details for an Amazon RDS DB cluster snapshot
	//
	// This data type is used as a response element in the DescribeDBClusterSnapshots
	// action.
	DBClusterSnapshot *DBClusterSnapshot `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 DeleteDBClusterSnapshotOutput) 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 DeleteDBClusterSnapshotOutput) GoString() string {
	return s.String()
}

// SetDBClusterSnapshot sets the DBClusterSnapshot field's value.
func (s *DeleteDBClusterSnapshotOutput) SetDBClusterSnapshot(v *DBClusterSnapshot) *DeleteDBClusterSnapshotOutput {
	s.DBClusterSnapshot = v
	return s
}

// Parameter input for the DeleteDBInstanceAutomatedBackup operation.
type DeleteDBInstanceAutomatedBackupInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the automated backups to delete, for example,
	// arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE.
	//
	// This setting doesn't apply to RDS Custom.
	DBInstanceAutomatedBackupsArn *string `type:"string"`

	// The identifier for the source DB instance, which can't be changed and which
	// is unique to an Amazon Web Services Region.
	DbiResourceId *string `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 DeleteDBInstanceAutomatedBackupInput) 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 DeleteDBInstanceAutomatedBackupInput) GoString() string {
	return s.String()
}

// SetDBInstanceAutomatedBackupsArn sets the DBInstanceAutomatedBackupsArn field's value.
func (s *DeleteDBInstanceAutomatedBackupInput) SetDBInstanceAutomatedBackupsArn(v string) *DeleteDBInstanceAutomatedBackupInput {
	s.DBInstanceAutomatedBackupsArn = &v
	return s
}

// SetDbiResourceId sets the DbiResourceId field's value.
func (s *DeleteDBInstanceAutomatedBackupInput) SetDbiResourceId(v string) *DeleteDBInstanceAutomatedBackupInput {
	s.DbiResourceId = &v
	return s
}

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

	// An automated backup of a DB instance. It consists of system backups, transaction
	// logs, and the database instance properties that existed at the time you deleted
	// the source instance.
	DBInstanceAutomatedBackup *DBInstanceAutomatedBackup `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 DeleteDBInstanceAutomatedBackupOutput) 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 DeleteDBInstanceAutomatedBackupOutput) GoString() string {
	return s.String()
}

// SetDBInstanceAutomatedBackup sets the DBInstanceAutomatedBackup field's value.
func (s *DeleteDBInstanceAutomatedBackupOutput) SetDBInstanceAutomatedBackup(v *DBInstanceAutomatedBackup) *DeleteDBInstanceAutomatedBackupOutput {
	s.DBInstanceAutomatedBackup = v
	return s
}

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

	// The DB instance identifier for the DB instance to be deleted. This parameter
	// isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must match the name of an existing DB instance.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// Specifies whether to remove automated backups immediately after the DB instance
	// is deleted. This parameter isn't case-sensitive. The default is to remove
	// automated backups immediately after the DB instance is deleted.
	DeleteAutomatedBackups *bool `type:"boolean"`

	// The DBSnapshotIdentifier of the new DBSnapshot created when the SkipFinalSnapshot
	// parameter is disabled.
	//
	// If you enable this parameter and also enable SkipFinalShapshot, the command
	// results in an error.
	//
	// This setting doesn't apply to RDS Custom.
	//
	// Constraints:
	//
	//    * Must be 1 to 255 letters or numbers.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	//    * Can't be specified when deleting a read replica.
	FinalDBSnapshotIdentifier *string `type:"string"`

	// Specifies whether to skip the creation of a final DB snapshot before deleting
	// the instance. If you enable this parameter, RDS doesn't create a DB snapshot.
	// If you don't enable this parameter, RDS creates a DB snapshot before the
	// DB instance is deleted. By default, skip isn't enabled, and the DB snapshot
	// is created.
	//
	// If you don't enable this parameter, you must specify the FinalDBSnapshotIdentifier
	// parameter.
	//
	// When a DB instance is in a failure state and has a status of failed, incompatible-restore,
	// or incompatible-network, RDS can delete the instance only if you enable this
	// parameter.
	//
	// If you delete a read replica or an RDS Custom instance, you must enable this
	// setting.
	//
	// This setting is required for RDS Custom.
	SkipFinalSnapshot *bool `type:"boolean"`
}

// 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 DeleteDBInstanceInput) 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 DeleteDBInstanceInput) GoString() string {
	return s.String()
}

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

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

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DeleteDBInstanceInput) SetDBInstanceIdentifier(v string) *DeleteDBInstanceInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDeleteAutomatedBackups sets the DeleteAutomatedBackups field's value.
func (s *DeleteDBInstanceInput) SetDeleteAutomatedBackups(v bool) *DeleteDBInstanceInput {
	s.DeleteAutomatedBackups = &v
	return s
}

// SetFinalDBSnapshotIdentifier sets the FinalDBSnapshotIdentifier field's value.
func (s *DeleteDBInstanceInput) SetFinalDBSnapshotIdentifier(v string) *DeleteDBInstanceInput {
	s.FinalDBSnapshotIdentifier = &v
	return s
}

// SetSkipFinalSnapshot sets the SkipFinalSnapshot field's value.
func (s *DeleteDBInstanceInput) SetSkipFinalSnapshot(v bool) *DeleteDBInstanceInput {
	s.SkipFinalSnapshot = &v
	return s
}

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

	// Contains the details of an Amazon RDS DB instance.
	//
	// This data type is used as a response element in the operations CreateDBInstance,
	// CreateDBInstanceReadReplica, DeleteDBInstance, DescribeDBInstances, ModifyDBInstance,
	// PromoteReadReplica, RebootDBInstance, RestoreDBInstanceFromDBSnapshot, RestoreDBInstanceFromS3,
	// RestoreDBInstanceToPointInTime, StartDBInstance, and StopDBInstance.
	DBInstance *DBInstance `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 DeleteDBInstanceOutput) 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 DeleteDBInstanceOutput) GoString() string {
	return s.String()
}

// SetDBInstance sets the DBInstance field's value.
func (s *DeleteDBInstanceOutput) SetDBInstance(v *DBInstance) *DeleteDBInstanceOutput {
	s.DBInstance = v
	return s
}

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

	// The name of the DB parameter group.
	//
	// Constraints:
	//
	//    * Must be the name of an existing DB parameter group
	//
	//    * You can't delete a default DB parameter group
	//
	//    * Can't be associated with any DB instances
	//
	// DBParameterGroupName is a required field
	DBParameterGroupName *string `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 DeleteDBParameterGroupInput) 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 DeleteDBParameterGroupInput) GoString() string {
	return s.String()
}

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

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

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *DeleteDBParameterGroupInput) SetDBParameterGroupName(v string) *DeleteDBParameterGroupInput {
	s.DBParameterGroupName = &v
	return s
}

type DeleteDBParameterGroupOutput 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 DeleteDBParameterGroupOutput) 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 DeleteDBParameterGroupOutput) GoString() string {
	return s.String()
}

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

	// The name of the DB proxy endpoint to delete.
	//
	// DBProxyEndpointName is a required field
	DBProxyEndpointName *string `min:"1" 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 DeleteDBProxyEndpointInput) 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 DeleteDBProxyEndpointInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteDBProxyEndpointInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteDBProxyEndpointInput"}
	if s.DBProxyEndpointName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBProxyEndpointName"))
	}
	if s.DBProxyEndpointName != nil && len(*s.DBProxyEndpointName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DBProxyEndpointName", 1))
	}

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

// SetDBProxyEndpointName sets the DBProxyEndpointName field's value.
func (s *DeleteDBProxyEndpointInput) SetDBProxyEndpointName(v string) *DeleteDBProxyEndpointInput {
	s.DBProxyEndpointName = &v
	return s
}

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

	// The data structure representing the details of the DB proxy endpoint that
	// you delete.
	DBProxyEndpoint *DBProxyEndpoint `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 DeleteDBProxyEndpointOutput) 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 DeleteDBProxyEndpointOutput) GoString() string {
	return s.String()
}

// SetDBProxyEndpoint sets the DBProxyEndpoint field's value.
func (s *DeleteDBProxyEndpointOutput) SetDBProxyEndpoint(v *DBProxyEndpoint) *DeleteDBProxyEndpointOutput {
	s.DBProxyEndpoint = v
	return s
}

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

	// The name of the DB proxy to delete.
	//
	// DBProxyName is a required field
	DBProxyName *string `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 DeleteDBProxyInput) 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 DeleteDBProxyInput) GoString() string {
	return s.String()
}

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

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

// SetDBProxyName sets the DBProxyName field's value.
func (s *DeleteDBProxyInput) SetDBProxyName(v string) *DeleteDBProxyInput {
	s.DBProxyName = &v
	return s
}

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

	// The data structure representing the details of the DB proxy that you delete.
	DBProxy *DBProxy `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 DeleteDBProxyOutput) 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 DeleteDBProxyOutput) GoString() string {
	return s.String()
}

// SetDBProxy sets the DBProxy field's value.
func (s *DeleteDBProxyOutput) SetDBProxy(v *DBProxy) *DeleteDBProxyOutput {
	s.DBProxy = v
	return s
}

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

	// The name of the DB security group to delete.
	//
	// You can't delete the default DB security group.
	//
	// Constraints:
	//
	//    * Must be 1 to 255 letters, numbers, or hyphens.
	//
	//    * First character must be a letter
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens
	//
	//    * Must not be "Default"
	//
	// DBSecurityGroupName is a required field
	DBSecurityGroupName *string `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 DeleteDBSecurityGroupInput) 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 DeleteDBSecurityGroupInput) GoString() string {
	return s.String()
}

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

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

// SetDBSecurityGroupName sets the DBSecurityGroupName field's value.
func (s *DeleteDBSecurityGroupInput) SetDBSecurityGroupName(v string) *DeleteDBSecurityGroupInput {
	s.DBSecurityGroupName = &v
	return s
}

type DeleteDBSecurityGroupOutput 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 DeleteDBSecurityGroupOutput) 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 DeleteDBSecurityGroupOutput) GoString() string {
	return s.String()
}

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

	// Teh name of the DB shard group to delete.
	//
	// DBShardGroupIdentifier is a required field
	DBShardGroupIdentifier *string `min:"1" 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 DeleteDBShardGroupInput) 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 DeleteDBShardGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteDBShardGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteDBShardGroupInput"}
	if s.DBShardGroupIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBShardGroupIdentifier"))
	}
	if s.DBShardGroupIdentifier != nil && len(*s.DBShardGroupIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DBShardGroupIdentifier", 1))
	}

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

// SetDBShardGroupIdentifier sets the DBShardGroupIdentifier field's value.
func (s *DeleteDBShardGroupInput) SetDBShardGroupIdentifier(v string) *DeleteDBShardGroupInput {
	s.DBShardGroupIdentifier = &v
	return s
}

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

	// Specifies whether to create standby instances for the DB shard group. Valid
	// values are the following:
	//
	//    * 0 - Creates a single, primary DB instance for each physical shard. This
	//    is the default value, and the only one supported for the preview.
	//
	//    * 1 - Creates a primary DB instance and a standby instance in a different
	//    Availability Zone (AZ) for each physical shard.
	//
	//    * 2 - Creates a primary DB instance and two standby instances in different
	//    AZs for each physical shard.
	ComputeRedundancy *int64 `type:"integer"`

	// The name of the primary DB cluster for the DB shard group.
	DBClusterIdentifier *string `type:"string"`

	// The name of the DB shard group.
	DBShardGroupIdentifier *string `min:"1" type:"string"`

	// The Amazon Web Services Region-unique, immutable identifier for the DB shard
	// group.
	DBShardGroupResourceId *string `type:"string"`

	// The connection endpoint for the DB shard group.
	Endpoint *string `type:"string"`

	// The maximum capacity of the DB shard group in Aurora capacity units (ACUs).
	MaxACU *float64 `type:"double"`

	// Indicates whether the DB shard group is publicly accessible.
	//
	// When the DB shard group is publicly accessible, its Domain Name System (DNS)
	// endpoint resolves to the private IP address from within the DB shard group's
	// virtual private cloud (VPC). It resolves to the public IP address from outside
	// of the DB shard group's VPC. Access to the DB shard group is ultimately controlled
	// by the security group it uses. That public access isn't permitted if the
	// security group assigned to the DB shard group doesn't permit it.
	//
	// When the DB shard group isn't publicly accessible, it is an internal DB shard
	// group with a DNS name that resolves to a private IP address.
	//
	// For more information, see CreateDBShardGroup.
	//
	// This setting is only for Aurora Limitless Database.
	PubliclyAccessible *bool `type:"boolean"`

	// The status of the DB shard group.
	Status *string `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 DeleteDBShardGroupOutput) 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 DeleteDBShardGroupOutput) GoString() string {
	return s.String()
}

// SetComputeRedundancy sets the ComputeRedundancy field's value.
func (s *DeleteDBShardGroupOutput) SetComputeRedundancy(v int64) *DeleteDBShardGroupOutput {
	s.ComputeRedundancy = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *DeleteDBShardGroupOutput) SetDBClusterIdentifier(v string) *DeleteDBShardGroupOutput {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBShardGroupIdentifier sets the DBShardGroupIdentifier field's value.
func (s *DeleteDBShardGroupOutput) SetDBShardGroupIdentifier(v string) *DeleteDBShardGroupOutput {
	s.DBShardGroupIdentifier = &v
	return s
}

// SetDBShardGroupResourceId sets the DBShardGroupResourceId field's value.
func (s *DeleteDBShardGroupOutput) SetDBShardGroupResourceId(v string) *DeleteDBShardGroupOutput {
	s.DBShardGroupResourceId = &v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *DeleteDBShardGroupOutput) SetEndpoint(v string) *DeleteDBShardGroupOutput {
	s.Endpoint = &v
	return s
}

// SetMaxACU sets the MaxACU field's value.
func (s *DeleteDBShardGroupOutput) SetMaxACU(v float64) *DeleteDBShardGroupOutput {
	s.MaxACU = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *DeleteDBShardGroupOutput) SetPubliclyAccessible(v bool) *DeleteDBShardGroupOutput {
	s.PubliclyAccessible = &v
	return s
}

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

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

	// The DB snapshot identifier.
	//
	// Constraints: Must be the name of an existing DB snapshot in the available
	// state.
	//
	// DBSnapshotIdentifier is a required field
	DBSnapshotIdentifier *string `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 DeleteDBSnapshotInput) 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 DeleteDBSnapshotInput) GoString() string {
	return s.String()
}

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

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

// SetDBSnapshotIdentifier sets the DBSnapshotIdentifier field's value.
func (s *DeleteDBSnapshotInput) SetDBSnapshotIdentifier(v string) *DeleteDBSnapshotInput {
	s.DBSnapshotIdentifier = &v
	return s
}

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

	// Contains the details of an Amazon RDS DB snapshot.
	//
	// This data type is used as a response element in the DescribeDBSnapshots action.
	DBSnapshot *DBSnapshot `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 DeleteDBSnapshotOutput) 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 DeleteDBSnapshotOutput) GoString() string {
	return s.String()
}

// SetDBSnapshot sets the DBSnapshot field's value.
func (s *DeleteDBSnapshotOutput) SetDBSnapshot(v *DBSnapshot) *DeleteDBSnapshotOutput {
	s.DBSnapshot = v
	return s
}

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

	// The name of the database subnet group to delete.
	//
	// You can't delete the default subnet group.
	//
	// Constraints: Must match the name of an existing DBSubnetGroup. Must not be
	// default.
	//
	// Example: mydbsubnetgroup
	//
	// DBSubnetGroupName is a required field
	DBSubnetGroupName *string `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 DeleteDBSubnetGroupInput) 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 DeleteDBSubnetGroupInput) GoString() string {
	return s.String()
}

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

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

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *DeleteDBSubnetGroupInput) SetDBSubnetGroupName(v string) *DeleteDBSubnetGroupInput {
	s.DBSubnetGroupName = &v
	return s
}

type DeleteDBSubnetGroupOutput 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 DeleteDBSubnetGroupOutput) 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 DeleteDBSubnetGroupOutput) GoString() string {
	return s.String()
}

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

	// The name of the RDS event notification subscription you want to delete.
	//
	// SubscriptionName is a required field
	SubscriptionName *string `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 DeleteEventSubscriptionInput) 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 DeleteEventSubscriptionInput) GoString() string {
	return s.String()
}

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

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

// SetSubscriptionName sets the SubscriptionName field's value.
func (s *DeleteEventSubscriptionInput) SetSubscriptionName(v string) *DeleteEventSubscriptionInput {
	s.SubscriptionName = &v
	return s
}

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

	// Contains the results of a successful invocation of the DescribeEventSubscriptions
	// action.
	EventSubscription *EventSubscription `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 DeleteEventSubscriptionOutput) 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 DeleteEventSubscriptionOutput) GoString() string {
	return s.String()
}

// SetEventSubscription sets the EventSubscription field's value.
func (s *DeleteEventSubscriptionOutput) SetEventSubscription(v *EventSubscription) *DeleteEventSubscriptionOutput {
	s.EventSubscription = v
	return s
}

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

	// The cluster identifier of the global database cluster being deleted.
	//
	// GlobalClusterIdentifier is a required field
	GlobalClusterIdentifier *string `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 DeleteGlobalClusterInput) 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 DeleteGlobalClusterInput) GoString() string {
	return s.String()
}

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

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

// SetGlobalClusterIdentifier sets the GlobalClusterIdentifier field's value.
func (s *DeleteGlobalClusterInput) SetGlobalClusterIdentifier(v string) *DeleteGlobalClusterInput {
	s.GlobalClusterIdentifier = &v
	return s
}

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

	// A data type representing an Aurora global database.
	GlobalCluster *GlobalCluster `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 DeleteGlobalClusterOutput) 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 DeleteGlobalClusterOutput) GoString() string {
	return s.String()
}

// SetGlobalCluster sets the GlobalCluster field's value.
func (s *DeleteGlobalClusterOutput) SetGlobalCluster(v *GlobalCluster) *DeleteGlobalClusterOutput {
	s.GlobalCluster = v
	return s
}

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

	// The unique identifier of the integration.
	//
	// IntegrationIdentifier is a required field
	IntegrationIdentifier *string `min:"1" 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 DeleteIntegrationInput) 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 DeleteIntegrationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteIntegrationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteIntegrationInput"}
	if s.IntegrationIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("IntegrationIdentifier"))
	}
	if s.IntegrationIdentifier != nil && len(*s.IntegrationIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IntegrationIdentifier", 1))
	}

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

// SetIntegrationIdentifier sets the IntegrationIdentifier field's value.
func (s *DeleteIntegrationInput) SetIntegrationIdentifier(v string) *DeleteIntegrationInput {
	s.IntegrationIdentifier = &v
	return s
}

// A zero-ETL integration with Amazon Redshift.
type DeleteIntegrationOutput struct {
	_ struct{} `type:"structure"`

	// The encryption context for the integration. For more information, see Encryption
	// context (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)
	// in the Amazon Web Services Key Management Service Developer Guide.
	AdditionalEncryptionContext map[string]*string `type:"map"`

	// The time when the integration was created, in Universal Coordinated Time
	// (UTC).
	CreateTime *time.Time `type:"timestamp"`

	// Data filters for the integration. These filters determine which tables from
	// the source database are sent to the target Amazon Redshift data warehouse.
	DataFilter *string `min:"1" type:"string"`

	// A description of the integration.
	Description *string `type:"string"`

	// Any errors associated with the integration.
	Errors []*IntegrationError `locationNameList:"IntegrationError" type:"list"`

	// The ARN of the integration.
	IntegrationArn *string `min:"1" type:"string"`

	// The name of the integration.
	IntegrationName *string `min:"1" type:"string"`

	// The Amazon Web Services Key Management System (Amazon Web Services KMS) key
	// identifier for the key used to to encrypt the integration.
	KMSKeyId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the database used as the source for replication.
	SourceArn *string `min:"1" type:"string"`

	// The current status of the integration.
	Status *string `type:"string" enum:"IntegrationStatus"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// The ARN of the Redshift data warehouse used as the target for replication.
	TargetArn *string `min:"20" 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 DeleteIntegrationOutput) 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 DeleteIntegrationOutput) GoString() string {
	return s.String()
}

// SetAdditionalEncryptionContext sets the AdditionalEncryptionContext field's value.
func (s *DeleteIntegrationOutput) SetAdditionalEncryptionContext(v map[string]*string) *DeleteIntegrationOutput {
	s.AdditionalEncryptionContext = v
	return s
}

// SetCreateTime sets the CreateTime field's value.
func (s *DeleteIntegrationOutput) SetCreateTime(v time.Time) *DeleteIntegrationOutput {
	s.CreateTime = &v
	return s
}

// SetDataFilter sets the DataFilter field's value.
func (s *DeleteIntegrationOutput) SetDataFilter(v string) *DeleteIntegrationOutput {
	s.DataFilter = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *DeleteIntegrationOutput) SetDescription(v string) *DeleteIntegrationOutput {
	s.Description = &v
	return s
}

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

// SetIntegrationArn sets the IntegrationArn field's value.
func (s *DeleteIntegrationOutput) SetIntegrationArn(v string) *DeleteIntegrationOutput {
	s.IntegrationArn = &v
	return s
}

// SetIntegrationName sets the IntegrationName field's value.
func (s *DeleteIntegrationOutput) SetIntegrationName(v string) *DeleteIntegrationOutput {
	s.IntegrationName = &v
	return s
}

// SetKMSKeyId sets the KMSKeyId field's value.
func (s *DeleteIntegrationOutput) SetKMSKeyId(v string) *DeleteIntegrationOutput {
	s.KMSKeyId = &v
	return s
}

// SetSourceArn sets the SourceArn field's value.
func (s *DeleteIntegrationOutput) SetSourceArn(v string) *DeleteIntegrationOutput {
	s.SourceArn = &v
	return s
}

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

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

// SetTargetArn sets the TargetArn field's value.
func (s *DeleteIntegrationOutput) SetTargetArn(v string) *DeleteIntegrationOutput {
	s.TargetArn = &v
	return s
}

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

	// The name of the option group to be deleted.
	//
	// You can't delete default option groups.
	//
	// OptionGroupName is a required field
	OptionGroupName *string `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 DeleteOptionGroupInput) 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 DeleteOptionGroupInput) GoString() string {
	return s.String()
}

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

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

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *DeleteOptionGroupInput) SetOptionGroupName(v string) *DeleteOptionGroupInput {
	s.OptionGroupName = &v
	return s
}

type DeleteOptionGroupOutput 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 DeleteOptionGroupOutput) 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 DeleteOptionGroupOutput) GoString() string {
	return s.String()
}

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

	// The user-supplied identifier for the DB instance that contains the tenant
	// database that you want to delete.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// The DBSnapshotIdentifier of the new DBSnapshot created when the SkipFinalSnapshot
	// parameter is disabled.
	//
	// If you enable this parameter and also enable SkipFinalShapshot, the command
	// results in an error.
	FinalDBSnapshotIdentifier *string `type:"string"`

	// Specifies whether to skip the creation of a final DB snapshot before removing
	// the tenant database from your DB instance. If you enable this parameter,
	// RDS doesn't create a DB snapshot. If you don't enable this parameter, RDS
	// creates a DB snapshot before it deletes the tenant database. By default,
	// RDS doesn't skip the final snapshot. If you don't enable this parameter,
	// you must specify the FinalDBSnapshotIdentifier parameter.
	SkipFinalSnapshot *bool `type:"boolean"`

	// The user-supplied name of the tenant database that you want to remove from
	// your DB instance. Amazon RDS deletes the tenant database with this name.
	// This parameter isn’t case-sensitive.
	//
	// TenantDBName is a required field
	TenantDBName *string `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 DeleteTenantDatabaseInput) 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 DeleteTenantDatabaseInput) GoString() string {
	return s.String()
}

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

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

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DeleteTenantDatabaseInput) SetDBInstanceIdentifier(v string) *DeleteTenantDatabaseInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetFinalDBSnapshotIdentifier sets the FinalDBSnapshotIdentifier field's value.
func (s *DeleteTenantDatabaseInput) SetFinalDBSnapshotIdentifier(v string) *DeleteTenantDatabaseInput {
	s.FinalDBSnapshotIdentifier = &v
	return s
}

// SetSkipFinalSnapshot sets the SkipFinalSnapshot field's value.
func (s *DeleteTenantDatabaseInput) SetSkipFinalSnapshot(v bool) *DeleteTenantDatabaseInput {
	s.SkipFinalSnapshot = &v
	return s
}

// SetTenantDBName sets the TenantDBName field's value.
func (s *DeleteTenantDatabaseInput) SetTenantDBName(v string) *DeleteTenantDatabaseInput {
	s.TenantDBName = &v
	return s
}

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

	// A tenant database in the DB instance. This data type is an element in the
	// response to the DescribeTenantDatabases action.
	TenantDatabase *TenantDatabase `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 DeleteTenantDatabaseOutput) 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 DeleteTenantDatabaseOutput) GoString() string {
	return s.String()
}

// SetTenantDatabase sets the TenantDatabase field's value.
func (s *DeleteTenantDatabaseOutput) SetTenantDatabase(v *TenantDatabase) *DeleteTenantDatabaseOutput {
	s.TenantDatabase = v
	return s
}

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

	// One or more DB cluster identifiers.
	DBClusterIdentifiers []*string `type:"list"`

	// One or more DB instance identifiers.
	DBInstanceIdentifiers []*string `type:"list"`

	// The identifier of the DBProxy that is associated with the DBProxyTargetGroup.
	//
	// DBProxyName is a required field
	DBProxyName *string `type:"string" required:"true"`

	// The identifier of the DBProxyTargetGroup.
	TargetGroupName *string `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 DeregisterDBProxyTargetsInput) 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 DeregisterDBProxyTargetsInput) GoString() string {
	return s.String()
}

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

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

// SetDBClusterIdentifiers sets the DBClusterIdentifiers field's value.
func (s *DeregisterDBProxyTargetsInput) SetDBClusterIdentifiers(v []*string) *DeregisterDBProxyTargetsInput {
	s.DBClusterIdentifiers = v
	return s
}

// SetDBInstanceIdentifiers sets the DBInstanceIdentifiers field's value.
func (s *DeregisterDBProxyTargetsInput) SetDBInstanceIdentifiers(v []*string) *DeregisterDBProxyTargetsInput {
	s.DBInstanceIdentifiers = v
	return s
}

// SetDBProxyName sets the DBProxyName field's value.
func (s *DeregisterDBProxyTargetsInput) SetDBProxyName(v string) *DeregisterDBProxyTargetsInput {
	s.DBProxyName = &v
	return s
}

// SetTargetGroupName sets the TargetGroupName field's value.
func (s *DeregisterDBProxyTargetsInput) SetTargetGroupName(v string) *DeregisterDBProxyTargetsInput {
	s.TargetGroupName = &v
	return s
}

type DeregisterDBProxyTargetsOutput 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 DeregisterDBProxyTargetsOutput) 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 DeregisterDBProxyTargetsOutput) GoString() string {
	return s.String()
}

type DescribeAccountAttributesInput 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 DescribeAccountAttributesInput) 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 DescribeAccountAttributesInput) GoString() string {
	return s.String()
}

// Data returned by the DescribeAccountAttributes action.
type DescribeAccountAttributesOutput struct {
	_ struct{} `type:"structure"`

	// A list of AccountQuota objects. Within this list, each quota has a name,
	// a count of usage toward the quota maximum, and a maximum value for the quota.
	AccountQuotas []*AccountQuota `locationNameList:"AccountQuota" 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 DescribeAccountAttributesOutput) 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 DescribeAccountAttributesOutput) GoString() string {
	return s.String()
}

// SetAccountQuotas sets the AccountQuotas field's value.
func (s *DescribeAccountAttributesOutput) SetAccountQuotas(v []*AccountQuota) *DescribeAccountAttributesOutput {
	s.AccountQuotas = v
	return s
}

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

	// The blue/green deployment identifier. If you specify this parameter, the
	// response only includes information about the specific blue/green deployment.
	// This parameter isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must match an existing blue/green deployment identifier.
	BlueGreenDeploymentIdentifier *string `min:"1" type:"string"`

	// A filter that specifies one or more blue/green deployments to describe.
	//
	// Valid Values:
	//
	//    * blue-green-deployment-identifier - Accepts system-generated identifiers
	//    for blue/green deployments. The results list only includes information
	//    about the blue/green deployments with the specified identifiers.
	//
	//    * blue-green-deployment-name - Accepts user-supplied names for blue/green
	//    deployments. The results list only includes information about the blue/green
	//    deployments with the specified names.
	//
	//    * source - Accepts source databases for a blue/green deployment. The results
	//    list only includes information about the blue/green deployments with the
	//    specified source databases.
	//
	//    * target - Accepts target databases for a blue/green deployment. The results
	//    list only includes information about the blue/green deployments with the
	//    specified target databases.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeBlueGreenDeployments
	// request. If you specify this parameter, the response only includes records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints:
	//
	//    * Must be a minimum of 20.
	//
	//    * Can't exceed 100.
	MaxRecords *int64 `min:"20" 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 DescribeBlueGreenDeploymentsInput) 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 DescribeBlueGreenDeploymentsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeBlueGreenDeploymentsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeBlueGreenDeploymentsInput"}
	if s.BlueGreenDeploymentIdentifier != nil && len(*s.BlueGreenDeploymentIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BlueGreenDeploymentIdentifier", 1))
	}
	if s.MaxRecords != nil && *s.MaxRecords < 20 {
		invalidParams.Add(request.NewErrParamMinValue("MaxRecords", 20))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetBlueGreenDeploymentIdentifier sets the BlueGreenDeploymentIdentifier field's value.
func (s *DescribeBlueGreenDeploymentsInput) SetBlueGreenDeploymentIdentifier(v string) *DescribeBlueGreenDeploymentsInput {
	s.BlueGreenDeploymentIdentifier = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeBlueGreenDeploymentsInput) SetMarker(v string) *DescribeBlueGreenDeploymentsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeBlueGreenDeploymentsInput) SetMaxRecords(v int64) *DescribeBlueGreenDeploymentsInput {
	s.MaxRecords = &v
	return s
}

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

	// A list of blue/green deployments in the current account and Amazon Web Services
	// Region.
	BlueGreenDeployments []*BlueGreenDeployment `type:"list"`

	// A pagination token that can be used in a later DescribeBlueGreenDeployments
	// request.
	Marker *string `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 DescribeBlueGreenDeploymentsOutput) 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 DescribeBlueGreenDeploymentsOutput) GoString() string {
	return s.String()
}

// SetBlueGreenDeployments sets the BlueGreenDeployments field's value.
func (s *DescribeBlueGreenDeploymentsOutput) SetBlueGreenDeployments(v []*BlueGreenDeployment) *DescribeBlueGreenDeploymentsOutput {
	s.BlueGreenDeployments = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeBlueGreenDeploymentsOutput) SetMarker(v string) *DescribeBlueGreenDeploymentsOutput {
	s.Marker = &v
	return s
}

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

	// The user-supplied certificate identifier. If this parameter is specified,
	// information for only the identified certificate is returned. This parameter
	// isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must match an existing CertificateIdentifier.
	CertificateIdentifier *string `type:"string"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeCertificates
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `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 DescribeCertificatesInput) 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 DescribeCertificatesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeCertificatesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeCertificatesInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetCertificateIdentifier sets the CertificateIdentifier field's value.
func (s *DescribeCertificatesInput) SetCertificateIdentifier(v string) *DescribeCertificatesInput {
	s.CertificateIdentifier = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeCertificatesInput) SetMarker(v string) *DescribeCertificatesInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeCertificatesInput) SetMaxRecords(v int64) *DescribeCertificatesInput {
	s.MaxRecords = &v
	return s
}

// Data returned by the DescribeCertificates action.
type DescribeCertificatesOutput struct {
	_ struct{} `type:"structure"`

	// The list of Certificate objects for the Amazon Web Services account.
	Certificates []*Certificate `locationNameList:"Certificate" type:"list"`

	// The default root CA for new databases created by your Amazon Web Services
	// account. This is either the root CA override set on your Amazon Web Services
	// account or the system default CA for the Region if no override exists. To
	// override the default CA, use the ModifyCertificates operation.
	DefaultCertificateForNewLaunches *string `type:"string"`

	// An optional pagination token provided by a previous DescribeCertificates
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords .
	Marker *string `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 DescribeCertificatesOutput) 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 DescribeCertificatesOutput) GoString() string {
	return s.String()
}

// SetCertificates sets the Certificates field's value.
func (s *DescribeCertificatesOutput) SetCertificates(v []*Certificate) *DescribeCertificatesOutput {
	s.Certificates = v
	return s
}

// SetDefaultCertificateForNewLaunches sets the DefaultCertificateForNewLaunches field's value.
func (s *DescribeCertificatesOutput) SetDefaultCertificateForNewLaunches(v string) *DescribeCertificatesOutput {
	s.DefaultCertificateForNewLaunches = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeCertificatesOutput) SetMarker(v string) *DescribeCertificatesOutput {
	s.Marker = &v
	return s
}

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

	// (Optional) The user-supplied DB cluster identifier. If this parameter is
	// specified, it must match the identifier of an existing DB cluster. It returns
	// information from the specific DB cluster's automated backup. This parameter
	// isn't case-sensitive.
	DBClusterIdentifier *string `type:"string"`

	// The resource ID of the DB cluster that is the source of the automated backup.
	// This parameter isn't case-sensitive.
	DbClusterResourceId *string `type:"string"`

	// A filter that specifies which resources to return based on status.
	//
	// Supported filters are the following:
	//
	//    * status retained - Automated backups for deleted clusters and after backup
	//    replication is stopped.
	//
	//    * db-cluster-id - Accepts DB cluster identifiers and Amazon Resource Names
	//    (ARNs). The results list includes only information about the DB cluster
	//    automated backups identified by these ARNs.
	//
	//    * db-cluster-resource-id - Accepts DB resource identifiers and Amazon
	//    Resource Names (ARNs). The results list includes only information about
	//    the DB cluster resources identified by these ARNs.
	//
	// Returns all resources by default. The status for each resource is specified
	// in the response.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// The pagination token provided in the previous request. If this parameter
	// is specified the response includes only records beyond the marker, up to
	// MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	MaxRecords *int64 `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 DescribeDBClusterAutomatedBackupsInput) 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 DescribeDBClusterAutomatedBackupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBClusterAutomatedBackupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBClusterAutomatedBackupsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *DescribeDBClusterAutomatedBackupsInput) SetDBClusterIdentifier(v string) *DescribeDBClusterAutomatedBackupsInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetDbClusterResourceId sets the DbClusterResourceId field's value.
func (s *DescribeDBClusterAutomatedBackupsInput) SetDbClusterResourceId(v string) *DescribeDBClusterAutomatedBackupsInput {
	s.DbClusterResourceId = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBClusterAutomatedBackupsInput) SetMarker(v string) *DescribeDBClusterAutomatedBackupsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBClusterAutomatedBackupsInput) SetMaxRecords(v int64) *DescribeDBClusterAutomatedBackupsInput {
	s.MaxRecords = &v
	return s
}

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

	// A list of DBClusterAutomatedBackup backups.
	DBClusterAutomatedBackups []*DBClusterAutomatedBackup `locationNameList:"DBClusterAutomatedBackup" type:"list"`

	// The pagination token provided in the previous request. If this parameter
	// is specified the response includes only records beyond the marker, up to
	// MaxRecords.
	Marker *string `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 DescribeDBClusterAutomatedBackupsOutput) 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 DescribeDBClusterAutomatedBackupsOutput) GoString() string {
	return s.String()
}

// SetDBClusterAutomatedBackups sets the DBClusterAutomatedBackups field's value.
func (s *DescribeDBClusterAutomatedBackupsOutput) SetDBClusterAutomatedBackups(v []*DBClusterAutomatedBackup) *DescribeDBClusterAutomatedBackupsOutput {
	s.DBClusterAutomatedBackups = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBClusterAutomatedBackupsOutput) SetMarker(v string) *DescribeDBClusterAutomatedBackupsOutput {
	s.Marker = &v
	return s
}

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

	// If specified, this value is the backtrack identifier of the backtrack to
	// be described.
	//
	// Constraints:
	//
	//    * Must contain a valid universally unique identifier (UUID). For more
	//    information about UUIDs, see Universally unique identifier (https://en.wikipedia.org/wiki/Universally_unique_identifier).
	//
	// Example: 123e4567-e89b-12d3-a456-426655440000
	BacktrackIdentifier *string `type:"string"`

	// The DB cluster identifier of the DB cluster to be described. This parameter
	// is stored as a lowercase string.
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 alphanumeric characters or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Example: my-cluster1
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// A filter that specifies one or more DB clusters to describe. Supported filters
	// include the following:
	//
	//    * db-cluster-backtrack-id - Accepts backtrack identifiers. The results
	//    list includes information about only the backtracks identified by these
	//    identifiers.
	//
	//    * db-cluster-backtrack-status - Accepts any of the following backtrack
	//    status values: applying completed failed pending The results list includes
	//    information about only the backtracks identified by these values.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeDBClusterBacktracks
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `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 DescribeDBClusterBacktracksInput) 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 DescribeDBClusterBacktracksInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBClusterBacktracksInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBClusterBacktracksInput"}
	if s.DBClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterIdentifier"))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetBacktrackIdentifier sets the BacktrackIdentifier field's value.
func (s *DescribeDBClusterBacktracksInput) SetBacktrackIdentifier(v string) *DescribeDBClusterBacktracksInput {
	s.BacktrackIdentifier = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *DescribeDBClusterBacktracksInput) SetDBClusterIdentifier(v string) *DescribeDBClusterBacktracksInput {
	s.DBClusterIdentifier = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBClusterBacktracksInput) SetMarker(v string) *DescribeDBClusterBacktracksInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBClusterBacktracksInput) SetMaxRecords(v int64) *DescribeDBClusterBacktracksInput {
	s.MaxRecords = &v
	return s
}

// Contains the result of a successful invocation of the DescribeDBClusterBacktracks
// action.
type DescribeDBClusterBacktracksOutput struct {
	_ struct{} `type:"structure"`

	// Contains a list of backtracks for the user.
	DBClusterBacktracks []*BacktrackDBClusterOutput `locationNameList:"DBClusterBacktrack" type:"list"`

	// A pagination token that can be used in a later DescribeDBClusterBacktracks
	// request.
	Marker *string `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 DescribeDBClusterBacktracksOutput) 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 DescribeDBClusterBacktracksOutput) GoString() string {
	return s.String()
}

// SetDBClusterBacktracks sets the DBClusterBacktracks field's value.
func (s *DescribeDBClusterBacktracksOutput) SetDBClusterBacktracks(v []*BacktrackDBClusterOutput) *DescribeDBClusterBacktracksOutput {
	s.DBClusterBacktracks = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBClusterBacktracksOutput) SetMarker(v string) *DescribeDBClusterBacktracksOutput {
	s.Marker = &v
	return s
}

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

	// The identifier of the endpoint to describe. This parameter is stored as a
	// lowercase string.
	DBClusterEndpointIdentifier *string `type:"string"`

	// The DB cluster identifier of the DB cluster associated with the endpoint.
	// This parameter is stored as a lowercase string.
	DBClusterIdentifier *string `type:"string"`

	// A set of name-value pairs that define which endpoints to include in the output.
	// The filters are specified as name-value pairs, in the format Name=endpoint_type,Values=endpoint_type1,endpoint_type2,....
	// Name can be one of: db-cluster-endpoint-type, db-cluster-endpoint-custom-type,
	// db-cluster-endpoint-id, db-cluster-endpoint-status. Values for the db-cluster-endpoint-type
	// filter can be one or more of: reader, writer, custom. Values for the db-cluster-endpoint-custom-type
	// filter can be one or more of: reader, any. Values for the db-cluster-endpoint-status
	// filter can be one or more of: available, creating, deleting, inactive, modifying.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeDBClusterEndpoints
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `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 DescribeDBClusterEndpointsInput) 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 DescribeDBClusterEndpointsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBClusterEndpointsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBClusterEndpointsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBClusterEndpointIdentifier sets the DBClusterEndpointIdentifier field's value.
func (s *DescribeDBClusterEndpointsInput) SetDBClusterEndpointIdentifier(v string) *DescribeDBClusterEndpointsInput {
	s.DBClusterEndpointIdentifier = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *DescribeDBClusterEndpointsInput) SetDBClusterIdentifier(v string) *DescribeDBClusterEndpointsInput {
	s.DBClusterIdentifier = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBClusterEndpointsInput) SetMarker(v string) *DescribeDBClusterEndpointsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBClusterEndpointsInput) SetMaxRecords(v int64) *DescribeDBClusterEndpointsInput {
	s.MaxRecords = &v
	return s
}

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

	// Contains the details of the endpoints associated with the cluster and matching
	// any filter conditions.
	DBClusterEndpoints []*DBClusterEndpoint `locationNameList:"DBClusterEndpointList" type:"list"`

	// An optional pagination token provided by a previous DescribeDBClusterEndpoints
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `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 DescribeDBClusterEndpointsOutput) 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 DescribeDBClusterEndpointsOutput) GoString() string {
	return s.String()
}

// SetDBClusterEndpoints sets the DBClusterEndpoints field's value.
func (s *DescribeDBClusterEndpointsOutput) SetDBClusterEndpoints(v []*DBClusterEndpoint) *DescribeDBClusterEndpointsOutput {
	s.DBClusterEndpoints = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBClusterEndpointsOutput) SetMarker(v string) *DescribeDBClusterEndpointsOutput {
	s.Marker = &v
	return s
}

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

	// The name of a specific DB cluster parameter group to return details for.
	//
	// Constraints:
	//
	//    * If supplied, must match the name of an existing DBClusterParameterGroup.
	DBClusterParameterGroupName *string `type:"string"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeDBClusterParameterGroups
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `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 DescribeDBClusterParameterGroupsInput) 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 DescribeDBClusterParameterGroupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBClusterParameterGroupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBClusterParameterGroupsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBClusterParameterGroupName sets the DBClusterParameterGroupName field's value.
func (s *DescribeDBClusterParameterGroupsInput) SetDBClusterParameterGroupName(v string) *DescribeDBClusterParameterGroupsInput {
	s.DBClusterParameterGroupName = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBClusterParameterGroupsInput) SetMarker(v string) *DescribeDBClusterParameterGroupsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBClusterParameterGroupsInput) SetMaxRecords(v int64) *DescribeDBClusterParameterGroupsInput {
	s.MaxRecords = &v
	return s
}

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

	// A list of DB cluster parameter groups.
	DBClusterParameterGroups []*DBClusterParameterGroup `locationNameList:"DBClusterParameterGroup" type:"list"`

	// An optional pagination token provided by a previous DescribeDBClusterParameterGroups
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `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 DescribeDBClusterParameterGroupsOutput) 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 DescribeDBClusterParameterGroupsOutput) GoString() string {
	return s.String()
}

// SetDBClusterParameterGroups sets the DBClusterParameterGroups field's value.
func (s *DescribeDBClusterParameterGroupsOutput) SetDBClusterParameterGroups(v []*DBClusterParameterGroup) *DescribeDBClusterParameterGroupsOutput {
	s.DBClusterParameterGroups = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBClusterParameterGroupsOutput) SetMarker(v string) *DescribeDBClusterParameterGroupsOutput {
	s.Marker = &v
	return s
}

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

	// The name of a specific DB cluster parameter group to return parameter details
	// for.
	//
	// Constraints:
	//
	//    * If supplied, must match the name of an existing DBClusterParameterGroup.
	//
	// DBClusterParameterGroupName is a required field
	DBClusterParameterGroupName *string `type:"string" required:"true"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeDBClusterParameters
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `type:"integer"`

	// A specific source to return parameters for.
	//
	// Valid Values:
	//
	//    * user
	//
	//    * engine
	//
	//    * service
	Source *string `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 DescribeDBClusterParametersInput) 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 DescribeDBClusterParametersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBClusterParametersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBClusterParametersInput"}
	if s.DBClusterParameterGroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterParameterGroupName"))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBClusterParameterGroupName sets the DBClusterParameterGroupName field's value.
func (s *DescribeDBClusterParametersInput) SetDBClusterParameterGroupName(v string) *DescribeDBClusterParametersInput {
	s.DBClusterParameterGroupName = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBClusterParametersInput) SetMarker(v string) *DescribeDBClusterParametersInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBClusterParametersInput) SetMaxRecords(v int64) *DescribeDBClusterParametersInput {
	s.MaxRecords = &v
	return s
}

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

// Provides details about a DB cluster parameter group including the parameters
// in the DB cluster parameter group.
type DescribeDBClusterParametersOutput struct {
	_ struct{} `type:"structure"`

	// An optional pagination token provided by a previous DescribeDBClusterParameters
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// Provides a list of parameters for the DB cluster parameter group.
	Parameters []*Parameter `locationNameList:"Parameter" 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 DescribeDBClusterParametersOutput) 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 DescribeDBClusterParametersOutput) GoString() string {
	return s.String()
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBClusterParametersOutput) SetMarker(v string) *DescribeDBClusterParametersOutput {
	s.Marker = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *DescribeDBClusterParametersOutput) SetParameters(v []*Parameter) *DescribeDBClusterParametersOutput {
	s.Parameters = v
	return s
}

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

	// The identifier for the DB cluster snapshot to describe the attributes for.
	//
	// DBClusterSnapshotIdentifier is a required field
	DBClusterSnapshotIdentifier *string `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 DescribeDBClusterSnapshotAttributesInput) 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 DescribeDBClusterSnapshotAttributesInput) GoString() string {
	return s.String()
}

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

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

// SetDBClusterSnapshotIdentifier sets the DBClusterSnapshotIdentifier field's value.
func (s *DescribeDBClusterSnapshotAttributesInput) SetDBClusterSnapshotIdentifier(v string) *DescribeDBClusterSnapshotAttributesInput {
	s.DBClusterSnapshotIdentifier = &v
	return s
}

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

	// Contains the results of a successful call to the DescribeDBClusterSnapshotAttributes
	// API action.
	//
	// Manual DB cluster snapshot attributes are used to authorize other Amazon
	// Web Services accounts to copy or restore a manual DB cluster snapshot. For
	// more information, see the ModifyDBClusterSnapshotAttribute API action.
	DBClusterSnapshotAttributesResult *DBClusterSnapshotAttributesResult `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 DescribeDBClusterSnapshotAttributesOutput) 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 DescribeDBClusterSnapshotAttributesOutput) GoString() string {
	return s.String()
}

// SetDBClusterSnapshotAttributesResult sets the DBClusterSnapshotAttributesResult field's value.
func (s *DescribeDBClusterSnapshotAttributesOutput) SetDBClusterSnapshotAttributesResult(v *DBClusterSnapshotAttributesResult) *DescribeDBClusterSnapshotAttributesOutput {
	s.DBClusterSnapshotAttributesResult = v
	return s
}

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

	// The ID of the DB cluster to retrieve the list of DB cluster snapshots for.
	// This parameter can't be used in conjunction with the DBClusterSnapshotIdentifier
	// parameter. This parameter isn't case-sensitive.
	//
	// Constraints:
	//
	//    * If supplied, must match the identifier of an existing DBCluster.
	DBClusterIdentifier *string `type:"string"`

	// A specific DB cluster snapshot identifier to describe. This parameter can't
	// be used in conjunction with the DBClusterIdentifier parameter. This value
	// is stored as a lowercase string.
	//
	// Constraints:
	//
	//    * If supplied, must match the identifier of an existing DBClusterSnapshot.
	//
	//    * If this identifier is for an automated snapshot, the SnapshotType parameter
	//    must also be specified.
	DBClusterSnapshotIdentifier *string `type:"string"`

	// A specific DB cluster resource ID to describe.
	DbClusterResourceId *string `type:"string"`

	// A filter that specifies one or more DB cluster snapshots to describe.
	//
	// Supported filters:
	//
	//    * db-cluster-id - Accepts DB cluster identifiers and DB cluster Amazon
	//    Resource Names (ARNs).
	//
	//    * db-cluster-snapshot-id - Accepts DB cluster snapshot identifiers.
	//
	//    * snapshot-type - Accepts types of DB cluster snapshots.
	//
	//    * engine - Accepts names of database engines.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// Specifies whether to include manual DB cluster snapshots that are public
	// and can be copied or restored by any Amazon Web Services account. By default,
	// the public snapshots are not included.
	//
	// You can share a manual DB cluster snapshot as public by using the ModifyDBClusterSnapshotAttribute
	// API action.
	IncludePublic *bool `type:"boolean"`

	// Specifies whether to include shared manual DB cluster snapshots from other
	// Amazon Web Services accounts that this Amazon Web Services account has been
	// given permission to copy or restore. By default, these snapshots are not
	// included.
	//
	// You can give an Amazon Web Services account permission to restore a manual
	// DB cluster snapshot from another Amazon Web Services account by the ModifyDBClusterSnapshotAttribute
	// API action.
	IncludeShared *bool `type:"boolean"`

	// An optional pagination token provided by a previous DescribeDBClusterSnapshots
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `type:"integer"`

	// The type of DB cluster snapshots to be returned. You can specify one of the
	// following values:
	//
	//    * automated - Return all DB cluster snapshots that have been automatically
	//    taken by Amazon RDS for my Amazon Web Services account.
	//
	//    * manual - Return all DB cluster snapshots that have been taken by my
	//    Amazon Web Services account.
	//
	//    * shared - Return all manual DB cluster snapshots that have been shared
	//    to my Amazon Web Services account.
	//
	//    * public - Return all DB cluster snapshots that have been marked as public.
	//
	// If you don't specify a SnapshotType value, then both automated and manual
	// DB cluster snapshots are returned. You can include shared DB cluster snapshots
	// with these results by enabling the IncludeShared parameter. You can include
	// public DB cluster snapshots with these results by enabling the IncludePublic
	// parameter.
	//
	// The IncludeShared and IncludePublic parameters don't apply for SnapshotType
	// values of manual or automated. The IncludePublic parameter doesn't apply
	// when SnapshotType is set to shared. The IncludeShared parameter doesn't apply
	// when SnapshotType is set to public.
	SnapshotType *string `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 DescribeDBClusterSnapshotsInput) 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 DescribeDBClusterSnapshotsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBClusterSnapshotsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBClusterSnapshotsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *DescribeDBClusterSnapshotsInput) SetDBClusterIdentifier(v string) *DescribeDBClusterSnapshotsInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBClusterSnapshotIdentifier sets the DBClusterSnapshotIdentifier field's value.
func (s *DescribeDBClusterSnapshotsInput) SetDBClusterSnapshotIdentifier(v string) *DescribeDBClusterSnapshotsInput {
	s.DBClusterSnapshotIdentifier = &v
	return s
}

// SetDbClusterResourceId sets the DbClusterResourceId field's value.
func (s *DescribeDBClusterSnapshotsInput) SetDbClusterResourceId(v string) *DescribeDBClusterSnapshotsInput {
	s.DbClusterResourceId = &v
	return s
}

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

// SetIncludePublic sets the IncludePublic field's value.
func (s *DescribeDBClusterSnapshotsInput) SetIncludePublic(v bool) *DescribeDBClusterSnapshotsInput {
	s.IncludePublic = &v
	return s
}

// SetIncludeShared sets the IncludeShared field's value.
func (s *DescribeDBClusterSnapshotsInput) SetIncludeShared(v bool) *DescribeDBClusterSnapshotsInput {
	s.IncludeShared = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBClusterSnapshotsInput) SetMarker(v string) *DescribeDBClusterSnapshotsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBClusterSnapshotsInput) SetMaxRecords(v int64) *DescribeDBClusterSnapshotsInput {
	s.MaxRecords = &v
	return s
}

// SetSnapshotType sets the SnapshotType field's value.
func (s *DescribeDBClusterSnapshotsInput) SetSnapshotType(v string) *DescribeDBClusterSnapshotsInput {
	s.SnapshotType = &v
	return s
}

// Provides a list of DB cluster snapshots for the user as the result of a call
// to the DescribeDBClusterSnapshots action.
type DescribeDBClusterSnapshotsOutput struct {
	_ struct{} `type:"structure"`

	// Provides a list of DB cluster snapshots for the user.
	DBClusterSnapshots []*DBClusterSnapshot `locationNameList:"DBClusterSnapshot" type:"list"`

	// An optional pagination token provided by a previous DescribeDBClusterSnapshots
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `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 DescribeDBClusterSnapshotsOutput) 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 DescribeDBClusterSnapshotsOutput) GoString() string {
	return s.String()
}

// SetDBClusterSnapshots sets the DBClusterSnapshots field's value.
func (s *DescribeDBClusterSnapshotsOutput) SetDBClusterSnapshots(v []*DBClusterSnapshot) *DescribeDBClusterSnapshotsOutput {
	s.DBClusterSnapshots = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBClusterSnapshotsOutput) SetMarker(v string) *DescribeDBClusterSnapshotsOutput {
	s.Marker = &v
	return s
}

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

	// The user-supplied DB cluster identifier or the Amazon Resource Name (ARN)
	// of the DB cluster. If this parameter is specified, information for only the
	// specific DB cluster is returned. This parameter isn't case-sensitive.
	//
	// Constraints:
	//
	//    * If supplied, must match an existing DB cluster identifier.
	DBClusterIdentifier *string `type:"string"`

	// A filter that specifies one or more DB clusters to describe.
	//
	// Supported Filters:
	//
	//    * clone-group-id - Accepts clone group identifiers. The results list only
	//    includes information about the DB clusters associated with these clone
	//    groups.
	//
	//    * db-cluster-id - Accepts DB cluster identifiers and DB cluster Amazon
	//    Resource Names (ARNs). The results list only includes information about
	//    the DB clusters identified by these ARNs.
	//
	//    * db-cluster-resource-id - Accepts DB cluster resource identifiers. The
	//    results list will only include information about the DB clusters identified
	//    by these DB cluster resource identifiers.
	//
	//    * domain - Accepts Active Directory directory IDs. The results list only
	//    includes information about the DB clusters associated with these domains.
	//
	//    * engine - Accepts engine names. The results list only includes information
	//    about the DB clusters for these engines.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// Specifies whether the output includes information about clusters shared from
	// other Amazon Web Services accounts.
	IncludeShared *bool `type:"boolean"`

	// An optional pagination token provided by a previous DescribeDBClusters request.
	// If this parameter is specified, the response includes only records beyond
	// the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100
	MaxRecords *int64 `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 DescribeDBClustersInput) 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 DescribeDBClustersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBClustersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBClustersInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *DescribeDBClustersInput) SetDBClusterIdentifier(v string) *DescribeDBClustersInput {
	s.DBClusterIdentifier = &v
	return s
}

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

// SetIncludeShared sets the IncludeShared field's value.
func (s *DescribeDBClustersInput) SetIncludeShared(v bool) *DescribeDBClustersInput {
	s.IncludeShared = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBClustersInput) SetMarker(v string) *DescribeDBClustersInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBClustersInput) SetMaxRecords(v int64) *DescribeDBClustersInput {
	s.MaxRecords = &v
	return s
}

// Contains the result of a successful invocation of the DescribeDBClusters
// action.
type DescribeDBClustersOutput struct {
	_ struct{} `type:"structure"`

	// Contains a list of DB clusters for the user.
	DBClusters []*DBCluster `locationNameList:"DBCluster" type:"list"`

	// A pagination token that can be used in a later DescribeDBClusters request.
	Marker *string `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 DescribeDBClustersOutput) 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 DescribeDBClustersOutput) GoString() string {
	return s.String()
}

// SetDBClusters sets the DBClusters field's value.
func (s *DescribeDBClustersOutput) SetDBClusters(v []*DBCluster) *DescribeDBClustersOutput {
	s.DBClusters = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBClustersOutput) SetMarker(v string) *DescribeDBClustersOutput {
	s.Marker = &v
	return s
}

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

	// The name of a specific DB parameter group family to return details for.
	//
	// Constraints:
	//
	//    * If supplied, must match an existing DB parameter group family.
	DBParameterGroupFamily *string `type:"string"`

	// Specifies whether to return only the default version of the specified engine
	// or the engine and major version combination.
	DefaultOnly *bool `type:"boolean"`

	// The database engine to return version details for.
	//
	// Valid Values:
	//
	//    * aurora-mysql
	//
	//    * aurora-postgresql
	//
	//    * custom-oracle-ee
	//
	//    * custom-oracle-ee-cdb
	//
	//    * custom-oracle-se2
	//
	//    * custom-oracle-se2-cdb
	//
	//    * db2-ae
	//
	//    * db2-se
	//
	//    * mariadb
	//
	//    * mysql
	//
	//    * oracle-ee
	//
	//    * oracle-ee-cdb
	//
	//    * oracle-se2
	//
	//    * oracle-se2-cdb
	//
	//    * postgres
	//
	//    * sqlserver-ee
	//
	//    * sqlserver-se
	//
	//    * sqlserver-ex
	//
	//    * sqlserver-web
	Engine *string `type:"string"`

	// A specific database engine version to return details for.
	//
	// Example: 5.1.49
	EngineVersion *string `type:"string"`

	// A filter that specifies one or more DB engine versions to describe.
	//
	// Supported filters:
	//
	//    * db-parameter-group-family - Accepts parameter groups family names. The
	//    results list only includes information about the DB engine versions for
	//    these parameter group families.
	//
	//    * engine - Accepts engine names. The results list only includes information
	//    about the DB engine versions for these engines.
	//
	//    * engine-mode - Accepts DB engine modes. The results list only includes
	//    information about the DB engine versions for these engine modes. Valid
	//    DB engine modes are the following: global multimaster parallelquery provisioned
	//    serverless
	//
	//    * engine-version - Accepts engine versions. The results list only includes
	//    information about the DB engine versions for these engine versions.
	//
	//    * status - Accepts engine version statuses. The results list only includes
	//    information about the DB engine versions for these statuses. Valid statuses
	//    are the following: available deprecated
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// Specifies whether to also list the engine versions that aren't available.
	// The default is to list only available engine versions.
	IncludeAll *bool `type:"boolean"`

	// Specifies whether to list the supported character sets for each engine version.
	//
	// If this parameter is enabled and the requested engine supports the CharacterSetName
	// parameter for CreateDBInstance, the response includes a list of supported
	// character sets for each engine version.
	//
	// For RDS Custom, the default is not to list supported character sets. If you
	// enable this parameter, RDS Custom returns no results.
	ListSupportedCharacterSets *bool `type:"boolean"`

	// Specifies whether to list the supported time zones for each engine version.
	//
	// If this parameter is enabled and the requested engine supports the TimeZone
	// parameter for CreateDBInstance, the response includes a list of supported
	// time zones for each engine version.
	//
	// For RDS Custom, the default is not to list supported time zones. If you enable
	// this parameter, RDS Custom returns no results.
	ListSupportedTimezones *bool `type:"boolean"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more than the
	// MaxRecords value is available, a pagination token called a marker is included
	// in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `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 DescribeDBEngineVersionsInput) 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 DescribeDBEngineVersionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBEngineVersionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBEngineVersionsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBParameterGroupFamily sets the DBParameterGroupFamily field's value.
func (s *DescribeDBEngineVersionsInput) SetDBParameterGroupFamily(v string) *DescribeDBEngineVersionsInput {
	s.DBParameterGroupFamily = &v
	return s
}

// SetDefaultOnly sets the DefaultOnly field's value.
func (s *DescribeDBEngineVersionsInput) SetDefaultOnly(v bool) *DescribeDBEngineVersionsInput {
	s.DefaultOnly = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *DescribeDBEngineVersionsInput) SetEngine(v string) *DescribeDBEngineVersionsInput {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *DescribeDBEngineVersionsInput) SetEngineVersion(v string) *DescribeDBEngineVersionsInput {
	s.EngineVersion = &v
	return s
}

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

// SetIncludeAll sets the IncludeAll field's value.
func (s *DescribeDBEngineVersionsInput) SetIncludeAll(v bool) *DescribeDBEngineVersionsInput {
	s.IncludeAll = &v
	return s
}

// SetListSupportedCharacterSets sets the ListSupportedCharacterSets field's value.
func (s *DescribeDBEngineVersionsInput) SetListSupportedCharacterSets(v bool) *DescribeDBEngineVersionsInput {
	s.ListSupportedCharacterSets = &v
	return s
}

// SetListSupportedTimezones sets the ListSupportedTimezones field's value.
func (s *DescribeDBEngineVersionsInput) SetListSupportedTimezones(v bool) *DescribeDBEngineVersionsInput {
	s.ListSupportedTimezones = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBEngineVersionsInput) SetMarker(v string) *DescribeDBEngineVersionsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBEngineVersionsInput) SetMaxRecords(v int64) *DescribeDBEngineVersionsInput {
	s.MaxRecords = &v
	return s
}

// Contains the result of a successful invocation of the DescribeDBEngineVersions
// action.
type DescribeDBEngineVersionsOutput struct {
	_ struct{} `type:"structure"`

	// A list of DBEngineVersion elements.
	DBEngineVersions []*DBEngineVersion `locationNameList:"DBEngineVersion" type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `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 DescribeDBEngineVersionsOutput) 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 DescribeDBEngineVersionsOutput) GoString() string {
	return s.String()
}

// SetDBEngineVersions sets the DBEngineVersions field's value.
func (s *DescribeDBEngineVersionsOutput) SetDBEngineVersions(v []*DBEngineVersion) *DescribeDBEngineVersionsOutput {
	s.DBEngineVersions = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBEngineVersionsOutput) SetMarker(v string) *DescribeDBEngineVersionsOutput {
	s.Marker = &v
	return s
}

// Parameter input for DescribeDBInstanceAutomatedBackups.
type DescribeDBInstanceAutomatedBackupsInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the replicated automated backups, for example,
	// arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE.
	//
	// This setting doesn't apply to RDS Custom.
	DBInstanceAutomatedBackupsArn *string `type:"string"`

	// (Optional) The user-supplied instance identifier. If this parameter is specified,
	// it must match the identifier of an existing DB instance. It returns information
	// from the specific DB instance's automated backup. This parameter isn't case-sensitive.
	DBInstanceIdentifier *string `type:"string"`

	// The resource ID of the DB instance that is the source of the automated backup.
	// This parameter isn't case-sensitive.
	DbiResourceId *string `type:"string"`

	// A filter that specifies which resources to return based on status.
	//
	// Supported filters are the following:
	//
	//    * status active - Automated backups for current instances. creating -
	//    Automated backups that are waiting for the first automated snapshot to
	//    be available. retained - Automated backups for deleted instances and after
	//    backup replication is stopped.
	//
	//    * db-instance-id - Accepts DB instance identifiers and Amazon Resource
	//    Names (ARNs). The results list includes only information about the DB
	//    instance automated backups identified by these ARNs.
	//
	//    * dbi-resource-id - Accepts DB resource identifiers and Amazon Resource
	//    Names (ARNs). The results list includes only information about the DB
	//    instance resources identified by these ARNs.
	//
	// Returns all resources by default. The status for each resource is specified
	// in the response.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// The pagination token provided in the previous request. If this parameter
	// is specified the response includes only records beyond the marker, up to
	// MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	MaxRecords *int64 `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 DescribeDBInstanceAutomatedBackupsInput) 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 DescribeDBInstanceAutomatedBackupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBInstanceAutomatedBackupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBInstanceAutomatedBackupsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBInstanceAutomatedBackupsArn sets the DBInstanceAutomatedBackupsArn field's value.
func (s *DescribeDBInstanceAutomatedBackupsInput) SetDBInstanceAutomatedBackupsArn(v string) *DescribeDBInstanceAutomatedBackupsInput {
	s.DBInstanceAutomatedBackupsArn = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DescribeDBInstanceAutomatedBackupsInput) SetDBInstanceIdentifier(v string) *DescribeDBInstanceAutomatedBackupsInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDbiResourceId sets the DbiResourceId field's value.
func (s *DescribeDBInstanceAutomatedBackupsInput) SetDbiResourceId(v string) *DescribeDBInstanceAutomatedBackupsInput {
	s.DbiResourceId = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBInstanceAutomatedBackupsInput) SetMarker(v string) *DescribeDBInstanceAutomatedBackupsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBInstanceAutomatedBackupsInput) SetMaxRecords(v int64) *DescribeDBInstanceAutomatedBackupsInput {
	s.MaxRecords = &v
	return s
}

// Contains the result of a successful invocation of the DescribeDBInstanceAutomatedBackups
// action.
type DescribeDBInstanceAutomatedBackupsOutput struct {
	_ struct{} `type:"structure"`

	// A list of DBInstanceAutomatedBackup instances.
	DBInstanceAutomatedBackups []*DBInstanceAutomatedBackup `locationNameList:"DBInstanceAutomatedBackup" type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `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 DescribeDBInstanceAutomatedBackupsOutput) 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 DescribeDBInstanceAutomatedBackupsOutput) GoString() string {
	return s.String()
}

// SetDBInstanceAutomatedBackups sets the DBInstanceAutomatedBackups field's value.
func (s *DescribeDBInstanceAutomatedBackupsOutput) SetDBInstanceAutomatedBackups(v []*DBInstanceAutomatedBackup) *DescribeDBInstanceAutomatedBackupsOutput {
	s.DBInstanceAutomatedBackups = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBInstanceAutomatedBackupsOutput) SetMarker(v string) *DescribeDBInstanceAutomatedBackupsOutput {
	s.Marker = &v
	return s
}

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

	// The user-supplied instance identifier or the Amazon Resource Name (ARN) of
	// the DB instance. If this parameter is specified, information from only the
	// specific DB instance is returned. This parameter isn't case-sensitive.
	//
	// Constraints:
	//
	//    * If supplied, must match the identifier of an existing DB instance.
	DBInstanceIdentifier *string `type:"string"`

	// A filter that specifies one or more DB instances to describe.
	//
	// Supported Filters:
	//
	//    * db-cluster-id - Accepts DB cluster identifiers and DB cluster Amazon
	//    Resource Names (ARNs). The results list only includes information about
	//    the DB instances associated with the DB clusters identified by these ARNs.
	//
	//    * db-instance-id - Accepts DB instance identifiers and DB instance Amazon
	//    Resource Names (ARNs). The results list only includes information about
	//    the DB instances identified by these ARNs.
	//
	//    * dbi-resource-id - Accepts DB instance resource identifiers. The results
	//    list only includes information about the DB instances identified by these
	//    DB instance resource identifiers.
	//
	//    * domain - Accepts Active Directory directory IDs. The results list only
	//    includes information about the DB instances associated with these domains.
	//
	//    * engine - Accepts engine names. The results list only includes information
	//    about the DB instances for these engines.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeDBInstances request.
	// If this parameter is specified, the response includes only records beyond
	// the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `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 DescribeDBInstancesInput) 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 DescribeDBInstancesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBInstancesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBInstancesInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DescribeDBInstancesInput) SetDBInstanceIdentifier(v string) *DescribeDBInstancesInput {
	s.DBInstanceIdentifier = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBInstancesInput) SetMarker(v string) *DescribeDBInstancesInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBInstancesInput) SetMaxRecords(v int64) *DescribeDBInstancesInput {
	s.MaxRecords = &v
	return s
}

// Contains the result of a successful invocation of the DescribeDBInstances
// action.
type DescribeDBInstancesOutput struct {
	_ struct{} `type:"structure"`

	// A list of DBInstance instances.
	DBInstances []*DBInstance `locationNameList:"DBInstance" type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords .
	Marker *string `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 DescribeDBInstancesOutput) 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 DescribeDBInstancesOutput) GoString() string {
	return s.String()
}

// SetDBInstances sets the DBInstances field's value.
func (s *DescribeDBInstancesOutput) SetDBInstances(v []*DBInstance) *DescribeDBInstancesOutput {
	s.DBInstances = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBInstancesOutput) SetMarker(v string) *DescribeDBInstancesOutput {
	s.Marker = &v
	return s
}

// This data type is used as a response element to DescribeDBLogFiles.
type DescribeDBLogFilesDetails struct {
	_ struct{} `type:"structure"`

	// A POSIX timestamp when the last log entry was written.
	LastWritten *int64 `type:"long"`

	// The name of the log file for the specified DB instance.
	LogFileName *string `type:"string"`

	// The size, in bytes, of the log file for the specified DB instance.
	Size *int64 `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 DescribeDBLogFilesDetails) 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 DescribeDBLogFilesDetails) GoString() string {
	return s.String()
}

// SetLastWritten sets the LastWritten field's value.
func (s *DescribeDBLogFilesDetails) SetLastWritten(v int64) *DescribeDBLogFilesDetails {
	s.LastWritten = &v
	return s
}

// SetLogFileName sets the LogFileName field's value.
func (s *DescribeDBLogFilesDetails) SetLogFileName(v string) *DescribeDBLogFilesDetails {
	s.LogFileName = &v
	return s
}

// SetSize sets the Size field's value.
func (s *DescribeDBLogFilesDetails) SetSize(v int64) *DescribeDBLogFilesDetails {
	s.Size = &v
	return s
}

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

	// The customer-assigned name of the DB instance that contains the log files
	// you want to list.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DBInstance.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// Filters the available log files for files written since the specified date,
	// in POSIX timestamp format with milliseconds.
	FileLastWritten *int64 `type:"long"`

	// Filters the available log files for files larger than the specified size.
	FileSize *int64 `type:"long"`

	// Filters the available log files for log file names that contain the specified
	// string.
	FilenameContains *string `type:"string"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// The pagination token provided in the previous request. If this parameter
	// is specified the response includes only records beyond the marker, up to
	// MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so you can retrieve the remaining results.
	MaxRecords *int64 `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 DescribeDBLogFilesInput) 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 DescribeDBLogFilesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBLogFilesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBLogFilesInput"}
	if s.DBInstanceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBInstanceIdentifier"))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DescribeDBLogFilesInput) SetDBInstanceIdentifier(v string) *DescribeDBLogFilesInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetFileLastWritten sets the FileLastWritten field's value.
func (s *DescribeDBLogFilesInput) SetFileLastWritten(v int64) *DescribeDBLogFilesInput {
	s.FileLastWritten = &v
	return s
}

// SetFileSize sets the FileSize field's value.
func (s *DescribeDBLogFilesInput) SetFileSize(v int64) *DescribeDBLogFilesInput {
	s.FileSize = &v
	return s
}

// SetFilenameContains sets the FilenameContains field's value.
func (s *DescribeDBLogFilesInput) SetFilenameContains(v string) *DescribeDBLogFilesInput {
	s.FilenameContains = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBLogFilesInput) SetMarker(v string) *DescribeDBLogFilesInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBLogFilesInput) SetMaxRecords(v int64) *DescribeDBLogFilesInput {
	s.MaxRecords = &v
	return s
}

// The response from a call to DescribeDBLogFiles.
type DescribeDBLogFilesOutput struct {
	_ struct{} `type:"structure"`

	// The DB log files returned.
	DescribeDBLogFiles []*DescribeDBLogFilesDetails `locationNameList:"DescribeDBLogFilesDetails" type:"list"`

	// A pagination token that can be used in a later DescribeDBLogFiles request.
	Marker *string `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 DescribeDBLogFilesOutput) 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 DescribeDBLogFilesOutput) GoString() string {
	return s.String()
}

// SetDescribeDBLogFiles sets the DescribeDBLogFiles field's value.
func (s *DescribeDBLogFilesOutput) SetDescribeDBLogFiles(v []*DescribeDBLogFilesDetails) *DescribeDBLogFilesOutput {
	s.DescribeDBLogFiles = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBLogFilesOutput) SetMarker(v string) *DescribeDBLogFilesOutput {
	s.Marker = &v
	return s
}

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

	// The name of a specific DB parameter group to return details for.
	//
	// Constraints:
	//
	//    * If supplied, must match the name of an existing DBClusterParameterGroup.
	DBParameterGroupName *string `type:"string"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeDBParameterGroups
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `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 DescribeDBParameterGroupsInput) 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 DescribeDBParameterGroupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBParameterGroupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBParameterGroupsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *DescribeDBParameterGroupsInput) SetDBParameterGroupName(v string) *DescribeDBParameterGroupsInput {
	s.DBParameterGroupName = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBParameterGroupsInput) SetMarker(v string) *DescribeDBParameterGroupsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBParameterGroupsInput) SetMaxRecords(v int64) *DescribeDBParameterGroupsInput {
	s.MaxRecords = &v
	return s
}

// Contains the result of a successful invocation of the DescribeDBParameterGroups
// action.
type DescribeDBParameterGroupsOutput struct {
	_ struct{} `type:"structure"`

	// A list of DBParameterGroup instances.
	DBParameterGroups []*DBParameterGroup `locationNameList:"DBParameterGroup" type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `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 DescribeDBParameterGroupsOutput) 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 DescribeDBParameterGroupsOutput) GoString() string {
	return s.String()
}

// SetDBParameterGroups sets the DBParameterGroups field's value.
func (s *DescribeDBParameterGroupsOutput) SetDBParameterGroups(v []*DBParameterGroup) *DescribeDBParameterGroupsOutput {
	s.DBParameterGroups = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBParameterGroupsOutput) SetMarker(v string) *DescribeDBParameterGroupsOutput {
	s.Marker = &v
	return s
}

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

	// The name of a specific DB parameter group to return details for.
	//
	// Constraints:
	//
	//    * If supplied, must match the name of an existing DBParameterGroup.
	//
	// DBParameterGroupName is a required field
	DBParameterGroupName *string `type:"string" required:"true"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeDBParameters
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `type:"integer"`

	// The parameter types to return.
	//
	// Default: All parameter types returned
	//
	// Valid Values: user | system | engine-default
	Source *string `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 DescribeDBParametersInput) 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 DescribeDBParametersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBParametersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBParametersInput"}
	if s.DBParameterGroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBParameterGroupName"))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *DescribeDBParametersInput) SetDBParameterGroupName(v string) *DescribeDBParametersInput {
	s.DBParameterGroupName = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBParametersInput) SetMarker(v string) *DescribeDBParametersInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBParametersInput) SetMaxRecords(v int64) *DescribeDBParametersInput {
	s.MaxRecords = &v
	return s
}

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

// Contains the result of a successful invocation of the DescribeDBParameters
// action.
type DescribeDBParametersOutput struct {
	_ struct{} `type:"structure"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// A list of Parameter values.
	Parameters []*Parameter `locationNameList:"Parameter" 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 DescribeDBParametersOutput) 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 DescribeDBParametersOutput) GoString() string {
	return s.String()
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBParametersOutput) SetMarker(v string) *DescribeDBParametersOutput {
	s.Marker = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *DescribeDBParametersOutput) SetParameters(v []*Parameter) *DescribeDBParametersOutput {
	s.Parameters = v
	return s
}

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

	// The name of the DB proxy. If you omit this parameter, the output includes
	// information about all DB proxies owned by your Amazon Web Services account
	// ID.
	DBProxyName *string `type:"string"`

	// This parameter is not currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that the remaining results can be retrieved.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `min:"20" 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 DescribeDBProxiesInput) 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 DescribeDBProxiesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBProxiesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBProxiesInput"}
	if s.MaxRecords != nil && *s.MaxRecords < 20 {
		invalidParams.Add(request.NewErrParamMinValue("MaxRecords", 20))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBProxyName sets the DBProxyName field's value.
func (s *DescribeDBProxiesInput) SetDBProxyName(v string) *DescribeDBProxiesInput {
	s.DBProxyName = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBProxiesInput) SetMarker(v string) *DescribeDBProxiesInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBProxiesInput) SetMaxRecords(v int64) *DescribeDBProxiesInput {
	s.MaxRecords = &v
	return s
}

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

	// A return value representing an arbitrary number of DBProxy data structures.
	DBProxies []*DBProxy `type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `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 DescribeDBProxiesOutput) 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 DescribeDBProxiesOutput) GoString() string {
	return s.String()
}

// SetDBProxies sets the DBProxies field's value.
func (s *DescribeDBProxiesOutput) SetDBProxies(v []*DBProxy) *DescribeDBProxiesOutput {
	s.DBProxies = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBProxiesOutput) SetMarker(v string) *DescribeDBProxiesOutput {
	s.Marker = &v
	return s
}

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

	// The name of a DB proxy endpoint to describe. If you omit this parameter,
	// the output includes information about all DB proxy endpoints associated with
	// the specified proxy.
	DBProxyEndpointName *string `min:"1" type:"string"`

	// The name of the DB proxy whose endpoints you want to describe. If you omit
	// this parameter, the output includes information about all DB proxy endpoints
	// associated with all your DB proxies.
	DBProxyName *string `min:"1" type:"string"`

	// This parameter is not currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that the remaining results can be retrieved.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `min:"20" 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 DescribeDBProxyEndpointsInput) 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 DescribeDBProxyEndpointsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBProxyEndpointsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBProxyEndpointsInput"}
	if s.DBProxyEndpointName != nil && len(*s.DBProxyEndpointName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DBProxyEndpointName", 1))
	}
	if s.DBProxyName != nil && len(*s.DBProxyName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DBProxyName", 1))
	}
	if s.MaxRecords != nil && *s.MaxRecords < 20 {
		invalidParams.Add(request.NewErrParamMinValue("MaxRecords", 20))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBProxyEndpointName sets the DBProxyEndpointName field's value.
func (s *DescribeDBProxyEndpointsInput) SetDBProxyEndpointName(v string) *DescribeDBProxyEndpointsInput {
	s.DBProxyEndpointName = &v
	return s
}

// SetDBProxyName sets the DBProxyName field's value.
func (s *DescribeDBProxyEndpointsInput) SetDBProxyName(v string) *DescribeDBProxyEndpointsInput {
	s.DBProxyName = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBProxyEndpointsInput) SetMarker(v string) *DescribeDBProxyEndpointsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBProxyEndpointsInput) SetMaxRecords(v int64) *DescribeDBProxyEndpointsInput {
	s.MaxRecords = &v
	return s
}

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

	// The list of ProxyEndpoint objects returned by the API operation.
	DBProxyEndpoints []*DBProxyEndpoint `type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `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 DescribeDBProxyEndpointsOutput) 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 DescribeDBProxyEndpointsOutput) GoString() string {
	return s.String()
}

// SetDBProxyEndpoints sets the DBProxyEndpoints field's value.
func (s *DescribeDBProxyEndpointsOutput) SetDBProxyEndpoints(v []*DBProxyEndpoint) *DescribeDBProxyEndpointsOutput {
	s.DBProxyEndpoints = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBProxyEndpointsOutput) SetMarker(v string) *DescribeDBProxyEndpointsOutput {
	s.Marker = &v
	return s
}

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

	// The identifier of the DBProxy associated with the target group.
	//
	// DBProxyName is a required field
	DBProxyName *string `type:"string" required:"true"`

	// This parameter is not currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that the remaining results can be retrieved.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `min:"20" type:"integer"`

	// The identifier of the DBProxyTargetGroup to describe.
	TargetGroupName *string `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 DescribeDBProxyTargetGroupsInput) 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 DescribeDBProxyTargetGroupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBProxyTargetGroupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBProxyTargetGroupsInput"}
	if s.DBProxyName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBProxyName"))
	}
	if s.MaxRecords != nil && *s.MaxRecords < 20 {
		invalidParams.Add(request.NewErrParamMinValue("MaxRecords", 20))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBProxyName sets the DBProxyName field's value.
func (s *DescribeDBProxyTargetGroupsInput) SetDBProxyName(v string) *DescribeDBProxyTargetGroupsInput {
	s.DBProxyName = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBProxyTargetGroupsInput) SetMarker(v string) *DescribeDBProxyTargetGroupsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBProxyTargetGroupsInput) SetMaxRecords(v int64) *DescribeDBProxyTargetGroupsInput {
	s.MaxRecords = &v
	return s
}

// SetTargetGroupName sets the TargetGroupName field's value.
func (s *DescribeDBProxyTargetGroupsInput) SetTargetGroupName(v string) *DescribeDBProxyTargetGroupsInput {
	s.TargetGroupName = &v
	return s
}

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

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// An arbitrary number of DBProxyTargetGroup objects, containing details of
	// the corresponding target groups.
	TargetGroups []*DBProxyTargetGroup `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 DescribeDBProxyTargetGroupsOutput) 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 DescribeDBProxyTargetGroupsOutput) GoString() string {
	return s.String()
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBProxyTargetGroupsOutput) SetMarker(v string) *DescribeDBProxyTargetGroupsOutput {
	s.Marker = &v
	return s
}

// SetTargetGroups sets the TargetGroups field's value.
func (s *DescribeDBProxyTargetGroupsOutput) SetTargetGroups(v []*DBProxyTargetGroup) *DescribeDBProxyTargetGroupsOutput {
	s.TargetGroups = v
	return s
}

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

	// The identifier of the DBProxyTarget to describe.
	//
	// DBProxyName is a required field
	DBProxyName *string `type:"string" required:"true"`

	// This parameter is not currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that the remaining results can be retrieved.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `min:"20" type:"integer"`

	// The identifier of the DBProxyTargetGroup to describe.
	TargetGroupName *string `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 DescribeDBProxyTargetsInput) 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 DescribeDBProxyTargetsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBProxyTargetsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBProxyTargetsInput"}
	if s.DBProxyName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBProxyName"))
	}
	if s.MaxRecords != nil && *s.MaxRecords < 20 {
		invalidParams.Add(request.NewErrParamMinValue("MaxRecords", 20))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBProxyName sets the DBProxyName field's value.
func (s *DescribeDBProxyTargetsInput) SetDBProxyName(v string) *DescribeDBProxyTargetsInput {
	s.DBProxyName = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBProxyTargetsInput) SetMarker(v string) *DescribeDBProxyTargetsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBProxyTargetsInput) SetMaxRecords(v int64) *DescribeDBProxyTargetsInput {
	s.MaxRecords = &v
	return s
}

// SetTargetGroupName sets the TargetGroupName field's value.
func (s *DescribeDBProxyTargetsInput) SetTargetGroupName(v string) *DescribeDBProxyTargetsInput {
	s.TargetGroupName = &v
	return s
}

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

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// An arbitrary number of DBProxyTarget objects, containing details of the corresponding
	// targets.
	Targets []*DBProxyTarget `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 DescribeDBProxyTargetsOutput) 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 DescribeDBProxyTargetsOutput) GoString() string {
	return s.String()
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBProxyTargetsOutput) SetMarker(v string) *DescribeDBProxyTargetsOutput {
	s.Marker = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *DescribeDBProxyTargetsOutput) SetTargets(v []*DBProxyTarget) *DescribeDBProxyTargetsOutput {
	s.Targets = v
	return s
}

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

	// A filter that specifies one or more recommendations to describe.
	//
	// Supported Filters:
	//
	//    * recommendation-id - Accepts a list of recommendation identifiers. The
	//    results list only includes the recommendations whose identifier is one
	//    of the specified filter values.
	//
	//    * status - Accepts a list of recommendation statuses. Valid values: active
	//    - The recommendations which are ready for you to apply. pending - The
	//    applied or scheduled recommendations which are in progress. resolved -
	//    The recommendations which are completed. dismissed - The recommendations
	//    that you dismissed. The results list only includes the recommendations
	//    whose status is one of the specified filter values.
	//
	//    * severity - Accepts a list of recommendation severities. The results
	//    list only includes the recommendations whose severity is one of the specified
	//    filter values. Valid values: high medium low informational
	//
	//    * type-id - Accepts a list of recommendation type identifiers. The results
	//    list only includes the recommendations whose type is one of the specified
	//    filter values.
	//
	//    * dbi-resource-id - Accepts a list of database resource identifiers. The
	//    results list only includes the recommendations that generated for the
	//    specified databases.
	//
	//    * cluster-resource-id - Accepts a list of cluster resource identifiers.
	//    The results list only includes the recommendations that generated for
	//    the specified clusters.
	//
	//    * pg-arn - Accepts a list of parameter group ARNs. The results list only
	//    includes the recommendations that generated for the specified parameter
	//    groups.
	//
	//    * cluster-pg-arn - Accepts a list of cluster parameter group ARNs. The
	//    results list only includes the recommendations that generated for the
	//    specified cluster parameter groups.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// A filter to include only the recommendations that were updated after this
	// specified time.
	LastUpdatedAfter *time.Time `type:"timestamp"`

	// A filter to include only the recommendations that were updated before this
	// specified time.
	LastUpdatedBefore *time.Time `type:"timestamp"`

	// The language that you choose to return the list of recommendations.
	//
	// Valid values:
	//
	//    * en
	//
	//    * en_UK
	//
	//    * de
	//
	//    * es
	//
	//    * fr
	//
	//    * id
	//
	//    * it
	//
	//    * ja
	//
	//    * ko
	//
	//    * pt_BR
	//
	//    * zh_TW
	//
	//    * zh_CN
	Locale *string `type:"string"`

	// An optional pagination token provided by a previous DescribeDBRecommendations
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of recommendations to include in the response. If more
	// records exist than the specified MaxRecords value, a pagination token called
	// a marker is included in the response so that you can retrieve the remaining
	// results.
	MaxRecords *int64 `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 DescribeDBRecommendationsInput) 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 DescribeDBRecommendationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBRecommendationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBRecommendationsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

// SetLastUpdatedAfter sets the LastUpdatedAfter field's value.
func (s *DescribeDBRecommendationsInput) SetLastUpdatedAfter(v time.Time) *DescribeDBRecommendationsInput {
	s.LastUpdatedAfter = &v
	return s
}

// SetLastUpdatedBefore sets the LastUpdatedBefore field's value.
func (s *DescribeDBRecommendationsInput) SetLastUpdatedBefore(v time.Time) *DescribeDBRecommendationsInput {
	s.LastUpdatedBefore = &v
	return s
}

// SetLocale sets the Locale field's value.
func (s *DescribeDBRecommendationsInput) SetLocale(v string) *DescribeDBRecommendationsInput {
	s.Locale = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBRecommendationsInput) SetMarker(v string) *DescribeDBRecommendationsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBRecommendationsInput) SetMaxRecords(v int64) *DescribeDBRecommendationsInput {
	s.MaxRecords = &v
	return s
}

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

	// A list of recommendations which is returned from DescribeDBRecommendations
	// API request.
	DBRecommendations []*DBRecommendation `type:"list"`

	// An optional pagination token provided by a previous DBRecommendationsMessage
	// request. This token can be used later in a DescribeDBRecomendations request.
	Marker *string `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 DescribeDBRecommendationsOutput) 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 DescribeDBRecommendationsOutput) GoString() string {
	return s.String()
}

// SetDBRecommendations sets the DBRecommendations field's value.
func (s *DescribeDBRecommendationsOutput) SetDBRecommendations(v []*DBRecommendation) *DescribeDBRecommendationsOutput {
	s.DBRecommendations = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBRecommendationsOutput) SetMarker(v string) *DescribeDBRecommendationsOutput {
	s.Marker = &v
	return s
}

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

	// The name of the DB security group to return details for.
	DBSecurityGroupName *string `type:"string"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeDBSecurityGroups
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `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 DescribeDBSecurityGroupsInput) 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 DescribeDBSecurityGroupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBSecurityGroupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBSecurityGroupsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBSecurityGroupName sets the DBSecurityGroupName field's value.
func (s *DescribeDBSecurityGroupsInput) SetDBSecurityGroupName(v string) *DescribeDBSecurityGroupsInput {
	s.DBSecurityGroupName = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBSecurityGroupsInput) SetMarker(v string) *DescribeDBSecurityGroupsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBSecurityGroupsInput) SetMaxRecords(v int64) *DescribeDBSecurityGroupsInput {
	s.MaxRecords = &v
	return s
}

// Contains the result of a successful invocation of the DescribeDBSecurityGroups
// action.
type DescribeDBSecurityGroupsOutput struct {
	_ struct{} `type:"structure"`

	// A list of DBSecurityGroup instances.
	DBSecurityGroups []*DBSecurityGroup `locationNameList:"DBSecurityGroup" type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `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 DescribeDBSecurityGroupsOutput) 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 DescribeDBSecurityGroupsOutput) GoString() string {
	return s.String()
}

// SetDBSecurityGroups sets the DBSecurityGroups field's value.
func (s *DescribeDBSecurityGroupsOutput) SetDBSecurityGroups(v []*DBSecurityGroup) *DescribeDBSecurityGroupsOutput {
	s.DBSecurityGroups = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBSecurityGroupsOutput) SetMarker(v string) *DescribeDBSecurityGroupsOutput {
	s.Marker = &v
	return s
}

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

	// The user-supplied DB shard group identifier or the Amazon Resource Name (ARN)
	// of the DB shard group. If this parameter is specified, information for only
	// the specific DB shard group is returned. This parameter isn't case-sensitive.
	//
	// Constraints:
	//
	//    * If supplied, must match an existing DB shard group identifier.
	DBShardGroupIdentifier *string `min:"1" type:"string"`

	// A filter that specifies one or more DB shard groups to describe.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeDBShardGroups
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100
	MaxRecords *int64 `min:"20" 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 DescribeDBShardGroupsInput) 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 DescribeDBShardGroupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBShardGroupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBShardGroupsInput"}
	if s.DBShardGroupIdentifier != nil && len(*s.DBShardGroupIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DBShardGroupIdentifier", 1))
	}
	if s.MaxRecords != nil && *s.MaxRecords < 20 {
		invalidParams.Add(request.NewErrParamMinValue("MaxRecords", 20))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBShardGroupIdentifier sets the DBShardGroupIdentifier field's value.
func (s *DescribeDBShardGroupsInput) SetDBShardGroupIdentifier(v string) *DescribeDBShardGroupsInput {
	s.DBShardGroupIdentifier = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBShardGroupsInput) SetMarker(v string) *DescribeDBShardGroupsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBShardGroupsInput) SetMaxRecords(v int64) *DescribeDBShardGroupsInput {
	s.MaxRecords = &v
	return s
}

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

	// Contains a list of DB shard groups for the user.
	DBShardGroups []*DBShardGroup `locationNameList:"DBShardGroup" type:"list"`

	// A pagination token that can be used in a later DescribeDBClusters request.
	Marker *string `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 DescribeDBShardGroupsOutput) 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 DescribeDBShardGroupsOutput) GoString() string {
	return s.String()
}

// SetDBShardGroups sets the DBShardGroups field's value.
func (s *DescribeDBShardGroupsOutput) SetDBShardGroups(v []*DBShardGroup) *DescribeDBShardGroupsOutput {
	s.DBShardGroups = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBShardGroupsOutput) SetMarker(v string) *DescribeDBShardGroupsOutput {
	s.Marker = &v
	return s
}

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

	// The identifier for the DB snapshot to describe the attributes for.
	//
	// DBSnapshotIdentifier is a required field
	DBSnapshotIdentifier *string `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 DescribeDBSnapshotAttributesInput) 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 DescribeDBSnapshotAttributesInput) GoString() string {
	return s.String()
}

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

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

// SetDBSnapshotIdentifier sets the DBSnapshotIdentifier field's value.
func (s *DescribeDBSnapshotAttributesInput) SetDBSnapshotIdentifier(v string) *DescribeDBSnapshotAttributesInput {
	s.DBSnapshotIdentifier = &v
	return s
}

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

	// Contains the results of a successful call to the DescribeDBSnapshotAttributes
	// API action.
	//
	// Manual DB snapshot attributes are used to authorize other Amazon Web Services
	// accounts to copy or restore a manual DB snapshot. For more information, see
	// the ModifyDBSnapshotAttribute API action.
	DBSnapshotAttributesResult *DBSnapshotAttributesResult `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 DescribeDBSnapshotAttributesOutput) 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 DescribeDBSnapshotAttributesOutput) GoString() string {
	return s.String()
}

// SetDBSnapshotAttributesResult sets the DBSnapshotAttributesResult field's value.
func (s *DescribeDBSnapshotAttributesOutput) SetDBSnapshotAttributesResult(v *DBSnapshotAttributesResult) *DescribeDBSnapshotAttributesOutput {
	s.DBSnapshotAttributesResult = v
	return s
}

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

	// The ID of the DB instance used to create the DB snapshots. This parameter
	// isn't case-sensitive.
	//
	// Constraints:
	//
	//    * If supplied, must match the identifier of an existing DBInstance.
	DBInstanceIdentifier *string `type:"string"`

	// The ID of a DB snapshot that contains the tenant databases to describe. This
	// value is stored as a lowercase string.
	//
	// Constraints:
	//
	//    * If you specify this parameter, the value must match the ID of an existing
	//    DB snapshot.
	//
	//    * If you specify an automatic snapshot, you must also specify SnapshotType.
	DBSnapshotIdentifier *string `type:"string"`

	// A specific DB resource identifier to describe.
	DbiResourceId *string `type:"string"`

	// A filter that specifies one or more tenant databases to describe.
	//
	// Supported filters:
	//
	//    * tenant-db-name - Tenant database names. The results list only includes
	//    information about the tenant databases that match these tenant DB names.
	//
	//    * tenant-database-resource-id - Tenant database resource identifiers.
	//    The results list only includes information about the tenant databases
	//    contained within the DB snapshots.
	//
	//    * dbi-resource-id - DB instance resource identifiers. The results list
	//    only includes information about snapshots containing tenant databases
	//    contained within the DB instances identified by these resource identifiers.
	//
	//    * db-instance-id - Accepts DB instance identifiers and DB instance Amazon
	//    Resource Names (ARNs).
	//
	//    * db-snapshot-id - Accepts DB snapshot identifiers.
	//
	//    * snapshot-type - Accepts types of DB snapshots.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeDBSnapshotTenantDatabases
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	MaxRecords *int64 `type:"integer"`

	// The type of DB snapshots to be returned. You can specify one of the following
	// values:
	//
	//    * automated – All DB snapshots that have been automatically taken by
	//    Amazon RDS for my Amazon Web Services account.
	//
	//    * manual – All DB snapshots that have been taken by my Amazon Web Services
	//    account.
	//
	//    * shared – All manual DB snapshots that have been shared to my Amazon
	//    Web Services account.
	//
	//    * public – All DB snapshots that have been marked as public.
	//
	//    * awsbackup – All DB snapshots managed by the Amazon Web Services Backup
	//    service.
	SnapshotType *string `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 DescribeDBSnapshotTenantDatabasesInput) 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 DescribeDBSnapshotTenantDatabasesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBSnapshotTenantDatabasesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBSnapshotTenantDatabasesInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DescribeDBSnapshotTenantDatabasesInput) SetDBInstanceIdentifier(v string) *DescribeDBSnapshotTenantDatabasesInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDBSnapshotIdentifier sets the DBSnapshotIdentifier field's value.
func (s *DescribeDBSnapshotTenantDatabasesInput) SetDBSnapshotIdentifier(v string) *DescribeDBSnapshotTenantDatabasesInput {
	s.DBSnapshotIdentifier = &v
	return s
}

// SetDbiResourceId sets the DbiResourceId field's value.
func (s *DescribeDBSnapshotTenantDatabasesInput) SetDbiResourceId(v string) *DescribeDBSnapshotTenantDatabasesInput {
	s.DbiResourceId = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBSnapshotTenantDatabasesInput) SetMarker(v string) *DescribeDBSnapshotTenantDatabasesInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBSnapshotTenantDatabasesInput) SetMaxRecords(v int64) *DescribeDBSnapshotTenantDatabasesInput {
	s.MaxRecords = &v
	return s
}

// SetSnapshotType sets the SnapshotType field's value.
func (s *DescribeDBSnapshotTenantDatabasesInput) SetSnapshotType(v string) *DescribeDBSnapshotTenantDatabasesInput {
	s.SnapshotType = &v
	return s
}

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

	// A list of DB snapshot tenant databases.
	DBSnapshotTenantDatabases []*DBSnapshotTenantDatabase `locationNameList:"DBSnapshotTenantDatabase" type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `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 DescribeDBSnapshotTenantDatabasesOutput) 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 DescribeDBSnapshotTenantDatabasesOutput) GoString() string {
	return s.String()
}

// SetDBSnapshotTenantDatabases sets the DBSnapshotTenantDatabases field's value.
func (s *DescribeDBSnapshotTenantDatabasesOutput) SetDBSnapshotTenantDatabases(v []*DBSnapshotTenantDatabase) *DescribeDBSnapshotTenantDatabasesOutput {
	s.DBSnapshotTenantDatabases = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBSnapshotTenantDatabasesOutput) SetMarker(v string) *DescribeDBSnapshotTenantDatabasesOutput {
	s.Marker = &v
	return s
}

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

	// The ID of the DB instance to retrieve the list of DB snapshots for. This
	// parameter isn't case-sensitive.
	//
	// Constraints:
	//
	//    * If supplied, must match the identifier of an existing DBInstance.
	DBInstanceIdentifier *string `type:"string"`

	// A specific DB snapshot identifier to describe. This value is stored as a
	// lowercase string.
	//
	// Constraints:
	//
	//    * If supplied, must match the identifier of an existing DBSnapshot.
	//
	//    * If this identifier is for an automated snapshot, the SnapshotType parameter
	//    must also be specified.
	DBSnapshotIdentifier *string `type:"string"`

	// A specific DB resource ID to describe.
	DbiResourceId *string `type:"string"`

	// A filter that specifies one or more DB snapshots to describe.
	//
	// Supported filters:
	//
	//    * db-instance-id - Accepts DB instance identifiers and DB instance Amazon
	//    Resource Names (ARNs).
	//
	//    * db-snapshot-id - Accepts DB snapshot identifiers.
	//
	//    * dbi-resource-id - Accepts identifiers of source DB instances.
	//
	//    * snapshot-type - Accepts types of DB snapshots.
	//
	//    * engine - Accepts names of database engines.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// Specifies whether to include manual DB cluster snapshots that are public
	// and can be copied or restored by any Amazon Web Services account. By default,
	// the public snapshots are not included.
	//
	// You can share a manual DB snapshot as public by using the ModifyDBSnapshotAttribute
	// API.
	//
	// This setting doesn't apply to RDS Custom.
	IncludePublic *bool `type:"boolean"`

	// Specifies whether to include shared manual DB cluster snapshots from other
	// Amazon Web Services accounts that this Amazon Web Services account has been
	// given permission to copy or restore. By default, these snapshots are not
	// included.
	//
	// You can give an Amazon Web Services account permission to restore a manual
	// DB snapshot from another Amazon Web Services account by using the ModifyDBSnapshotAttribute
	// API action.
	//
	// This setting doesn't apply to RDS Custom.
	IncludeShared *bool `type:"boolean"`

	// An optional pagination token provided by a previous DescribeDBSnapshots request.
	// If this parameter is specified, the response includes only records beyond
	// the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `type:"integer"`

	// The type of snapshots to be returned. You can specify one of the following
	// values:
	//
	//    * automated - Return all DB snapshots that have been automatically taken
	//    by Amazon RDS for my Amazon Web Services account.
	//
	//    * manual - Return all DB snapshots that have been taken by my Amazon Web
	//    Services account.
	//
	//    * shared - Return all manual DB snapshots that have been shared to my
	//    Amazon Web Services account.
	//
	//    * public - Return all DB snapshots that have been marked as public.
	//
	//    * awsbackup - Return the DB snapshots managed by the Amazon Web Services
	//    Backup service. For information about Amazon Web Services Backup, see
	//    the Amazon Web Services Backup Developer Guide. (https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html)
	//    The awsbackup type does not apply to Aurora.
	//
	// If you don't specify a SnapshotType value, then both automated and manual
	// snapshots are returned. Shared and public DB snapshots are not included in
	// the returned results by default. You can include shared snapshots with these
	// results by enabling the IncludeShared parameter. You can include public snapshots
	// with these results by enabling the IncludePublic parameter.
	//
	// The IncludeShared and IncludePublic parameters don't apply for SnapshotType
	// values of manual or automated. The IncludePublic parameter doesn't apply
	// when SnapshotType is set to shared. The IncludeShared parameter doesn't apply
	// when SnapshotType is set to public.
	SnapshotType *string `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 DescribeDBSnapshotsInput) 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 DescribeDBSnapshotsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBSnapshotsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBSnapshotsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DescribeDBSnapshotsInput) SetDBInstanceIdentifier(v string) *DescribeDBSnapshotsInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDBSnapshotIdentifier sets the DBSnapshotIdentifier field's value.
func (s *DescribeDBSnapshotsInput) SetDBSnapshotIdentifier(v string) *DescribeDBSnapshotsInput {
	s.DBSnapshotIdentifier = &v
	return s
}

// SetDbiResourceId sets the DbiResourceId field's value.
func (s *DescribeDBSnapshotsInput) SetDbiResourceId(v string) *DescribeDBSnapshotsInput {
	s.DbiResourceId = &v
	return s
}

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

// SetIncludePublic sets the IncludePublic field's value.
func (s *DescribeDBSnapshotsInput) SetIncludePublic(v bool) *DescribeDBSnapshotsInput {
	s.IncludePublic = &v
	return s
}

// SetIncludeShared sets the IncludeShared field's value.
func (s *DescribeDBSnapshotsInput) SetIncludeShared(v bool) *DescribeDBSnapshotsInput {
	s.IncludeShared = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBSnapshotsInput) SetMarker(v string) *DescribeDBSnapshotsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBSnapshotsInput) SetMaxRecords(v int64) *DescribeDBSnapshotsInput {
	s.MaxRecords = &v
	return s
}

// SetSnapshotType sets the SnapshotType field's value.
func (s *DescribeDBSnapshotsInput) SetSnapshotType(v string) *DescribeDBSnapshotsInput {
	s.SnapshotType = &v
	return s
}

// Contains the result of a successful invocation of the DescribeDBSnapshots
// action.
type DescribeDBSnapshotsOutput struct {
	_ struct{} `type:"structure"`

	// A list of DBSnapshot instances.
	DBSnapshots []*DBSnapshot `locationNameList:"DBSnapshot" type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `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 DescribeDBSnapshotsOutput) 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 DescribeDBSnapshotsOutput) GoString() string {
	return s.String()
}

// SetDBSnapshots sets the DBSnapshots field's value.
func (s *DescribeDBSnapshotsOutput) SetDBSnapshots(v []*DBSnapshot) *DescribeDBSnapshotsOutput {
	s.DBSnapshots = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBSnapshotsOutput) SetMarker(v string) *DescribeDBSnapshotsOutput {
	s.Marker = &v
	return s
}

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

	// The name of the DB subnet group to return details for.
	DBSubnetGroupName *string `type:"string"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeDBSubnetGroups
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `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 DescribeDBSubnetGroupsInput) 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 DescribeDBSubnetGroupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDBSubnetGroupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDBSubnetGroupsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *DescribeDBSubnetGroupsInput) SetDBSubnetGroupName(v string) *DescribeDBSubnetGroupsInput {
	s.DBSubnetGroupName = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeDBSubnetGroupsInput) SetMarker(v string) *DescribeDBSubnetGroupsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeDBSubnetGroupsInput) SetMaxRecords(v int64) *DescribeDBSubnetGroupsInput {
	s.MaxRecords = &v
	return s
}

// Contains the result of a successful invocation of the DescribeDBSubnetGroups
// action.
type DescribeDBSubnetGroupsOutput struct {
	_ struct{} `type:"structure"`

	// A list of DBSubnetGroup instances.
	DBSubnetGroups []*DBSubnetGroup `locationNameList:"DBSubnetGroup" type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `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 DescribeDBSubnetGroupsOutput) 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 DescribeDBSubnetGroupsOutput) GoString() string {
	return s.String()
}

// SetDBSubnetGroups sets the DBSubnetGroups field's value.
func (s *DescribeDBSubnetGroupsOutput) SetDBSubnetGroups(v []*DBSubnetGroup) *DescribeDBSubnetGroupsOutput {
	s.DBSubnetGroups = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeDBSubnetGroupsOutput) SetMarker(v string) *DescribeDBSubnetGroupsOutput {
	s.Marker = &v
	return s
}

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

	// The name of the DB cluster parameter group family to return engine parameter
	// information for.
	//
	// DBParameterGroupFamily is a required field
	DBParameterGroupFamily *string `type:"string" required:"true"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeEngineDefaultClusterParameters
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `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 DescribeEngineDefaultClusterParametersInput) 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 DescribeEngineDefaultClusterParametersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeEngineDefaultClusterParametersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeEngineDefaultClusterParametersInput"}
	if s.DBParameterGroupFamily == nil {
		invalidParams.Add(request.NewErrParamRequired("DBParameterGroupFamily"))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBParameterGroupFamily sets the DBParameterGroupFamily field's value.
func (s *DescribeEngineDefaultClusterParametersInput) SetDBParameterGroupFamily(v string) *DescribeEngineDefaultClusterParametersInput {
	s.DBParameterGroupFamily = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeEngineDefaultClusterParametersInput) SetMarker(v string) *DescribeEngineDefaultClusterParametersInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeEngineDefaultClusterParametersInput) SetMaxRecords(v int64) *DescribeEngineDefaultClusterParametersInput {
	s.MaxRecords = &v
	return s
}

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

	// Contains the result of a successful invocation of the DescribeEngineDefaultParameters
	// action.
	EngineDefaults *EngineDefaults `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 DescribeEngineDefaultClusterParametersOutput) 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 DescribeEngineDefaultClusterParametersOutput) GoString() string {
	return s.String()
}

// SetEngineDefaults sets the EngineDefaults field's value.
func (s *DescribeEngineDefaultClusterParametersOutput) SetEngineDefaults(v *EngineDefaults) *DescribeEngineDefaultClusterParametersOutput {
	s.EngineDefaults = v
	return s
}

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

	// The name of the DB parameter group family.
	//
	// Valid Values:
	//
	//    * aurora-mysql5.7
	//
	//    * aurora-mysql8.0
	//
	//    * aurora-postgresql10
	//
	//    * aurora-postgresql11
	//
	//    * aurora-postgresql12
	//
	//    * aurora-postgresql13
	//
	//    * aurora-postgresql14
	//
	//    * custom-oracle-ee-19
	//
	//    * custom-oracle-ee-cdb-19
	//
	//    * db2-ae
	//
	//    * db2-se
	//
	//    * mariadb10.2
	//
	//    * mariadb10.3
	//
	//    * mariadb10.4
	//
	//    * mariadb10.5
	//
	//    * mariadb10.6
	//
	//    * mysql5.7
	//
	//    * mysql8.0
	//
	//    * oracle-ee-19
	//
	//    * oracle-ee-cdb-19
	//
	//    * oracle-ee-cdb-21
	//
	//    * oracle-se2-19
	//
	//    * oracle-se2-cdb-19
	//
	//    * oracle-se2-cdb-21
	//
	//    * postgres10
	//
	//    * postgres11
	//
	//    * postgres12
	//
	//    * postgres13
	//
	//    * postgres14
	//
	//    * sqlserver-ee-11.0
	//
	//    * sqlserver-ee-12.0
	//
	//    * sqlserver-ee-13.0
	//
	//    * sqlserver-ee-14.0
	//
	//    * sqlserver-ee-15.0
	//
	//    * sqlserver-ex-11.0
	//
	//    * sqlserver-ex-12.0
	//
	//    * sqlserver-ex-13.0
	//
	//    * sqlserver-ex-14.0
	//
	//    * sqlserver-ex-15.0
	//
	//    * sqlserver-se-11.0
	//
	//    * sqlserver-se-12.0
	//
	//    * sqlserver-se-13.0
	//
	//    * sqlserver-se-14.0
	//
	//    * sqlserver-se-15.0
	//
	//    * sqlserver-web-11.0
	//
	//    * sqlserver-web-12.0
	//
	//    * sqlserver-web-13.0
	//
	//    * sqlserver-web-14.0
	//
	//    * sqlserver-web-15.0
	//
	// DBParameterGroupFamily is a required field
	DBParameterGroupFamily *string `type:"string" required:"true"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeEngineDefaultParameters
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `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 DescribeEngineDefaultParametersInput) 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 DescribeEngineDefaultParametersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeEngineDefaultParametersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeEngineDefaultParametersInput"}
	if s.DBParameterGroupFamily == nil {
		invalidParams.Add(request.NewErrParamRequired("DBParameterGroupFamily"))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBParameterGroupFamily sets the DBParameterGroupFamily field's value.
func (s *DescribeEngineDefaultParametersInput) SetDBParameterGroupFamily(v string) *DescribeEngineDefaultParametersInput {
	s.DBParameterGroupFamily = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeEngineDefaultParametersInput) SetMarker(v string) *DescribeEngineDefaultParametersInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeEngineDefaultParametersInput) SetMaxRecords(v int64) *DescribeEngineDefaultParametersInput {
	s.MaxRecords = &v
	return s
}

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

	// Contains the result of a successful invocation of the DescribeEngineDefaultParameters
	// action.
	EngineDefaults *EngineDefaults `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 DescribeEngineDefaultParametersOutput) 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 DescribeEngineDefaultParametersOutput) GoString() string {
	return s.String()
}

// SetEngineDefaults sets the EngineDefaults field's value.
func (s *DescribeEngineDefaultParametersOutput) SetEngineDefaults(v *EngineDefaults) *DescribeEngineDefaultParametersOutput {
	s.EngineDefaults = v
	return s
}

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

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// The type of source that is generating the events. For RDS Proxy events, specify
	// db-proxy.
	//
	// Valid Values: db-instance | db-cluster | db-parameter-group | db-security-group
	// | db-snapshot | db-cluster-snapshot | db-proxy
	SourceType *string `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 DescribeEventCategoriesInput) 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 DescribeEventCategoriesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeEventCategoriesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeEventCategoriesInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

// SetSourceType sets the SourceType field's value.
func (s *DescribeEventCategoriesInput) SetSourceType(v string) *DescribeEventCategoriesInput {
	s.SourceType = &v
	return s
}

// Data returned from the DescribeEventCategories operation.
type DescribeEventCategoriesOutput struct {
	_ struct{} `type:"structure"`

	// A list of EventCategoriesMap data types.
	EventCategoriesMapList []*EventCategoriesMap `locationNameList:"EventCategoriesMap" 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 DescribeEventCategoriesOutput) 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 DescribeEventCategoriesOutput) GoString() string {
	return s.String()
}

// SetEventCategoriesMapList sets the EventCategoriesMapList field's value.
func (s *DescribeEventCategoriesOutput) SetEventCategoriesMapList(v []*EventCategoriesMap) *DescribeEventCategoriesOutput {
	s.EventCategoriesMapList = v
	return s
}

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

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords .
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `type:"integer"`

	// The name of the RDS event notification subscription you want to describe.
	SubscriptionName *string `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 DescribeEventSubscriptionsInput) 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 DescribeEventSubscriptionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeEventSubscriptionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeEventSubscriptionsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

// SetMarker sets the Marker field's value.
func (s *DescribeEventSubscriptionsInput) SetMarker(v string) *DescribeEventSubscriptionsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeEventSubscriptionsInput) SetMaxRecords(v int64) *DescribeEventSubscriptionsInput {
	s.MaxRecords = &v
	return s
}

// SetSubscriptionName sets the SubscriptionName field's value.
func (s *DescribeEventSubscriptionsInput) SetSubscriptionName(v string) *DescribeEventSubscriptionsInput {
	s.SubscriptionName = &v
	return s
}

// Data returned by the DescribeEventSubscriptions action.
type DescribeEventSubscriptionsOutput struct {
	_ struct{} `type:"structure"`

	// A list of EventSubscriptions data types.
	EventSubscriptionsList []*EventSubscription `locationNameList:"EventSubscription" type:"list"`

	// An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `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 DescribeEventSubscriptionsOutput) 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 DescribeEventSubscriptionsOutput) GoString() string {
	return s.String()
}

// SetEventSubscriptionsList sets the EventSubscriptionsList field's value.
func (s *DescribeEventSubscriptionsOutput) SetEventSubscriptionsList(v []*EventSubscription) *DescribeEventSubscriptionsOutput {
	s.EventSubscriptionsList = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeEventSubscriptionsOutput) SetMarker(v string) *DescribeEventSubscriptionsOutput {
	s.Marker = &v
	return s
}

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

	// The number of minutes to retrieve events for.
	//
	// Default: 60
	Duration *int64 `type:"integer"`

	// The end of the time interval for which to retrieve events, specified in ISO
	// 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia
	// page. (http://en.wikipedia.org/wiki/ISO_8601)
	//
	// Example: 2009-07-08T18:00Z
	EndTime *time.Time `type:"timestamp"`

	// A list of event categories that trigger notifications for a event notification
	// subscription.
	EventCategories []*string `locationNameList:"EventCategory" type:"list"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeEvents request.
	// If this parameter is specified, the response includes only records beyond
	// the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `type:"integer"`

	// The identifier of the event source for which events are returned. If not
	// specified, then all sources are included in the response.
	//
	// Constraints:
	//
	//    * If SourceIdentifier is supplied, SourceType must also be provided.
	//
	//    * If the source type is a DB instance, a DBInstanceIdentifier value must
	//    be supplied.
	//
	//    * If the source type is a DB cluster, a DBClusterIdentifier value must
	//    be supplied.
	//
	//    * If the source type is a DB parameter group, a DBParameterGroupName value
	//    must be supplied.
	//
	//    * If the source type is a DB security group, a DBSecurityGroupName value
	//    must be supplied.
	//
	//    * If the source type is a DB snapshot, a DBSnapshotIdentifier value must
	//    be supplied.
	//
	//    * If the source type is a DB cluster snapshot, a DBClusterSnapshotIdentifier
	//    value must be supplied.
	//
	//    * If the source type is an RDS Proxy, a DBProxyName value must be supplied.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	SourceIdentifier *string `type:"string"`

	// The event source to retrieve events for. If no value is specified, all events
	// are returned.
	SourceType *string `type:"string" enum:"SourceType"`

	// The beginning of the time interval to retrieve events for, specified in ISO
	// 8601 format. For more information about ISO 8601, go to the ISO8601 Wikipedia
	// page. (http://en.wikipedia.org/wiki/ISO_8601)
	//
	// Example: 2009-07-08T18:00Z
	StartTime *time.Time `type:"timestamp"`
}

// 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 DescribeEventsInput) 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 DescribeEventsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeEventsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeEventsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDuration sets the Duration field's value.
func (s *DescribeEventsInput) SetDuration(v int64) *DescribeEventsInput {
	s.Duration = &v
	return s
}

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

// SetEventCategories sets the EventCategories field's value.
func (s *DescribeEventsInput) SetEventCategories(v []*string) *DescribeEventsInput {
	s.EventCategories = v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeEventsInput) SetMarker(v string) *DescribeEventsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeEventsInput) SetMaxRecords(v int64) *DescribeEventsInput {
	s.MaxRecords = &v
	return s
}

// SetSourceIdentifier sets the SourceIdentifier field's value.
func (s *DescribeEventsInput) SetSourceIdentifier(v string) *DescribeEventsInput {
	s.SourceIdentifier = &v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *DescribeEventsInput) SetSourceType(v string) *DescribeEventsInput {
	s.SourceType = &v
	return s
}

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

// Contains the result of a successful invocation of the DescribeEvents action.
type DescribeEventsOutput struct {
	_ struct{} `type:"structure"`

	// A list of Event instances.
	Events []*Event `locationNameList:"Event" type:"list"`

	// An optional pagination token provided by a previous Events request. If this
	// parameter is specified, the response includes only records beyond the marker,
	// up to the value specified by MaxRecords.
	Marker *string `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 DescribeEventsOutput) 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 DescribeEventsOutput) GoString() string {
	return s.String()
}

// SetEvents sets the Events field's value.
func (s *DescribeEventsOutput) SetEvents(v []*Event) *DescribeEventsOutput {
	s.Events = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeEventsOutput) SetMarker(v string) *DescribeEventsOutput {
	s.Marker = &v
	return s
}

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

	// The identifier of the snapshot or cluster export task to be described.
	ExportTaskIdentifier *string `type:"string"`

	// Filters specify one or more snapshot or cluster exports to describe. The
	// filters are specified as name-value pairs that define what to include in
	// the output. Filter names and values are case-sensitive.
	//
	// Supported filters include the following:
	//
	//    * export-task-identifier - An identifier for the snapshot or cluster export
	//    task.
	//
	//    * s3-bucket - The Amazon S3 bucket the data is exported to.
	//
	//    * source-arn - The Amazon Resource Name (ARN) of the snapshot or cluster
	//    exported to Amazon S3.
	//
	//    * status - The status of the export task. Must be lowercase. Valid statuses
	//    are the following: canceled canceling complete failed in_progress starting
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeExportTasks request.
	// If you specify this parameter, the response includes only records beyond
	// the marker, up to the value specified by the MaxRecords parameter.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified value, a pagination token called a marker is included
	// in the response. You can use the marker in a later DescribeExportTasks request
	// to retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `min:"20" type:"integer"`

	// The Amazon Resource Name (ARN) of the snapshot or cluster exported to Amazon
	// S3.
	SourceArn *string `type:"string"`

	// The type of source for the export.
	SourceType *string `type:"string" enum:"ExportSourceType"`
}

// 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 DescribeExportTasksInput) 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 DescribeExportTasksInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeExportTasksInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeExportTasksInput"}
	if s.MaxRecords != nil && *s.MaxRecords < 20 {
		invalidParams.Add(request.NewErrParamMinValue("MaxRecords", 20))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetExportTaskIdentifier sets the ExportTaskIdentifier field's value.
func (s *DescribeExportTasksInput) SetExportTaskIdentifier(v string) *DescribeExportTasksInput {
	s.ExportTaskIdentifier = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeExportTasksInput) SetMarker(v string) *DescribeExportTasksInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeExportTasksInput) SetMaxRecords(v int64) *DescribeExportTasksInput {
	s.MaxRecords = &v
	return s
}

// SetSourceArn sets the SourceArn field's value.
func (s *DescribeExportTasksInput) SetSourceArn(v string) *DescribeExportTasksInput {
	s.SourceArn = &v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *DescribeExportTasksInput) SetSourceType(v string) *DescribeExportTasksInput {
	s.SourceType = &v
	return s
}

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

	// Information about an export of a snapshot or cluster to Amazon S3.
	ExportTasks []*ExportTask `locationNameList:"ExportTask" type:"list"`

	// A pagination token that can be used in a later DescribeExportTasks request.
	// A marker is used for pagination to identify the location to begin output
	// for the next response of DescribeExportTasks.
	Marker *string `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 DescribeExportTasksOutput) 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 DescribeExportTasksOutput) GoString() string {
	return s.String()
}

// SetExportTasks sets the ExportTasks field's value.
func (s *DescribeExportTasksOutput) SetExportTasks(v []*ExportTask) *DescribeExportTasksOutput {
	s.ExportTasks = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeExportTasksOutput) SetMarker(v string) *DescribeExportTasksOutput {
	s.Marker = &v
	return s
}

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

	// A filter that specifies one or more global database clusters to describe.
	// This parameter is case-sensitive.
	//
	// Currently, the only supported filter is region.
	//
	// If used, the request returns information about any global cluster with at
	// least one member (primary or secondary) in the specified Amazon Web Services
	// Regions.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// The user-supplied DB cluster identifier. If this parameter is specified,
	// information from only the specific DB cluster is returned. This parameter
	// isn't case-sensitive.
	//
	// Constraints:
	//
	//    * If supplied, must match an existing DBClusterIdentifier.
	GlobalClusterIdentifier *string `type:"string"`

	// An optional pagination token provided by a previous DescribeGlobalClusters
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `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 DescribeGlobalClustersInput) 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 DescribeGlobalClustersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeGlobalClustersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeGlobalClustersInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

// SetGlobalClusterIdentifier sets the GlobalClusterIdentifier field's value.
func (s *DescribeGlobalClustersInput) SetGlobalClusterIdentifier(v string) *DescribeGlobalClustersInput {
	s.GlobalClusterIdentifier = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeGlobalClustersInput) SetMarker(v string) *DescribeGlobalClustersInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeGlobalClustersInput) SetMaxRecords(v int64) *DescribeGlobalClustersInput {
	s.MaxRecords = &v
	return s
}

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

	// The list of global clusters returned by this request.
	GlobalClusters []*GlobalCluster `locationNameList:"GlobalClusterMember" type:"list"`

	// An optional pagination token provided by a previous DescribeGlobalClusters
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `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 DescribeGlobalClustersOutput) 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 DescribeGlobalClustersOutput) GoString() string {
	return s.String()
}

// SetGlobalClusters sets the GlobalClusters field's value.
func (s *DescribeGlobalClustersOutput) SetGlobalClusters(v []*GlobalCluster) *DescribeGlobalClustersOutput {
	s.GlobalClusters = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeGlobalClustersOutput) SetMarker(v string) *DescribeGlobalClustersOutput {
	s.Marker = &v
	return s
}

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

	// A filter that specifies one or more resources to return.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// The unique identifier of the integration.
	IntegrationIdentifier *string `min:"1" type:"string"`

	// An optional pagination token provided by a previous DescribeIntegrations
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `min:"1" type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `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 DescribeIntegrationsInput) 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 DescribeIntegrationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeIntegrationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeIntegrationsInput"}
	if s.IntegrationIdentifier != nil && len(*s.IntegrationIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IntegrationIdentifier", 1))
	}
	if s.Marker != nil && len(*s.Marker) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Marker", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

// SetIntegrationIdentifier sets the IntegrationIdentifier field's value.
func (s *DescribeIntegrationsInput) SetIntegrationIdentifier(v string) *DescribeIntegrationsInput {
	s.IntegrationIdentifier = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeIntegrationsInput) SetMarker(v string) *DescribeIntegrationsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeIntegrationsInput) SetMaxRecords(v int64) *DescribeIntegrationsInput {
	s.MaxRecords = &v
	return s
}

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

	// A list of integrations.
	Integrations []*Integration `locationNameList:"Integration" type:"list"`

	// A pagination token that can be used in a later DescribeIntegrations request.
	Marker *string `min:"1" 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 DescribeIntegrationsOutput) 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 DescribeIntegrationsOutput) GoString() string {
	return s.String()
}

// SetIntegrations sets the Integrations field's value.
func (s *DescribeIntegrationsOutput) SetIntegrations(v []*Integration) *DescribeIntegrationsOutput {
	s.Integrations = v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeIntegrationsOutput) SetMarker(v string) *DescribeIntegrationsOutput {
	s.Marker = &v
	return s
}

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

	// The name of the engine to describe options for.
	//
	// Valid Values:
	//
	//    * db2-ae
	//
	//    * db2-se
	//
	//    * mariadb
	//
	//    * mysql
	//
	//    * oracle-ee
	//
	//    * oracle-ee-cdb
	//
	//    * oracle-se2
	//
	//    * oracle-se2-cdb
	//
	//    * postgres
	//
	//    * sqlserver-ee
	//
	//    * sqlserver-se
	//
	//    * sqlserver-ex
	//
	//    * sqlserver-web
	//
	// EngineName is a required field
	EngineName *string `type:"string" required:"true"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// If specified, filters the results to include only options for the specified
	// major engine version.
	MajorEngineVersion *string `type:"string"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `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 DescribeOptionGroupOptionsInput) 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 DescribeOptionGroupOptionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeOptionGroupOptionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeOptionGroupOptionsInput"}
	if s.EngineName == nil {
		invalidParams.Add(request.NewErrParamRequired("EngineName"))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetEngineName sets the EngineName field's value.
func (s *DescribeOptionGroupOptionsInput) SetEngineName(v string) *DescribeOptionGroupOptionsInput {
	s.EngineName = &v
	return s
}

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

// SetMajorEngineVersion sets the MajorEngineVersion field's value.
func (s *DescribeOptionGroupOptionsInput) SetMajorEngineVersion(v string) *DescribeOptionGroupOptionsInput {
	s.MajorEngineVersion = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeOptionGroupOptionsInput) SetMarker(v string) *DescribeOptionGroupOptionsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeOptionGroupOptionsInput) SetMaxRecords(v int64) *DescribeOptionGroupOptionsInput {
	s.MaxRecords = &v
	return s
}

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

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// List of available option group options.
	OptionGroupOptions []*OptionGroupOption `locationNameList:"OptionGroupOption" 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 DescribeOptionGroupOptionsOutput) 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 DescribeOptionGroupOptionsOutput) GoString() string {
	return s.String()
}

// SetMarker sets the Marker field's value.
func (s *DescribeOptionGroupOptionsOutput) SetMarker(v string) *DescribeOptionGroupOptionsOutput {
	s.Marker = &v
	return s
}

// SetOptionGroupOptions sets the OptionGroupOptions field's value.
func (s *DescribeOptionGroupOptionsOutput) SetOptionGroupOptions(v []*OptionGroupOption) *DescribeOptionGroupOptionsOutput {
	s.OptionGroupOptions = v
	return s
}

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

	// A filter to only include option groups associated with this database engine.
	//
	// Valid Values:
	//
	//    * db2-ae
	//
	//    * db2-se
	//
	//    * mariadb
	//
	//    * mysql
	//
	//    * oracle-ee
	//
	//    * oracle-ee-cdb
	//
	//    * oracle-se2
	//
	//    * oracle-se2-cdb
	//
	//    * postgres
	//
	//    * sqlserver-ee
	//
	//    * sqlserver-se
	//
	//    * sqlserver-ex
	//
	//    * sqlserver-web
	EngineName *string `type:"string"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// Filters the list of option groups to only include groups associated with
	// a specific database engine version. If specified, then EngineName must also
	// be specified.
	MajorEngineVersion *string `type:"string"`

	// An optional pagination token provided by a previous DescribeOptionGroups
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `type:"integer"`

	// The name of the option group to describe. Can't be supplied together with
	// EngineName or MajorEngineVersion.
	OptionGroupName *string `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 DescribeOptionGroupsInput) 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 DescribeOptionGroupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeOptionGroupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeOptionGroupsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetEngineName sets the EngineName field's value.
func (s *DescribeOptionGroupsInput) SetEngineName(v string) *DescribeOptionGroupsInput {
	s.EngineName = &v
	return s
}

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

// SetMajorEngineVersion sets the MajorEngineVersion field's value.
func (s *DescribeOptionGroupsInput) SetMajorEngineVersion(v string) *DescribeOptionGroupsInput {
	s.MajorEngineVersion = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeOptionGroupsInput) SetMarker(v string) *DescribeOptionGroupsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeOptionGroupsInput) SetMaxRecords(v int64) *DescribeOptionGroupsInput {
	s.MaxRecords = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *DescribeOptionGroupsInput) SetOptionGroupName(v string) *DescribeOptionGroupsInput {
	s.OptionGroupName = &v
	return s
}

// List of option groups.
type DescribeOptionGroupsOutput struct {
	_ struct{} `type:"structure"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// List of option groups.
	OptionGroupsList []*OptionGroup `locationNameList:"OptionGroup" 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 DescribeOptionGroupsOutput) 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 DescribeOptionGroupsOutput) GoString() string {
	return s.String()
}

// SetMarker sets the Marker field's value.
func (s *DescribeOptionGroupsOutput) SetMarker(v string) *DescribeOptionGroupsOutput {
	s.Marker = &v
	return s
}

// SetOptionGroupsList sets the OptionGroupsList field's value.
func (s *DescribeOptionGroupsOutput) SetOptionGroupsList(v []*OptionGroup) *DescribeOptionGroupsOutput {
	s.OptionGroupsList = v
	return s
}

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

	// The Availability Zone group associated with a Local Zone. Specify this parameter
	// to retrieve available options for the Local Zones in the group.
	//
	// Omit this parameter to show the available options in the specified Amazon
	// Web Services Region.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	AvailabilityZoneGroup *string `type:"string"`

	// A filter to include only the available options for the specified DB instance
	// class.
	DBInstanceClass *string `type:"string"`

	// The name of the database engine to describe DB instance options for.
	//
	// Valid Values:
	//
	//    * aurora-mysql
	//
	//    * aurora-postgresql
	//
	//    * custom-oracle-ee
	//
	//    * custom-oracle-ee-cdb
	//
	//    * custom-oracle-se2
	//
	//    * custom-oracle-se2-cdb
	//
	//    * db2-ae
	//
	//    * db2-se
	//
	//    * mariadb
	//
	//    * mysql
	//
	//    * oracle-ee
	//
	//    * oracle-ee-cdb
	//
	//    * oracle-se2
	//
	//    * oracle-se2-cdb
	//
	//    * postgres
	//
	//    * sqlserver-ee
	//
	//    * sqlserver-se
	//
	//    * sqlserver-ex
	//
	//    * sqlserver-web
	//
	// Engine is a required field
	Engine *string `type:"string" required:"true"`

	// A filter to include only the available options for the specified engine version.
	EngineVersion *string `type:"string"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// A filter to include only the available options for the specified license
	// model.
	//
	// RDS Custom supports only the BYOL licensing model.
	LicenseModel *string `type:"string"`

	// An optional pagination token provided by a previous DescribeOrderableDBInstanceOptions
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 1000.
	MaxRecords *int64 `type:"integer"`

	// Specifies whether to show only VPC or non-VPC offerings. RDS Custom supports
	// only VPC offerings.
	//
	// RDS Custom supports only VPC offerings. If you describe non-VPC offerings
	// for RDS Custom, the output shows VPC offerings.
	Vpc *bool `type:"boolean"`
}

// 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 DescribeOrderableDBInstanceOptionsInput) 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 DescribeOrderableDBInstanceOptionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeOrderableDBInstanceOptionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeOrderableDBInstanceOptionsInput"}
	if s.Engine == nil {
		invalidParams.Add(request.NewErrParamRequired("Engine"))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetAvailabilityZoneGroup sets the AvailabilityZoneGroup field's value.
func (s *DescribeOrderableDBInstanceOptionsInput) SetAvailabilityZoneGroup(v string) *DescribeOrderableDBInstanceOptionsInput {
	s.AvailabilityZoneGroup = &v
	return s
}

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *DescribeOrderableDBInstanceOptionsInput) SetDBInstanceClass(v string) *DescribeOrderableDBInstanceOptionsInput {
	s.DBInstanceClass = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *DescribeOrderableDBInstanceOptionsInput) SetEngine(v string) *DescribeOrderableDBInstanceOptionsInput {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *DescribeOrderableDBInstanceOptionsInput) SetEngineVersion(v string) *DescribeOrderableDBInstanceOptionsInput {
	s.EngineVersion = &v
	return s
}

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

// SetLicenseModel sets the LicenseModel field's value.
func (s *DescribeOrderableDBInstanceOptionsInput) SetLicenseModel(v string) *DescribeOrderableDBInstanceOptionsInput {
	s.LicenseModel = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeOrderableDBInstanceOptionsInput) SetMarker(v string) *DescribeOrderableDBInstanceOptionsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeOrderableDBInstanceOptionsInput) SetMaxRecords(v int64) *DescribeOrderableDBInstanceOptionsInput {
	s.MaxRecords = &v
	return s
}

// SetVpc sets the Vpc field's value.
func (s *DescribeOrderableDBInstanceOptionsInput) SetVpc(v bool) *DescribeOrderableDBInstanceOptionsInput {
	s.Vpc = &v
	return s
}

// Contains the result of a successful invocation of the DescribeOrderableDBInstanceOptions
// action.
type DescribeOrderableDBInstanceOptionsOutput struct {
	_ struct{} `type:"structure"`

	// An optional pagination token provided by a previous OrderableDBInstanceOptions
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// An OrderableDBInstanceOption structure containing information about orderable
	// options for the DB instance.
	OrderableDBInstanceOptions []*OrderableDBInstanceOption `locationNameList:"OrderableDBInstanceOption" 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 DescribeOrderableDBInstanceOptionsOutput) 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 DescribeOrderableDBInstanceOptionsOutput) GoString() string {
	return s.String()
}

// SetMarker sets the Marker field's value.
func (s *DescribeOrderableDBInstanceOptionsOutput) SetMarker(v string) *DescribeOrderableDBInstanceOptionsOutput {
	s.Marker = &v
	return s
}

// SetOrderableDBInstanceOptions sets the OrderableDBInstanceOptions field's value.
func (s *DescribeOrderableDBInstanceOptionsOutput) SetOrderableDBInstanceOptions(v []*OrderableDBInstanceOption) *DescribeOrderableDBInstanceOptionsOutput {
	s.OrderableDBInstanceOptions = v
	return s
}

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

	// A filter that specifies one or more resources to return pending maintenance
	// actions for.
	//
	// Supported filters:
	//
	//    * db-cluster-id - Accepts DB cluster identifiers and DB cluster Amazon
	//    Resource Names (ARNs). The results list only includes pending maintenance
	//    actions for the DB clusters identified by these ARNs.
	//
	//    * db-instance-id - Accepts DB instance identifiers and DB instance ARNs.
	//    The results list only includes pending maintenance actions for the DB
	//    instances identified by these ARNs.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribePendingMaintenanceActions
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to a number of records specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `type:"integer"`

	// The ARN of a resource to return pending maintenance actions for.
	ResourceIdentifier *string `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 DescribePendingMaintenanceActionsInput) 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 DescribePendingMaintenanceActionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribePendingMaintenanceActionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribePendingMaintenanceActionsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

// SetMarker sets the Marker field's value.
func (s *DescribePendingMaintenanceActionsInput) SetMarker(v string) *DescribePendingMaintenanceActionsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribePendingMaintenanceActionsInput) SetMaxRecords(v int64) *DescribePendingMaintenanceActionsInput {
	s.MaxRecords = &v
	return s
}

// SetResourceIdentifier sets the ResourceIdentifier field's value.
func (s *DescribePendingMaintenanceActionsInput) SetResourceIdentifier(v string) *DescribePendingMaintenanceActionsInput {
	s.ResourceIdentifier = &v
	return s
}

// Data returned from the DescribePendingMaintenanceActions action.
type DescribePendingMaintenanceActionsOutput struct {
	_ struct{} `type:"structure"`

	// An optional pagination token provided by a previous DescribePendingMaintenanceActions
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to a number of records specified by MaxRecords.
	Marker *string `type:"string"`

	// A list of the pending maintenance actions for the resource.
	PendingMaintenanceActions []*ResourcePendingMaintenanceActions `locationNameList:"ResourcePendingMaintenanceActions" 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 DescribePendingMaintenanceActionsOutput) 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 DescribePendingMaintenanceActionsOutput) GoString() string {
	return s.String()
}

// SetMarker sets the Marker field's value.
func (s *DescribePendingMaintenanceActionsOutput) SetMarker(v string) *DescribePendingMaintenanceActionsOutput {
	s.Marker = &v
	return s
}

// SetPendingMaintenanceActions sets the PendingMaintenanceActions field's value.
func (s *DescribePendingMaintenanceActionsOutput) SetPendingMaintenanceActions(v []*ResourcePendingMaintenanceActions) *DescribePendingMaintenanceActionsOutput {
	s.PendingMaintenanceActions = v
	return s
}

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

	// The DB instance class filter value. Specify this parameter to show only those
	// reservations matching the specified DB instances class.
	DBInstanceClass *string `type:"string"`

	// The duration filter value, specified in years or seconds. Specify this parameter
	// to show only reservations for this duration.
	//
	// Valid Values: 1 | 3 | 31536000 | 94608000
	Duration *string `type:"string"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// The lease identifier filter value. Specify this parameter to show only the
	// reservation that matches the specified lease ID.
	//
	// Amazon Web Services Support might request the lease ID for an issue related
	// to a reserved DB instance.
	LeaseId *string `type:"string"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more than the
	// MaxRecords value is available, a pagination token called a marker is included
	// in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `type:"integer"`

	// Specifies whether to show only those reservations that support Multi-AZ.
	MultiAZ *bool `type:"boolean"`

	// The offering type filter value. Specify this parameter to show only the available
	// offerings matching the specified offering type.
	//
	// Valid Values: "Partial Upfront" | "All Upfront" | "No Upfront"
	OfferingType *string `type:"string"`

	// The product description filter value. Specify this parameter to show only
	// those reservations matching the specified product description.
	ProductDescription *string `type:"string"`

	// The reserved DB instance identifier filter value. Specify this parameter
	// to show only the reservation that matches the specified reservation ID.
	ReservedDBInstanceId *string `type:"string"`

	// The offering identifier filter value. Specify this parameter to show only
	// purchased reservations matching the specified offering identifier.
	ReservedDBInstancesOfferingId *string `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 DescribeReservedDBInstancesInput) 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 DescribeReservedDBInstancesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeReservedDBInstancesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeReservedDBInstancesInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *DescribeReservedDBInstancesInput) SetDBInstanceClass(v string) *DescribeReservedDBInstancesInput {
	s.DBInstanceClass = &v
	return s
}

// SetDuration sets the Duration field's value.
func (s *DescribeReservedDBInstancesInput) SetDuration(v string) *DescribeReservedDBInstancesInput {
	s.Duration = &v
	return s
}

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

// SetLeaseId sets the LeaseId field's value.
func (s *DescribeReservedDBInstancesInput) SetLeaseId(v string) *DescribeReservedDBInstancesInput {
	s.LeaseId = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DescribeReservedDBInstancesInput) SetMarker(v string) *DescribeReservedDBInstancesInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeReservedDBInstancesInput) SetMaxRecords(v int64) *DescribeReservedDBInstancesInput {
	s.MaxRecords = &v
	return s
}

// SetMultiAZ sets the MultiAZ field's value.
func (s *DescribeReservedDBInstancesInput) SetMultiAZ(v bool) *DescribeReservedDBInstancesInput {
	s.MultiAZ = &v
	return s
}

// SetOfferingType sets the OfferingType field's value.
func (s *DescribeReservedDBInstancesInput) SetOfferingType(v string) *DescribeReservedDBInstancesInput {
	s.OfferingType = &v
	return s
}

// SetProductDescription sets the ProductDescription field's value.
func (s *DescribeReservedDBInstancesInput) SetProductDescription(v string) *DescribeReservedDBInstancesInput {
	s.ProductDescription = &v
	return s
}

// SetReservedDBInstanceId sets the ReservedDBInstanceId field's value.
func (s *DescribeReservedDBInstancesInput) SetReservedDBInstanceId(v string) *DescribeReservedDBInstancesInput {
	s.ReservedDBInstanceId = &v
	return s
}

// SetReservedDBInstancesOfferingId sets the ReservedDBInstancesOfferingId field's value.
func (s *DescribeReservedDBInstancesInput) SetReservedDBInstancesOfferingId(v string) *DescribeReservedDBInstancesInput {
	s.ReservedDBInstancesOfferingId = &v
	return s
}

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

	// The DB instance class filter value. Specify this parameter to show only the
	// available offerings matching the specified DB instance class.
	DBInstanceClass *string `type:"string"`

	// Duration filter value, specified in years or seconds. Specify this parameter
	// to show only reservations for this duration.
	//
	// Valid Values: 1 | 3 | 31536000 | 94608000
	Duration *string `type:"string"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more than the
	// MaxRecords value is available, a pagination token called a marker is included
	// in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `type:"integer"`

	// Specifies whether to show only those reservations that support Multi-AZ.
	MultiAZ *bool `type:"boolean"`

	// The offering type filter value. Specify this parameter to show only the available
	// offerings matching the specified offering type.
	//
	// Valid Values: "Partial Upfront" | "All Upfront" | "No Upfront"
	OfferingType *string `type:"string"`

	// Product description filter value. Specify this parameter to show only the
	// available offerings that contain the specified product description.
	//
	// The results show offerings that partially match the filter value.
	ProductDescription *string `type:"string"`

	// The offering identifier filter value. Specify this parameter to show only
	// the available offering that matches the specified reservation identifier.
	//
	// Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
	ReservedDBInstancesOfferingId *string `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 DescribeReservedDBInstancesOfferingsInput) 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 DescribeReservedDBInstancesOfferingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeReservedDBInstancesOfferingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeReservedDBInstancesOfferingsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *DescribeReservedDBInstancesOfferingsInput) SetDBInstanceClass(v string) *DescribeReservedDBInstancesOfferingsInput {
	s.DBInstanceClass = &v
	return s
}

// SetDuration sets the Duration field's value.
func (s *DescribeReservedDBInstancesOfferingsInput) SetDuration(v string) *DescribeReservedDBInstancesOfferingsInput {
	s.Duration = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeReservedDBInstancesOfferingsInput) SetMarker(v string) *DescribeReservedDBInstancesOfferingsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeReservedDBInstancesOfferingsInput) SetMaxRecords(v int64) *DescribeReservedDBInstancesOfferingsInput {
	s.MaxRecords = &v
	return s
}

// SetMultiAZ sets the MultiAZ field's value.
func (s *DescribeReservedDBInstancesOfferingsInput) SetMultiAZ(v bool) *DescribeReservedDBInstancesOfferingsInput {
	s.MultiAZ = &v
	return s
}

// SetOfferingType sets the OfferingType field's value.
func (s *DescribeReservedDBInstancesOfferingsInput) SetOfferingType(v string) *DescribeReservedDBInstancesOfferingsInput {
	s.OfferingType = &v
	return s
}

// SetProductDescription sets the ProductDescription field's value.
func (s *DescribeReservedDBInstancesOfferingsInput) SetProductDescription(v string) *DescribeReservedDBInstancesOfferingsInput {
	s.ProductDescription = &v
	return s
}

// SetReservedDBInstancesOfferingId sets the ReservedDBInstancesOfferingId field's value.
func (s *DescribeReservedDBInstancesOfferingsInput) SetReservedDBInstancesOfferingId(v string) *DescribeReservedDBInstancesOfferingsInput {
	s.ReservedDBInstancesOfferingId = &v
	return s
}

// Contains the result of a successful invocation of the DescribeReservedDBInstancesOfferings
// action.
type DescribeReservedDBInstancesOfferingsOutput struct {
	_ struct{} `type:"structure"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// A list of reserved DB instance offerings.
	ReservedDBInstancesOfferings []*ReservedDBInstancesOffering `locationNameList:"ReservedDBInstancesOffering" 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 DescribeReservedDBInstancesOfferingsOutput) 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 DescribeReservedDBInstancesOfferingsOutput) GoString() string {
	return s.String()
}

// SetMarker sets the Marker field's value.
func (s *DescribeReservedDBInstancesOfferingsOutput) SetMarker(v string) *DescribeReservedDBInstancesOfferingsOutput {
	s.Marker = &v
	return s
}

// SetReservedDBInstancesOfferings sets the ReservedDBInstancesOfferings field's value.
func (s *DescribeReservedDBInstancesOfferingsOutput) SetReservedDBInstancesOfferings(v []*ReservedDBInstancesOffering) *DescribeReservedDBInstancesOfferingsOutput {
	s.ReservedDBInstancesOfferings = v
	return s
}

// Contains the result of a successful invocation of the DescribeReservedDBInstances
// action.
type DescribeReservedDBInstancesOutput struct {
	_ struct{} `type:"structure"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// A list of reserved DB instances.
	ReservedDBInstances []*ReservedDBInstance `locationNameList:"ReservedDBInstance" 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 DescribeReservedDBInstancesOutput) 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 DescribeReservedDBInstancesOutput) GoString() string {
	return s.String()
}

// SetMarker sets the Marker field's value.
func (s *DescribeReservedDBInstancesOutput) SetMarker(v string) *DescribeReservedDBInstancesOutput {
	s.Marker = &v
	return s
}

// SetReservedDBInstances sets the ReservedDBInstances field's value.
func (s *DescribeReservedDBInstancesOutput) SetReservedDBInstances(v []*ReservedDBInstance) *DescribeReservedDBInstancesOutput {
	s.ReservedDBInstances = v
	return s
}

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

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeSourceRegions
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so you can retrieve the remaining results.
	//
	// Default: 100
	//
	// Constraints: Minimum 20, maximum 100.
	MaxRecords *int64 `type:"integer"`

	// The source Amazon Web Services Region name. For example, us-east-1.
	//
	// Constraints:
	//
	//    * Must specify a valid Amazon Web Services Region name.
	RegionName *string `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 DescribeSourceRegionsInput) 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 DescribeSourceRegionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeSourceRegionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeSourceRegionsInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

// SetMarker sets the Marker field's value.
func (s *DescribeSourceRegionsInput) SetMarker(v string) *DescribeSourceRegionsInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeSourceRegionsInput) SetMaxRecords(v int64) *DescribeSourceRegionsInput {
	s.MaxRecords = &v
	return s
}

// SetRegionName sets the RegionName field's value.
func (s *DescribeSourceRegionsInput) SetRegionName(v string) *DescribeSourceRegionsInput {
	s.RegionName = &v
	return s
}

// Contains the result of a successful invocation of the DescribeSourceRegions
// action.
type DescribeSourceRegionsOutput struct {
	_ struct{} `type:"structure"`

	// An optional pagination token provided by a previous request. If this parameter
	// is specified, the response includes only records beyond the marker, up to
	// the value specified by MaxRecords.
	Marker *string `type:"string"`

	// A list of SourceRegion instances that contains each source Amazon Web Services
	// Region that the current Amazon Web Services Region can get a read replica
	// or a DB snapshot from.
	SourceRegions []*SourceRegion `locationNameList:"SourceRegion" 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 DescribeSourceRegionsOutput) 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 DescribeSourceRegionsOutput) GoString() string {
	return s.String()
}

// SetMarker sets the Marker field's value.
func (s *DescribeSourceRegionsOutput) SetMarker(v string) *DescribeSourceRegionsOutput {
	s.Marker = &v
	return s
}

// SetSourceRegions sets the SourceRegions field's value.
func (s *DescribeSourceRegionsOutput) SetSourceRegions(v []*SourceRegion) *DescribeSourceRegionsOutput {
	s.SourceRegions = v
	return s
}

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

	// The user-supplied DB instance identifier, which must match the identifier
	// of an existing instance owned by the Amazon Web Services account. This parameter
	// isn't case-sensitive.
	DBInstanceIdentifier *string `type:"string"`

	// A filter that specifies one or more database tenants to describe.
	//
	// Supported filters:
	//
	//    * tenant-db-name - Tenant database names. The results list only includes
	//    information about the tenant databases that match these tenant DB names.
	//
	//    * tenant-database-resource-id - Tenant database resource identifiers.
	//
	//    * dbi-resource-id - DB instance resource identifiers. The results list
	//    only includes information about the tenants contained within the DB instances
	//    identified by these resource identifiers.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// An optional pagination token provided by a previous DescribeTenantDatabases
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// The maximum number of records to include in the response. If more records
	// exist than the specified MaxRecords value, a pagination token called a marker
	// is included in the response so that you can retrieve the remaining results.
	MaxRecords *int64 `type:"integer"`

	// The user-supplied tenant database name, which must match the name of an existing
	// tenant database on the specified DB instance owned by your Amazon Web Services
	// account. This parameter isn’t case-sensitive.
	TenantDBName *string `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 DescribeTenantDatabasesInput) 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 DescribeTenantDatabasesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeTenantDatabasesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeTenantDatabasesInput"}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DescribeTenantDatabasesInput) SetDBInstanceIdentifier(v string) *DescribeTenantDatabasesInput {
	s.DBInstanceIdentifier = &v
	return s
}

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

// SetMarker sets the Marker field's value.
func (s *DescribeTenantDatabasesInput) SetMarker(v string) *DescribeTenantDatabasesInput {
	s.Marker = &v
	return s
}

// SetMaxRecords sets the MaxRecords field's value.
func (s *DescribeTenantDatabasesInput) SetMaxRecords(v int64) *DescribeTenantDatabasesInput {
	s.MaxRecords = &v
	return s
}

// SetTenantDBName sets the TenantDBName field's value.
func (s *DescribeTenantDatabasesInput) SetTenantDBName(v string) *DescribeTenantDatabasesInput {
	s.TenantDBName = &v
	return s
}

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

	// An optional pagination token provided by a previous DescribeTenantDatabases
	// request. If this parameter is specified, the response includes only records
	// beyond the marker, up to the value specified by MaxRecords.
	Marker *string `type:"string"`

	// An array of the tenant databases requested by the DescribeTenantDatabases
	// operation.
	TenantDatabases []*TenantDatabase `locationNameList:"TenantDatabase" 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 DescribeTenantDatabasesOutput) 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 DescribeTenantDatabasesOutput) GoString() string {
	return s.String()
}

// SetMarker sets the Marker field's value.
func (s *DescribeTenantDatabasesOutput) SetMarker(v string) *DescribeTenantDatabasesOutput {
	s.Marker = &v
	return s
}

// SetTenantDatabases sets the TenantDatabases field's value.
func (s *DescribeTenantDatabasesOutput) SetTenantDatabases(v []*TenantDatabase) *DescribeTenantDatabasesOutput {
	s.TenantDatabases = v
	return s
}

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

	// The customer identifier or the ARN of your DB instance.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `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 DescribeValidDBInstanceModificationsInput) 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 DescribeValidDBInstanceModificationsInput) GoString() string {
	return s.String()
}

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

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

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DescribeValidDBInstanceModificationsInput) SetDBInstanceIdentifier(v string) *DescribeValidDBInstanceModificationsInput {
	s.DBInstanceIdentifier = &v
	return s
}

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

	// Information about valid modifications that you can make to your DB instance.
	// Contains the result of a successful call to the DescribeValidDBInstanceModifications
	// action. You can use this information when you call ModifyDBInstance.
	ValidDBInstanceModificationsMessage *ValidDBInstanceModificationsMessage `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 DescribeValidDBInstanceModificationsOutput) 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 DescribeValidDBInstanceModificationsOutput) GoString() string {
	return s.String()
}

// SetValidDBInstanceModificationsMessage sets the ValidDBInstanceModificationsMessage field's value.
func (s *DescribeValidDBInstanceModificationsOutput) SetValidDBInstanceModificationsMessage(v *ValidDBInstanceModificationsMessage) *DescribeValidDBInstanceModificationsOutput {
	s.ValidDBInstanceModificationsMessage = v
	return s
}

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

	// The Amazon Resource Name (ARN) of the DB cluster.
	//
	// ResourceArn is a required field
	ResourceArn *string `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 DisableHttpEndpointInput) 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 DisableHttpEndpointInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisableHttpEndpointInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisableHttpEndpointInput"}
	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 *DisableHttpEndpointInput) SetResourceArn(v string) *DisableHttpEndpointInput {
	s.ResourceArn = &v
	return s
}

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

	// Indicates whether the HTTP endpoint is enabled or disabled for the DB cluster.
	HttpEndpointEnabled *bool `type:"boolean"`

	// The ARN of the DB cluster.
	ResourceArn *string `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 DisableHttpEndpointOutput) 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 DisableHttpEndpointOutput) GoString() string {
	return s.String()
}

// SetHttpEndpointEnabled sets the HttpEndpointEnabled field's value.
func (s *DisableHttpEndpointOutput) SetHttpEndpointEnabled(v bool) *DisableHttpEndpointOutput {
	s.HttpEndpointEnabled = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *DisableHttpEndpointOutput) SetResourceArn(v string) *DisableHttpEndpointOutput {
	s.ResourceArn = &v
	return s
}

// A link to documentation that provides additional information for a recommendation.
type DocLink struct {
	_ struct{} `type:"structure"`

	// The text with the link to documentation for the recommendation.
	Text *string `type:"string"`

	// The URL for the documentation for the recommendation.
	Url *string `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 DocLink) 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 DocLink) GoString() string {
	return s.String()
}

// SetText sets the Text field's value.
func (s *DocLink) SetText(v string) *DocLink {
	s.Text = &v
	return s
}

// SetUrl sets the Url field's value.
func (s *DocLink) SetUrl(v string) *DocLink {
	s.Url = &v
	return s
}

// An Active Directory Domain membership record associated with the DB instance
// or cluster.
type DomainMembership struct {
	_ struct{} `type:"structure"`

	// The ARN for the Secrets Manager secret with the credentials for the user
	// that's a member of the domain.
	AuthSecretArn *string `type:"string"`

	// The IPv4 DNS IP addresses of the primary and secondary Active Directory domain
	// controllers.
	DnsIps []*string `type:"list"`

	// The identifier of the Active Directory Domain.
	Domain *string `type:"string"`

	// The fully qualified domain name (FQDN) of the Active Directory Domain.
	FQDN *string `type:"string"`

	// The name of the IAM role used when making API calls to the Directory Service.
	IAMRoleName *string `type:"string"`

	// The Active Directory organizational unit for the DB instance or cluster.
	OU *string `type:"string"`

	// The status of the Active Directory Domain membership for the DB instance
	// or cluster. Values include joined, pending-join, failed, and so on.
	Status *string `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 DomainMembership) 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 DomainMembership) GoString() string {
	return s.String()
}

// SetAuthSecretArn sets the AuthSecretArn field's value.
func (s *DomainMembership) SetAuthSecretArn(v string) *DomainMembership {
	s.AuthSecretArn = &v
	return s
}

// SetDnsIps sets the DnsIps field's value.
func (s *DomainMembership) SetDnsIps(v []*string) *DomainMembership {
	s.DnsIps = v
	return s
}

// SetDomain sets the Domain field's value.
func (s *DomainMembership) SetDomain(v string) *DomainMembership {
	s.Domain = &v
	return s
}

// SetFQDN sets the FQDN field's value.
func (s *DomainMembership) SetFQDN(v string) *DomainMembership {
	s.FQDN = &v
	return s
}

// SetIAMRoleName sets the IAMRoleName field's value.
func (s *DomainMembership) SetIAMRoleName(v string) *DomainMembership {
	s.IAMRoleName = &v
	return s
}

// SetOU sets the OU field's value.
func (s *DomainMembership) SetOU(v string) *DomainMembership {
	s.OU = &v
	return s
}

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

// A range of double values.
type DoubleRange struct {
	_ struct{} `type:"structure"`

	// The minimum value in the range.
	From *float64 `type:"double"`

	// The maximum value in the range.
	To *float64 `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 DoubleRange) 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 DoubleRange) GoString() string {
	return s.String()
}

// SetFrom sets the From field's value.
func (s *DoubleRange) SetFrom(v float64) *DoubleRange {
	s.From = &v
	return s
}

// SetTo sets the To field's value.
func (s *DoubleRange) SetTo(v float64) *DoubleRange {
	s.To = &v
	return s
}

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

	// The customer-assigned name of the DB instance that contains the log files
	// you want to list.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DBInstance.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// The name of the log file to be downloaded.
	//
	// LogFileName is a required field
	LogFileName *string `type:"string" required:"true"`

	// The pagination token provided in the previous request or "0". If the Marker
	// parameter is specified the response includes only records beyond the marker
	// until the end of the file or up to NumberOfLines.
	Marker *string `type:"string"`

	// The number of lines to download. If the number of lines specified results
	// in a file over 1 MB in size, the file is truncated at 1 MB in size.
	//
	// If the NumberOfLines parameter is specified, then the block of lines returned
	// can be from the beginning or the end of the log file, depending on the value
	// of the Marker parameter.
	//
	//    * If neither Marker or NumberOfLines are specified, the entire log file
	//    is returned up to a maximum of 10000 lines, starting with the most recent
	//    log entries first.
	//
	//    * If NumberOfLines is specified and Marker isn't specified, then the most
	//    recent lines from the end of the log file are returned.
	//
	//    * If Marker is specified as "0", then the specified number of lines from
	//    the beginning of the log file are returned.
	//
	//    * You can download the log file in blocks of lines by specifying the size
	//    of the block using the NumberOfLines parameter, and by specifying a value
	//    of "0" for the Marker parameter in your first request. Include the Marker
	//    value returned in the response as the Marker value for the next request,
	//    continuing until the AdditionalDataPending response element returns false.
	NumberOfLines *int64 `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 DownloadDBLogFilePortionInput) 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 DownloadDBLogFilePortionInput) GoString() string {
	return s.String()
}

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

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

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *DownloadDBLogFilePortionInput) SetDBInstanceIdentifier(v string) *DownloadDBLogFilePortionInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetLogFileName sets the LogFileName field's value.
func (s *DownloadDBLogFilePortionInput) SetLogFileName(v string) *DownloadDBLogFilePortionInput {
	s.LogFileName = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DownloadDBLogFilePortionInput) SetMarker(v string) *DownloadDBLogFilePortionInput {
	s.Marker = &v
	return s
}

// SetNumberOfLines sets the NumberOfLines field's value.
func (s *DownloadDBLogFilePortionInput) SetNumberOfLines(v int64) *DownloadDBLogFilePortionInput {
	s.NumberOfLines = &v
	return s
}

// This data type is used as a response element to DownloadDBLogFilePortion.
type DownloadDBLogFilePortionOutput struct {
	_ struct{} `type:"structure"`

	// A Boolean value that, if true, indicates there is more data to be downloaded.
	AdditionalDataPending *bool `type:"boolean"`

	// Entries from the specified log file.
	LogFileData *string `type:"string"`

	// A pagination token that can be used in a later DownloadDBLogFilePortion request.
	Marker *string `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 DownloadDBLogFilePortionOutput) 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 DownloadDBLogFilePortionOutput) GoString() string {
	return s.String()
}

// SetAdditionalDataPending sets the AdditionalDataPending field's value.
func (s *DownloadDBLogFilePortionOutput) SetAdditionalDataPending(v bool) *DownloadDBLogFilePortionOutput {
	s.AdditionalDataPending = &v
	return s
}

// SetLogFileData sets the LogFileData field's value.
func (s *DownloadDBLogFilePortionOutput) SetLogFileData(v string) *DownloadDBLogFilePortionOutput {
	s.LogFileData = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *DownloadDBLogFilePortionOutput) SetMarker(v string) *DownloadDBLogFilePortionOutput {
	s.Marker = &v
	return s
}

// This data type is used as a response element in the following actions:
//
//   - AuthorizeDBSecurityGroupIngress
//
//   - DescribeDBSecurityGroups
//
//   - RevokeDBSecurityGroupIngress
type EC2SecurityGroup struct {
	_ struct{} `type:"structure"`

	// Specifies the id of the EC2 security group.
	EC2SecurityGroupId *string `type:"string"`

	// Specifies the name of the EC2 security group.
	EC2SecurityGroupName *string `type:"string"`

	// Specifies the Amazon Web Services ID of the owner of the EC2 security group
	// specified in the EC2SecurityGroupName field.
	EC2SecurityGroupOwnerId *string `type:"string"`

	// Provides the status of the EC2 security group. Status can be "authorizing",
	// "authorized", "revoking", and "revoked".
	Status *string `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 EC2SecurityGroup) 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 EC2SecurityGroup) GoString() string {
	return s.String()
}

// SetEC2SecurityGroupId sets the EC2SecurityGroupId field's value.
func (s *EC2SecurityGroup) SetEC2SecurityGroupId(v string) *EC2SecurityGroup {
	s.EC2SecurityGroupId = &v
	return s
}

// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
func (s *EC2SecurityGroup) SetEC2SecurityGroupName(v string) *EC2SecurityGroup {
	s.EC2SecurityGroupName = &v
	return s
}

// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
func (s *EC2SecurityGroup) SetEC2SecurityGroupOwnerId(v string) *EC2SecurityGroup {
	s.EC2SecurityGroupOwnerId = &v
	return s
}

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

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

	// The Amazon Resource Name (ARN) of the DB cluster.
	//
	// ResourceArn is a required field
	ResourceArn *string `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 EnableHttpEndpointInput) 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 EnableHttpEndpointInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EnableHttpEndpointInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EnableHttpEndpointInput"}
	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 *EnableHttpEndpointInput) SetResourceArn(v string) *EnableHttpEndpointInput {
	s.ResourceArn = &v
	return s
}

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

	// Indicates whether the HTTP endpoint is enabled or disabled for the DB cluster.
	HttpEndpointEnabled *bool `type:"boolean"`

	// The ARN of the DB cluster.
	ResourceArn *string `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 EnableHttpEndpointOutput) 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 EnableHttpEndpointOutput) GoString() string {
	return s.String()
}

// SetHttpEndpointEnabled sets the HttpEndpointEnabled field's value.
func (s *EnableHttpEndpointOutput) SetHttpEndpointEnabled(v bool) *EnableHttpEndpointOutput {
	s.HttpEndpointEnabled = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *EnableHttpEndpointOutput) SetResourceArn(v string) *EnableHttpEndpointOutput {
	s.ResourceArn = &v
	return s
}

// This data type represents the information you need to connect to an Amazon
// RDS DB instance. This data type is used as a response element in the following
// actions:
//
//   - CreateDBInstance
//
//   - DescribeDBInstances
//
//   - DeleteDBInstance
//
// For the data structure that represents Amazon Aurora DB cluster endpoints,
// see DBClusterEndpoint.
type Endpoint struct {
	_ struct{} `type:"structure"`

	// Specifies the DNS address of the DB instance.
	Address *string `type:"string"`

	// Specifies the ID that Amazon Route 53 assigns when you create a hosted zone.
	HostedZoneId *string `type:"string"`

	// Specifies the port that the database engine is listening on.
	Port *int64 `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 Endpoint) 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 Endpoint) GoString() string {
	return s.String()
}

// SetAddress sets the Address field's value.
func (s *Endpoint) SetAddress(v string) *Endpoint {
	s.Address = &v
	return s
}

// SetHostedZoneId sets the HostedZoneId field's value.
func (s *Endpoint) SetHostedZoneId(v string) *Endpoint {
	s.HostedZoneId = &v
	return s
}

// SetPort sets the Port field's value.
func (s *Endpoint) SetPort(v int64) *Endpoint {
	s.Port = &v
	return s
}

// Contains the result of a successful invocation of the DescribeEngineDefaultParameters
// action.
type EngineDefaults struct {
	_ struct{} `type:"structure"`

	// Specifies the name of the DB parameter group family that the engine default
	// parameters apply to.
	DBParameterGroupFamily *string `type:"string"`

	// An optional pagination token provided by a previous EngineDefaults request.
	// If this parameter is specified, the response includes only records beyond
	// the marker, up to the value specified by MaxRecords .
	Marker *string `type:"string"`

	// Contains a list of engine default parameters.
	Parameters []*Parameter `locationNameList:"Parameter" 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 EngineDefaults) 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 EngineDefaults) GoString() string {
	return s.String()
}

// SetDBParameterGroupFamily sets the DBParameterGroupFamily field's value.
func (s *EngineDefaults) SetDBParameterGroupFamily(v string) *EngineDefaults {
	s.DBParameterGroupFamily = &v
	return s
}

// SetMarker sets the Marker field's value.
func (s *EngineDefaults) SetMarker(v string) *EngineDefaults {
	s.Marker = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *EngineDefaults) SetParameters(v []*Parameter) *EngineDefaults {
	s.Parameters = v
	return s
}

// This data type is used as a response element in the DescribeEvents (https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEvents.html)
// action.
type Event struct {
	_ struct{} `type:"structure"`

	// Specifies the date and time of the event.
	Date *time.Time `type:"timestamp"`

	// Specifies the category for the event.
	EventCategories []*string `locationNameList:"EventCategory" type:"list"`

	// Provides the text of this event.
	Message *string `type:"string"`

	// The Amazon Resource Name (ARN) for the event.
	SourceArn *string `type:"string"`

	// Provides the identifier for the source of the event.
	SourceIdentifier *string `type:"string"`

	// Specifies the source type for this event.
	SourceType *string `type:"string" enum:"SourceType"`
}

// 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 Event) 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 Event) GoString() string {
	return s.String()
}

// SetDate sets the Date field's value.
func (s *Event) SetDate(v time.Time) *Event {
	s.Date = &v
	return s
}

// SetEventCategories sets the EventCategories field's value.
func (s *Event) SetEventCategories(v []*string) *Event {
	s.EventCategories = v
	return s
}

// SetMessage sets the Message field's value.
func (s *Event) SetMessage(v string) *Event {
	s.Message = &v
	return s
}

// SetSourceArn sets the SourceArn field's value.
func (s *Event) SetSourceArn(v string) *Event {
	s.SourceArn = &v
	return s
}

// SetSourceIdentifier sets the SourceIdentifier field's value.
func (s *Event) SetSourceIdentifier(v string) *Event {
	s.SourceIdentifier = &v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *Event) SetSourceType(v string) *Event {
	s.SourceType = &v
	return s
}

// Contains the results of a successful invocation of the DescribeEventCategories
// (https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEventCategories.html)
// operation.
type EventCategoriesMap struct {
	_ struct{} `type:"structure"`

	// The event categories for the specified source type
	EventCategories []*string `locationNameList:"EventCategory" type:"list"`

	// The source type that the returned categories belong to
	SourceType *string `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 EventCategoriesMap) 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 EventCategoriesMap) GoString() string {
	return s.String()
}

// SetEventCategories sets the EventCategories field's value.
func (s *EventCategoriesMap) SetEventCategories(v []*string) *EventCategoriesMap {
	s.EventCategories = v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *EventCategoriesMap) SetSourceType(v string) *EventCategoriesMap {
	s.SourceType = &v
	return s
}

// Contains the results of a successful invocation of the DescribeEventSubscriptions
// action.
type EventSubscription struct {
	_ struct{} `type:"structure"`

	// The RDS event notification subscription Id.
	CustSubscriptionId *string `type:"string"`

	// The Amazon Web Services customer account associated with the RDS event notification
	// subscription.
	CustomerAwsId *string `type:"string"`

	// Specifies whether the subscription is enabled. True indicates the subscription
	// is enabled.
	Enabled *bool `type:"boolean"`

	// A list of event categories for the RDS event notification subscription.
	EventCategoriesList []*string `locationNameList:"EventCategory" type:"list"`

	// The Amazon Resource Name (ARN) for the event subscription.
	EventSubscriptionArn *string `type:"string"`

	// The topic ARN of the RDS event notification subscription.
	SnsTopicArn *string `type:"string"`

	// A list of source IDs for the RDS event notification subscription.
	SourceIdsList []*string `locationNameList:"SourceId" type:"list"`

	// The source type for the RDS event notification subscription.
	SourceType *string `type:"string"`

	// The status of the RDS event notification subscription.
	//
	// Constraints:
	//
	// Can be one of the following: creating | modifying | deleting | active | no-permission
	// | topic-not-exist
	//
	// The status "no-permission" indicates that RDS no longer has permission to
	// post to the SNS topic. The status "topic-not-exist" indicates that the topic
	// was deleted after the subscription was created.
	Status *string `type:"string"`

	// The time the RDS event notification subscription was created.
	SubscriptionCreationTime *string `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 EventSubscription) 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 EventSubscription) GoString() string {
	return s.String()
}

// SetCustSubscriptionId sets the CustSubscriptionId field's value.
func (s *EventSubscription) SetCustSubscriptionId(v string) *EventSubscription {
	s.CustSubscriptionId = &v
	return s
}

// SetCustomerAwsId sets the CustomerAwsId field's value.
func (s *EventSubscription) SetCustomerAwsId(v string) *EventSubscription {
	s.CustomerAwsId = &v
	return s
}

// SetEnabled sets the Enabled field's value.
func (s *EventSubscription) SetEnabled(v bool) *EventSubscription {
	s.Enabled = &v
	return s
}

// SetEventCategoriesList sets the EventCategoriesList field's value.
func (s *EventSubscription) SetEventCategoriesList(v []*string) *EventSubscription {
	s.EventCategoriesList = v
	return s
}

// SetEventSubscriptionArn sets the EventSubscriptionArn field's value.
func (s *EventSubscription) SetEventSubscriptionArn(v string) *EventSubscription {
	s.EventSubscriptionArn = &v
	return s
}

// SetSnsTopicArn sets the SnsTopicArn field's value.
func (s *EventSubscription) SetSnsTopicArn(v string) *EventSubscription {
	s.SnsTopicArn = &v
	return s
}

// SetSourceIdsList sets the SourceIdsList field's value.
func (s *EventSubscription) SetSourceIdsList(v []*string) *EventSubscription {
	s.SourceIdsList = v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *EventSubscription) SetSourceType(v string) *EventSubscription {
	s.SourceType = &v
	return s
}

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

// SetSubscriptionCreationTime sets the SubscriptionCreationTime field's value.
func (s *EventSubscription) SetSubscriptionCreationTime(v string) *EventSubscription {
	s.SubscriptionCreationTime = &v
	return s
}

// Contains the details of a snapshot or cluster export to Amazon S3.
//
// This data type is used as a response element in the DescribeExportTasks operation.
type ExportTask struct {
	_ struct{} `type:"structure"`

	// The data exported from the snapshot or cluster.
	//
	// Valid Values:
	//
	//    * database - Export all the data from a specified database.
	//
	//    * database.table table-name - Export a table of the snapshot or cluster.
	//    This format is valid only for RDS for MySQL, RDS for MariaDB, and Aurora
	//    MySQL.
	//
	//    * database.schema schema-name - Export a database schema of the snapshot
	//    or cluster. This format is valid only for RDS for PostgreSQL and Aurora
	//    PostgreSQL.
	//
	//    * database.schema.table table-name - Export a table of the database schema.
	//    This format is valid only for RDS for PostgreSQL and Aurora PostgreSQL.
	ExportOnly []*string `type:"list"`

	// A unique identifier for the snapshot or cluster export task. This ID isn't
	// an identifier for the Amazon S3 bucket where the data is exported.
	ExportTaskIdentifier *string `type:"string"`

	// The reason the export failed, if it failed.
	FailureCause *string `type:"string"`

	// The name of the IAM role that is used to write to Amazon S3 when exporting
	// a snapshot or cluster.
	IamRoleArn *string `type:"string"`

	// The key identifier of the Amazon Web Services KMS key that is used to encrypt
	// the data when it's exported to Amazon S3. The KMS key identifier is its key
	// ARN, key ID, alias ARN, or alias name. The IAM role used for the export must
	// have encryption and decryption permissions to use this KMS key.
	KmsKeyId *string `type:"string"`

	// The progress of the snapshot or cluster export task as a percentage.
	PercentProgress *int64 `type:"integer"`

	// The Amazon S3 bucket where the snapshot or cluster is exported to.
	S3Bucket *string `type:"string"`

	// The Amazon S3 bucket prefix that is the file name and path of the exported
	// data.
	S3Prefix *string `type:"string"`

	// The time when the snapshot was created.
	SnapshotTime *time.Time `type:"timestamp"`

	// The Amazon Resource Name (ARN) of the snapshot or cluster exported to Amazon
	// S3.
	SourceArn *string `type:"string"`

	// The type of source for the export.
	SourceType *string `type:"string" enum:"ExportSourceType"`

	// The progress status of the export task. The status can be one of the following:
	//
	//    * CANCELED
	//
	//    * CANCELING
	//
	//    * COMPLETE
	//
	//    * FAILED
	//
	//    * IN_PROGRESS
	//
	//    * STARTING
	Status *string `type:"string"`

	// The time when the snapshot or cluster export task ended.
	TaskEndTime *time.Time `type:"timestamp"`

	// The time when the snapshot or cluster export task started.
	TaskStartTime *time.Time `type:"timestamp"`

	// The total amount of data exported, in gigabytes.
	TotalExtractedDataInGB *int64 `type:"integer"`

	// A warning about the snapshot or cluster export task.
	WarningMessage *string `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 ExportTask) 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 ExportTask) GoString() string {
	return s.String()
}

// SetExportOnly sets the ExportOnly field's value.
func (s *ExportTask) SetExportOnly(v []*string) *ExportTask {
	s.ExportOnly = v
	return s
}

// SetExportTaskIdentifier sets the ExportTaskIdentifier field's value.
func (s *ExportTask) SetExportTaskIdentifier(v string) *ExportTask {
	s.ExportTaskIdentifier = &v
	return s
}

// SetFailureCause sets the FailureCause field's value.
func (s *ExportTask) SetFailureCause(v string) *ExportTask {
	s.FailureCause = &v
	return s
}

// SetIamRoleArn sets the IamRoleArn field's value.
func (s *ExportTask) SetIamRoleArn(v string) *ExportTask {
	s.IamRoleArn = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *ExportTask) SetKmsKeyId(v string) *ExportTask {
	s.KmsKeyId = &v
	return s
}

// SetPercentProgress sets the PercentProgress field's value.
func (s *ExportTask) SetPercentProgress(v int64) *ExportTask {
	s.PercentProgress = &v
	return s
}

// SetS3Bucket sets the S3Bucket field's value.
func (s *ExportTask) SetS3Bucket(v string) *ExportTask {
	s.S3Bucket = &v
	return s
}

// SetS3Prefix sets the S3Prefix field's value.
func (s *ExportTask) SetS3Prefix(v string) *ExportTask {
	s.S3Prefix = &v
	return s
}

// SetSnapshotTime sets the SnapshotTime field's value.
func (s *ExportTask) SetSnapshotTime(v time.Time) *ExportTask {
	s.SnapshotTime = &v
	return s
}

// SetSourceArn sets the SourceArn field's value.
func (s *ExportTask) SetSourceArn(v string) *ExportTask {
	s.SourceArn = &v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *ExportTask) SetSourceType(v string) *ExportTask {
	s.SourceType = &v
	return s
}

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

// SetTaskEndTime sets the TaskEndTime field's value.
func (s *ExportTask) SetTaskEndTime(v time.Time) *ExportTask {
	s.TaskEndTime = &v
	return s
}

// SetTaskStartTime sets the TaskStartTime field's value.
func (s *ExportTask) SetTaskStartTime(v time.Time) *ExportTask {
	s.TaskStartTime = &v
	return s
}

// SetTotalExtractedDataInGB sets the TotalExtractedDataInGB field's value.
func (s *ExportTask) SetTotalExtractedDataInGB(v int64) *ExportTask {
	s.TotalExtractedDataInGB = &v
	return s
}

// SetWarningMessage sets the WarningMessage field's value.
func (s *ExportTask) SetWarningMessage(v string) *ExportTask {
	s.WarningMessage = &v
	return s
}

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

	// The identifier of the DB cluster to force a failover for. This parameter
	// isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DB cluster.
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// The name of the DB instance to promote to the primary DB instance.
	//
	// Specify the DB instance identifier for an Aurora Replica or a Multi-AZ readable
	// standby in the DB cluster, for example mydbcluster-replica1.
	//
	// This setting isn't supported for RDS for MySQL Multi-AZ DB clusters.
	TargetDBInstanceIdentifier *string `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 FailoverDBClusterInput) 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 FailoverDBClusterInput) GoString() string {
	return s.String()
}

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

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

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *FailoverDBClusterInput) SetDBClusterIdentifier(v string) *FailoverDBClusterInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetTargetDBInstanceIdentifier sets the TargetDBInstanceIdentifier field's value.
func (s *FailoverDBClusterInput) SetTargetDBInstanceIdentifier(v string) *FailoverDBClusterInput {
	s.TargetDBInstanceIdentifier = &v
	return s
}

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

	// Contains the details of an Amazon Aurora DB cluster or Multi-AZ DB cluster.
	//
	// For an Amazon Aurora DB cluster, this data type is used as a response element
	// in the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, PromoteReadReplicaDBCluster, RestoreDBClusterFromS3, RestoreDBClusterFromSnapshot,
	// RestoreDBClusterToPointInTime, StartDBCluster, and StopDBCluster.
	//
	// For a Multi-AZ DB cluster, this data type is used as a response element in
	// the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, RebootDBCluster, RestoreDBClusterFromSnapshot, and RestoreDBClusterToPointInTime.
	//
	// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
	// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
	// in the Amazon Aurora User Guide.
	//
	// For more information on Multi-AZ DB clusters, see Multi-AZ deployments with
	// two readable standby DB instances (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
	// in the Amazon RDS User Guide.
	DBCluster *DBCluster `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 FailoverDBClusterOutput) 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 FailoverDBClusterOutput) GoString() string {
	return s.String()
}

// SetDBCluster sets the DBCluster field's value.
func (s *FailoverDBClusterOutput) SetDBCluster(v *DBCluster) *FailoverDBClusterOutput {
	s.DBCluster = v
	return s
}

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

	// Specifies whether to allow data loss for this global database cluster operation.
	// Allowing data loss triggers a global failover operation.
	//
	// If you don't specify AllowDataLoss, the global database cluster operation
	// defaults to a switchover.
	//
	// Constraints:
	//
	//    * Can't be specified together with the Switchover parameter.
	AllowDataLoss *bool `type:"boolean"`

	// The identifier of the global database cluster (Aurora global database) this
	// operation should apply to. The identifier is the unique key assigned by the
	// user when the Aurora global database is created. In other words, it's the
	// name of the Aurora global database.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing global database cluster.
	//
	// GlobalClusterIdentifier is a required field
	GlobalClusterIdentifier *string `min:"1" type:"string" required:"true"`

	// Specifies whether to switch over this global database cluster.
	//
	// Constraints:
	//
	//    * Can't be specified together with the AllowDataLoss parameter.
	Switchover *bool `type:"boolean"`

	// The identifier of the secondary Aurora DB cluster that you want to promote
	// to the primary for the global database cluster. Use the Amazon Resource Name
	// (ARN) for the identifier so that Aurora can locate the cluster in its Amazon
	// Web Services Region.
	//
	// TargetDbClusterIdentifier is a required field
	TargetDbClusterIdentifier *string `min:"1" 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 FailoverGlobalClusterInput) 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 FailoverGlobalClusterInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FailoverGlobalClusterInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FailoverGlobalClusterInput"}
	if s.GlobalClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("GlobalClusterIdentifier"))
	}
	if s.GlobalClusterIdentifier != nil && len(*s.GlobalClusterIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GlobalClusterIdentifier", 1))
	}
	if s.TargetDbClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("TargetDbClusterIdentifier"))
	}
	if s.TargetDbClusterIdentifier != nil && len(*s.TargetDbClusterIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TargetDbClusterIdentifier", 1))
	}

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

// SetAllowDataLoss sets the AllowDataLoss field's value.
func (s *FailoverGlobalClusterInput) SetAllowDataLoss(v bool) *FailoverGlobalClusterInput {
	s.AllowDataLoss = &v
	return s
}

// SetGlobalClusterIdentifier sets the GlobalClusterIdentifier field's value.
func (s *FailoverGlobalClusterInput) SetGlobalClusterIdentifier(v string) *FailoverGlobalClusterInput {
	s.GlobalClusterIdentifier = &v
	return s
}

// SetSwitchover sets the Switchover field's value.
func (s *FailoverGlobalClusterInput) SetSwitchover(v bool) *FailoverGlobalClusterInput {
	s.Switchover = &v
	return s
}

// SetTargetDbClusterIdentifier sets the TargetDbClusterIdentifier field's value.
func (s *FailoverGlobalClusterInput) SetTargetDbClusterIdentifier(v string) *FailoverGlobalClusterInput {
	s.TargetDbClusterIdentifier = &v
	return s
}

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

	// A data type representing an Aurora global database.
	GlobalCluster *GlobalCluster `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 FailoverGlobalClusterOutput) 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 FailoverGlobalClusterOutput) GoString() string {
	return s.String()
}

// SetGlobalCluster sets the GlobalCluster field's value.
func (s *FailoverGlobalClusterOutput) SetGlobalCluster(v *GlobalCluster) *FailoverGlobalClusterOutput {
	s.GlobalCluster = v
	return s
}

// Contains the state of scheduled or in-process operations on a global cluster
// (Aurora global database). This data type is empty unless a switchover or
// failover operation is scheduled or is in progress on the Aurora global database.
type FailoverState struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Aurora DB cluster that is currently
	// being demoted, and which is associated with this state.
	FromDbClusterArn *string `type:"string"`

	// Indicates whether the operation is a global switchover or a global failover.
	// If data loss is allowed, then the operation is a global failover. Otherwise,
	// it's a switchover.
	IsDataLossAllowed *bool `type:"boolean"`

	// The current status of the global cluster. Possible values are as follows:
	//
	//    * pending  The service received a request to switch over or fail over
	//    the global cluster. The global cluster's primary DB cluster and the specified
	//    secondary DB cluster are being verified before the operation starts.
	//
	//    * failing-over  Aurora is promoting the chosen secondary Aurora DB cluster
	//    to become the new primary DB cluster to fail over the global cluster.
	//
	//    * cancelling  The request to switch over or fail over the global cluster
	//    was cancelled and the primary Aurora DB cluster and the selected secondary
	//    Aurora DB cluster are returning to their previous states.
	//
	//    * switching-over  This status covers the range of Aurora internal operations
	//    that take place during the switchover process, such as demoting the primary
	//    Aurora DB cluster, promoting the secondary Aurora DB cluster, and synchronizing
	//    replicas.
	Status *string `type:"string" enum:"FailoverStatus"`

	// The Amazon Resource Name (ARN) of the Aurora DB cluster that is currently
	// being promoted, and which is associated with this state.
	ToDbClusterArn *string `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 FailoverState) 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 FailoverState) GoString() string {
	return s.String()
}

// SetFromDbClusterArn sets the FromDbClusterArn field's value.
func (s *FailoverState) SetFromDbClusterArn(v string) *FailoverState {
	s.FromDbClusterArn = &v
	return s
}

// SetIsDataLossAllowed sets the IsDataLossAllowed field's value.
func (s *FailoverState) SetIsDataLossAllowed(v bool) *FailoverState {
	s.IsDataLossAllowed = &v
	return s
}

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

// SetToDbClusterArn sets the ToDbClusterArn field's value.
func (s *FailoverState) SetToDbClusterArn(v string) *FailoverState {
	s.ToDbClusterArn = &v
	return s
}

// A filter name and value pair that is used to return a more specific list
// of results from a describe operation. Filters can be used to match a set
// of resources by specific criteria, such as IDs. The filters supported by
// a describe operation are documented with the describe operation.
//
// Currently, wildcards are not supported in filters.
//
// The following actions can be filtered:
//
//   - DescribeDBClusterBacktracks
//
//   - DescribeDBClusterEndpoints
//
//   - DescribeDBClusters
//
//   - DescribeDBInstances
//
//   - DescribeDBRecommendations
//
//   - DescribeDBShardGroups
//
//   - DescribePendingMaintenanceActions
type Filter struct {
	_ struct{} `type:"structure"`

	// The name of the filter. Filter names are case-sensitive.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// One or more filter values. Filter values are case-sensitive.
	//
	// Values is a required field
	Values []*string `locationNameList:"Value" type:"list" 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 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()
}

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

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

// 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
}

// A data type representing an Aurora global database.
type GlobalCluster struct {
	_ struct{} `type:"structure"`

	// The default database name within the new global database cluster.
	DatabaseName *string `type:"string"`

	// The deletion protection setting for the new global database cluster.
	DeletionProtection *bool `type:"boolean"`

	// The Aurora database engine used by the global database cluster.
	Engine *string `type:"string"`

	// The life cycle type for the global cluster.
	//
	// For more information, see CreateGlobalCluster.
	EngineLifecycleSupport *string `type:"string"`

	// Indicates the database engine version.
	EngineVersion *string `type:"string"`

	// A data object containing all properties for the current state of an in-process
	// or pending switchover or failover process for this global cluster (Aurora
	// global database). This object is empty unless the SwitchoverGlobalCluster
	// or FailoverGlobalCluster operation was called on this global cluster.
	FailoverState *FailoverState `type:"structure"`

	// The Amazon Resource Name (ARN) for the global database cluster.
	GlobalClusterArn *string `type:"string"`

	// Contains a user-supplied global database cluster identifier. This identifier
	// is the unique key that identifies a global database cluster.
	GlobalClusterIdentifier *string `type:"string"`

	// The list of primary and secondary clusters within the global database cluster.
	GlobalClusterMembers []*GlobalClusterMember `locationNameList:"GlobalClusterMember" type:"list"`

	// The Amazon Web Services Region-unique, immutable identifier for the global
	// database cluster. This identifier is found in Amazon Web Services CloudTrail
	// log entries whenever the Amazon Web Services KMS key for the DB cluster is
	// accessed.
	GlobalClusterResourceId *string `type:"string"`

	// Specifies the current state of this global database cluster.
	Status *string `type:"string"`

	// The storage encryption setting for the global database cluster.
	StorageEncrypted *bool `type:"boolean"`
}

// 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 GlobalCluster) 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 GlobalCluster) GoString() string {
	return s.String()
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GlobalCluster) SetDatabaseName(v string) *GlobalCluster {
	s.DatabaseName = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *GlobalCluster) SetDeletionProtection(v bool) *GlobalCluster {
	s.DeletionProtection = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *GlobalCluster) SetEngine(v string) *GlobalCluster {
	s.Engine = &v
	return s
}

// SetEngineLifecycleSupport sets the EngineLifecycleSupport field's value.
func (s *GlobalCluster) SetEngineLifecycleSupport(v string) *GlobalCluster {
	s.EngineLifecycleSupport = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *GlobalCluster) SetEngineVersion(v string) *GlobalCluster {
	s.EngineVersion = &v
	return s
}

// SetFailoverState sets the FailoverState field's value.
func (s *GlobalCluster) SetFailoverState(v *FailoverState) *GlobalCluster {
	s.FailoverState = v
	return s
}

// SetGlobalClusterArn sets the GlobalClusterArn field's value.
func (s *GlobalCluster) SetGlobalClusterArn(v string) *GlobalCluster {
	s.GlobalClusterArn = &v
	return s
}

// SetGlobalClusterIdentifier sets the GlobalClusterIdentifier field's value.
func (s *GlobalCluster) SetGlobalClusterIdentifier(v string) *GlobalCluster {
	s.GlobalClusterIdentifier = &v
	return s
}

// SetGlobalClusterMembers sets the GlobalClusterMembers field's value.
func (s *GlobalCluster) SetGlobalClusterMembers(v []*GlobalClusterMember) *GlobalCluster {
	s.GlobalClusterMembers = v
	return s
}

// SetGlobalClusterResourceId sets the GlobalClusterResourceId field's value.
func (s *GlobalCluster) SetGlobalClusterResourceId(v string) *GlobalCluster {
	s.GlobalClusterResourceId = &v
	return s
}

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

// SetStorageEncrypted sets the StorageEncrypted field's value.
func (s *GlobalCluster) SetStorageEncrypted(v bool) *GlobalCluster {
	s.StorageEncrypted = &v
	return s
}

// A data structure with information about any primary and secondary clusters
// associated with a global cluster (Aurora global database).
type GlobalClusterMember struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for each Aurora DB cluster in the global cluster.
	DBClusterArn *string `type:"string"`

	// The status of write forwarding for a secondary cluster in the global cluster.
	GlobalWriteForwardingStatus *string `type:"string" enum:"WriteForwardingStatus"`

	// Indicates whether the Aurora DB cluster is the primary cluster (that is,
	// has read-write capability) for the global cluster with which it is associated.
	IsWriter *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) for each read-only secondary cluster associated
	// with the global cluster.
	Readers []*string `type:"list"`

	// The status of synchronization of each Aurora DB cluster in the global cluster.
	SynchronizationStatus *string `type:"string" enum:"GlobalClusterMemberSynchronizationStatus"`
}

// 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 GlobalClusterMember) 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 GlobalClusterMember) GoString() string {
	return s.String()
}

// SetDBClusterArn sets the DBClusterArn field's value.
func (s *GlobalClusterMember) SetDBClusterArn(v string) *GlobalClusterMember {
	s.DBClusterArn = &v
	return s
}

// SetGlobalWriteForwardingStatus sets the GlobalWriteForwardingStatus field's value.
func (s *GlobalClusterMember) SetGlobalWriteForwardingStatus(v string) *GlobalClusterMember {
	s.GlobalWriteForwardingStatus = &v
	return s
}

// SetIsWriter sets the IsWriter field's value.
func (s *GlobalClusterMember) SetIsWriter(v bool) *GlobalClusterMember {
	s.IsWriter = &v
	return s
}

// SetReaders sets the Readers field's value.
func (s *GlobalClusterMember) SetReaders(v []*string) *GlobalClusterMember {
	s.Readers = v
	return s
}

// SetSynchronizationStatus sets the SynchronizationStatus field's value.
func (s *GlobalClusterMember) SetSynchronizationStatus(v string) *GlobalClusterMember {
	s.SynchronizationStatus = &v
	return s
}

// This data type is used as a response element in the DescribeDBSecurityGroups
// action.
type IPRange struct {
	_ struct{} `type:"structure"`

	// The IP range.
	CIDRIP *string `type:"string"`

	// The status of the IP range. Status can be "authorizing", "authorized", "revoking",
	// and "revoked".
	Status *string `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 IPRange) 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 IPRange) GoString() string {
	return s.String()
}

// SetCIDRIP sets the CIDRIP field's value.
func (s *IPRange) SetCIDRIP(v string) *IPRange {
	s.CIDRIP = &v
	return s
}

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

// A zero-ETL integration with Amazon Redshift.
type Integration struct {
	_ struct{} `type:"structure"`

	// The encryption context for the integration. For more information, see Encryption
	// context (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)
	// in the Amazon Web Services Key Management Service Developer Guide.
	AdditionalEncryptionContext map[string]*string `type:"map"`

	// The time when the integration was created, in Universal Coordinated Time
	// (UTC).
	CreateTime *time.Time `type:"timestamp"`

	// Data filters for the integration. These filters determine which tables from
	// the source database are sent to the target Amazon Redshift data warehouse.
	DataFilter *string `min:"1" type:"string"`

	// A description of the integration.
	Description *string `type:"string"`

	// Any errors associated with the integration.
	Errors []*IntegrationError `locationNameList:"IntegrationError" type:"list"`

	// The ARN of the integration.
	IntegrationArn *string `min:"1" type:"string"`

	// The name of the integration.
	IntegrationName *string `min:"1" type:"string"`

	// The Amazon Web Services Key Management System (Amazon Web Services KMS) key
	// identifier for the key used to to encrypt the integration.
	KMSKeyId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the database used as the source for replication.
	SourceArn *string `min:"1" type:"string"`

	// The current status of the integration.
	Status *string `type:"string" enum:"IntegrationStatus"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// The ARN of the Redshift data warehouse used as the target for replication.
	TargetArn *string `min:"20" 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 Integration) 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 Integration) GoString() string {
	return s.String()
}

// SetAdditionalEncryptionContext sets the AdditionalEncryptionContext field's value.
func (s *Integration) SetAdditionalEncryptionContext(v map[string]*string) *Integration {
	s.AdditionalEncryptionContext = v
	return s
}

// SetCreateTime sets the CreateTime field's value.
func (s *Integration) SetCreateTime(v time.Time) *Integration {
	s.CreateTime = &v
	return s
}

// SetDataFilter sets the DataFilter field's value.
func (s *Integration) SetDataFilter(v string) *Integration {
	s.DataFilter = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Integration) SetDescription(v string) *Integration {
	s.Description = &v
	return s
}

// SetErrors sets the Errors field's value.
func (s *Integration) SetErrors(v []*IntegrationError) *Integration {
	s.Errors = v
	return s
}

// SetIntegrationArn sets the IntegrationArn field's value.
func (s *Integration) SetIntegrationArn(v string) *Integration {
	s.IntegrationArn = &v
	return s
}

// SetIntegrationName sets the IntegrationName field's value.
func (s *Integration) SetIntegrationName(v string) *Integration {
	s.IntegrationName = &v
	return s
}

// SetKMSKeyId sets the KMSKeyId field's value.
func (s *Integration) SetKMSKeyId(v string) *Integration {
	s.KMSKeyId = &v
	return s
}

// SetSourceArn sets the SourceArn field's value.
func (s *Integration) SetSourceArn(v string) *Integration {
	s.SourceArn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *Integration) SetStatus(v string) *Integration {
	s.Status = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *Integration) SetTags(v []*Tag) *Integration {
	s.Tags = v
	return s
}

// SetTargetArn sets the TargetArn field's value.
func (s *Integration) SetTargetArn(v string) *Integration {
	s.TargetArn = &v
	return s
}

// An error associated with a zero-ETL integration with Amazon Redshift.
type IntegrationError struct {
	_ struct{} `type:"structure"`

	// The error code associated with the integration.
	//
	// ErrorCode is a required field
	ErrorCode *string `type:"string" required:"true"`

	// A message explaining the error.
	ErrorMessage *string `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 IntegrationError) 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 IntegrationError) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *IntegrationError) SetErrorCode(v string) *IntegrationError {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *IntegrationError) SetErrorMessage(v string) *IntegrationError {
	s.ErrorMessage = &v
	return s
}

// The details of an issue with your DB instances, DB clusters, and DB parameter
// groups.
type IssueDetails struct {
	_ struct{} `type:"structure"`

	// A detailed description of the issue when the recommendation category is performance.
	PerformanceIssueDetails *PerformanceIssueDetails `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 IssueDetails) 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 IssueDetails) GoString() string {
	return s.String()
}

// SetPerformanceIssueDetails sets the PerformanceIssueDetails field's value.
func (s *IssueDetails) SetPerformanceIssueDetails(v *PerformanceIssueDetails) *IssueDetails {
	s.PerformanceIssueDetails = v
	return s
}

// Contains details for Aurora Limitless Database.
type LimitlessDatabase struct {
	_ struct{} `type:"structure"`

	// The minimum required capacity for Aurora Limitless Database in Aurora capacity
	// units (ACUs).
	MinRequiredACU *float64 `type:"double"`

	// The status of Aurora Limitless Database.
	Status *string `type:"string" enum:"LimitlessDatabaseStatus"`
}

// 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 LimitlessDatabase) 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 LimitlessDatabase) GoString() string {
	return s.String()
}

// SetMinRequiredACU sets the MinRequiredACU field's value.
func (s *LimitlessDatabase) SetMinRequiredACU(v float64) *LimitlessDatabase {
	s.MinRequiredACU = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *LimitlessDatabase) SetStatus(v string) *LimitlessDatabase {
	s.Status = &v
	return s
}

type ListTagsForResourceInput struct {
	_ struct{} `type:"structure"`

	// This parameter isn't currently supported.
	Filters []*Filter `locationNameList:"Filter" type:"list"`

	// The Amazon RDS resource with tags to be listed. This value is an Amazon Resource
	// Name (ARN). For information about creating an ARN, see Constructing an ARN
	// for Amazon RDS (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing)
	// in the Amazon RDS User Guide.
	//
	// ResourceName is a required field
	ResourceName *string `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 ListTagsForResourceInput) 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 ListTagsForResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTagsForResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *ListTagsForResourceInput) SetFilters(v []*Filter) *ListTagsForResourceInput {
	s.Filters = v
	return s
}

// SetResourceName sets the ResourceName field's value.
func (s *ListTagsForResourceInput) SetResourceName(v string) *ListTagsForResourceInput {
	s.ResourceName = &v
	return s
}

type ListTagsForResourceOutput struct {
	_ struct{} `type:"structure"`

	// List of tags returned by the ListTagsForResource operation.
	TagList []*Tag `locationNameList:"Tag" 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 ListTagsForResourceOutput) 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 ListTagsForResourceOutput) GoString() string {
	return s.String()
}

// SetTagList sets the TagList field's value.
func (s *ListTagsForResourceOutput) SetTagList(v []*Tag) *ListTagsForResourceOutput {
	s.TagList = v
	return s
}

// Contains the secret managed by RDS in Amazon Web Services Secrets Manager
// for the master user password.
//
// For more information, see Password management with Amazon Web Services Secrets
// Manager (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html)
// in the Amazon RDS User Guide and Password management with Amazon Web Services
// Secrets Manager (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html)
// in the Amazon Aurora User Guide.
type MasterUserSecret struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services KMS key identifier that is used to encrypt the secret.
	KmsKeyId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the secret.
	SecretArn *string `type:"string"`

	// The status of the secret.
	//
	// The possible status values include the following:
	//
	//    * creating - The secret is being created.
	//
	//    * active - The secret is available for normal use and rotation.
	//
	//    * rotating - The secret is being rotated.
	//
	//    * impaired - The secret can be used to access database credentials, but
	//    it can't be rotated. A secret might have this status if, for example,
	//    permissions are changed so that RDS can no longer access either the secret
	//    or the KMS key for the secret. When a secret has this status, you can
	//    correct the condition that caused the status. Alternatively, modify the
	//    DB instance to turn off automatic management of database credentials,
	//    and then modify the DB instance again to turn on automatic management
	//    of database credentials.
	SecretStatus *string `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 MasterUserSecret) 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 MasterUserSecret) GoString() string {
	return s.String()
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *MasterUserSecret) SetKmsKeyId(v string) *MasterUserSecret {
	s.KmsKeyId = &v
	return s
}

// SetSecretArn sets the SecretArn field's value.
func (s *MasterUserSecret) SetSecretArn(v string) *MasterUserSecret {
	s.SecretArn = &v
	return s
}

// SetSecretStatus sets the SecretStatus field's value.
func (s *MasterUserSecret) SetSecretStatus(v string) *MasterUserSecret {
	s.SecretStatus = &v
	return s
}

// The representation of a metric.
type Metric struct {
	_ struct{} `type:"structure"`

	// The query to retrieve metric data points.
	MetricQuery *MetricQuery `type:"structure"`

	// The name of a metric.
	Name *string `type:"string"`

	// A list of metric references (thresholds).
	References []*MetricReference `type:"list"`

	// The details of different statistics for a metric. The description might contain
	// markdown.
	StatisticsDetails *string `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 Metric) 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 Metric) GoString() string {
	return s.String()
}

// SetMetricQuery sets the MetricQuery field's value.
func (s *Metric) SetMetricQuery(v *MetricQuery) *Metric {
	s.MetricQuery = v
	return s
}

// SetName sets the Name field's value.
func (s *Metric) SetName(v string) *Metric {
	s.Name = &v
	return s
}

// SetReferences sets the References field's value.
func (s *Metric) SetReferences(v []*MetricReference) *Metric {
	s.References = v
	return s
}

// SetStatisticsDetails sets the StatisticsDetails field's value.
func (s *Metric) SetStatisticsDetails(v string) *Metric {
	s.StatisticsDetails = &v
	return s
}

// The query to retrieve metric data points.
type MetricQuery struct {
	_ struct{} `type:"structure"`

	// The Performance Insights query that you can use to retrieve Performance Insights
	// metric data points.
	PerformanceInsightsMetricQuery *PerformanceInsightsMetricQuery `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 MetricQuery) 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 MetricQuery) GoString() string {
	return s.String()
}

// SetPerformanceInsightsMetricQuery sets the PerformanceInsightsMetricQuery field's value.
func (s *MetricQuery) SetPerformanceInsightsMetricQuery(v *PerformanceInsightsMetricQuery) *MetricQuery {
	s.PerformanceInsightsMetricQuery = v
	return s
}

// The reference (threshold) for a metric.
type MetricReference struct {
	_ struct{} `type:"structure"`

	// The name of the metric reference.
	Name *string `type:"string"`

	// The details of a performance issue.
	ReferenceDetails *ReferenceDetails `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 MetricReference) 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 MetricReference) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *MetricReference) SetName(v string) *MetricReference {
	s.Name = &v
	return s
}

// SetReferenceDetails sets the ReferenceDetails field's value.
func (s *MetricReference) SetReferenceDetails(v *ReferenceDetails) *MetricReference {
	s.ReferenceDetails = v
	return s
}

// The minimum DB engine version required for each corresponding allowed value
// for an option setting.
type MinimumEngineVersionPerAllowedValue struct {
	_ struct{} `type:"structure"`

	// The allowed value for an option setting.
	AllowedValue *string `type:"string"`

	// The minimum DB engine version required for the allowed value.
	MinimumEngineVersion *string `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 MinimumEngineVersionPerAllowedValue) 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 MinimumEngineVersionPerAllowedValue) GoString() string {
	return s.String()
}

// SetAllowedValue sets the AllowedValue field's value.
func (s *MinimumEngineVersionPerAllowedValue) SetAllowedValue(v string) *MinimumEngineVersionPerAllowedValue {
	s.AllowedValue = &v
	return s
}

// SetMinimumEngineVersion sets the MinimumEngineVersion field's value.
func (s *MinimumEngineVersionPerAllowedValue) SetMinimumEngineVersion(v string) *MinimumEngineVersionPerAllowedValue {
	s.MinimumEngineVersion = &v
	return s
}

type ModifyActivityStreamInput struct {
	_ struct{} `type:"structure"`

	// The audit policy state. When a policy is unlocked, it is read/write. When
	// it is locked, it is read-only. You can edit your audit policy only when the
	// activity stream is unlocked or stopped.
	AuditPolicyState *string `type:"string" enum:"AuditPolicyState"`

	// The Amazon Resource Name (ARN) of the RDS for Oracle or Microsoft SQL Server
	// DB instance. For example, arn:aws:rds:us-east-1:12345667890:db:my-orcl-db.
	ResourceArn *string `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 ModifyActivityStreamInput) 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 ModifyActivityStreamInput) GoString() string {
	return s.String()
}

// SetAuditPolicyState sets the AuditPolicyState field's value.
func (s *ModifyActivityStreamInput) SetAuditPolicyState(v string) *ModifyActivityStreamInput {
	s.AuditPolicyState = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *ModifyActivityStreamInput) SetResourceArn(v string) *ModifyActivityStreamInput {
	s.ResourceArn = &v
	return s
}

type ModifyActivityStreamOutput struct {
	_ struct{} `type:"structure"`

	// Indicates whether engine-native audit fields are included in the database
	// activity stream.
	EngineNativeAuditFieldsIncluded *bool `type:"boolean"`

	// The name of the Amazon Kinesis data stream to be used for the database activity
	// stream.
	KinesisStreamName *string `type:"string"`

	// The Amazon Web Services KMS key identifier for encryption of messages in
	// the database activity stream.
	KmsKeyId *string `type:"string"`

	// The mode of the database activity stream.
	Mode *string `type:"string" enum:"ActivityStreamMode"`

	// The status of the modification to the policy state of the database activity
	// stream.
	PolicyStatus *string `type:"string" enum:"ActivityStreamPolicyStatus"`

	// The status of the modification to the database activity stream.
	Status *string `type:"string" enum:"ActivityStreamStatus"`
}

// 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 ModifyActivityStreamOutput) 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 ModifyActivityStreamOutput) GoString() string {
	return s.String()
}

// SetEngineNativeAuditFieldsIncluded sets the EngineNativeAuditFieldsIncluded field's value.
func (s *ModifyActivityStreamOutput) SetEngineNativeAuditFieldsIncluded(v bool) *ModifyActivityStreamOutput {
	s.EngineNativeAuditFieldsIncluded = &v
	return s
}

// SetKinesisStreamName sets the KinesisStreamName field's value.
func (s *ModifyActivityStreamOutput) SetKinesisStreamName(v string) *ModifyActivityStreamOutput {
	s.KinesisStreamName = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *ModifyActivityStreamOutput) SetKmsKeyId(v string) *ModifyActivityStreamOutput {
	s.KmsKeyId = &v
	return s
}

// SetMode sets the Mode field's value.
func (s *ModifyActivityStreamOutput) SetMode(v string) *ModifyActivityStreamOutput {
	s.Mode = &v
	return s
}

// SetPolicyStatus sets the PolicyStatus field's value.
func (s *ModifyActivityStreamOutput) SetPolicyStatus(v string) *ModifyActivityStreamOutput {
	s.PolicyStatus = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ModifyActivityStreamOutput) SetStatus(v string) *ModifyActivityStreamOutput {
	s.Status = &v
	return s
}

type ModifyCertificatesInput struct {
	_ struct{} `type:"structure"`

	// The new default certificate identifier to override the current one with.
	//
	// To determine the valid values, use the describe-certificates CLI command
	// or the DescribeCertificates API operation.
	CertificateIdentifier *string `type:"string"`

	// Specifies whether to remove the override for the default certificate. If
	// the override is removed, the default certificate is the system default.
	RemoveCustomerOverride *bool `type:"boolean"`
}

// 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 ModifyCertificatesInput) 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 ModifyCertificatesInput) GoString() string {
	return s.String()
}

// SetCertificateIdentifier sets the CertificateIdentifier field's value.
func (s *ModifyCertificatesInput) SetCertificateIdentifier(v string) *ModifyCertificatesInput {
	s.CertificateIdentifier = &v
	return s
}

// SetRemoveCustomerOverride sets the RemoveCustomerOverride field's value.
func (s *ModifyCertificatesInput) SetRemoveCustomerOverride(v bool) *ModifyCertificatesInput {
	s.RemoveCustomerOverride = &v
	return s
}

type ModifyCertificatesOutput struct {
	_ struct{} `type:"structure"`

	// A CA certificate for an Amazon Web Services account.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	Certificate *Certificate `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 ModifyCertificatesOutput) 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 ModifyCertificatesOutput) GoString() string {
	return s.String()
}

// SetCertificate sets the Certificate field's value.
func (s *ModifyCertificatesOutput) SetCertificate(v *Certificate) *ModifyCertificatesOutput {
	s.Certificate = v
	return s
}

type ModifyCurrentDBClusterCapacityInput struct {
	_ struct{} `type:"structure"`

	// The DB cluster capacity.
	//
	// When you change the capacity of a paused Aurora Serverless v1 DB cluster,
	// it automatically resumes.
	//
	// Constraints:
	//
	//    * For Aurora MySQL, valid capacity values are 1, 2, 4, 8, 16, 32, 64,
	//    128, and 256.
	//
	//    * For Aurora PostgreSQL, valid capacity values are 2, 4, 8, 16, 32, 64,
	//    192, and 384.
	Capacity *int64 `type:"integer"`

	// The DB cluster identifier for the cluster being modified. This parameter
	// isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DB cluster.
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// The amount of time, in seconds, that Aurora Serverless v1 tries to find a
	// scaling point to perform seamless scaling before enforcing the timeout action.
	// The default is 300.
	//
	// Specify a value between 10 and 600 seconds.
	SecondsBeforeTimeout *int64 `type:"integer"`

	// The action to take when the timeout is reached, either ForceApplyCapacityChange
	// or RollbackCapacityChange.
	//
	// ForceApplyCapacityChange, the default, sets the capacity to the specified
	// value as soon as possible.
	//
	// RollbackCapacityChange ignores the capacity change if a scaling point isn't
	// found in the timeout period.
	TimeoutAction *string `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 ModifyCurrentDBClusterCapacityInput) 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 ModifyCurrentDBClusterCapacityInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyCurrentDBClusterCapacityInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyCurrentDBClusterCapacityInput"}
	if s.DBClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCapacity sets the Capacity field's value.
func (s *ModifyCurrentDBClusterCapacityInput) SetCapacity(v int64) *ModifyCurrentDBClusterCapacityInput {
	s.Capacity = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *ModifyCurrentDBClusterCapacityInput) SetDBClusterIdentifier(v string) *ModifyCurrentDBClusterCapacityInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetSecondsBeforeTimeout sets the SecondsBeforeTimeout field's value.
func (s *ModifyCurrentDBClusterCapacityInput) SetSecondsBeforeTimeout(v int64) *ModifyCurrentDBClusterCapacityInput {
	s.SecondsBeforeTimeout = &v
	return s
}

// SetTimeoutAction sets the TimeoutAction field's value.
func (s *ModifyCurrentDBClusterCapacityInput) SetTimeoutAction(v string) *ModifyCurrentDBClusterCapacityInput {
	s.TimeoutAction = &v
	return s
}

type ModifyCurrentDBClusterCapacityOutput struct {
	_ struct{} `type:"structure"`

	// The current capacity of the DB cluster.
	CurrentCapacity *int64 `type:"integer"`

	// A user-supplied DB cluster identifier. This identifier is the unique key
	// that identifies a DB cluster.
	DBClusterIdentifier *string `type:"string"`

	// A value that specifies the capacity that the DB cluster scales to next.
	PendingCapacity *int64 `type:"integer"`

	// The number of seconds before a call to ModifyCurrentDBClusterCapacity times
	// out.
	SecondsBeforeTimeout *int64 `type:"integer"`

	// The timeout action of a call to ModifyCurrentDBClusterCapacity, either ForceApplyCapacityChange
	// or RollbackCapacityChange.
	TimeoutAction *string `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 ModifyCurrentDBClusterCapacityOutput) 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 ModifyCurrentDBClusterCapacityOutput) GoString() string {
	return s.String()
}

// SetCurrentCapacity sets the CurrentCapacity field's value.
func (s *ModifyCurrentDBClusterCapacityOutput) SetCurrentCapacity(v int64) *ModifyCurrentDBClusterCapacityOutput {
	s.CurrentCapacity = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *ModifyCurrentDBClusterCapacityOutput) SetDBClusterIdentifier(v string) *ModifyCurrentDBClusterCapacityOutput {
	s.DBClusterIdentifier = &v
	return s
}

// SetPendingCapacity sets the PendingCapacity field's value.
func (s *ModifyCurrentDBClusterCapacityOutput) SetPendingCapacity(v int64) *ModifyCurrentDBClusterCapacityOutput {
	s.PendingCapacity = &v
	return s
}

// SetSecondsBeforeTimeout sets the SecondsBeforeTimeout field's value.
func (s *ModifyCurrentDBClusterCapacityOutput) SetSecondsBeforeTimeout(v int64) *ModifyCurrentDBClusterCapacityOutput {
	s.SecondsBeforeTimeout = &v
	return s
}

// SetTimeoutAction sets the TimeoutAction field's value.
func (s *ModifyCurrentDBClusterCapacityOutput) SetTimeoutAction(v string) *ModifyCurrentDBClusterCapacityOutput {
	s.TimeoutAction = &v
	return s
}

type ModifyCustomDBEngineVersionInput struct {
	_ struct{} `type:"structure"`

	// An optional description of your CEV.
	Description *string `min:"1" type:"string"`

	// The database engine. RDS Custom for Oracle supports the following values:
	//
	//    * custom-oracle-ee
	//
	//    * custom-oracle-ee-cdb
	//
	//    * custom-oracle-se2
	//
	//    * custom-oracle-se2-cdb
	//
	// Engine is a required field
	Engine *string `min:"1" type:"string" required:"true"`

	// The custom engine version (CEV) that you want to modify. This option is required
	// for RDS Custom for Oracle, but optional for Amazon RDS. The combination of
	// Engine and EngineVersion is unique per customer per Amazon Web Services Region.
	//
	// EngineVersion is a required field
	EngineVersion *string `min:"1" type:"string" required:"true"`

	// The availability status to be assigned to the CEV. Valid values are as follows:
	//
	// available
	//
	// You can use this CEV to create a new RDS Custom DB instance.
	//
	// inactive
	//
	// You can create a new RDS Custom instance by restoring a DB snapshot with
	// this CEV. You can't patch or create new instances with this CEV.
	//
	// You can change any status to any status. A typical reason to change status
	// is to prevent the accidental use of a CEV, or to make a deprecated CEV eligible
	// for use again. For example, you might change the status of your CEV from
	// available to inactive, and from inactive back to available. To change the
	// availability status of the CEV, it must not currently be in use by an RDS
	// Custom instance, snapshot, or automated backup.
	Status *string `type:"string" enum:"CustomEngineVersionStatus"`
}

// 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 ModifyCustomDBEngineVersionInput) 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 ModifyCustomDBEngineVersionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyCustomDBEngineVersionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyCustomDBEngineVersionInput"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.Engine == nil {
		invalidParams.Add(request.NewErrParamRequired("Engine"))
	}
	if s.Engine != nil && len(*s.Engine) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Engine", 1))
	}
	if s.EngineVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("EngineVersion"))
	}
	if s.EngineVersion != nil && len(*s.EngineVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EngineVersion", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *ModifyCustomDBEngineVersionInput) SetDescription(v string) *ModifyCustomDBEngineVersionInput {
	s.Description = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *ModifyCustomDBEngineVersionInput) SetEngine(v string) *ModifyCustomDBEngineVersionInput {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *ModifyCustomDBEngineVersionInput) SetEngineVersion(v string) *ModifyCustomDBEngineVersionInput {
	s.EngineVersion = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ModifyCustomDBEngineVersionInput) SetStatus(v string) *ModifyCustomDBEngineVersionInput {
	s.Status = &v
	return s
}

// This data type is used as a response element in the action DescribeDBEngineVersions.
type ModifyCustomDBEngineVersionOutput struct {
	_ struct{} `type:"structure"`

	// The creation time of the DB engine version.
	CreateTime *time.Time `type:"timestamp"`

	// JSON string that lists the installation files and parameters that RDS Custom
	// uses to create a custom engine version (CEV). RDS Custom applies the patches
	// in the order in which they're listed in the manifest. You can set the Oracle
	// home, Oracle base, and UNIX/Linux user and group using the installation parameters.
	// For more information, see JSON fields in the CEV manifest (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-cev.preparing.html#custom-cev.preparing.manifest.fields)
	// in the Amazon RDS User Guide.
	CustomDBEngineVersionManifest *string `min:"1" type:"string"`

	// The description of the database engine.
	DBEngineDescription *string `type:"string"`

	// A value that indicates the source media provider of the AMI based on the
	// usage operation. Applicable for RDS Custom for SQL Server.
	DBEngineMediaType *string `type:"string"`

	// The ARN of the custom engine version.
	DBEngineVersionArn *string `type:"string"`

	// The description of the database engine version.
	DBEngineVersionDescription *string `type:"string"`

	// The name of the DB parameter group family for the database engine.
	DBParameterGroupFamily *string `type:"string"`

	// The name of the Amazon S3 bucket that contains your database installation
	// files.
	DatabaseInstallationFilesS3BucketName *string `type:"string"`

	// The Amazon S3 directory that contains the database installation files. If
	// not specified, then no prefix is assumed.
	DatabaseInstallationFilesS3Prefix *string `type:"string"`

	// The default character set for new instances of this engine version, if the
	// CharacterSetName parameter of the CreateDBInstance API isn't specified.
	DefaultCharacterSet *CharacterSet `type:"structure"`

	// The name of the database engine.
	Engine *string `type:"string"`

	// The version number of the database engine.
	EngineVersion *string `type:"string"`

	// The types of logs that the database engine has available for export to CloudWatch
	// Logs.
	ExportableLogTypes []*string `type:"list"`

	// The EC2 image
	Image *CustomDBEngineVersionAMI `type:"structure"`

	// The Amazon Web Services KMS key identifier for an encrypted CEV. This parameter
	// is required for RDS Custom, but optional for Amazon RDS.
	KMSKeyId *string `type:"string"`

	// The major engine version of the CEV.
	MajorEngineVersion *string `type:"string"`

	// The status of the DB engine version, either available or deprecated.
	Status *string `type:"string"`

	// A list of the supported CA certificate identifiers.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	SupportedCACertificateIdentifiers []*string `type:"list"`

	// A list of the character sets supported by this engine for the CharacterSetName
	// parameter of the CreateDBInstance operation.
	SupportedCharacterSets []*CharacterSet `locationNameList:"CharacterSet" type:"list"`

	// A list of the supported DB engine modes.
	SupportedEngineModes []*string `type:"list"`

	// A list of features supported by the DB engine.
	//
	// The supported features vary by DB engine and DB engine version.
	//
	// To determine the supported features for a specific DB engine and DB engine
	// version using the CLI, use the following command:
	//
	// aws rds describe-db-engine-versions --engine <engine_name> --engine-version
	// <engine_version>
	//
	// For example, to determine the supported features for RDS for PostgreSQL version
	// 13.3 using the CLI, use the following command:
	//
	// aws rds describe-db-engine-versions --engine postgres --engine-version 13.3
	//
	// The supported features are listed under SupportedFeatureNames in the output.
	SupportedFeatureNames []*string `type:"list"`

	// A list of the character sets supported by the Oracle DB engine for the NcharCharacterSetName
	// parameter of the CreateDBInstance operation.
	SupportedNcharCharacterSets []*CharacterSet `locationNameList:"CharacterSet" type:"list"`

	// A list of the time zones supported by this engine for the Timezone parameter
	// of the CreateDBInstance action.
	SupportedTimezones []*Timezone `locationNameList:"Timezone" type:"list"`

	// Indicates whether the engine version supports Babelfish for Aurora PostgreSQL.
	SupportsBabelfish *bool `type:"boolean"`

	// Indicates whether the engine version supports rotating the server certificate
	// without rebooting the DB instance.
	SupportsCertificateRotationWithoutRestart *bool `type:"boolean"`

	// Indicates whether you can use Aurora global databases with a specific DB
	// engine version.
	SupportsGlobalDatabases *bool `type:"boolean"`

	// Indicates whether the DB engine version supports zero-ETL integrations with
	// Amazon Redshift.
	SupportsIntegrations *bool `type:"boolean"`

	// Indicates whether the DB engine version supports Aurora Limitless Database.
	SupportsLimitlessDatabase *bool `type:"boolean"`

	// Indicates whether the DB engine version supports forwarding write operations
	// from reader DB instances to the writer DB instance in the DB cluster. By
	// default, write operations aren't allowed on reader DB instances.
	//
	// Valid for: Aurora DB clusters only
	SupportsLocalWriteForwarding *bool `type:"boolean"`

	// Indicates whether the engine version supports exporting the log types specified
	// by ExportableLogTypes to CloudWatch Logs.
	SupportsLogExportsToCloudwatchLogs *bool `type:"boolean"`

	// Indicates whether you can use Aurora parallel query with a specific DB engine
	// version.
	SupportsParallelQuery *bool `type:"boolean"`

	// Indicates whether the database engine version supports read replicas.
	SupportsReadReplica *bool `type:"boolean"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	TagList []*Tag `locationNameList:"Tag" type:"list"`

	// A list of engine versions that this database engine version can be upgraded
	// to.
	ValidUpgradeTarget []*UpgradeTarget `locationNameList:"UpgradeTarget" 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 ModifyCustomDBEngineVersionOutput) 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 ModifyCustomDBEngineVersionOutput) GoString() string {
	return s.String()
}

// SetCreateTime sets the CreateTime field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetCreateTime(v time.Time) *ModifyCustomDBEngineVersionOutput {
	s.CreateTime = &v
	return s
}

// SetCustomDBEngineVersionManifest sets the CustomDBEngineVersionManifest field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetCustomDBEngineVersionManifest(v string) *ModifyCustomDBEngineVersionOutput {
	s.CustomDBEngineVersionManifest = &v
	return s
}

// SetDBEngineDescription sets the DBEngineDescription field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetDBEngineDescription(v string) *ModifyCustomDBEngineVersionOutput {
	s.DBEngineDescription = &v
	return s
}

// SetDBEngineMediaType sets the DBEngineMediaType field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetDBEngineMediaType(v string) *ModifyCustomDBEngineVersionOutput {
	s.DBEngineMediaType = &v
	return s
}

// SetDBEngineVersionArn sets the DBEngineVersionArn field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetDBEngineVersionArn(v string) *ModifyCustomDBEngineVersionOutput {
	s.DBEngineVersionArn = &v
	return s
}

// SetDBEngineVersionDescription sets the DBEngineVersionDescription field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetDBEngineVersionDescription(v string) *ModifyCustomDBEngineVersionOutput {
	s.DBEngineVersionDescription = &v
	return s
}

// SetDBParameterGroupFamily sets the DBParameterGroupFamily field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetDBParameterGroupFamily(v string) *ModifyCustomDBEngineVersionOutput {
	s.DBParameterGroupFamily = &v
	return s
}

// SetDatabaseInstallationFilesS3BucketName sets the DatabaseInstallationFilesS3BucketName field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetDatabaseInstallationFilesS3BucketName(v string) *ModifyCustomDBEngineVersionOutput {
	s.DatabaseInstallationFilesS3BucketName = &v
	return s
}

// SetDatabaseInstallationFilesS3Prefix sets the DatabaseInstallationFilesS3Prefix field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetDatabaseInstallationFilesS3Prefix(v string) *ModifyCustomDBEngineVersionOutput {
	s.DatabaseInstallationFilesS3Prefix = &v
	return s
}

// SetDefaultCharacterSet sets the DefaultCharacterSet field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetDefaultCharacterSet(v *CharacterSet) *ModifyCustomDBEngineVersionOutput {
	s.DefaultCharacterSet = v
	return s
}

// SetEngine sets the Engine field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetEngine(v string) *ModifyCustomDBEngineVersionOutput {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetEngineVersion(v string) *ModifyCustomDBEngineVersionOutput {
	s.EngineVersion = &v
	return s
}

// SetExportableLogTypes sets the ExportableLogTypes field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetExportableLogTypes(v []*string) *ModifyCustomDBEngineVersionOutput {
	s.ExportableLogTypes = v
	return s
}

// SetImage sets the Image field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetImage(v *CustomDBEngineVersionAMI) *ModifyCustomDBEngineVersionOutput {
	s.Image = v
	return s
}

// SetKMSKeyId sets the KMSKeyId field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetKMSKeyId(v string) *ModifyCustomDBEngineVersionOutput {
	s.KMSKeyId = &v
	return s
}

// SetMajorEngineVersion sets the MajorEngineVersion field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetMajorEngineVersion(v string) *ModifyCustomDBEngineVersionOutput {
	s.MajorEngineVersion = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetStatus(v string) *ModifyCustomDBEngineVersionOutput {
	s.Status = &v
	return s
}

// SetSupportedCACertificateIdentifiers sets the SupportedCACertificateIdentifiers field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportedCACertificateIdentifiers(v []*string) *ModifyCustomDBEngineVersionOutput {
	s.SupportedCACertificateIdentifiers = v
	return s
}

// SetSupportedCharacterSets sets the SupportedCharacterSets field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportedCharacterSets(v []*CharacterSet) *ModifyCustomDBEngineVersionOutput {
	s.SupportedCharacterSets = v
	return s
}

// SetSupportedEngineModes sets the SupportedEngineModes field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportedEngineModes(v []*string) *ModifyCustomDBEngineVersionOutput {
	s.SupportedEngineModes = v
	return s
}

// SetSupportedFeatureNames sets the SupportedFeatureNames field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportedFeatureNames(v []*string) *ModifyCustomDBEngineVersionOutput {
	s.SupportedFeatureNames = v
	return s
}

// SetSupportedNcharCharacterSets sets the SupportedNcharCharacterSets field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportedNcharCharacterSets(v []*CharacterSet) *ModifyCustomDBEngineVersionOutput {
	s.SupportedNcharCharacterSets = v
	return s
}

// SetSupportedTimezones sets the SupportedTimezones field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportedTimezones(v []*Timezone) *ModifyCustomDBEngineVersionOutput {
	s.SupportedTimezones = v
	return s
}

// SetSupportsBabelfish sets the SupportsBabelfish field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportsBabelfish(v bool) *ModifyCustomDBEngineVersionOutput {
	s.SupportsBabelfish = &v
	return s
}

// SetSupportsCertificateRotationWithoutRestart sets the SupportsCertificateRotationWithoutRestart field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportsCertificateRotationWithoutRestart(v bool) *ModifyCustomDBEngineVersionOutput {
	s.SupportsCertificateRotationWithoutRestart = &v
	return s
}

// SetSupportsGlobalDatabases sets the SupportsGlobalDatabases field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportsGlobalDatabases(v bool) *ModifyCustomDBEngineVersionOutput {
	s.SupportsGlobalDatabases = &v
	return s
}

// SetSupportsIntegrations sets the SupportsIntegrations field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportsIntegrations(v bool) *ModifyCustomDBEngineVersionOutput {
	s.SupportsIntegrations = &v
	return s
}

// SetSupportsLimitlessDatabase sets the SupportsLimitlessDatabase field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportsLimitlessDatabase(v bool) *ModifyCustomDBEngineVersionOutput {
	s.SupportsLimitlessDatabase = &v
	return s
}

// SetSupportsLocalWriteForwarding sets the SupportsLocalWriteForwarding field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportsLocalWriteForwarding(v bool) *ModifyCustomDBEngineVersionOutput {
	s.SupportsLocalWriteForwarding = &v
	return s
}

// SetSupportsLogExportsToCloudwatchLogs sets the SupportsLogExportsToCloudwatchLogs field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportsLogExportsToCloudwatchLogs(v bool) *ModifyCustomDBEngineVersionOutput {
	s.SupportsLogExportsToCloudwatchLogs = &v
	return s
}

// SetSupportsParallelQuery sets the SupportsParallelQuery field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportsParallelQuery(v bool) *ModifyCustomDBEngineVersionOutput {
	s.SupportsParallelQuery = &v
	return s
}

// SetSupportsReadReplica sets the SupportsReadReplica field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetSupportsReadReplica(v bool) *ModifyCustomDBEngineVersionOutput {
	s.SupportsReadReplica = &v
	return s
}

// SetTagList sets the TagList field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetTagList(v []*Tag) *ModifyCustomDBEngineVersionOutput {
	s.TagList = v
	return s
}

// SetValidUpgradeTarget sets the ValidUpgradeTarget field's value.
func (s *ModifyCustomDBEngineVersionOutput) SetValidUpgradeTarget(v []*UpgradeTarget) *ModifyCustomDBEngineVersionOutput {
	s.ValidUpgradeTarget = v
	return s
}

type ModifyDBClusterEndpointInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the endpoint to modify. This parameter is stored as a lowercase
	// string.
	//
	// DBClusterEndpointIdentifier is a required field
	DBClusterEndpointIdentifier *string `type:"string" required:"true"`

	// The type of the endpoint. One of: READER, WRITER, ANY.
	EndpointType *string `type:"string"`

	// List of DB instance identifiers that aren't part of the custom endpoint group.
	// All other eligible instances are reachable through the custom endpoint. Only
	// relevant if the list of static members is empty.
	ExcludedMembers []*string `type:"list"`

	// List of DB instance identifiers that are part of the custom endpoint group.
	StaticMembers []*string `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 ModifyDBClusterEndpointInput) 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 ModifyDBClusterEndpointInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDBClusterEndpointInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDBClusterEndpointInput"}
	if s.DBClusterEndpointIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterEndpointIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBClusterEndpointIdentifier sets the DBClusterEndpointIdentifier field's value.
func (s *ModifyDBClusterEndpointInput) SetDBClusterEndpointIdentifier(v string) *ModifyDBClusterEndpointInput {
	s.DBClusterEndpointIdentifier = &v
	return s
}

// SetEndpointType sets the EndpointType field's value.
func (s *ModifyDBClusterEndpointInput) SetEndpointType(v string) *ModifyDBClusterEndpointInput {
	s.EndpointType = &v
	return s
}

// SetExcludedMembers sets the ExcludedMembers field's value.
func (s *ModifyDBClusterEndpointInput) SetExcludedMembers(v []*string) *ModifyDBClusterEndpointInput {
	s.ExcludedMembers = v
	return s
}

// SetStaticMembers sets the StaticMembers field's value.
func (s *ModifyDBClusterEndpointInput) SetStaticMembers(v []*string) *ModifyDBClusterEndpointInput {
	s.StaticMembers = v
	return s
}

// This data type represents the information you need to connect to an Amazon
// Aurora DB cluster. This data type is used as a response element in the following
// actions:
//
//   - CreateDBClusterEndpoint
//
//   - DescribeDBClusterEndpoints
//
//   - ModifyDBClusterEndpoint
//
//   - DeleteDBClusterEndpoint
//
// For the data structure that represents Amazon RDS DB instance endpoints,
// see Endpoint.
type ModifyDBClusterEndpointOutput struct {
	_ struct{} `type:"structure"`

	// The type associated with a custom endpoint. One of: READER, WRITER, ANY.
	CustomEndpointType *string `type:"string"`

	// The Amazon Resource Name (ARN) for the endpoint.
	DBClusterEndpointArn *string `type:"string"`

	// The identifier associated with the endpoint. This parameter is stored as
	// a lowercase string.
	DBClusterEndpointIdentifier *string `type:"string"`

	// A unique system-generated identifier for an endpoint. It remains the same
	// for the whole life of the endpoint.
	DBClusterEndpointResourceIdentifier *string `type:"string"`

	// The DB cluster identifier of the DB cluster associated with the endpoint.
	// This parameter is stored as a lowercase string.
	DBClusterIdentifier *string `type:"string"`

	// The DNS address of the endpoint.
	Endpoint *string `type:"string"`

	// The type of the endpoint. One of: READER, WRITER, CUSTOM.
	EndpointType *string `type:"string"`

	// List of DB instance identifiers that aren't part of the custom endpoint group.
	// All other eligible instances are reachable through the custom endpoint. Only
	// relevant if the list of static members is empty.
	ExcludedMembers []*string `type:"list"`

	// List of DB instance identifiers that are part of the custom endpoint group.
	StaticMembers []*string `type:"list"`

	// The current status of the endpoint. One of: creating, available, deleting,
	// inactive, modifying. The inactive state applies to an endpoint that can't
	// be used for a certain kind of cluster, such as a writer endpoint for a read-only
	// secondary cluster in a global database.
	Status *string `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 ModifyDBClusterEndpointOutput) 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 ModifyDBClusterEndpointOutput) GoString() string {
	return s.String()
}

// SetCustomEndpointType sets the CustomEndpointType field's value.
func (s *ModifyDBClusterEndpointOutput) SetCustomEndpointType(v string) *ModifyDBClusterEndpointOutput {
	s.CustomEndpointType = &v
	return s
}

// SetDBClusterEndpointArn sets the DBClusterEndpointArn field's value.
func (s *ModifyDBClusterEndpointOutput) SetDBClusterEndpointArn(v string) *ModifyDBClusterEndpointOutput {
	s.DBClusterEndpointArn = &v
	return s
}

// SetDBClusterEndpointIdentifier sets the DBClusterEndpointIdentifier field's value.
func (s *ModifyDBClusterEndpointOutput) SetDBClusterEndpointIdentifier(v string) *ModifyDBClusterEndpointOutput {
	s.DBClusterEndpointIdentifier = &v
	return s
}

// SetDBClusterEndpointResourceIdentifier sets the DBClusterEndpointResourceIdentifier field's value.
func (s *ModifyDBClusterEndpointOutput) SetDBClusterEndpointResourceIdentifier(v string) *ModifyDBClusterEndpointOutput {
	s.DBClusterEndpointResourceIdentifier = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *ModifyDBClusterEndpointOutput) SetDBClusterIdentifier(v string) *ModifyDBClusterEndpointOutput {
	s.DBClusterIdentifier = &v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *ModifyDBClusterEndpointOutput) SetEndpoint(v string) *ModifyDBClusterEndpointOutput {
	s.Endpoint = &v
	return s
}

// SetEndpointType sets the EndpointType field's value.
func (s *ModifyDBClusterEndpointOutput) SetEndpointType(v string) *ModifyDBClusterEndpointOutput {
	s.EndpointType = &v
	return s
}

// SetExcludedMembers sets the ExcludedMembers field's value.
func (s *ModifyDBClusterEndpointOutput) SetExcludedMembers(v []*string) *ModifyDBClusterEndpointOutput {
	s.ExcludedMembers = v
	return s
}

// SetStaticMembers sets the StaticMembers field's value.
func (s *ModifyDBClusterEndpointOutput) SetStaticMembers(v []*string) *ModifyDBClusterEndpointOutput {
	s.StaticMembers = v
	return s
}

// SetStatus sets the Status field's value.
func (s *ModifyDBClusterEndpointOutput) SetStatus(v string) *ModifyDBClusterEndpointOutput {
	s.Status = &v
	return s
}

type ModifyDBClusterInput struct {
	_ struct{} `type:"structure"`

	// The amount of storage in gibibytes (GiB) to allocate to each DB instance
	// in the Multi-AZ DB cluster.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	AllocatedStorage *int64 `type:"integer"`

	// Specifies whether engine mode changes from serverless to provisioned are
	// allowed.
	//
	// Valid for Cluster Type: Aurora Serverless v1 DB clusters only
	//
	// Constraints:
	//
	//    * You must allow engine mode changes when specifying a different value
	//    for the EngineMode parameter from the DB cluster's current engine mode.
	AllowEngineModeChange *bool `type:"boolean"`

	// Specifies whether major version upgrades are allowed.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Constraints:
	//
	//    * You must allow major version upgrades when specifying a value for the
	//    EngineVersion parameter that is a different major version than the DB
	//    cluster's current version.
	AllowMajorVersionUpgrade *bool `type:"boolean"`

	// Specifies whether the modifications in this request and any pending modifications
	// are asynchronously applied as soon as possible, regardless of the PreferredMaintenanceWindow
	// setting for the DB cluster. If this parameter is disabled, changes to the
	// DB cluster are applied during the next maintenance window.
	//
	// Most modifications can be applied immediately or during the next scheduled
	// maintenance window. Some modifications, such as turning on deletion protection
	// and changing the master password, are applied immediately—regardless of
	// when you choose to apply them.
	//
	// By default, this parameter is disabled.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	ApplyImmediately *bool `type:"boolean"`

	// Specifies whether minor engine upgrades are applied automatically to the
	// DB cluster during the maintenance window. By default, minor engine upgrades
	// are applied automatically.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	AutoMinorVersionUpgrade *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) of the recovery point in Amazon Web Services
	// Backup.
	AwsBackupRecoveryPointArn *string `min:"43" type:"string"`

	// The target backtrack window, in seconds. To disable backtracking, set this
	// value to 0.
	//
	// Valid for Cluster Type: Aurora MySQL DB clusters only
	//
	// Default: 0
	//
	// Constraints:
	//
	//    * If specified, this value must be set to a number from 0 to 259,200 (72
	//    hours).
	BacktrackWindow *int64 `type:"long"`

	// The number of days for which automated backups are retained. Specify a minimum
	// value of 1.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Default: 1
	//
	// Constraints:
	//
	//    * Must be a value from 1 to 35.
	BackupRetentionPeriod *int64 `type:"integer"`

	// The CA certificate identifier to use for the DB cluster's server certificate.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters
	CACertificateIdentifier *string `type:"string"`

	// The configuration setting for the log types to be enabled for export to CloudWatch
	// Logs for a specific DB cluster.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// The following values are valid for each DB engine:
	//
	//    * Aurora MySQL - audit | error | general | slowquery
	//
	//    * Aurora PostgreSQL - postgresql
	//
	//    * RDS for MySQL - error | general | slowquery
	//
	//    * RDS for PostgreSQL - postgresql | upgrade
	//
	// For more information about exporting CloudWatch Logs for Amazon RDS, see
	// Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
	// in the Amazon RDS User Guide.
	//
	// For more information about exporting CloudWatch Logs for Amazon Aurora, see
	// Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
	// in the Amazon Aurora User Guide.
	CloudwatchLogsExportConfiguration *CloudwatchLogsExportConfiguration `type:"structure"`

	// Specifies whether to copy all tags from the DB cluster to snapshots of the
	// DB cluster. The default is not to copy them.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	CopyTagsToSnapshot *bool `type:"boolean"`

	// The DB cluster identifier for the cluster being modified. This parameter
	// isn't case-sensitive.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DB cluster.
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// The compute and memory capacity of each DB instance in the Multi-AZ DB cluster,
	// for example db.m6gd.xlarge. Not all DB instance classes are available in
	// all Amazon Web Services Regions, or for all database engines.
	//
	// For the full list of DB instance classes and availability for your engine,
	// see DB Instance Class (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
	// in the Amazon RDS User Guide.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	DBClusterInstanceClass *string `type:"string"`

	// The name of the DB cluster parameter group to use for the DB cluster.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	DBClusterParameterGroupName *string `type:"string"`

	// The name of the DB parameter group to apply to all instances of the DB cluster.
	//
	// When you apply a parameter group using the DBInstanceParameterGroupName parameter,
	// the DB cluster isn't rebooted automatically. Also, parameter changes are
	// applied immediately rather than during the next maintenance window.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	//
	// Default: The existing name setting
	//
	// Constraints:
	//
	//    * The DB parameter group must be in the same DB parameter group family
	//    as this DB cluster.
	//
	//    * The DBInstanceParameterGroupName parameter is valid in combination with
	//    the AllowMajorVersionUpgrade parameter for a major version upgrade only.
	DBInstanceParameterGroupName *string `type:"string"`

	// Specifies whether the DB cluster has deletion protection enabled. The database
	// can't be deleted when deletion protection is enabled. By default, deletion
	// protection isn't enabled.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	DeletionProtection *bool `type:"boolean"`

	// The Active Directory directory ID to move the DB cluster to. Specify none
	// to remove the cluster from its current domain. The domain must be created
	// prior to this operation.
	//
	// For more information, see Kerberos Authentication (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/kerberos-authentication.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	Domain *string `type:"string"`

	// The name of the IAM role to use when making API calls to the Directory Service.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	DomainIAMRoleName *string `type:"string"`

	// Specifies whether to enable this DB cluster to forward write operations to
	// the primary cluster of a global cluster (Aurora global database). By default,
	// write operations are not allowed on Aurora DB clusters that are secondary
	// clusters in an Aurora global database.
	//
	// You can set this value only on Aurora DB clusters that are members of an
	// Aurora global database. With this parameter enabled, a secondary cluster
	// can forward writes to the current primary cluster, and the resulting changes
	// are replicated back to this cluster. For the primary DB cluster of an Aurora
	// global database, this value is used immediately if the primary is demoted
	// by a global cluster API operation, but it does nothing until then.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	EnableGlobalWriteForwarding *bool `type:"boolean"`

	// Specifies whether to enable the HTTP endpoint for an Aurora Serverless v1
	// DB cluster. By default, the HTTP endpoint isn't enabled.
	//
	// When enabled, the HTTP endpoint provides a connectionless web service API
	// (RDS Data API) for running SQL queries on the Aurora Serverless v1 DB cluster.
	// You can also query your database from inside the RDS console with the RDS
	// query editor.
	//
	// For more information, see Using RDS Data API (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html)
	// in the Amazon Aurora User Guide.
	//
	// This parameter applies only to Aurora Serverless v1 DB clusters. To enable
	// or disable the HTTP endpoint for an Aurora PostgreSQL Serverless v2 or provisioned
	// DB cluster, use the EnableHttpEndpoint and DisableHttpEndpoint operations.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	EnableHttpEndpoint *bool `type:"boolean"`

	// Specifies whether to enable mapping of Amazon Web Services Identity and Access
	// Management (IAM) accounts to database accounts. By default, mapping isn't
	// enabled.
	//
	// For more information, see IAM Database Authentication (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	EnableIAMDatabaseAuthentication *bool `type:"boolean"`

	// Specifies whether to enable Aurora Limitless Database. You must enable Aurora
	// Limitless Database to create a DB shard group.
	//
	// Valid for: Aurora DB clusters only
	EnableLimitlessDatabase *bool `type:"boolean"`

	// Specifies whether read replicas can forward write operations to the writer
	// DB instance in the DB cluster. By default, write operations aren't allowed
	// on reader DB instances.
	//
	// Valid for: Aurora DB clusters only
	EnableLocalWriteForwarding *bool `type:"boolean"`

	// Specifies whether to turn on Performance Insights for the DB cluster.
	//
	// For more information, see Using Amazon Performance Insights (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html)
	// in the Amazon RDS User Guide.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	EnablePerformanceInsights *bool `type:"boolean"`

	// The DB engine mode of the DB cluster, either provisioned or serverless.
	//
	// The DB engine mode can be modified only from serverless to provisioned.
	//
	// For more information, see CreateDBCluster (https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html).
	//
	// Valid for Cluster Type: Aurora DB clusters only
	EngineMode *string `type:"string"`

	// The version number of the database engine to which you want to upgrade. Changing
	// this parameter results in an outage. The change is applied during the next
	// maintenance window unless ApplyImmediately is enabled.
	//
	// If the cluster that you're modifying has one or more read replicas, all replicas
	// must be running an engine version that's the same or later than the version
	// you specify.
	//
	// To list all of the available engine versions for Aurora MySQL, use the following
	// command:
	//
	// aws rds describe-db-engine-versions --engine aurora-mysql --query "DBEngineVersions[].EngineVersion"
	//
	// To list all of the available engine versions for Aurora PostgreSQL, use the
	// following command:
	//
	// aws rds describe-db-engine-versions --engine aurora-postgresql --query "DBEngineVersions[].EngineVersion"
	//
	// To list all of the available engine versions for RDS for MySQL, use the following
	// command:
	//
	// aws rds describe-db-engine-versions --engine mysql --query "DBEngineVersions[].EngineVersion"
	//
	// To list all of the available engine versions for RDS for PostgreSQL, use
	// the following command:
	//
	// aws rds describe-db-engine-versions --engine postgres --query "DBEngineVersions[].EngineVersion"
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	EngineVersion *string `type:"string"`

	// The amount of Provisioned IOPS (input/output operations per second) to be
	// initially allocated for each DB instance in the Multi-AZ DB cluster.
	//
	// For information about valid IOPS values, see Amazon RDS Provisioned IOPS
	// storage (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#USER_PIOPS)
	// in the Amazon RDS User Guide.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	//
	// Constraints:
	//
	//    * Must be a multiple between .5 and 50 of the storage amount for the DB
	//    cluster.
	Iops *int64 `type:"integer"`

	// Specifies whether to manage the master user password with Amazon Web Services
	// Secrets Manager.
	//
	// If the DB cluster doesn't manage the master user password with Amazon Web
	// Services Secrets Manager, you can turn on this management. In this case,
	// you can't specify MasterUserPassword.
	//
	// If the DB cluster already manages the master user password with Amazon Web
	// Services Secrets Manager, and you specify that the master user password is
	// not managed with Amazon Web Services Secrets Manager, then you must specify
	// MasterUserPassword. In this case, RDS deletes the secret and uses the new
	// password for the master user specified by MasterUserPassword.
	//
	// For more information, see Password management with Amazon Web Services Secrets
	// Manager (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html)
	// in the Amazon RDS User Guide and Password management with Amazon Web Services
	// Secrets Manager (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	ManageMasterUserPassword *bool `type:"boolean"`

	// The new password for the master database user.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Constraints:
	//
	//    * Must contain from 8 to 41 characters.
	//
	//    * Can contain any printable ASCII character except "/", """, or "@".
	//
	//    * Can't be specified if ManageMasterUserPassword is turned on.
	MasterUserPassword *string `type:"string"`

	// The Amazon Web Services KMS key identifier to encrypt a secret that is automatically
	// generated and managed in Amazon Web Services Secrets Manager.
	//
	// This setting is valid only if both of the following conditions are met:
	//
	//    * The DB cluster doesn't manage the master user password in Amazon Web
	//    Services Secrets Manager. If the DB cluster already manages the master
	//    user password in Amazon Web Services Secrets Manager, you can't change
	//    the KMS key that is used to encrypt the secret.
	//
	//    * You are turning on ManageMasterUserPassword to manage the master user
	//    password in Amazon Web Services Secrets Manager. If you are turning on
	//    ManageMasterUserPassword and don't specify MasterUserSecretKmsKeyId, then
	//    the aws/secretsmanager KMS key is used to encrypt the secret. If the secret
	//    is in a different Amazon Web Services account, then you can't use the
	//    aws/secretsmanager KMS key to encrypt the secret, and you must use a customer
	//    managed KMS key.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key. To use a KMS key in a different Amazon
	// Web Services account, specify the key ARN or alias ARN.
	//
	// There is a default KMS key for your Amazon Web Services account. Your Amazon
	// Web Services account has a different default KMS key for each Amazon Web
	// Services Region.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	MasterUserSecretKmsKeyId *string `type:"string"`

	// The interval, in seconds, between points when Enhanced Monitoring metrics
	// are collected for the DB cluster. To turn off collecting Enhanced Monitoring
	// metrics, specify 0.
	//
	// If MonitoringRoleArn is specified, also set MonitoringInterval to a value
	// other than 0.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	//
	// Valid Values: 0 | 1 | 5 | 10 | 15 | 30 | 60
	//
	// Default: 0
	MonitoringInterval *int64 `type:"integer"`

	// The Amazon Resource Name (ARN) for the IAM role that permits RDS to send
	// Enhanced Monitoring metrics to Amazon CloudWatch Logs. An example is arn:aws:iam:123456789012:role/emaccess.
	// For information on creating a monitoring role, see To create an IAM role
	// for Amazon RDS Enhanced Monitoring (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.html#USER_Monitoring.OS.IAMRole)
	// in the Amazon RDS User Guide.
	//
	// If MonitoringInterval is set to a value other than 0, supply a MonitoringRoleArn
	// value.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	MonitoringRoleArn *string `type:"string"`

	// The network type of the DB cluster.
	//
	// The network type is determined by the DBSubnetGroup specified for the DB
	// cluster. A DBSubnetGroup can support only the IPv4 protocol or the IPv4 and
	// the IPv6 protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	//
	// Valid Values: IPV4 | DUAL
	NetworkType *string `type:"string"`

	// The new DB cluster identifier for the DB cluster when renaming a DB cluster.
	// This value is stored as a lowercase string.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 letters, numbers, or hyphens.
	//
	//    * The first character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Example: my-cluster2
	NewDBClusterIdentifier *string `type:"string"`

	// The option group to associate the DB cluster with.
	//
	// DB clusters are associated with a default option group that can't be modified.
	OptionGroupName *string `type:"string"`

	// The Amazon Web Services KMS key identifier for encryption of Performance
	// Insights data.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	//
	// If you don't specify a value for PerformanceInsightsKMSKeyId, then Amazon
	// RDS uses your default KMS key. There is a default KMS key for your Amazon
	// Web Services account. Your Amazon Web Services account has a different default
	// KMS key for each Amazon Web Services Region.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	PerformanceInsightsKMSKeyId *string `type:"string"`

	// The number of days to retain Performance Insights data.
	//
	// Valid for Cluster Type: Multi-AZ DB clusters only
	//
	// Valid Values:
	//
	//    * 7
	//
	//    * month * 31, where month is a number of months from 1-23. Examples: 93
	//    (3 months * 31), 341 (11 months * 31), 589 (19 months * 31)
	//
	//    * 731
	//
	// Default: 7 days
	//
	// If you specify a retention period that isn't valid, such as 94, Amazon RDS
	// issues an error.
	PerformanceInsightsRetentionPeriod *int64 `type:"integer"`

	// The port number on which the DB cluster accepts connections.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	//
	// Valid Values: 1150-65535
	//
	// Default: The same port as the original DB cluster.
	Port *int64 `type:"integer"`

	// The daily time range during which automated backups are created if automated
	// backups are enabled, using the BackupRetentionPeriod parameter.
	//
	// The default is a 30-minute window selected at random from an 8-hour block
	// of time for each Amazon Web Services Region. To view the time blocks available,
	// see Backup window (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html#Aurora.Managing.Backups.BackupWindow)
	// in the Amazon Aurora User Guide.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Constraints:
	//
	//    * Must be in the format hh24:mi-hh24:mi.
	//
	//    * Must be in Universal Coordinated Time (UTC).
	//
	//    * Must not conflict with the preferred maintenance window.
	//
	//    * Must be at least 30 minutes.
	PreferredBackupWindow *string `type:"string"`

	// The weekly time range during which system maintenance can occur, in Universal
	// Coordinated Time (UTC).
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// The default is a 30-minute window selected at random from an 8-hour block
	// of time for each Amazon Web Services Region, occurring on a random day of
	// the week. To see the time blocks available, see Adjusting the Preferred DB
	// Cluster Maintenance Window (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow.Aurora)
	// in the Amazon Aurora User Guide.
	//
	// Constraints:
	//
	//    * Must be in the format ddd:hh24:mi-ddd:hh24:mi.
	//
	//    * Days must be one of Mon | Tue | Wed | Thu | Fri | Sat | Sun.
	//
	//    * Must be in Universal Coordinated Time (UTC).
	//
	//    * Must be at least 30 minutes.
	PreferredMaintenanceWindow *string `type:"string"`

	// Specifies whether to rotate the secret managed by Amazon Web Services Secrets
	// Manager for the master user password.
	//
	// This setting is valid only if the master user password is managed by RDS
	// in Amazon Web Services Secrets Manager for the DB cluster. The secret value
	// contains the updated password.
	//
	// For more information, see Password management with Amazon Web Services Secrets
	// Manager (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html)
	// in the Amazon RDS User Guide and Password management with Amazon Web Services
	// Secrets Manager (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Constraints:
	//
	//    * You must apply the change immediately when rotating the master user
	//    password.
	RotateMasterUserPassword *bool `type:"boolean"`

	// The scaling properties of the DB cluster. You can only modify scaling properties
	// for DB clusters in serverless DB engine mode.
	//
	// Valid for Cluster Type: Aurora DB clusters only
	ScalingConfiguration *ScalingConfiguration `type:"structure"`

	// Contains the scaling configuration of an Aurora Serverless v2 DB cluster.
	//
	// For more information, see Using Amazon Aurora Serverless v2 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html)
	// in the Amazon Aurora User Guide.
	ServerlessV2ScalingConfiguration *ServerlessV2ScalingConfiguration `type:"structure"`

	// The storage type to associate with the DB cluster.
	//
	// For information on storage types for Aurora DB clusters, see Storage configurations
	// for Amazon Aurora DB clusters (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.StorageReliability.html#aurora-storage-type).
	// For information on storage types for Multi-AZ DB clusters, see Settings for
	// creating Multi-AZ DB clusters (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/create-multi-az-db-cluster.html#create-multi-az-db-cluster-settings).
	//
	// When specified for a Multi-AZ DB cluster, a value for the Iops parameter
	// is required.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Valid Values:
	//
	//    * Aurora DB clusters - aurora | aurora-iopt1
	//
	//    * Multi-AZ DB clusters - io1 | io2 | gp3
	//
	// Default:
	//
	//    * Aurora DB clusters - aurora
	//
	//    * Multi-AZ DB clusters - io1
	StorageType *string `type:"string"`

	// A list of EC2 VPC security groups to associate with this DB cluster.
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	VpcSecurityGroupIds []*string `locationNameList:"VpcSecurityGroupId" 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 ModifyDBClusterInput) 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 ModifyDBClusterInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDBClusterInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDBClusterInput"}
	if s.AwsBackupRecoveryPointArn != nil && len(*s.AwsBackupRecoveryPointArn) < 43 {
		invalidParams.Add(request.NewErrParamMinLen("AwsBackupRecoveryPointArn", 43))
	}
	if s.DBClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *ModifyDBClusterInput) SetAllocatedStorage(v int64) *ModifyDBClusterInput {
	s.AllocatedStorage = &v
	return s
}

// SetAllowEngineModeChange sets the AllowEngineModeChange field's value.
func (s *ModifyDBClusterInput) SetAllowEngineModeChange(v bool) *ModifyDBClusterInput {
	s.AllowEngineModeChange = &v
	return s
}

// SetAllowMajorVersionUpgrade sets the AllowMajorVersionUpgrade field's value.
func (s *ModifyDBClusterInput) SetAllowMajorVersionUpgrade(v bool) *ModifyDBClusterInput {
	s.AllowMajorVersionUpgrade = &v
	return s
}

// SetApplyImmediately sets the ApplyImmediately field's value.
func (s *ModifyDBClusterInput) SetApplyImmediately(v bool) *ModifyDBClusterInput {
	s.ApplyImmediately = &v
	return s
}

// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
func (s *ModifyDBClusterInput) SetAutoMinorVersionUpgrade(v bool) *ModifyDBClusterInput {
	s.AutoMinorVersionUpgrade = &v
	return s
}

// SetAwsBackupRecoveryPointArn sets the AwsBackupRecoveryPointArn field's value.
func (s *ModifyDBClusterInput) SetAwsBackupRecoveryPointArn(v string) *ModifyDBClusterInput {
	s.AwsBackupRecoveryPointArn = &v
	return s
}

// SetBacktrackWindow sets the BacktrackWindow field's value.
func (s *ModifyDBClusterInput) SetBacktrackWindow(v int64) *ModifyDBClusterInput {
	s.BacktrackWindow = &v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *ModifyDBClusterInput) SetBackupRetentionPeriod(v int64) *ModifyDBClusterInput {
	s.BackupRetentionPeriod = &v
	return s
}

// SetCACertificateIdentifier sets the CACertificateIdentifier field's value.
func (s *ModifyDBClusterInput) SetCACertificateIdentifier(v string) *ModifyDBClusterInput {
	s.CACertificateIdentifier = &v
	return s
}

// SetCloudwatchLogsExportConfiguration sets the CloudwatchLogsExportConfiguration field's value.
func (s *ModifyDBClusterInput) SetCloudwatchLogsExportConfiguration(v *CloudwatchLogsExportConfiguration) *ModifyDBClusterInput {
	s.CloudwatchLogsExportConfiguration = v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *ModifyDBClusterInput) SetCopyTagsToSnapshot(v bool) *ModifyDBClusterInput {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *ModifyDBClusterInput) SetDBClusterIdentifier(v string) *ModifyDBClusterInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBClusterInstanceClass sets the DBClusterInstanceClass field's value.
func (s *ModifyDBClusterInput) SetDBClusterInstanceClass(v string) *ModifyDBClusterInput {
	s.DBClusterInstanceClass = &v
	return s
}

// SetDBClusterParameterGroupName sets the DBClusterParameterGroupName field's value.
func (s *ModifyDBClusterInput) SetDBClusterParameterGroupName(v string) *ModifyDBClusterInput {
	s.DBClusterParameterGroupName = &v
	return s
}

// SetDBInstanceParameterGroupName sets the DBInstanceParameterGroupName field's value.
func (s *ModifyDBClusterInput) SetDBInstanceParameterGroupName(v string) *ModifyDBClusterInput {
	s.DBInstanceParameterGroupName = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *ModifyDBClusterInput) SetDeletionProtection(v bool) *ModifyDBClusterInput {
	s.DeletionProtection = &v
	return s
}

// SetDomain sets the Domain field's value.
func (s *ModifyDBClusterInput) SetDomain(v string) *ModifyDBClusterInput {
	s.Domain = &v
	return s
}

// SetDomainIAMRoleName sets the DomainIAMRoleName field's value.
func (s *ModifyDBClusterInput) SetDomainIAMRoleName(v string) *ModifyDBClusterInput {
	s.DomainIAMRoleName = &v
	return s
}

// SetEnableGlobalWriteForwarding sets the EnableGlobalWriteForwarding field's value.
func (s *ModifyDBClusterInput) SetEnableGlobalWriteForwarding(v bool) *ModifyDBClusterInput {
	s.EnableGlobalWriteForwarding = &v
	return s
}

// SetEnableHttpEndpoint sets the EnableHttpEndpoint field's value.
func (s *ModifyDBClusterInput) SetEnableHttpEndpoint(v bool) *ModifyDBClusterInput {
	s.EnableHttpEndpoint = &v
	return s
}

// SetEnableIAMDatabaseAuthentication sets the EnableIAMDatabaseAuthentication field's value.
func (s *ModifyDBClusterInput) SetEnableIAMDatabaseAuthentication(v bool) *ModifyDBClusterInput {
	s.EnableIAMDatabaseAuthentication = &v
	return s
}

// SetEnableLimitlessDatabase sets the EnableLimitlessDatabase field's value.
func (s *ModifyDBClusterInput) SetEnableLimitlessDatabase(v bool) *ModifyDBClusterInput {
	s.EnableLimitlessDatabase = &v
	return s
}

// SetEnableLocalWriteForwarding sets the EnableLocalWriteForwarding field's value.
func (s *ModifyDBClusterInput) SetEnableLocalWriteForwarding(v bool) *ModifyDBClusterInput {
	s.EnableLocalWriteForwarding = &v
	return s
}

// SetEnablePerformanceInsights sets the EnablePerformanceInsights field's value.
func (s *ModifyDBClusterInput) SetEnablePerformanceInsights(v bool) *ModifyDBClusterInput {
	s.EnablePerformanceInsights = &v
	return s
}

// SetEngineMode sets the EngineMode field's value.
func (s *ModifyDBClusterInput) SetEngineMode(v string) *ModifyDBClusterInput {
	s.EngineMode = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *ModifyDBClusterInput) SetEngineVersion(v string) *ModifyDBClusterInput {
	s.EngineVersion = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *ModifyDBClusterInput) SetIops(v int64) *ModifyDBClusterInput {
	s.Iops = &v
	return s
}

// SetManageMasterUserPassword sets the ManageMasterUserPassword field's value.
func (s *ModifyDBClusterInput) SetManageMasterUserPassword(v bool) *ModifyDBClusterInput {
	s.ManageMasterUserPassword = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *ModifyDBClusterInput) SetMasterUserPassword(v string) *ModifyDBClusterInput {
	s.MasterUserPassword = &v
	return s
}

// SetMasterUserSecretKmsKeyId sets the MasterUserSecretKmsKeyId field's value.
func (s *ModifyDBClusterInput) SetMasterUserSecretKmsKeyId(v string) *ModifyDBClusterInput {
	s.MasterUserSecretKmsKeyId = &v
	return s
}

// SetMonitoringInterval sets the MonitoringInterval field's value.
func (s *ModifyDBClusterInput) SetMonitoringInterval(v int64) *ModifyDBClusterInput {
	s.MonitoringInterval = &v
	return s
}

// SetMonitoringRoleArn sets the MonitoringRoleArn field's value.
func (s *ModifyDBClusterInput) SetMonitoringRoleArn(v string) *ModifyDBClusterInput {
	s.MonitoringRoleArn = &v
	return s
}

// SetNetworkType sets the NetworkType field's value.
func (s *ModifyDBClusterInput) SetNetworkType(v string) *ModifyDBClusterInput {
	s.NetworkType = &v
	return s
}

// SetNewDBClusterIdentifier sets the NewDBClusterIdentifier field's value.
func (s *ModifyDBClusterInput) SetNewDBClusterIdentifier(v string) *ModifyDBClusterInput {
	s.NewDBClusterIdentifier = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *ModifyDBClusterInput) SetOptionGroupName(v string) *ModifyDBClusterInput {
	s.OptionGroupName = &v
	return s
}

// SetPerformanceInsightsKMSKeyId sets the PerformanceInsightsKMSKeyId field's value.
func (s *ModifyDBClusterInput) SetPerformanceInsightsKMSKeyId(v string) *ModifyDBClusterInput {
	s.PerformanceInsightsKMSKeyId = &v
	return s
}

// SetPerformanceInsightsRetentionPeriod sets the PerformanceInsightsRetentionPeriod field's value.
func (s *ModifyDBClusterInput) SetPerformanceInsightsRetentionPeriod(v int64) *ModifyDBClusterInput {
	s.PerformanceInsightsRetentionPeriod = &v
	return s
}

// SetPort sets the Port field's value.
func (s *ModifyDBClusterInput) SetPort(v int64) *ModifyDBClusterInput {
	s.Port = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *ModifyDBClusterInput) SetPreferredBackupWindow(v string) *ModifyDBClusterInput {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *ModifyDBClusterInput) SetPreferredMaintenanceWindow(v string) *ModifyDBClusterInput {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetRotateMasterUserPassword sets the RotateMasterUserPassword field's value.
func (s *ModifyDBClusterInput) SetRotateMasterUserPassword(v bool) *ModifyDBClusterInput {
	s.RotateMasterUserPassword = &v
	return s
}

// SetScalingConfiguration sets the ScalingConfiguration field's value.
func (s *ModifyDBClusterInput) SetScalingConfiguration(v *ScalingConfiguration) *ModifyDBClusterInput {
	s.ScalingConfiguration = v
	return s
}

// SetServerlessV2ScalingConfiguration sets the ServerlessV2ScalingConfiguration field's value.
func (s *ModifyDBClusterInput) SetServerlessV2ScalingConfiguration(v *ServerlessV2ScalingConfiguration) *ModifyDBClusterInput {
	s.ServerlessV2ScalingConfiguration = v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *ModifyDBClusterInput) SetStorageType(v string) *ModifyDBClusterInput {
	s.StorageType = &v
	return s
}

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *ModifyDBClusterInput) SetVpcSecurityGroupIds(v []*string) *ModifyDBClusterInput {
	s.VpcSecurityGroupIds = v
	return s
}

type ModifyDBClusterOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon Aurora DB cluster or Multi-AZ DB cluster.
	//
	// For an Amazon Aurora DB cluster, this data type is used as a response element
	// in the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, PromoteReadReplicaDBCluster, RestoreDBClusterFromS3, RestoreDBClusterFromSnapshot,
	// RestoreDBClusterToPointInTime, StartDBCluster, and StopDBCluster.
	//
	// For a Multi-AZ DB cluster, this data type is used as a response element in
	// the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, RebootDBCluster, RestoreDBClusterFromSnapshot, and RestoreDBClusterToPointInTime.
	//
	// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
	// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
	// in the Amazon Aurora User Guide.
	//
	// For more information on Multi-AZ DB clusters, see Multi-AZ deployments with
	// two readable standby DB instances (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
	// in the Amazon RDS User Guide.
	DBCluster *DBCluster `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 ModifyDBClusterOutput) 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 ModifyDBClusterOutput) GoString() string {
	return s.String()
}

// SetDBCluster sets the DBCluster field's value.
func (s *ModifyDBClusterOutput) SetDBCluster(v *DBCluster) *ModifyDBClusterOutput {
	s.DBCluster = v
	return s
}

type ModifyDBClusterParameterGroupInput struct {
	_ struct{} `type:"structure"`

	// The name of the DB cluster parameter group to modify.
	//
	// DBClusterParameterGroupName is a required field
	DBClusterParameterGroupName *string `type:"string" required:"true"`

	// A list of parameters in the DB cluster parameter group to modify.
	//
	// Valid Values (for the application method): immediate | pending-reboot
	//
	// You can use the immediate value with dynamic parameters only. You can use
	// the pending-reboot value for both dynamic and static parameters.
	//
	// When the application method is immediate, changes to dynamic parameters are
	// applied immediately to the DB clusters associated with the parameter group.
	// When the application method is pending-reboot, changes to dynamic and static
	// parameters are applied after a reboot without failover to the DB clusters
	// associated with the parameter group.
	//
	// Parameters is a required field
	Parameters []*Parameter `locationNameList:"Parameter" type:"list" 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 ModifyDBClusterParameterGroupInput) 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 ModifyDBClusterParameterGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDBClusterParameterGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDBClusterParameterGroupInput"}
	if s.DBClusterParameterGroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterParameterGroupName"))
	}
	if s.Parameters == nil {
		invalidParams.Add(request.NewErrParamRequired("Parameters"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBClusterParameterGroupName sets the DBClusterParameterGroupName field's value.
func (s *ModifyDBClusterParameterGroupInput) SetDBClusterParameterGroupName(v string) *ModifyDBClusterParameterGroupInput {
	s.DBClusterParameterGroupName = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *ModifyDBClusterParameterGroupInput) SetParameters(v []*Parameter) *ModifyDBClusterParameterGroupInput {
	s.Parameters = v
	return s
}

type ModifyDBClusterSnapshotAttributeInput struct {
	_ struct{} `type:"structure"`

	// The name of the DB cluster snapshot attribute to modify.
	//
	// To manage authorization for other Amazon Web Services accounts to copy or
	// restore a manual DB cluster snapshot, set this value to restore.
	//
	// To view the list of attributes available to modify, use the DescribeDBClusterSnapshotAttributes
	// API operation.
	//
	// AttributeName is a required field
	AttributeName *string `type:"string" required:"true"`

	// The identifier for the DB cluster snapshot to modify the attributes for.
	//
	// DBClusterSnapshotIdentifier is a required field
	DBClusterSnapshotIdentifier *string `type:"string" required:"true"`

	// A list of DB cluster snapshot attributes to add to the attribute specified
	// by AttributeName.
	//
	// To authorize other Amazon Web Services accounts to copy or restore a manual
	// DB cluster snapshot, set this list to include one or more Amazon Web Services
	// account IDs, or all to make the manual DB cluster snapshot restorable by
	// any Amazon Web Services account. Do not add the all value for any manual
	// DB cluster snapshots that contain private information that you don't want
	// available to all Amazon Web Services accounts.
	ValuesToAdd []*string `locationNameList:"AttributeValue" type:"list"`

	// A list of DB cluster snapshot attributes to remove from the attribute specified
	// by AttributeName.
	//
	// To remove authorization for other Amazon Web Services accounts to copy or
	// restore a manual DB cluster snapshot, set this list to include one or more
	// Amazon Web Services account identifiers, or all to remove authorization for
	// any Amazon Web Services account to copy or restore the DB cluster snapshot.
	// If you specify all, an Amazon Web Services account whose account ID is explicitly
	// added to the restore attribute can still copy or restore a manual DB cluster
	// snapshot.
	ValuesToRemove []*string `locationNameList:"AttributeValue" 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 ModifyDBClusterSnapshotAttributeInput) 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 ModifyDBClusterSnapshotAttributeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDBClusterSnapshotAttributeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDBClusterSnapshotAttributeInput"}
	if s.AttributeName == nil {
		invalidParams.Add(request.NewErrParamRequired("AttributeName"))
	}
	if s.DBClusterSnapshotIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterSnapshotIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttributeName sets the AttributeName field's value.
func (s *ModifyDBClusterSnapshotAttributeInput) SetAttributeName(v string) *ModifyDBClusterSnapshotAttributeInput {
	s.AttributeName = &v
	return s
}

// SetDBClusterSnapshotIdentifier sets the DBClusterSnapshotIdentifier field's value.
func (s *ModifyDBClusterSnapshotAttributeInput) SetDBClusterSnapshotIdentifier(v string) *ModifyDBClusterSnapshotAttributeInput {
	s.DBClusterSnapshotIdentifier = &v
	return s
}

// SetValuesToAdd sets the ValuesToAdd field's value.
func (s *ModifyDBClusterSnapshotAttributeInput) SetValuesToAdd(v []*string) *ModifyDBClusterSnapshotAttributeInput {
	s.ValuesToAdd = v
	return s
}

// SetValuesToRemove sets the ValuesToRemove field's value.
func (s *ModifyDBClusterSnapshotAttributeInput) SetValuesToRemove(v []*string) *ModifyDBClusterSnapshotAttributeInput {
	s.ValuesToRemove = v
	return s
}

type ModifyDBClusterSnapshotAttributeOutput struct {
	_ struct{} `type:"structure"`

	// Contains the results of a successful call to the DescribeDBClusterSnapshotAttributes
	// API action.
	//
	// Manual DB cluster snapshot attributes are used to authorize other Amazon
	// Web Services accounts to copy or restore a manual DB cluster snapshot. For
	// more information, see the ModifyDBClusterSnapshotAttribute API action.
	DBClusterSnapshotAttributesResult *DBClusterSnapshotAttributesResult `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 ModifyDBClusterSnapshotAttributeOutput) 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 ModifyDBClusterSnapshotAttributeOutput) GoString() string {
	return s.String()
}

// SetDBClusterSnapshotAttributesResult sets the DBClusterSnapshotAttributesResult field's value.
func (s *ModifyDBClusterSnapshotAttributeOutput) SetDBClusterSnapshotAttributesResult(v *DBClusterSnapshotAttributesResult) *ModifyDBClusterSnapshotAttributeOutput {
	s.DBClusterSnapshotAttributesResult = v
	return s
}

type ModifyDBInstanceInput struct {
	_ struct{} `type:"structure"`

	// The new amount of storage in gibibytes (GiB) to allocate for the DB instance.
	//
	// For RDS for Db2, MariaDB, RDS for MySQL, RDS for Oracle, and RDS for PostgreSQL,
	// the value supplied must be at least 10% greater than the current value. Values
	// that are not at least 10% greater than the existing value are rounded up
	// so that they are 10% greater than the current value.
	//
	// For the valid values for allocated storage for each engine, see CreateDBInstance.
	//
	// Constraints:
	//
	//    * When you increase the allocated storage for a DB instance that uses
	//    Provisioned IOPS (gp3, io1, or io2 storage type), you must also specify
	//    the Iops parameter. You can use the current value for Iops.
	AllocatedStorage *int64 `type:"integer"`

	// Specifies whether major version upgrades are allowed. Changing this parameter
	// doesn't result in an outage and the change is asynchronously applied as soon
	// as possible.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Constraints:
	//
	//    * Major version upgrades must be allowed when specifying a value for the
	//    EngineVersion parameter that's a different major version than the DB instance's
	//    current version.
	AllowMajorVersionUpgrade *bool `type:"boolean"`

	// Specifies whether the modifications in this request and any pending modifications
	// are asynchronously applied as soon as possible, regardless of the PreferredMaintenanceWindow
	// setting for the DB instance. By default, this parameter is disabled.
	//
	// If this parameter is disabled, changes to the DB instance are applied during
	// the next maintenance window. Some parameter changes can cause an outage and
	// are applied on the next call to RebootDBInstance, or the next failure reboot.
	// Review the table of parameters in Modifying a DB Instance (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html)
	// in the Amazon RDS User Guide to see the impact of enabling or disabling ApplyImmediately
	// for each modified parameter and to determine when the changes are applied.
	ApplyImmediately *bool `type:"boolean"`

	// Specifies whether minor version upgrades are applied automatically to the
	// DB instance during the maintenance window. An outage occurs when all the
	// following conditions are met:
	//
	//    * The automatic upgrade is enabled for the maintenance window.
	//
	//    * A newer minor version is available.
	//
	//    * RDS has enabled automatic patching for the engine version.
	//
	// If any of the preceding conditions isn't met, Amazon RDS applies the change
	// as soon as possible and doesn't cause an outage.
	//
	// For an RDS Custom DB instance, don't enable this setting. Otherwise, the
	// operation returns an error.
	AutoMinorVersionUpgrade *bool `type:"boolean"`

	// The automation mode of the RDS Custom DB instance. If full, the DB instance
	// automates monitoring and instance recovery. If all paused, the instance pauses
	// automation for the duration set by ResumeFullAutomationModeMinutes.
	AutomationMode *string `type:"string" enum:"AutomationMode"`

	// The Amazon Resource Name (ARN) of the recovery point in Amazon Web Services
	// Backup.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	AwsBackupRecoveryPointArn *string `min:"43" type:"string"`

	// The number of days to retain automated backups. Setting this parameter to
	// a positive number enables backups. Setting this parameter to 0 disables automated
	// backups.
	//
	// Enabling and disabling backups can result in a brief I/O suspension that
	// lasts from a few seconds to a few minutes, depending on the size and class
	// of your DB instance.
	//
	// These changes are applied during the next maintenance window unless the ApplyImmediately
	// parameter is enabled for this request. If you change the parameter from one
	// non-zero value to another non-zero value, the change is asynchronously applied
	// as soon as possible.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. The retention period
	// for automated backups is managed by the DB cluster. For more information,
	// see ModifyDBCluster.
	//
	// Default: Uses existing setting
	//
	// Constraints:
	//
	//    * Must be a value from 0 to 35.
	//
	//    * Can't be set to 0 if the DB instance is a source to read replicas.
	//
	//    * Can't be set to 0 for an RDS Custom for Oracle DB instance.
	BackupRetentionPeriod *int64 `type:"integer"`

	// The CA certificate identifier to use for the DB instance's server certificate.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	CACertificateIdentifier *string `type:"string"`

	// Specifies whether the DB instance is restarted when you rotate your SSL/TLS
	// certificate.
	//
	// By default, the DB instance is restarted when you rotate your SSL/TLS certificate.
	// The certificate is not updated until the DB instance is restarted.
	//
	// Set this parameter only if you are not using SSL/TLS to connect to the DB
	// instance.
	//
	// If you are using SSL/TLS to connect to the DB instance, follow the appropriate
	// instructions for your DB engine to rotate your SSL/TLS certificate:
	//
	//    * For more information about rotating your SSL/TLS certificate for RDS
	//    DB engines, see Rotating Your SSL/TLS Certificate. (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html)
	//    in the Amazon RDS User Guide.
	//
	//    * For more information about rotating your SSL/TLS certificate for Aurora
	//    DB engines, see Rotating Your SSL/TLS Certificate (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL-certificate-rotation.html)
	//    in the Amazon Aurora User Guide.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	CertificateRotationRestart *bool `type:"boolean"`

	// The log types to be enabled for export to CloudWatch Logs for a specific
	// DB instance.
	//
	// A change to the CloudwatchLogsExportConfiguration parameter is always applied
	// to the DB instance immediately. Therefore, the ApplyImmediately parameter
	// has no effect.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	CloudwatchLogsExportConfiguration *CloudwatchLogsExportConfiguration `type:"structure"`

	// Specifies whether to copy all tags from the DB instance to snapshots of the
	// DB instance. By default, tags aren't copied.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. Copying tags to
	// snapshots is managed by the DB cluster. Setting this value for an Aurora
	// DB instance has no effect on the DB cluster setting. For more information,
	// see ModifyDBCluster.
	CopyTagsToSnapshot *bool `type:"boolean"`

	// The new compute and memory capacity of the DB instance, for example db.m4.large.
	// Not all DB instance classes are available in all Amazon Web Services Regions,
	// or for all database engines. For the full list of DB instance classes, and
	// availability for your engine, see DB Instance Class (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
	// in the Amazon RDS User Guide or Aurora DB instance classes (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html)
	// in the Amazon Aurora User Guide. For RDS Custom, see DB instance class support
	// for RDS Custom for Oracle (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-reqs-limits.html#custom-reqs-limits.instances)
	// and DB instance class support for RDS Custom for SQL Server (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-reqs-limits-MS.html#custom-reqs-limits.instancesMS).
	//
	// If you modify the DB instance class, an outage occurs during the change.
	// The change is applied during the next maintenance window, unless you specify
	// ApplyImmediately in your request.
	//
	// Default: Uses existing setting
	//
	// Constraints:
	//
	//    * If you are modifying the DB instance class and upgrading the engine
	//    version at the same time, the currently running engine version must be
	//    supported on the specified DB instance class. Otherwise, the operation
	//    returns an error. In this case, first run the operation to upgrade the
	//    engine version, and then run it again to modify the DB instance class.
	DBInstanceClass *string `type:"string"`

	// The identifier of DB instance to modify. This value is stored as a lowercase
	// string.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DB instance.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// The name of the DB parameter group to apply to the DB instance.
	//
	// Changing this setting doesn't result in an outage. The parameter group name
	// itself is changed immediately, but the actual parameter changes are not applied
	// until you reboot the instance without failover. In this case, the DB instance
	// isn't rebooted automatically, and the parameter changes aren't applied during
	// the next maintenance window. However, if you modify dynamic parameters in
	// the newly associated DB parameter group, these changes are applied immediately
	// without a reboot.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Default: Uses existing setting
	//
	// Constraints:
	//
	//    * Must be in the same DB parameter group family as the DB instance.
	DBParameterGroupName *string `type:"string"`

	// The port number on which the database accepts connections.
	//
	// The value of the DBPortNumber parameter must not match any of the port values
	// specified for options in the option group for the DB instance.
	//
	// If you change the DBPortNumber value, your database restarts regardless of
	// the value of the ApplyImmediately parameter.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Valid Values: 1150-65535
	//
	// Default:
	//
	//    * Amazon Aurora - 3306
	//
	//    * RDS for Db2 - 50000
	//
	//    * RDS for MariaDB - 3306
	//
	//    * RDS for Microsoft SQL Server - 1433
	//
	//    * RDS for MySQL - 3306
	//
	//    * RDS for Oracle - 1521
	//
	//    * RDS for PostgreSQL - 5432
	//
	// Constraints:
	//
	//    * For RDS for Microsoft SQL Server, the value can't be 1234, 1434, 3260,
	//    3343, 3389, 47001, or 49152-49156.
	DBPortNumber *int64 `type:"integer"`

	// A list of DB security groups to authorize on this DB instance. Changing this
	// setting doesn't result in an outage and the change is asynchronously applied
	// as soon as possible.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Constraints:
	//
	//    * If supplied, must match existing DB security groups.
	DBSecurityGroups []*string `locationNameList:"DBSecurityGroupName" type:"list"`

	// The new DB subnet group for the DB instance. You can use this parameter to
	// move your DB instance to a different VPC. If your DB instance isn't in a
	// VPC, you can also use this parameter to move your DB instance into a VPC.
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html#USER_VPC.Non-VPC2VPC)
	// in the Amazon RDS User Guide.
	//
	// Changing the subnet group causes an outage during the change. The change
	// is applied during the next maintenance window, unless you enable ApplyImmediately.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Constraints:
	//
	//    * If supplied, must match existing DB subnet group.
	//
	// Example: mydbsubnetgroup
	DBSubnetGroupName *string `type:"string"`

	// Indicates whether the DB instance has a dedicated log volume (DLV) enabled.
	DedicatedLogVolume *bool `type:"boolean"`

	// Specifies whether the DB instance has deletion protection enabled. The database
	// can't be deleted when deletion protection is enabled. By default, deletion
	// protection isn't enabled. For more information, see Deleting a DB Instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html).
	//
	// This setting doesn't apply to Amazon Aurora DB instances. You can enable
	// or disable deletion protection for the DB cluster. For more information,
	// see ModifyDBCluster. DB instances in a DB cluster can be deleted even when
	// deletion protection is enabled for the DB cluster.
	DeletionProtection *bool `type:"boolean"`

	// Specifies whether to remove the DB instance from the Active Directory domain.
	DisableDomain *bool `type:"boolean"`

	// The Active Directory directory ID to move the DB instance to. Specify none
	// to remove the instance from its current domain. You must create the domain
	// before this operation. Currently, you can create only Db2, MySQL, Microsoft
	// SQL Server, Oracle, and PostgreSQL DB instances in an Active Directory Domain.
	//
	// For more information, see Kerberos Authentication (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	Domain *string `type:"string"`

	// The ARN for the Secrets Manager secret with the credentials for the user
	// joining the domain.
	//
	// Example: arn:aws:secretsmanager:region:account-number:secret:myselfmanagedADtestsecret-123456
	DomainAuthSecretArn *string `type:"string"`

	// The IPv4 DNS IP addresses of your primary and secondary Active Directory
	// domain controllers.
	//
	// Constraints:
	//
	//    * Two IP addresses must be provided. If there isn't a secondary domain
	//    controller, use the IP address of the primary domain controller for both
	//    entries in the list.
	//
	// Example: 123.124.125.126,234.235.236.237
	DomainDnsIps []*string `type:"list"`

	// The fully qualified domain name (FQDN) of an Active Directory domain.
	//
	// Constraints:
	//
	//    * Can't be longer than 64 characters.
	//
	// Example: mymanagedADtest.mymanagedAD.mydomain
	DomainFqdn *string `type:"string"`

	// The name of the IAM role to use when making API calls to the Directory Service.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	DomainIAMRoleName *string `type:"string"`

	// The Active Directory organizational unit for your DB instance to join.
	//
	// Constraints:
	//
	//    * Must be in the distinguished name format.
	//
	//    * Can't be longer than 64 characters.
	//
	// Example: OU=mymanagedADtestOU,DC=mymanagedADtest,DC=mymanagedAD,DC=mydomain
	DomainOu *string `type:"string"`

	// Specifies whether to enable a customer-owned IP address (CoIP) for an RDS
	// on Outposts DB instance.
	//
	// A CoIP provides local or external connectivity to resources in your Outpost
	// subnets through your on-premises network. For some use cases, a CoIP can
	// provide lower latency for connections to the DB instance from outside of
	// its virtual private cloud (VPC) on your local network.
	//
	// For more information about RDS on Outposts, see Working with Amazon RDS on
	// Amazon Web Services Outposts (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html)
	// in the Amazon RDS User Guide.
	//
	// For more information about CoIPs, see Customer-owned IP addresses (https://docs.aws.amazon.com/outposts/latest/userguide/routing.html#ip-addressing)
	// in the Amazon Web Services Outposts User Guide.
	EnableCustomerOwnedIp *bool `type:"boolean"`

	// Specifies whether to enable mapping of Amazon Web Services Identity and Access
	// Management (IAM) accounts to database accounts. By default, mapping isn't
	// enabled.
	//
	// This setting doesn't apply to Amazon Aurora. Mapping Amazon Web Services
	// IAM accounts to database accounts is managed by the DB cluster.
	//
	// For more information about IAM database authentication, see IAM Database
	// Authentication for MySQL and PostgreSQL (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	EnableIAMDatabaseAuthentication *bool `type:"boolean"`

	// Specifies whether to enable Performance Insights for the DB instance.
	//
	// For more information, see Using Amazon Performance Insights (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	EnablePerformanceInsights *bool `type:"boolean"`

	// The target Oracle DB engine when you convert a non-CDB to a CDB. This intermediate
	// step is necessary to upgrade an Oracle Database 19c non-CDB to an Oracle
	// Database 21c CDB.
	//
	// Note the following requirements:
	//
	//    * Make sure that you specify oracle-ee-cdb or oracle-se2-cdb.
	//
	//    * Make sure that your DB engine runs Oracle Database 19c with an April
	//    2021 or later RU.
	//
	// Note the following limitations:
	//
	//    * You can't convert a CDB to a non-CDB.
	//
	//    * You can't convert a replica database.
	//
	//    * You can't convert a non-CDB to a CDB and upgrade the engine version
	//    in the same command.
	//
	//    * You can't convert the existing custom parameter or option group when
	//    it has options or parameters that are permanent or persistent. In this
	//    situation, the DB instance reverts to the default option and parameter
	//    group. To avoid reverting to the default, specify a new parameter group
	//    with --db-parameter-group-name and a new option group with --option-group-name.
	Engine *string `type:"string"`

	// The version number of the database engine to upgrade to. Changing this parameter
	// results in an outage and the change is applied during the next maintenance
	// window unless the ApplyImmediately parameter is enabled for this request.
	//
	// For major version upgrades, if a nondefault DB parameter group is currently
	// in use, a new DB parameter group in the DB parameter group family for the
	// new engine version must be specified. The new DB parameter group can be the
	// default for that DB parameter group family.
	//
	// If you specify only a major version, Amazon RDS updates the DB instance to
	// the default minor version if the current minor version is lower. For information
	// about valid engine versions, see CreateDBInstance, or call DescribeDBEngineVersions.
	//
	// If the instance that you're modifying is acting as a read replica, the engine
	// version that you specify must be the same or higher than the version that
	// the source DB instance or cluster is running.
	//
	// In RDS Custom for Oracle, this parameter is supported for read replicas only
	// if they are in the PATCH_DB_FAILURE lifecycle.
	//
	// Constraints:
	//
	//    * If you are upgrading the engine version and modifying the DB instance
	//    class at the same time, the currently running engine version must be supported
	//    on the specified DB instance class. Otherwise, the operation returns an
	//    error. In this case, first run the operation to upgrade the engine version,
	//    and then run it again to modify the DB instance class.
	EngineVersion *string `type:"string"`

	// The new Provisioned IOPS (I/O operations per second) value for the RDS instance.
	//
	// Changing this setting doesn't result in an outage and the change is applied
	// during the next maintenance window unless the ApplyImmediately parameter
	// is enabled for this request. If you are migrating from Provisioned IOPS to
	// standard storage, set this value to 0. The DB instance will require a reboot
	// for the change in storage type to take effect.
	//
	// If you choose to migrate your DB instance from using standard storage to
	// using Provisioned IOPS, or from using Provisioned IOPS to using standard
	// storage, the process can take time. The duration of the migration depends
	// on several factors such as database load, storage size, storage type (standard
	// or Provisioned IOPS), amount of IOPS provisioned (if any), and the number
	// of prior scale storage operations. Typical migration times are under 24 hours,
	// but the process can take up to several days in some cases. During the migration,
	// the DB instance is available for use, but might experience performance degradation.
	// While the migration takes place, nightly backups for the instance are suspended.
	// No other Amazon RDS operations can take place for the instance, including
	// modifying the instance, rebooting the instance, deleting the instance, creating
	// a read replica for the instance, and creating a DB snapshot of the instance.
	//
	// Constraints:
	//
	//    * For RDS for MariaDB, RDS for MySQL, RDS for Oracle, and RDS for PostgreSQL
	//    - The value supplied must be at least 10% greater than the current value.
	//    Values that are not at least 10% greater than the existing value are rounded
	//    up so that they are 10% greater than the current value.
	//
	//    * When you increase the Provisioned IOPS, you must also specify the AllocatedStorage
	//    parameter. You can use the current value for AllocatedStorage.
	//
	// Default: Uses existing setting
	Iops *int64 `type:"integer"`

	// The license model for the DB instance.
	//
	// This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
	//
	// Valid Values:
	//
	//    * RDS for Db2 - bring-your-own-license
	//
	//    * RDS for MariaDB - general-public-license
	//
	//    * RDS for Microsoft SQL Server - license-included
	//
	//    * RDS for MySQL - general-public-license
	//
	//    * RDS for Oracle - bring-your-own-license | license-included
	//
	//    * RDS for PostgreSQL - postgresql-license
	LicenseModel *string `type:"string"`

	// Specifies whether to manage the master user password with Amazon Web Services
	// Secrets Manager.
	//
	// If the DB instance doesn't manage the master user password with Amazon Web
	// Services Secrets Manager, you can turn on this management. In this case,
	// you can't specify MasterUserPassword.
	//
	// If the DB instance already manages the master user password with Amazon Web
	// Services Secrets Manager, and you specify that the master user password is
	// not managed with Amazon Web Services Secrets Manager, then you must specify
	// MasterUserPassword. In this case, Amazon RDS deletes the secret and uses
	// the new password for the master user specified by MasterUserPassword.
	//
	// For more information, see Password management with Amazon Web Services Secrets
	// Manager (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html)
	// in the Amazon RDS User Guide.
	//
	// Constraints:
	//
	//    * Can't manage the master user password with Amazon Web Services Secrets
	//    Manager if MasterUserPassword is specified.
	ManageMasterUserPassword *bool `type:"boolean"`

	// The new password for the master user.
	//
	// Changing this parameter doesn't result in an outage and the change is asynchronously
	// applied as soon as possible. Between the time of the request and the completion
	// of the request, the MasterUserPassword element exists in the PendingModifiedValues
	// element of the operation response.
	//
	// Amazon RDS API operations never return the password, so this operation provides
	// a way to regain access to a primary instance user if the password is lost.
	// This includes restoring privileges that might have been accidentally revoked.
	//
	// This setting doesn't apply to the following DB instances:
	//
	//    * Amazon Aurora (The password for the master user is managed by the DB
	//    cluster. For more information, see ModifyDBCluster.)
	//
	//    * RDS Custom
	//
	// Default: Uses existing setting
	//
	// Constraints:
	//
	//    * Can't be specified if ManageMasterUserPassword is turned on.
	//
	//    * Can include any printable ASCII character except "/", """, or "@". For
	//    RDS for Oracle, can't include the "&" (ampersand) or the "'" (single quotes)
	//    character.
	//
	// Length Constraints:
	//
	//    * RDS for Db2 - Must contain from 8 to 255 characters.
	//
	//    * RDS for MariaDB - Must contain from 8 to 41 characters.
	//
	//    * RDS for Microsoft SQL Server - Must contain from 8 to 128 characters.
	//
	//    * RDS for MySQL - Must contain from 8 to 41 characters.
	//
	//    * RDS for Oracle - Must contain from 8 to 30 characters.
	//
	//    * RDS for PostgreSQL - Must contain from 8 to 128 characters.
	MasterUserPassword *string `type:"string"`

	// The Amazon Web Services KMS key identifier to encrypt a secret that is automatically
	// generated and managed in Amazon Web Services Secrets Manager.
	//
	// This setting is valid only if both of the following conditions are met:
	//
	//    * The DB instance doesn't manage the master user password in Amazon Web
	//    Services Secrets Manager. If the DB instance already manages the master
	//    user password in Amazon Web Services Secrets Manager, you can't change
	//    the KMS key used to encrypt the secret.
	//
	//    * You are turning on ManageMasterUserPassword to manage the master user
	//    password in Amazon Web Services Secrets Manager. If you are turning on
	//    ManageMasterUserPassword and don't specify MasterUserSecretKmsKeyId, then
	//    the aws/secretsmanager KMS key is used to encrypt the secret. If the secret
	//    is in a different Amazon Web Services account, then you can't use the
	//    aws/secretsmanager KMS key to encrypt the secret, and you must use a customer
	//    managed KMS key.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key. To use a KMS key in a different Amazon
	// Web Services account, specify the key ARN or alias ARN.
	//
	// There is a default KMS key for your Amazon Web Services account. Your Amazon
	// Web Services account has a different default KMS key for each Amazon Web
	// Services Region.
	MasterUserSecretKmsKeyId *string `type:"string"`

	// The upper limit in gibibytes (GiB) to which Amazon RDS can automatically
	// scale the storage of the DB instance.
	//
	// For more information about this setting, including limitations that apply
	// to it, see Managing capacity automatically with Amazon RDS storage autoscaling
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	MaxAllocatedStorage *int64 `type:"integer"`

	// The interval, in seconds, between points when Enhanced Monitoring metrics
	// are collected for the DB instance. To disable collection of Enhanced Monitoring
	// metrics, specify 0.
	//
	// If MonitoringRoleArn is specified, set MonitoringInterval to a value other
	// than 0.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Valid Values: 0 | 1 | 5 | 10 | 15 | 30 | 60
	//
	// Default: 0
	MonitoringInterval *int64 `type:"integer"`

	// The ARN for the IAM role that permits RDS to send enhanced monitoring metrics
	// to Amazon CloudWatch Logs. For example, arn:aws:iam:123456789012:role/emaccess.
	// For information on creating a monitoring role, see To create an IAM role
	// for Amazon RDS Enhanced Monitoring (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.html#USER_Monitoring.OS.IAMRole)
	// in the Amazon RDS User Guide.
	//
	// If MonitoringInterval is set to a value other than 0, supply a MonitoringRoleArn
	// value.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	MonitoringRoleArn *string `type:"string"`

	// Specifies whether the DB instance is a Multi-AZ deployment. Changing this
	// parameter doesn't result in an outage. The change is applied during the next
	// maintenance window unless the ApplyImmediately parameter is enabled for this
	// request.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	MultiAZ *bool `type:"boolean"`

	// Specifies whether the to convert your DB instance from the single-tenant
	// conﬁguration to the multi-tenant conﬁguration. This parameter is supported
	// only for RDS for Oracle CDB instances.
	//
	// During the conversion, RDS creates an initial tenant database and associates
	// the DB name, master user name, character set, and national character set
	// metadata with this database. The tags associated with the instance also propagate
	// to the initial tenant database. You can add more tenant databases to your
	// DB instance by using the CreateTenantDatabase operation.
	//
	// The conversion to the multi-tenant configuration is permanent and irreversible,
	// so you can't later convert back to the single-tenant configuration. When
	// you specify this parameter, you must also specify ApplyImmediately.
	MultiTenant *bool `type:"boolean"`

	// The network type of the DB instance.
	//
	// The network type is determined by the DBSubnetGroup specified for the DB
	// instance. A DBSubnetGroup can support only the IPv4 protocol or the IPv4
	// and the IPv6 protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon RDS User Guide.
	//
	// Valid Values: IPV4 | DUAL
	NetworkType *string `type:"string"`

	// The new identifier for the DB instance when renaming a DB instance. When
	// you change the DB instance identifier, an instance reboot occurs immediately
	// if you enable ApplyImmediately, or will occur during the next maintenance
	// window if you disable ApplyImmediately. This value is stored as a lowercase
	// string.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 letters, numbers, or hyphens.
	//
	//    * The first character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Example: mydbinstance
	NewDBInstanceIdentifier *string `type:"string"`

	// The option group to associate the DB instance with.
	//
	// Changing this parameter doesn't result in an outage, with one exception.
	// If the parameter change results in an option group that enables OEM, it can
	// cause a brief period, lasting less than a second, during which new connections
	// are rejected but existing connections aren't interrupted.
	//
	// The change is applied during the next maintenance window unless the ApplyImmediately
	// parameter is enabled for this request.
	//
	// Permanent options, such as the TDE option for Oracle Advanced Security TDE,
	// can't be removed from an option group, and that option group can't be removed
	// from a DB instance after it is associated with a DB instance.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	OptionGroupName *string `type:"string"`

	// The Amazon Web Services KMS key identifier for encryption of Performance
	// Insights data.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	//
	// If you don't specify a value for PerformanceInsightsKMSKeyId, then Amazon
	// RDS uses your default KMS key. There is a default KMS key for your Amazon
	// Web Services account. Your Amazon Web Services account has a different default
	// KMS key for each Amazon Web Services Region.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	PerformanceInsightsKMSKeyId *string `type:"string"`

	// The number of days to retain Performance Insights data.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Valid Values:
	//
	//    * 7
	//
	//    * month * 31, where month is a number of months from 1-23. Examples: 93
	//    (3 months * 31), 341 (11 months * 31), 589 (19 months * 31)
	//
	//    * 731
	//
	// Default: 7 days
	//
	// If you specify a retention period that isn't valid, such as 94, Amazon RDS
	// returns an error.
	PerformanceInsightsRetentionPeriod *int64 `type:"integer"`

	// The daily time range during which automated backups are created if automated
	// backups are enabled, as determined by the BackupRetentionPeriod parameter.
	// Changing this parameter doesn't result in an outage and the change is asynchronously
	// applied as soon as possible. The default is a 30-minute window selected at
	// random from an 8-hour block of time for each Amazon Web Services Region.
	// For more information, see Backup window (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to Amazon Aurora DB instances. The daily time
	// range for creating automated backups is managed by the DB cluster. For more
	// information, see ModifyDBCluster.
	//
	// Constraints:
	//
	//    * Must be in the format hh24:mi-hh24:mi.
	//
	//    * Must be in Universal Coordinated Time (UTC).
	//
	//    * Must not conflict with the preferred maintenance window.
	//
	//    * Must be at least 30 minutes.
	PreferredBackupWindow *string `type:"string"`

	// The weekly time range during which system maintenance can occur, which might
	// result in an outage. Changing this parameter doesn't result in an outage,
	// except in the following situation, and the change is asynchronously applied
	// as soon as possible. If there are pending actions that cause a reboot, and
	// the maintenance window is changed to include the current time, then changing
	// this parameter causes a reboot of the DB instance. If you change this window
	// to the current time, there must be at least 30 minutes between the current
	// time and end of the window to ensure pending changes are applied.
	//
	// For more information, see Amazon RDS Maintenance Window (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance)
	// in the Amazon RDS User Guide.
	//
	// Default: Uses existing setting
	//
	// Constraints:
	//
	//    * Must be in the format ddd:hh24:mi-ddd:hh24:mi.
	//
	//    * The day values must be mon | tue | wed | thu | fri | sat | sun.
	//
	//    * Must be in Universal Coordinated Time (UTC).
	//
	//    * Must not conflict with the preferred backup window.
	//
	//    * Must be at least 30 minutes.
	PreferredMaintenanceWindow *string `type:"string"`

	// The number of CPU cores and the number of threads per core for the DB instance
	// class of the DB instance.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	ProcessorFeatures []*ProcessorFeature `locationNameList:"ProcessorFeature" type:"list"`

	// The order of priority in which an Aurora Replica is promoted to the primary
	// instance after a failure of the existing primary instance. For more information,
	// see Fault Tolerance for an Aurora DB Cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraHighAvailability.html#Aurora.Managing.FaultTolerance)
	// in the Amazon Aurora User Guide.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// Default: 1
	//
	// Valid Values: 0 - 15
	PromotionTier *int64 `type:"integer"`

	// Specifies whether the DB instance is publicly accessible.
	//
	// When the DB instance is publicly accessible and you connect from outside
	// of the DB instance's virtual private cloud (VPC), its Domain Name System
	// (DNS) endpoint resolves to the public IP address. When you connect from within
	// the same VPC as the DB instance, the endpoint resolves to the private IP
	// address. Access to the DB instance is ultimately controlled by the security
	// group it uses. That public access isn't permitted if the security group assigned
	// to the DB instance doesn't permit it.
	//
	// When the DB instance isn't publicly accessible, it is an internal DB instance
	// with a DNS name that resolves to a private IP address.
	//
	// PubliclyAccessible only applies to DB instances in a VPC. The DB instance
	// must be part of a public subnet and PubliclyAccessible must be enabled for
	// it to be publicly accessible.
	//
	// Changes to the PubliclyAccessible parameter are applied immediately regardless
	// of the value of the ApplyImmediately parameter.
	PubliclyAccessible *bool `type:"boolean"`

	// A value that sets the open mode of a replica database to either mounted or
	// read-only.
	//
	// Currently, this parameter is only supported for Oracle DB instances.
	//
	// Mounted DB replicas are included in Oracle Enterprise Edition. The main use
	// case for mounted replicas is cross-Region disaster recovery. The primary
	// database doesn't use Active Data Guard to transmit information to the mounted
	// replica. Because it doesn't accept user connections, a mounted replica can't
	// serve a read-only workload. For more information, see Working with Oracle
	// Read Replicas for Amazon RDS (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-read-replicas.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	ReplicaMode *string `type:"string" enum:"ReplicaMode"`

	// The number of minutes to pause the automation. When the time period ends,
	// RDS Custom resumes full automation.
	//
	// Default: 60
	//
	// Constraints:
	//
	//    * Must be at least 60.
	//
	//    * Must be no more than 1,440.
	ResumeFullAutomationModeMinutes *int64 `type:"integer"`

	// Specifies whether to rotate the secret managed by Amazon Web Services Secrets
	// Manager for the master user password.
	//
	// This setting is valid only if the master user password is managed by RDS
	// in Amazon Web Services Secrets Manager for the DB cluster. The secret value
	// contains the updated password.
	//
	// For more information, see Password management with Amazon Web Services Secrets
	// Manager (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html)
	// in the Amazon RDS User Guide.
	//
	// Constraints:
	//
	//    * You must apply the change immediately when rotating the master user
	//    password.
	RotateMasterUserPassword *bool `type:"boolean"`

	// The storage throughput value for the DB instance.
	//
	// This setting applies only to the gp3 storage type.
	//
	// This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
	StorageThroughput *int64 `type:"integer"`

	// The storage type to associate with the DB instance.
	//
	// If you specify io1, io2, or gp3 you must also include a value for the Iops
	// parameter.
	//
	// If you choose to migrate your DB instance from using standard storage to
	// using Provisioned IOPS, or from using Provisioned IOPS to using standard
	// storage, the process can take time. The duration of the migration depends
	// on several factors such as database load, storage size, storage type (standard
	// or Provisioned IOPS), amount of IOPS provisioned (if any), and the number
	// of prior scale storage operations. Typical migration times are under 24 hours,
	// but the process can take up to several days in some cases. During the migration,
	// the DB instance is available for use, but might experience performance degradation.
	// While the migration takes place, nightly backups for the instance are suspended.
	// No other Amazon RDS operations can take place for the instance, including
	// modifying the instance, rebooting the instance, deleting the instance, creating
	// a read replica for the instance, and creating a DB snapshot of the instance.
	//
	// Valid Values: gp2 | gp3 | io1 | io2 | standard
	//
	// Default: io1, if the Iops parameter is specified. Otherwise, gp2.
	StorageType *string `type:"string"`

	// The ARN from the key store with which to associate the instance for TDE encryption.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	TdeCredentialArn *string `type:"string"`

	// The password for the given ARN from the key store in order to access the
	// device.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	TdeCredentialPassword *string `type:"string"`

	// Specifies whether the DB instance class of the DB instance uses its default
	// processor features.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	UseDefaultProcessorFeatures *bool `type:"boolean"`

	// A list of Amazon EC2 VPC security groups to associate with this DB instance.
	// This change is asynchronously applied as soon as possible.
	//
	// This setting doesn't apply to the following DB instances:
	//
	//    * Amazon Aurora (The associated list of EC2 VPC security groups is managed
	//    by the DB cluster. For more information, see ModifyDBCluster.)
	//
	//    * RDS Custom
	//
	// Constraints:
	//
	//    * If supplied, must match existing VPC security group IDs.
	VpcSecurityGroupIds []*string `locationNameList:"VpcSecurityGroupId" 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 ModifyDBInstanceInput) 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 ModifyDBInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDBInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDBInstanceInput"}
	if s.AwsBackupRecoveryPointArn != nil && len(*s.AwsBackupRecoveryPointArn) < 43 {
		invalidParams.Add(request.NewErrParamMinLen("AwsBackupRecoveryPointArn", 43))
	}
	if s.DBInstanceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBInstanceIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *ModifyDBInstanceInput) SetAllocatedStorage(v int64) *ModifyDBInstanceInput {
	s.AllocatedStorage = &v
	return s
}

// SetAllowMajorVersionUpgrade sets the AllowMajorVersionUpgrade field's value.
func (s *ModifyDBInstanceInput) SetAllowMajorVersionUpgrade(v bool) *ModifyDBInstanceInput {
	s.AllowMajorVersionUpgrade = &v
	return s
}

// SetApplyImmediately sets the ApplyImmediately field's value.
func (s *ModifyDBInstanceInput) SetApplyImmediately(v bool) *ModifyDBInstanceInput {
	s.ApplyImmediately = &v
	return s
}

// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
func (s *ModifyDBInstanceInput) SetAutoMinorVersionUpgrade(v bool) *ModifyDBInstanceInput {
	s.AutoMinorVersionUpgrade = &v
	return s
}

// SetAutomationMode sets the AutomationMode field's value.
func (s *ModifyDBInstanceInput) SetAutomationMode(v string) *ModifyDBInstanceInput {
	s.AutomationMode = &v
	return s
}

// SetAwsBackupRecoveryPointArn sets the AwsBackupRecoveryPointArn field's value.
func (s *ModifyDBInstanceInput) SetAwsBackupRecoveryPointArn(v string) *ModifyDBInstanceInput {
	s.AwsBackupRecoveryPointArn = &v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *ModifyDBInstanceInput) SetBackupRetentionPeriod(v int64) *ModifyDBInstanceInput {
	s.BackupRetentionPeriod = &v
	return s
}

// SetCACertificateIdentifier sets the CACertificateIdentifier field's value.
func (s *ModifyDBInstanceInput) SetCACertificateIdentifier(v string) *ModifyDBInstanceInput {
	s.CACertificateIdentifier = &v
	return s
}

// SetCertificateRotationRestart sets the CertificateRotationRestart field's value.
func (s *ModifyDBInstanceInput) SetCertificateRotationRestart(v bool) *ModifyDBInstanceInput {
	s.CertificateRotationRestart = &v
	return s
}

// SetCloudwatchLogsExportConfiguration sets the CloudwatchLogsExportConfiguration field's value.
func (s *ModifyDBInstanceInput) SetCloudwatchLogsExportConfiguration(v *CloudwatchLogsExportConfiguration) *ModifyDBInstanceInput {
	s.CloudwatchLogsExportConfiguration = v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *ModifyDBInstanceInput) SetCopyTagsToSnapshot(v bool) *ModifyDBInstanceInput {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *ModifyDBInstanceInput) SetDBInstanceClass(v string) *ModifyDBInstanceInput {
	s.DBInstanceClass = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *ModifyDBInstanceInput) SetDBInstanceIdentifier(v string) *ModifyDBInstanceInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *ModifyDBInstanceInput) SetDBParameterGroupName(v string) *ModifyDBInstanceInput {
	s.DBParameterGroupName = &v
	return s
}

// SetDBPortNumber sets the DBPortNumber field's value.
func (s *ModifyDBInstanceInput) SetDBPortNumber(v int64) *ModifyDBInstanceInput {
	s.DBPortNumber = &v
	return s
}

// SetDBSecurityGroups sets the DBSecurityGroups field's value.
func (s *ModifyDBInstanceInput) SetDBSecurityGroups(v []*string) *ModifyDBInstanceInput {
	s.DBSecurityGroups = v
	return s
}

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *ModifyDBInstanceInput) SetDBSubnetGroupName(v string) *ModifyDBInstanceInput {
	s.DBSubnetGroupName = &v
	return s
}

// SetDedicatedLogVolume sets the DedicatedLogVolume field's value.
func (s *ModifyDBInstanceInput) SetDedicatedLogVolume(v bool) *ModifyDBInstanceInput {
	s.DedicatedLogVolume = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *ModifyDBInstanceInput) SetDeletionProtection(v bool) *ModifyDBInstanceInput {
	s.DeletionProtection = &v
	return s
}

// SetDisableDomain sets the DisableDomain field's value.
func (s *ModifyDBInstanceInput) SetDisableDomain(v bool) *ModifyDBInstanceInput {
	s.DisableDomain = &v
	return s
}

// SetDomain sets the Domain field's value.
func (s *ModifyDBInstanceInput) SetDomain(v string) *ModifyDBInstanceInput {
	s.Domain = &v
	return s
}

// SetDomainAuthSecretArn sets the DomainAuthSecretArn field's value.
func (s *ModifyDBInstanceInput) SetDomainAuthSecretArn(v string) *ModifyDBInstanceInput {
	s.DomainAuthSecretArn = &v
	return s
}

// SetDomainDnsIps sets the DomainDnsIps field's value.
func (s *ModifyDBInstanceInput) SetDomainDnsIps(v []*string) *ModifyDBInstanceInput {
	s.DomainDnsIps = v
	return s
}

// SetDomainFqdn sets the DomainFqdn field's value.
func (s *ModifyDBInstanceInput) SetDomainFqdn(v string) *ModifyDBInstanceInput {
	s.DomainFqdn = &v
	return s
}

// SetDomainIAMRoleName sets the DomainIAMRoleName field's value.
func (s *ModifyDBInstanceInput) SetDomainIAMRoleName(v string) *ModifyDBInstanceInput {
	s.DomainIAMRoleName = &v
	return s
}

// SetDomainOu sets the DomainOu field's value.
func (s *ModifyDBInstanceInput) SetDomainOu(v string) *ModifyDBInstanceInput {
	s.DomainOu = &v
	return s
}

// SetEnableCustomerOwnedIp sets the EnableCustomerOwnedIp field's value.
func (s *ModifyDBInstanceInput) SetEnableCustomerOwnedIp(v bool) *ModifyDBInstanceInput {
	s.EnableCustomerOwnedIp = &v
	return s
}

// SetEnableIAMDatabaseAuthentication sets the EnableIAMDatabaseAuthentication field's value.
func (s *ModifyDBInstanceInput) SetEnableIAMDatabaseAuthentication(v bool) *ModifyDBInstanceInput {
	s.EnableIAMDatabaseAuthentication = &v
	return s
}

// SetEnablePerformanceInsights sets the EnablePerformanceInsights field's value.
func (s *ModifyDBInstanceInput) SetEnablePerformanceInsights(v bool) *ModifyDBInstanceInput {
	s.EnablePerformanceInsights = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *ModifyDBInstanceInput) SetEngine(v string) *ModifyDBInstanceInput {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *ModifyDBInstanceInput) SetEngineVersion(v string) *ModifyDBInstanceInput {
	s.EngineVersion = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *ModifyDBInstanceInput) SetIops(v int64) *ModifyDBInstanceInput {
	s.Iops = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *ModifyDBInstanceInput) SetLicenseModel(v string) *ModifyDBInstanceInput {
	s.LicenseModel = &v
	return s
}

// SetManageMasterUserPassword sets the ManageMasterUserPassword field's value.
func (s *ModifyDBInstanceInput) SetManageMasterUserPassword(v bool) *ModifyDBInstanceInput {
	s.ManageMasterUserPassword = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *ModifyDBInstanceInput) SetMasterUserPassword(v string) *ModifyDBInstanceInput {
	s.MasterUserPassword = &v
	return s
}

// SetMasterUserSecretKmsKeyId sets the MasterUserSecretKmsKeyId field's value.
func (s *ModifyDBInstanceInput) SetMasterUserSecretKmsKeyId(v string) *ModifyDBInstanceInput {
	s.MasterUserSecretKmsKeyId = &v
	return s
}

// SetMaxAllocatedStorage sets the MaxAllocatedStorage field's value.
func (s *ModifyDBInstanceInput) SetMaxAllocatedStorage(v int64) *ModifyDBInstanceInput {
	s.MaxAllocatedStorage = &v
	return s
}

// SetMonitoringInterval sets the MonitoringInterval field's value.
func (s *ModifyDBInstanceInput) SetMonitoringInterval(v int64) *ModifyDBInstanceInput {
	s.MonitoringInterval = &v
	return s
}

// SetMonitoringRoleArn sets the MonitoringRoleArn field's value.
func (s *ModifyDBInstanceInput) SetMonitoringRoleArn(v string) *ModifyDBInstanceInput {
	s.MonitoringRoleArn = &v
	return s
}

// SetMultiAZ sets the MultiAZ field's value.
func (s *ModifyDBInstanceInput) SetMultiAZ(v bool) *ModifyDBInstanceInput {
	s.MultiAZ = &v
	return s
}

// SetMultiTenant sets the MultiTenant field's value.
func (s *ModifyDBInstanceInput) SetMultiTenant(v bool) *ModifyDBInstanceInput {
	s.MultiTenant = &v
	return s
}

// SetNetworkType sets the NetworkType field's value.
func (s *ModifyDBInstanceInput) SetNetworkType(v string) *ModifyDBInstanceInput {
	s.NetworkType = &v
	return s
}

// SetNewDBInstanceIdentifier sets the NewDBInstanceIdentifier field's value.
func (s *ModifyDBInstanceInput) SetNewDBInstanceIdentifier(v string) *ModifyDBInstanceInput {
	s.NewDBInstanceIdentifier = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *ModifyDBInstanceInput) SetOptionGroupName(v string) *ModifyDBInstanceInput {
	s.OptionGroupName = &v
	return s
}

// SetPerformanceInsightsKMSKeyId sets the PerformanceInsightsKMSKeyId field's value.
func (s *ModifyDBInstanceInput) SetPerformanceInsightsKMSKeyId(v string) *ModifyDBInstanceInput {
	s.PerformanceInsightsKMSKeyId = &v
	return s
}

// SetPerformanceInsightsRetentionPeriod sets the PerformanceInsightsRetentionPeriod field's value.
func (s *ModifyDBInstanceInput) SetPerformanceInsightsRetentionPeriod(v int64) *ModifyDBInstanceInput {
	s.PerformanceInsightsRetentionPeriod = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *ModifyDBInstanceInput) SetPreferredBackupWindow(v string) *ModifyDBInstanceInput {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *ModifyDBInstanceInput) SetPreferredMaintenanceWindow(v string) *ModifyDBInstanceInput {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetProcessorFeatures sets the ProcessorFeatures field's value.
func (s *ModifyDBInstanceInput) SetProcessorFeatures(v []*ProcessorFeature) *ModifyDBInstanceInput {
	s.ProcessorFeatures = v
	return s
}

// SetPromotionTier sets the PromotionTier field's value.
func (s *ModifyDBInstanceInput) SetPromotionTier(v int64) *ModifyDBInstanceInput {
	s.PromotionTier = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *ModifyDBInstanceInput) SetPubliclyAccessible(v bool) *ModifyDBInstanceInput {
	s.PubliclyAccessible = &v
	return s
}

// SetReplicaMode sets the ReplicaMode field's value.
func (s *ModifyDBInstanceInput) SetReplicaMode(v string) *ModifyDBInstanceInput {
	s.ReplicaMode = &v
	return s
}

// SetResumeFullAutomationModeMinutes sets the ResumeFullAutomationModeMinutes field's value.
func (s *ModifyDBInstanceInput) SetResumeFullAutomationModeMinutes(v int64) *ModifyDBInstanceInput {
	s.ResumeFullAutomationModeMinutes = &v
	return s
}

// SetRotateMasterUserPassword sets the RotateMasterUserPassword field's value.
func (s *ModifyDBInstanceInput) SetRotateMasterUserPassword(v bool) *ModifyDBInstanceInput {
	s.RotateMasterUserPassword = &v
	return s
}

// SetStorageThroughput sets the StorageThroughput field's value.
func (s *ModifyDBInstanceInput) SetStorageThroughput(v int64) *ModifyDBInstanceInput {
	s.StorageThroughput = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *ModifyDBInstanceInput) SetStorageType(v string) *ModifyDBInstanceInput {
	s.StorageType = &v
	return s
}

// SetTdeCredentialArn sets the TdeCredentialArn field's value.
func (s *ModifyDBInstanceInput) SetTdeCredentialArn(v string) *ModifyDBInstanceInput {
	s.TdeCredentialArn = &v
	return s
}

// SetTdeCredentialPassword sets the TdeCredentialPassword field's value.
func (s *ModifyDBInstanceInput) SetTdeCredentialPassword(v string) *ModifyDBInstanceInput {
	s.TdeCredentialPassword = &v
	return s
}

// SetUseDefaultProcessorFeatures sets the UseDefaultProcessorFeatures field's value.
func (s *ModifyDBInstanceInput) SetUseDefaultProcessorFeatures(v bool) *ModifyDBInstanceInput {
	s.UseDefaultProcessorFeatures = &v
	return s
}

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *ModifyDBInstanceInput) SetVpcSecurityGroupIds(v []*string) *ModifyDBInstanceInput {
	s.VpcSecurityGroupIds = v
	return s
}

type ModifyDBInstanceOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon RDS DB instance.
	//
	// This data type is used as a response element in the operations CreateDBInstance,
	// CreateDBInstanceReadReplica, DeleteDBInstance, DescribeDBInstances, ModifyDBInstance,
	// PromoteReadReplica, RebootDBInstance, RestoreDBInstanceFromDBSnapshot, RestoreDBInstanceFromS3,
	// RestoreDBInstanceToPointInTime, StartDBInstance, and StopDBInstance.
	DBInstance *DBInstance `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 ModifyDBInstanceOutput) 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 ModifyDBInstanceOutput) GoString() string {
	return s.String()
}

// SetDBInstance sets the DBInstance field's value.
func (s *ModifyDBInstanceOutput) SetDBInstance(v *DBInstance) *ModifyDBInstanceOutput {
	s.DBInstance = v
	return s
}

type ModifyDBParameterGroupInput struct {
	_ struct{} `type:"structure"`

	// The name of the DB parameter group.
	//
	// Constraints:
	//
	//    * If supplied, must match the name of an existing DBParameterGroup.
	//
	// DBParameterGroupName is a required field
	DBParameterGroupName *string `type:"string" required:"true"`

	// An array of parameter names, values, and the application methods for the
	// parameter update. At least one parameter name, value, and application method
	// must be supplied; later arguments are optional. A maximum of 20 parameters
	// can be modified in a single request.
	//
	// Valid Values (for the application method): immediate | pending-reboot
	//
	// You can use the immediate value with dynamic parameters only. You can use
	// the pending-reboot value for both dynamic and static parameters.
	//
	// When the application method is immediate, changes to dynamic parameters are
	// applied immediately to the DB instances associated with the parameter group.
	//
	// When the application method is pending-reboot, changes to dynamic and static
	// parameters are applied after a reboot without failover to the DB instances
	// associated with the parameter group.
	//
	// You can't use pending-reboot with dynamic parameters on RDS for SQL Server
	// DB instances. Use immediate.
	//
	// For more information on modifying DB parameters, see Working with DB parameter
	// groups (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html)
	// in the Amazon RDS User Guide.
	//
	// Parameters is a required field
	Parameters []*Parameter `locationNameList:"Parameter" type:"list" 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 ModifyDBParameterGroupInput) 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 ModifyDBParameterGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDBParameterGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDBParameterGroupInput"}
	if s.DBParameterGroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBParameterGroupName"))
	}
	if s.Parameters == nil {
		invalidParams.Add(request.NewErrParamRequired("Parameters"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *ModifyDBParameterGroupInput) SetDBParameterGroupName(v string) *ModifyDBParameterGroupInput {
	s.DBParameterGroupName = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *ModifyDBParameterGroupInput) SetParameters(v []*Parameter) *ModifyDBParameterGroupInput {
	s.Parameters = v
	return s
}

type ModifyDBProxyEndpointInput struct {
	_ struct{} `type:"structure"`

	// The name of the DB proxy sociated with the DB proxy endpoint that you want
	// to modify.
	//
	// DBProxyEndpointName is a required field
	DBProxyEndpointName *string `min:"1" type:"string" required:"true"`

	// The new identifier for the DBProxyEndpoint. An identifier must begin with
	// a letter and must contain only ASCII letters, digits, and hyphens; it can't
	// end with a hyphen or contain two consecutive hyphens.
	NewDBProxyEndpointName *string `min:"1" type:"string"`

	// The VPC security group IDs for the DB proxy endpoint. When the DB proxy endpoint
	// uses a different VPC than the original proxy, you also specify a different
	// set of security group IDs than for the original proxy.
	VpcSecurityGroupIds []*string `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 ModifyDBProxyEndpointInput) 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 ModifyDBProxyEndpointInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDBProxyEndpointInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDBProxyEndpointInput"}
	if s.DBProxyEndpointName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBProxyEndpointName"))
	}
	if s.DBProxyEndpointName != nil && len(*s.DBProxyEndpointName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DBProxyEndpointName", 1))
	}
	if s.NewDBProxyEndpointName != nil && len(*s.NewDBProxyEndpointName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NewDBProxyEndpointName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBProxyEndpointName sets the DBProxyEndpointName field's value.
func (s *ModifyDBProxyEndpointInput) SetDBProxyEndpointName(v string) *ModifyDBProxyEndpointInput {
	s.DBProxyEndpointName = &v
	return s
}

// SetNewDBProxyEndpointName sets the NewDBProxyEndpointName field's value.
func (s *ModifyDBProxyEndpointInput) SetNewDBProxyEndpointName(v string) *ModifyDBProxyEndpointInput {
	s.NewDBProxyEndpointName = &v
	return s
}

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *ModifyDBProxyEndpointInput) SetVpcSecurityGroupIds(v []*string) *ModifyDBProxyEndpointInput {
	s.VpcSecurityGroupIds = v
	return s
}

type ModifyDBProxyEndpointOutput struct {
	_ struct{} `type:"structure"`

	// The DBProxyEndpoint object representing the new settings for the DB proxy
	// endpoint.
	DBProxyEndpoint *DBProxyEndpoint `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 ModifyDBProxyEndpointOutput) 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 ModifyDBProxyEndpointOutput) GoString() string {
	return s.String()
}

// SetDBProxyEndpoint sets the DBProxyEndpoint field's value.
func (s *ModifyDBProxyEndpointOutput) SetDBProxyEndpoint(v *DBProxyEndpoint) *ModifyDBProxyEndpointOutput {
	s.DBProxyEndpoint = v
	return s
}

type ModifyDBProxyInput struct {
	_ struct{} `type:"structure"`

	// The new authentication settings for the DBProxy.
	Auth []*UserAuthConfig `type:"list"`

	// The identifier for the DBProxy to modify.
	//
	// DBProxyName is a required field
	DBProxyName *string `type:"string" required:"true"`

	// Whether the proxy includes detailed information about SQL statements in its
	// logs. This information helps you to debug issues involving SQL behavior or
	// the performance and scalability of the proxy connections. The debug information
	// includes the text of SQL statements that you submit through the proxy. Thus,
	// only enable this setting when needed for debugging, and only when you have
	// security measures in place to safeguard any sensitive information that appears
	// in the logs.
	DebugLogging *bool `type:"boolean"`

	// The number of seconds that a connection to the proxy can be inactive before
	// the proxy disconnects it. You can set this value higher or lower than the
	// connection timeout limit for the associated database.
	IdleClientTimeout *int64 `type:"integer"`

	// The new identifier for the DBProxy. An identifier must begin with a letter
	// and must contain only ASCII letters, digits, and hyphens; it can't end with
	// a hyphen or contain two consecutive hyphens.
	NewDBProxyName *string `type:"string"`

	// Whether Transport Layer Security (TLS) encryption is required for connections
	// to the proxy. By enabling this setting, you can enforce encrypted TLS connections
	// to the proxy, even if the associated database doesn't use TLS.
	RequireTLS *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) of the IAM role that the proxy uses to access
	// secrets in Amazon Web Services Secrets Manager.
	RoleArn *string `type:"string"`

	// The new list of security groups for the DBProxy.
	SecurityGroups []*string `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 ModifyDBProxyInput) 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 ModifyDBProxyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDBProxyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDBProxyInput"}
	if s.DBProxyName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBProxyName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAuth sets the Auth field's value.
func (s *ModifyDBProxyInput) SetAuth(v []*UserAuthConfig) *ModifyDBProxyInput {
	s.Auth = v
	return s
}

// SetDBProxyName sets the DBProxyName field's value.
func (s *ModifyDBProxyInput) SetDBProxyName(v string) *ModifyDBProxyInput {
	s.DBProxyName = &v
	return s
}

// SetDebugLogging sets the DebugLogging field's value.
func (s *ModifyDBProxyInput) SetDebugLogging(v bool) *ModifyDBProxyInput {
	s.DebugLogging = &v
	return s
}

// SetIdleClientTimeout sets the IdleClientTimeout field's value.
func (s *ModifyDBProxyInput) SetIdleClientTimeout(v int64) *ModifyDBProxyInput {
	s.IdleClientTimeout = &v
	return s
}

// SetNewDBProxyName sets the NewDBProxyName field's value.
func (s *ModifyDBProxyInput) SetNewDBProxyName(v string) *ModifyDBProxyInput {
	s.NewDBProxyName = &v
	return s
}

// SetRequireTLS sets the RequireTLS field's value.
func (s *ModifyDBProxyInput) SetRequireTLS(v bool) *ModifyDBProxyInput {
	s.RequireTLS = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *ModifyDBProxyInput) SetRoleArn(v string) *ModifyDBProxyInput {
	s.RoleArn = &v
	return s
}

// SetSecurityGroups sets the SecurityGroups field's value.
func (s *ModifyDBProxyInput) SetSecurityGroups(v []*string) *ModifyDBProxyInput {
	s.SecurityGroups = v
	return s
}

type ModifyDBProxyOutput struct {
	_ struct{} `type:"structure"`

	// The DBProxy object representing the new settings for the proxy.
	DBProxy *DBProxy `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 ModifyDBProxyOutput) 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 ModifyDBProxyOutput) GoString() string {
	return s.String()
}

// SetDBProxy sets the DBProxy field's value.
func (s *ModifyDBProxyOutput) SetDBProxy(v *DBProxy) *ModifyDBProxyOutput {
	s.DBProxy = v
	return s
}

type ModifyDBProxyTargetGroupInput struct {
	_ struct{} `type:"structure"`

	// The settings that determine the size and behavior of the connection pool
	// for the target group.
	ConnectionPoolConfig *ConnectionPoolConfiguration `type:"structure"`

	// The name of the proxy.
	//
	// DBProxyName is a required field
	DBProxyName *string `type:"string" required:"true"`

	// The new name for the modified DBProxyTarget. An identifier must begin with
	// a letter and must contain only ASCII letters, digits, and hyphens; it can't
	// end with a hyphen or contain two consecutive hyphens.
	NewName *string `type:"string"`

	// The name of the target group to modify.
	//
	// TargetGroupName is a required field
	TargetGroupName *string `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 ModifyDBProxyTargetGroupInput) 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 ModifyDBProxyTargetGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDBProxyTargetGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDBProxyTargetGroupInput"}
	if s.DBProxyName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBProxyName"))
	}
	if s.TargetGroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("TargetGroupName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConnectionPoolConfig sets the ConnectionPoolConfig field's value.
func (s *ModifyDBProxyTargetGroupInput) SetConnectionPoolConfig(v *ConnectionPoolConfiguration) *ModifyDBProxyTargetGroupInput {
	s.ConnectionPoolConfig = v
	return s
}

// SetDBProxyName sets the DBProxyName field's value.
func (s *ModifyDBProxyTargetGroupInput) SetDBProxyName(v string) *ModifyDBProxyTargetGroupInput {
	s.DBProxyName = &v
	return s
}

// SetNewName sets the NewName field's value.
func (s *ModifyDBProxyTargetGroupInput) SetNewName(v string) *ModifyDBProxyTargetGroupInput {
	s.NewName = &v
	return s
}

// SetTargetGroupName sets the TargetGroupName field's value.
func (s *ModifyDBProxyTargetGroupInput) SetTargetGroupName(v string) *ModifyDBProxyTargetGroupInput {
	s.TargetGroupName = &v
	return s
}

type ModifyDBProxyTargetGroupOutput struct {
	_ struct{} `type:"structure"`

	// The settings of the modified DBProxyTarget.
	DBProxyTargetGroup *DBProxyTargetGroup `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 ModifyDBProxyTargetGroupOutput) 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 ModifyDBProxyTargetGroupOutput) GoString() string {
	return s.String()
}

// SetDBProxyTargetGroup sets the DBProxyTargetGroup field's value.
func (s *ModifyDBProxyTargetGroupOutput) SetDBProxyTargetGroup(v *DBProxyTargetGroup) *ModifyDBProxyTargetGroupOutput {
	s.DBProxyTargetGroup = v
	return s
}

type ModifyDBRecommendationInput struct {
	_ struct{} `type:"structure"`

	// The language of the modified recommendation.
	Locale *string `type:"string"`

	// The identifier of the recommendation to update.
	//
	// RecommendationId is a required field
	RecommendationId *string `type:"string" required:"true"`

	// The list of recommended action status to update. You can update multiple
	// recommended actions at one time.
	RecommendedActionUpdates []*RecommendedActionUpdate `type:"list"`

	// The recommendation status to update.
	//
	// Valid values:
	//
	//    * active
	//
	//    * dismissed
	Status *string `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 ModifyDBRecommendationInput) 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 ModifyDBRecommendationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDBRecommendationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDBRecommendationInput"}
	if s.RecommendationId == nil {
		invalidParams.Add(request.NewErrParamRequired("RecommendationId"))
	}
	if s.RecommendedActionUpdates != nil {
		for i, v := range s.RecommendedActionUpdates {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RecommendedActionUpdates", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLocale sets the Locale field's value.
func (s *ModifyDBRecommendationInput) SetLocale(v string) *ModifyDBRecommendationInput {
	s.Locale = &v
	return s
}

// SetRecommendationId sets the RecommendationId field's value.
func (s *ModifyDBRecommendationInput) SetRecommendationId(v string) *ModifyDBRecommendationInput {
	s.RecommendationId = &v
	return s
}

// SetRecommendedActionUpdates sets the RecommendedActionUpdates field's value.
func (s *ModifyDBRecommendationInput) SetRecommendedActionUpdates(v []*RecommendedActionUpdate) *ModifyDBRecommendationInput {
	s.RecommendedActionUpdates = v
	return s
}

// SetStatus sets the Status field's value.
func (s *ModifyDBRecommendationInput) SetStatus(v string) *ModifyDBRecommendationInput {
	s.Status = &v
	return s
}

type ModifyDBRecommendationOutput struct {
	_ struct{} `type:"structure"`

	// The recommendation for your DB instances, DB clusters, and DB parameter groups.
	DBRecommendation *DBRecommendation `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 ModifyDBRecommendationOutput) 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 ModifyDBRecommendationOutput) GoString() string {
	return s.String()
}

// SetDBRecommendation sets the DBRecommendation field's value.
func (s *ModifyDBRecommendationOutput) SetDBRecommendation(v *DBRecommendation) *ModifyDBRecommendationOutput {
	s.DBRecommendation = v
	return s
}

type ModifyDBShardGroupInput struct {
	_ struct{} `type:"structure"`

	// The name of the DB shard group to modify.
	//
	// DBShardGroupIdentifier is a required field
	DBShardGroupIdentifier *string `min:"1" type:"string" required:"true"`

	// The maximum capacity of the DB shard group in Aurora capacity units (ACUs).
	MaxACU *float64 `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 ModifyDBShardGroupInput) 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 ModifyDBShardGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDBShardGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDBShardGroupInput"}
	if s.DBShardGroupIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBShardGroupIdentifier"))
	}
	if s.DBShardGroupIdentifier != nil && len(*s.DBShardGroupIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DBShardGroupIdentifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBShardGroupIdentifier sets the DBShardGroupIdentifier field's value.
func (s *ModifyDBShardGroupInput) SetDBShardGroupIdentifier(v string) *ModifyDBShardGroupInput {
	s.DBShardGroupIdentifier = &v
	return s
}

// SetMaxACU sets the MaxACU field's value.
func (s *ModifyDBShardGroupInput) SetMaxACU(v float64) *ModifyDBShardGroupInput {
	s.MaxACU = &v
	return s
}

type ModifyDBShardGroupOutput struct {
	_ struct{} `type:"structure"`

	// Specifies whether to create standby instances for the DB shard group. Valid
	// values are the following:
	//
	//    * 0 - Creates a single, primary DB instance for each physical shard. This
	//    is the default value, and the only one supported for the preview.
	//
	//    * 1 - Creates a primary DB instance and a standby instance in a different
	//    Availability Zone (AZ) for each physical shard.
	//
	//    * 2 - Creates a primary DB instance and two standby instances in different
	//    AZs for each physical shard.
	ComputeRedundancy *int64 `type:"integer"`

	// The name of the primary DB cluster for the DB shard group.
	DBClusterIdentifier *string `type:"string"`

	// The name of the DB shard group.
	DBShardGroupIdentifier *string `min:"1" type:"string"`

	// The Amazon Web Services Region-unique, immutable identifier for the DB shard
	// group.
	DBShardGroupResourceId *string `type:"string"`

	// The connection endpoint for the DB shard group.
	Endpoint *string `type:"string"`

	// The maximum capacity of the DB shard group in Aurora capacity units (ACUs).
	MaxACU *float64 `type:"double"`

	// Indicates whether the DB shard group is publicly accessible.
	//
	// When the DB shard group is publicly accessible, its Domain Name System (DNS)
	// endpoint resolves to the private IP address from within the DB shard group's
	// virtual private cloud (VPC). It resolves to the public IP address from outside
	// of the DB shard group's VPC. Access to the DB shard group is ultimately controlled
	// by the security group it uses. That public access isn't permitted if the
	// security group assigned to the DB shard group doesn't permit it.
	//
	// When the DB shard group isn't publicly accessible, it is an internal DB shard
	// group with a DNS name that resolves to a private IP address.
	//
	// For more information, see CreateDBShardGroup.
	//
	// This setting is only for Aurora Limitless Database.
	PubliclyAccessible *bool `type:"boolean"`

	// The status of the DB shard group.
	Status *string `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 ModifyDBShardGroupOutput) 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 ModifyDBShardGroupOutput) GoString() string {
	return s.String()
}

// SetComputeRedundancy sets the ComputeRedundancy field's value.
func (s *ModifyDBShardGroupOutput) SetComputeRedundancy(v int64) *ModifyDBShardGroupOutput {
	s.ComputeRedundancy = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *ModifyDBShardGroupOutput) SetDBClusterIdentifier(v string) *ModifyDBShardGroupOutput {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBShardGroupIdentifier sets the DBShardGroupIdentifier field's value.
func (s *ModifyDBShardGroupOutput) SetDBShardGroupIdentifier(v string) *ModifyDBShardGroupOutput {
	s.DBShardGroupIdentifier = &v
	return s
}

// SetDBShardGroupResourceId sets the DBShardGroupResourceId field's value.
func (s *ModifyDBShardGroupOutput) SetDBShardGroupResourceId(v string) *ModifyDBShardGroupOutput {
	s.DBShardGroupResourceId = &v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *ModifyDBShardGroupOutput) SetEndpoint(v string) *ModifyDBShardGroupOutput {
	s.Endpoint = &v
	return s
}

// SetMaxACU sets the MaxACU field's value.
func (s *ModifyDBShardGroupOutput) SetMaxACU(v float64) *ModifyDBShardGroupOutput {
	s.MaxACU = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *ModifyDBShardGroupOutput) SetPubliclyAccessible(v bool) *ModifyDBShardGroupOutput {
	s.PubliclyAccessible = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ModifyDBShardGroupOutput) SetStatus(v string) *ModifyDBShardGroupOutput {
	s.Status = &v
	return s
}

type ModifyDBSnapshotAttributeInput struct {
	_ struct{} `type:"structure"`

	// The name of the DB snapshot attribute to modify.
	//
	// To manage authorization for other Amazon Web Services accounts to copy or
	// restore a manual DB snapshot, set this value to restore.
	//
	// To view the list of attributes available to modify, use the DescribeDBSnapshotAttributes
	// API operation.
	//
	// AttributeName is a required field
	AttributeName *string `type:"string" required:"true"`

	// The identifier for the DB snapshot to modify the attributes for.
	//
	// DBSnapshotIdentifier is a required field
	DBSnapshotIdentifier *string `type:"string" required:"true"`

	// A list of DB snapshot attributes to add to the attribute specified by AttributeName.
	//
	// To authorize other Amazon Web Services accounts to copy or restore a manual
	// snapshot, set this list to include one or more Amazon Web Services account
	// IDs, or all to make the manual DB snapshot restorable by any Amazon Web Services
	// account. Do not add the all value for any manual DB snapshots that contain
	// private information that you don't want available to all Amazon Web Services
	// accounts.
	ValuesToAdd []*string `locationNameList:"AttributeValue" type:"list"`

	// A list of DB snapshot attributes to remove from the attribute specified by
	// AttributeName.
	//
	// To remove authorization for other Amazon Web Services accounts to copy or
	// restore a manual snapshot, set this list to include one or more Amazon Web
	// Services account identifiers, or all to remove authorization for any Amazon
	// Web Services account to copy or restore the DB snapshot. If you specify all,
	// an Amazon Web Services account whose account ID is explicitly added to the
	// restore attribute can still copy or restore the manual DB snapshot.
	ValuesToRemove []*string `locationNameList:"AttributeValue" 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 ModifyDBSnapshotAttributeInput) 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 ModifyDBSnapshotAttributeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDBSnapshotAttributeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDBSnapshotAttributeInput"}
	if s.AttributeName == nil {
		invalidParams.Add(request.NewErrParamRequired("AttributeName"))
	}
	if s.DBSnapshotIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBSnapshotIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttributeName sets the AttributeName field's value.
func (s *ModifyDBSnapshotAttributeInput) SetAttributeName(v string) *ModifyDBSnapshotAttributeInput {
	s.AttributeName = &v
	return s
}

// SetDBSnapshotIdentifier sets the DBSnapshotIdentifier field's value.
func (s *ModifyDBSnapshotAttributeInput) SetDBSnapshotIdentifier(v string) *ModifyDBSnapshotAttributeInput {
	s.DBSnapshotIdentifier = &v
	return s
}

// SetValuesToAdd sets the ValuesToAdd field's value.
func (s *ModifyDBSnapshotAttributeInput) SetValuesToAdd(v []*string) *ModifyDBSnapshotAttributeInput {
	s.ValuesToAdd = v
	return s
}

// SetValuesToRemove sets the ValuesToRemove field's value.
func (s *ModifyDBSnapshotAttributeInput) SetValuesToRemove(v []*string) *ModifyDBSnapshotAttributeInput {
	s.ValuesToRemove = v
	return s
}

type ModifyDBSnapshotAttributeOutput struct {
	_ struct{} `type:"structure"`

	// Contains the results of a successful call to the DescribeDBSnapshotAttributes
	// API action.
	//
	// Manual DB snapshot attributes are used to authorize other Amazon Web Services
	// accounts to copy or restore a manual DB snapshot. For more information, see
	// the ModifyDBSnapshotAttribute API action.
	DBSnapshotAttributesResult *DBSnapshotAttributesResult `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 ModifyDBSnapshotAttributeOutput) 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 ModifyDBSnapshotAttributeOutput) GoString() string {
	return s.String()
}

// SetDBSnapshotAttributesResult sets the DBSnapshotAttributesResult field's value.
func (s *ModifyDBSnapshotAttributeOutput) SetDBSnapshotAttributesResult(v *DBSnapshotAttributesResult) *ModifyDBSnapshotAttributeOutput {
	s.DBSnapshotAttributesResult = v
	return s
}

type ModifyDBSnapshotInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the DB snapshot to modify.
	//
	// DBSnapshotIdentifier is a required field
	DBSnapshotIdentifier *string `type:"string" required:"true"`

	// The engine version to upgrade the DB snapshot to.
	//
	// The following are the database engines and engine versions that are available
	// when you upgrade a DB snapshot.
	//
	// MySQL
	//
	// For the list of engine versions that are available for upgrading a DB snapshot,
	// see Upgrading a MySQL DB snapshot engine version (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql-upgrade-snapshot.html)
	// in the Amazon RDS User Guide.
	//
	// Oracle
	//
	//    * 19.0.0.0.ru-2022-01.rur-2022-01.r1 (supported for 12.2.0.1 DB snapshots)
	//
	//    * 19.0.0.0.ru-2022-07.rur-2022-07.r1 (supported for 12.1.0.2 DB snapshots)
	//
	//    * 12.1.0.2.v8 (supported for 12.1.0.1 DB snapshots)
	//
	//    * 11.2.0.4.v12 (supported for 11.2.0.2 DB snapshots)
	//
	//    * 11.2.0.4.v11 (supported for 11.2.0.3 DB snapshots)
	//
	// PostgreSQL
	//
	// For the list of engine versions that are available for upgrading a DB snapshot,
	// see Upgrading a PostgreSQL DB snapshot engine version (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBSnapshot.PostgreSQL.html)
	// in the Amazon RDS User Guide.
	EngineVersion *string `type:"string"`

	// The option group to identify with the upgraded DB snapshot.
	//
	// You can specify this parameter when you upgrade an Oracle DB snapshot. The
	// same option group considerations apply when upgrading a DB snapshot as when
	// upgrading a DB instance. For more information, see Option group considerations
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Oracle.html#USER_UpgradeDBInstance.Oracle.OGPG.OG)
	// in the Amazon RDS User Guide.
	OptionGroupName *string `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 ModifyDBSnapshotInput) 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 ModifyDBSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDBSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDBSnapshotInput"}
	if s.DBSnapshotIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBSnapshotIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBSnapshotIdentifier sets the DBSnapshotIdentifier field's value.
func (s *ModifyDBSnapshotInput) SetDBSnapshotIdentifier(v string) *ModifyDBSnapshotInput {
	s.DBSnapshotIdentifier = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *ModifyDBSnapshotInput) SetEngineVersion(v string) *ModifyDBSnapshotInput {
	s.EngineVersion = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *ModifyDBSnapshotInput) SetOptionGroupName(v string) *ModifyDBSnapshotInput {
	s.OptionGroupName = &v
	return s
}

type ModifyDBSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon RDS DB snapshot.
	//
	// This data type is used as a response element in the DescribeDBSnapshots action.
	DBSnapshot *DBSnapshot `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 ModifyDBSnapshotOutput) 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 ModifyDBSnapshotOutput) GoString() string {
	return s.String()
}

// SetDBSnapshot sets the DBSnapshot field's value.
func (s *ModifyDBSnapshotOutput) SetDBSnapshot(v *DBSnapshot) *ModifyDBSnapshotOutput {
	s.DBSnapshot = v
	return s
}

type ModifyDBSubnetGroupInput struct {
	_ struct{} `type:"structure"`

	// The description for the DB subnet group.
	DBSubnetGroupDescription *string `type:"string"`

	// The name for the DB subnet group. This value is stored as a lowercase string.
	// You can't modify the default subnet group.
	//
	// Constraints: Must match the name of an existing DBSubnetGroup. Must not be
	// default.
	//
	// Example: mydbsubnetgroup
	//
	// DBSubnetGroupName is a required field
	DBSubnetGroupName *string `type:"string" required:"true"`

	// The EC2 subnet IDs for the DB subnet group.
	//
	// SubnetIds is a required field
	SubnetIds []*string `locationNameList:"SubnetIdentifier" type:"list" 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 ModifyDBSubnetGroupInput) 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 ModifyDBSubnetGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyDBSubnetGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyDBSubnetGroupInput"}
	if s.DBSubnetGroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBSubnetGroupName"))
	}
	if s.SubnetIds == nil {
		invalidParams.Add(request.NewErrParamRequired("SubnetIds"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBSubnetGroupDescription sets the DBSubnetGroupDescription field's value.
func (s *ModifyDBSubnetGroupInput) SetDBSubnetGroupDescription(v string) *ModifyDBSubnetGroupInput {
	s.DBSubnetGroupDescription = &v
	return s
}

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *ModifyDBSubnetGroupInput) SetDBSubnetGroupName(v string) *ModifyDBSubnetGroupInput {
	s.DBSubnetGroupName = &v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *ModifyDBSubnetGroupInput) SetSubnetIds(v []*string) *ModifyDBSubnetGroupInput {
	s.SubnetIds = v
	return s
}

type ModifyDBSubnetGroupOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon RDS DB subnet group.
	//
	// This data type is used as a response element in the DescribeDBSubnetGroups
	// action.
	DBSubnetGroup *DBSubnetGroup `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 ModifyDBSubnetGroupOutput) 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 ModifyDBSubnetGroupOutput) GoString() string {
	return s.String()
}

// SetDBSubnetGroup sets the DBSubnetGroup field's value.
func (s *ModifyDBSubnetGroupOutput) SetDBSubnetGroup(v *DBSubnetGroup) *ModifyDBSubnetGroupOutput {
	s.DBSubnetGroup = v
	return s
}

type ModifyEventSubscriptionInput struct {
	_ struct{} `type:"structure"`

	// Specifies whether to activate the subscription.
	Enabled *bool `type:"boolean"`

	// A list of event categories for a source type (SourceType) that you want to
	// subscribe to. You can see a list of the categories for a given source type
	// in Events (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html)
	// in the Amazon RDS User Guide or by using the DescribeEventCategories operation.
	EventCategories []*string `locationNameList:"EventCategory" type:"list"`

	// The Amazon Resource Name (ARN) of the SNS topic created for event notification.
	// The ARN is created by Amazon SNS when you create a topic and subscribe to
	// it.
	SnsTopicArn *string `type:"string"`

	// The type of source that is generating the events. For example, if you want
	// to be notified of events generated by a DB instance, you would set this parameter
	// to db-instance. For RDS Proxy events, specify db-proxy. If this value isn't
	// specified, all events are returned.
	//
	// Valid Values:db-instance | db-cluster | db-parameter-group | db-security-group
	// | db-snapshot | db-cluster-snapshot | db-proxy | zero-etl | custom-engine-version
	// | blue-green-deployment
	SourceType *string `type:"string"`

	// The name of the RDS event notification subscription.
	//
	// SubscriptionName is a required field
	SubscriptionName *string `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 ModifyEventSubscriptionInput) 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 ModifyEventSubscriptionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyEventSubscriptionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyEventSubscriptionInput"}
	if s.SubscriptionName == nil {
		invalidParams.Add(request.NewErrParamRequired("SubscriptionName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEnabled sets the Enabled field's value.
func (s *ModifyEventSubscriptionInput) SetEnabled(v bool) *ModifyEventSubscriptionInput {
	s.Enabled = &v
	return s
}

// SetEventCategories sets the EventCategories field's value.
func (s *ModifyEventSubscriptionInput) SetEventCategories(v []*string) *ModifyEventSubscriptionInput {
	s.EventCategories = v
	return s
}

// SetSnsTopicArn sets the SnsTopicArn field's value.
func (s *ModifyEventSubscriptionInput) SetSnsTopicArn(v string) *ModifyEventSubscriptionInput {
	s.SnsTopicArn = &v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *ModifyEventSubscriptionInput) SetSourceType(v string) *ModifyEventSubscriptionInput {
	s.SourceType = &v
	return s
}

// SetSubscriptionName sets the SubscriptionName field's value.
func (s *ModifyEventSubscriptionInput) SetSubscriptionName(v string) *ModifyEventSubscriptionInput {
	s.SubscriptionName = &v
	return s
}

type ModifyEventSubscriptionOutput struct {
	_ struct{} `type:"structure"`

	// Contains the results of a successful invocation of the DescribeEventSubscriptions
	// action.
	EventSubscription *EventSubscription `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 ModifyEventSubscriptionOutput) 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 ModifyEventSubscriptionOutput) GoString() string {
	return s.String()
}

// SetEventSubscription sets the EventSubscription field's value.
func (s *ModifyEventSubscriptionOutput) SetEventSubscription(v *EventSubscription) *ModifyEventSubscriptionOutput {
	s.EventSubscription = v
	return s
}

type ModifyGlobalClusterInput struct {
	_ struct{} `type:"structure"`

	// Specifies whether to allow major version upgrades.
	//
	// Constraints: Must be enabled if you specify a value for the EngineVersion
	// parameter that's a different major version than the global cluster's current
	// version.
	//
	// If you upgrade the major version of a global database, the cluster and DB
	// instance parameter groups are set to the default parameter groups for the
	// new version. Apply any custom parameter groups after completing the upgrade.
	AllowMajorVersionUpgrade *bool `type:"boolean"`

	// Specifies whether to enable deletion protection for the global database cluster.
	// The global database cluster can't be deleted when deletion protection is
	// enabled.
	DeletionProtection *bool `type:"boolean"`

	// The version number of the database engine to which you want to upgrade.
	//
	// To list all of the available engine versions for aurora-mysql (for MySQL-based
	// Aurora global databases), use the following command:
	//
	// aws rds describe-db-engine-versions --engine aurora-mysql --query '*[]|[?SupportsGlobalDatabases
	// == `true`].[EngineVersion]'
	//
	// To list all of the available engine versions for aurora-postgresql (for PostgreSQL-based
	// Aurora global databases), use the following command:
	//
	// aws rds describe-db-engine-versions --engine aurora-postgresql --query '*[]|[?SupportsGlobalDatabases
	// == `true`].[EngineVersion]'
	EngineVersion *string `type:"string"`

	// The cluster identifier for the global cluster to modify. This parameter isn't
	// case-sensitive.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing global database cluster.
	GlobalClusterIdentifier *string `type:"string"`

	// The new cluster identifier for the global database cluster. This value is
	// stored as a lowercase string.
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 letters, numbers, or hyphens.
	//
	//    * The first character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Example: my-cluster2
	NewGlobalClusterIdentifier *string `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 ModifyGlobalClusterInput) 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 ModifyGlobalClusterInput) GoString() string {
	return s.String()
}

// SetAllowMajorVersionUpgrade sets the AllowMajorVersionUpgrade field's value.
func (s *ModifyGlobalClusterInput) SetAllowMajorVersionUpgrade(v bool) *ModifyGlobalClusterInput {
	s.AllowMajorVersionUpgrade = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *ModifyGlobalClusterInput) SetDeletionProtection(v bool) *ModifyGlobalClusterInput {
	s.DeletionProtection = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *ModifyGlobalClusterInput) SetEngineVersion(v string) *ModifyGlobalClusterInput {
	s.EngineVersion = &v
	return s
}

// SetGlobalClusterIdentifier sets the GlobalClusterIdentifier field's value.
func (s *ModifyGlobalClusterInput) SetGlobalClusterIdentifier(v string) *ModifyGlobalClusterInput {
	s.GlobalClusterIdentifier = &v
	return s
}

// SetNewGlobalClusterIdentifier sets the NewGlobalClusterIdentifier field's value.
func (s *ModifyGlobalClusterInput) SetNewGlobalClusterIdentifier(v string) *ModifyGlobalClusterInput {
	s.NewGlobalClusterIdentifier = &v
	return s
}

type ModifyGlobalClusterOutput struct {
	_ struct{} `type:"structure"`

	// A data type representing an Aurora global database.
	GlobalCluster *GlobalCluster `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 ModifyGlobalClusterOutput) 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 ModifyGlobalClusterOutput) GoString() string {
	return s.String()
}

// SetGlobalCluster sets the GlobalCluster field's value.
func (s *ModifyGlobalClusterOutput) SetGlobalCluster(v *GlobalCluster) *ModifyGlobalClusterOutput {
	s.GlobalCluster = v
	return s
}

type ModifyIntegrationInput struct {
	_ struct{} `type:"structure"`

	// A new data filter for the integration. For more information, see Data filtering
	// for Aurora zero-ETL integrations with Amazon Redshift (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Zero_ETL_Filtering.html).
	DataFilter *string `min:"1" type:"string"`

	// A new description for the integration.
	Description *string `type:"string"`

	// The unique identifier of the integration to modify.
	//
	// IntegrationIdentifier is a required field
	IntegrationIdentifier *string `min:"1" type:"string" required:"true"`

	// A new name for the integration.
	IntegrationName *string `min:"1" 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 ModifyIntegrationInput) 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 ModifyIntegrationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyIntegrationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyIntegrationInput"}
	if s.DataFilter != nil && len(*s.DataFilter) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataFilter", 1))
	}
	if s.IntegrationIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("IntegrationIdentifier"))
	}
	if s.IntegrationIdentifier != nil && len(*s.IntegrationIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IntegrationIdentifier", 1))
	}
	if s.IntegrationName != nil && len(*s.IntegrationName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IntegrationName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataFilter sets the DataFilter field's value.
func (s *ModifyIntegrationInput) SetDataFilter(v string) *ModifyIntegrationInput {
	s.DataFilter = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *ModifyIntegrationInput) SetDescription(v string) *ModifyIntegrationInput {
	s.Description = &v
	return s
}

// SetIntegrationIdentifier sets the IntegrationIdentifier field's value.
func (s *ModifyIntegrationInput) SetIntegrationIdentifier(v string) *ModifyIntegrationInput {
	s.IntegrationIdentifier = &v
	return s
}

// SetIntegrationName sets the IntegrationName field's value.
func (s *ModifyIntegrationInput) SetIntegrationName(v string) *ModifyIntegrationInput {
	s.IntegrationName = &v
	return s
}

// A zero-ETL integration with Amazon Redshift.
type ModifyIntegrationOutput struct {
	_ struct{} `type:"structure"`

	// The encryption context for the integration. For more information, see Encryption
	// context (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)
	// in the Amazon Web Services Key Management Service Developer Guide.
	AdditionalEncryptionContext map[string]*string `type:"map"`

	// The time when the integration was created, in Universal Coordinated Time
	// (UTC).
	CreateTime *time.Time `type:"timestamp"`

	// Data filters for the integration. These filters determine which tables from
	// the source database are sent to the target Amazon Redshift data warehouse.
	DataFilter *string `min:"1" type:"string"`

	// A description of the integration.
	Description *string `type:"string"`

	// Any errors associated with the integration.
	Errors []*IntegrationError `locationNameList:"IntegrationError" type:"list"`

	// The ARN of the integration.
	IntegrationArn *string `min:"1" type:"string"`

	// The name of the integration.
	IntegrationName *string `min:"1" type:"string"`

	// The Amazon Web Services Key Management System (Amazon Web Services KMS) key
	// identifier for the key used to to encrypt the integration.
	KMSKeyId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the database used as the source for replication.
	SourceArn *string `min:"1" type:"string"`

	// The current status of the integration.
	Status *string `type:"string" enum:"IntegrationStatus"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// The ARN of the Redshift data warehouse used as the target for replication.
	TargetArn *string `min:"20" 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 ModifyIntegrationOutput) 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 ModifyIntegrationOutput) GoString() string {
	return s.String()
}

// SetAdditionalEncryptionContext sets the AdditionalEncryptionContext field's value.
func (s *ModifyIntegrationOutput) SetAdditionalEncryptionContext(v map[string]*string) *ModifyIntegrationOutput {
	s.AdditionalEncryptionContext = v
	return s
}

// SetCreateTime sets the CreateTime field's value.
func (s *ModifyIntegrationOutput) SetCreateTime(v time.Time) *ModifyIntegrationOutput {
	s.CreateTime = &v
	return s
}

// SetDataFilter sets the DataFilter field's value.
func (s *ModifyIntegrationOutput) SetDataFilter(v string) *ModifyIntegrationOutput {
	s.DataFilter = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *ModifyIntegrationOutput) SetDescription(v string) *ModifyIntegrationOutput {
	s.Description = &v
	return s
}

// SetErrors sets the Errors field's value.
func (s *ModifyIntegrationOutput) SetErrors(v []*IntegrationError) *ModifyIntegrationOutput {
	s.Errors = v
	return s
}

// SetIntegrationArn sets the IntegrationArn field's value.
func (s *ModifyIntegrationOutput) SetIntegrationArn(v string) *ModifyIntegrationOutput {
	s.IntegrationArn = &v
	return s
}

// SetIntegrationName sets the IntegrationName field's value.
func (s *ModifyIntegrationOutput) SetIntegrationName(v string) *ModifyIntegrationOutput {
	s.IntegrationName = &v
	return s
}

// SetKMSKeyId sets the KMSKeyId field's value.
func (s *ModifyIntegrationOutput) SetKMSKeyId(v string) *ModifyIntegrationOutput {
	s.KMSKeyId = &v
	return s
}

// SetSourceArn sets the SourceArn field's value.
func (s *ModifyIntegrationOutput) SetSourceArn(v string) *ModifyIntegrationOutput {
	s.SourceArn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ModifyIntegrationOutput) SetStatus(v string) *ModifyIntegrationOutput {
	s.Status = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ModifyIntegrationOutput) SetTags(v []*Tag) *ModifyIntegrationOutput {
	s.Tags = v
	return s
}

// SetTargetArn sets the TargetArn field's value.
func (s *ModifyIntegrationOutput) SetTargetArn(v string) *ModifyIntegrationOutput {
	s.TargetArn = &v
	return s
}

type ModifyOptionGroupInput struct {
	_ struct{} `type:"structure"`

	// Specifies whether to apply the change immediately or during the next maintenance
	// window for each instance associated with the option group.
	ApplyImmediately *bool `type:"boolean"`

	// The name of the option group to be modified.
	//
	// Permanent options, such as the TDE option for Oracle Advanced Security TDE,
	// can't be removed from an option group, and that option group can't be removed
	// from a DB instance once it is associated with a DB instance
	//
	// OptionGroupName is a required field
	OptionGroupName *string `type:"string" required:"true"`

	// Options in this list are added to the option group or, if already present,
	// the specified configuration is used to update the existing configuration.
	OptionsToInclude []*OptionConfiguration `locationNameList:"OptionConfiguration" type:"list"`

	// Options in this list are removed from the option group.
	OptionsToRemove []*string `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 ModifyOptionGroupInput) 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 ModifyOptionGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyOptionGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyOptionGroupInput"}
	if s.OptionGroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("OptionGroupName"))
	}
	if s.OptionsToInclude != nil {
		for i, v := range s.OptionsToInclude {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OptionsToInclude", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplyImmediately sets the ApplyImmediately field's value.
func (s *ModifyOptionGroupInput) SetApplyImmediately(v bool) *ModifyOptionGroupInput {
	s.ApplyImmediately = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *ModifyOptionGroupInput) SetOptionGroupName(v string) *ModifyOptionGroupInput {
	s.OptionGroupName = &v
	return s
}

// SetOptionsToInclude sets the OptionsToInclude field's value.
func (s *ModifyOptionGroupInput) SetOptionsToInclude(v []*OptionConfiguration) *ModifyOptionGroupInput {
	s.OptionsToInclude = v
	return s
}

// SetOptionsToRemove sets the OptionsToRemove field's value.
func (s *ModifyOptionGroupInput) SetOptionsToRemove(v []*string) *ModifyOptionGroupInput {
	s.OptionsToRemove = v
	return s
}

type ModifyOptionGroupOutput struct {
	_ struct{} `type:"structure"`

	OptionGroup *OptionGroup `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 ModifyOptionGroupOutput) 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 ModifyOptionGroupOutput) GoString() string {
	return s.String()
}

// SetOptionGroup sets the OptionGroup field's value.
func (s *ModifyOptionGroupOutput) SetOptionGroup(v *OptionGroup) *ModifyOptionGroupOutput {
	s.OptionGroup = v
	return s
}

type ModifyTenantDatabaseInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the DB instance that contains the tenant database that
	// you are modifying. This parameter isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DB instance.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// The new password for the master user of the specified tenant database in
	// your DB instance.
	//
	// Amazon RDS operations never return the password, so this action provides
	// a way to regain access to a tenant database user if the password is lost.
	// This includes restoring privileges that might have been accidentally revoked.
	//
	// Constraints:
	//
	//    * Can include any printable ASCII character except /, " (double quote),
	//    @, & (ampersand), and ' (single quote).
	//
	// Length constraints:
	//
	//    * Must contain between 8 and 30 characters.
	//
	// MasterUserPassword is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ModifyTenantDatabaseInput's
	// String and GoString methods.
	MasterUserPassword *string `type:"string" sensitive:"true"`

	// The new name of the tenant database when renaming a tenant database. This
	// parameter isn’t case-sensitive.
	//
	// Constraints:
	//
	//    * Can't be the string null or any other reserved word.
	//
	//    * Can't be longer than 8 characters.
	NewTenantDBName *string `type:"string"`

	// The user-supplied name of the tenant database that you want to modify. This
	// parameter isn’t case-sensitive.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing tenant database.
	//
	// TenantDBName is a required field
	TenantDBName *string `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 ModifyTenantDatabaseInput) 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 ModifyTenantDatabaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ModifyTenantDatabaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ModifyTenantDatabaseInput"}
	if s.DBInstanceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBInstanceIdentifier"))
	}
	if s.TenantDBName == nil {
		invalidParams.Add(request.NewErrParamRequired("TenantDBName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *ModifyTenantDatabaseInput) SetDBInstanceIdentifier(v string) *ModifyTenantDatabaseInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *ModifyTenantDatabaseInput) SetMasterUserPassword(v string) *ModifyTenantDatabaseInput {
	s.MasterUserPassword = &v
	return s
}

// SetNewTenantDBName sets the NewTenantDBName field's value.
func (s *ModifyTenantDatabaseInput) SetNewTenantDBName(v string) *ModifyTenantDatabaseInput {
	s.NewTenantDBName = &v
	return s
}

// SetTenantDBName sets the TenantDBName field's value.
func (s *ModifyTenantDatabaseInput) SetTenantDBName(v string) *ModifyTenantDatabaseInput {
	s.TenantDBName = &v
	return s
}

type ModifyTenantDatabaseOutput struct {
	_ struct{} `type:"structure"`

	// A tenant database in the DB instance. This data type is an element in the
	// response to the DescribeTenantDatabases action.
	TenantDatabase *TenantDatabase `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 ModifyTenantDatabaseOutput) 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 ModifyTenantDatabaseOutput) GoString() string {
	return s.String()
}

// SetTenantDatabase sets the TenantDatabase field's value.
func (s *ModifyTenantDatabaseOutput) SetTenantDatabase(v *TenantDatabase) *ModifyTenantDatabaseOutput {
	s.TenantDatabase = v
	return s
}

// The details of an option.
type Option struct {
	_ struct{} `type:"structure"`

	// If the option requires access to a port, then this DB security group allows
	// access to the port.
	DBSecurityGroupMemberships []*DBSecurityGroupMembership `locationNameList:"DBSecurityGroup" type:"list"`

	// The description of the option.
	OptionDescription *string `type:"string"`

	// The name of the option.
	OptionName *string `type:"string"`

	// The option settings for this option.
	OptionSettings []*OptionSetting `locationNameList:"OptionSetting" type:"list"`

	// The version of the option.
	OptionVersion *string `type:"string"`

	// Indicates whether this option is permanent.
	Permanent *bool `type:"boolean"`

	// Indicates whether this option is persistent.
	Persistent *bool `type:"boolean"`

	// If required, the port configured for this option to use.
	Port *int64 `type:"integer"`

	// If the option requires access to a port, then this VPC security group allows
	// access to the port.
	VpcSecurityGroupMemberships []*VpcSecurityGroupMembership `locationNameList:"VpcSecurityGroupMembership" 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 Option) 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 Option) GoString() string {
	return s.String()
}

// SetDBSecurityGroupMemberships sets the DBSecurityGroupMemberships field's value.
func (s *Option) SetDBSecurityGroupMemberships(v []*DBSecurityGroupMembership) *Option {
	s.DBSecurityGroupMemberships = v
	return s
}

// SetOptionDescription sets the OptionDescription field's value.
func (s *Option) SetOptionDescription(v string) *Option {
	s.OptionDescription = &v
	return s
}

// SetOptionName sets the OptionName field's value.
func (s *Option) SetOptionName(v string) *Option {
	s.OptionName = &v
	return s
}

// SetOptionSettings sets the OptionSettings field's value.
func (s *Option) SetOptionSettings(v []*OptionSetting) *Option {
	s.OptionSettings = v
	return s
}

// SetOptionVersion sets the OptionVersion field's value.
func (s *Option) SetOptionVersion(v string) *Option {
	s.OptionVersion = &v
	return s
}

// SetPermanent sets the Permanent field's value.
func (s *Option) SetPermanent(v bool) *Option {
	s.Permanent = &v
	return s
}

// SetPersistent sets the Persistent field's value.
func (s *Option) SetPersistent(v bool) *Option {
	s.Persistent = &v
	return s
}

// SetPort sets the Port field's value.
func (s *Option) SetPort(v int64) *Option {
	s.Port = &v
	return s
}

// SetVpcSecurityGroupMemberships sets the VpcSecurityGroupMemberships field's value.
func (s *Option) SetVpcSecurityGroupMemberships(v []*VpcSecurityGroupMembership) *Option {
	s.VpcSecurityGroupMemberships = v
	return s
}

// A list of all available options
type OptionConfiguration struct {
	_ struct{} `type:"structure"`

	// A list of DBSecurityGroupMembership name strings used for this option.
	DBSecurityGroupMemberships []*string `locationNameList:"DBSecurityGroupName" type:"list"`

	// The configuration of options to include in a group.
	//
	// OptionName is a required field
	OptionName *string `type:"string" required:"true"`

	// The option settings to include in an option group.
	OptionSettings []*OptionSetting `locationNameList:"OptionSetting" type:"list"`

	// The version for the option.
	OptionVersion *string `type:"string"`

	// The optional port for the option.
	Port *int64 `type:"integer"`

	// A list of VpcSecurityGroupMembership name strings used for this option.
	VpcSecurityGroupMemberships []*string `locationNameList:"VpcSecurityGroupId" 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 OptionConfiguration) 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 OptionConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *OptionConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "OptionConfiguration"}
	if s.OptionName == nil {
		invalidParams.Add(request.NewErrParamRequired("OptionName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBSecurityGroupMemberships sets the DBSecurityGroupMemberships field's value.
func (s *OptionConfiguration) SetDBSecurityGroupMemberships(v []*string) *OptionConfiguration {
	s.DBSecurityGroupMemberships = v
	return s
}

// SetOptionName sets the OptionName field's value.
func (s *OptionConfiguration) SetOptionName(v string) *OptionConfiguration {
	s.OptionName = &v
	return s
}

// SetOptionSettings sets the OptionSettings field's value.
func (s *OptionConfiguration) SetOptionSettings(v []*OptionSetting) *OptionConfiguration {
	s.OptionSettings = v
	return s
}

// SetOptionVersion sets the OptionVersion field's value.
func (s *OptionConfiguration) SetOptionVersion(v string) *OptionConfiguration {
	s.OptionVersion = &v
	return s
}

// SetPort sets the Port field's value.
func (s *OptionConfiguration) SetPort(v int64) *OptionConfiguration {
	s.Port = &v
	return s
}

// SetVpcSecurityGroupMemberships sets the VpcSecurityGroupMemberships field's value.
func (s *OptionConfiguration) SetVpcSecurityGroupMemberships(v []*string) *OptionConfiguration {
	s.VpcSecurityGroupMemberships = v
	return s
}

type OptionGroup struct {
	_ struct{} `type:"structure"`

	// Indicates whether this option group can be applied to both VPC and non-VPC
	// instances. The value true indicates the option group can be applied to both
	// VPC and non-VPC instances.
	AllowsVpcAndNonVpcInstanceMemberships *bool `type:"boolean"`

	// Indicates when the option group was copied.
	CopyTimestamp *time.Time `type:"timestamp"`

	// Indicates the name of the engine that this option group can be applied to.
	EngineName *string `type:"string"`

	// Indicates the major engine version associated with this option group.
	MajorEngineVersion *string `type:"string"`

	// Specifies the Amazon Resource Name (ARN) for the option group.
	OptionGroupArn *string `type:"string"`

	// Provides a description of the option group.
	OptionGroupDescription *string `type:"string"`

	// Specifies the name of the option group.
	OptionGroupName *string `type:"string"`

	// Indicates what options are available in the option group.
	Options []*Option `locationNameList:"Option" type:"list"`

	// Specifies the Amazon Web Services account ID for the option group from which
	// this option group is copied.
	SourceAccountId *string `type:"string"`

	// Specifies the name of the option group from which this option group is copied.
	SourceOptionGroup *string `type:"string"`

	// If AllowsVpcAndNonVpcInstanceMemberships is false, this field is blank. If
	// AllowsVpcAndNonVpcInstanceMemberships is true and this field is blank, then
	// this option group can be applied to both VPC and non-VPC instances. If this
	// field contains a value, then this option group can only be applied to instances
	// that are in the VPC indicated by this field.
	VpcId *string `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 OptionGroup) 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 OptionGroup) GoString() string {
	return s.String()
}

// SetAllowsVpcAndNonVpcInstanceMemberships sets the AllowsVpcAndNonVpcInstanceMemberships field's value.
func (s *OptionGroup) SetAllowsVpcAndNonVpcInstanceMemberships(v bool) *OptionGroup {
	s.AllowsVpcAndNonVpcInstanceMemberships = &v
	return s
}

// SetCopyTimestamp sets the CopyTimestamp field's value.
func (s *OptionGroup) SetCopyTimestamp(v time.Time) *OptionGroup {
	s.CopyTimestamp = &v
	return s
}

// SetEngineName sets the EngineName field's value.
func (s *OptionGroup) SetEngineName(v string) *OptionGroup {
	s.EngineName = &v
	return s
}

// SetMajorEngineVersion sets the MajorEngineVersion field's value.
func (s *OptionGroup) SetMajorEngineVersion(v string) *OptionGroup {
	s.MajorEngineVersion = &v
	return s
}

// SetOptionGroupArn sets the OptionGroupArn field's value.
func (s *OptionGroup) SetOptionGroupArn(v string) *OptionGroup {
	s.OptionGroupArn = &v
	return s
}

// SetOptionGroupDescription sets the OptionGroupDescription field's value.
func (s *OptionGroup) SetOptionGroupDescription(v string) *OptionGroup {
	s.OptionGroupDescription = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *OptionGroup) SetOptionGroupName(v string) *OptionGroup {
	s.OptionGroupName = &v
	return s
}

// SetOptions sets the Options field's value.
func (s *OptionGroup) SetOptions(v []*Option) *OptionGroup {
	s.Options = v
	return s
}

// SetSourceAccountId sets the SourceAccountId field's value.
func (s *OptionGroup) SetSourceAccountId(v string) *OptionGroup {
	s.SourceAccountId = &v
	return s
}

// SetSourceOptionGroup sets the SourceOptionGroup field's value.
func (s *OptionGroup) SetSourceOptionGroup(v string) *OptionGroup {
	s.SourceOptionGroup = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *OptionGroup) SetVpcId(v string) *OptionGroup {
	s.VpcId = &v
	return s
}

// Provides information on the option groups the DB instance is a member of.
type OptionGroupMembership struct {
	_ struct{} `type:"structure"`

	// The name of the option group that the instance belongs to.
	OptionGroupName *string `type:"string"`

	// The status of the DB instance's option group membership. Valid values are:
	// in-sync, pending-apply, pending-removal, pending-maintenance-apply, pending-maintenance-removal,
	// applying, removing, and failed.
	Status *string `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 OptionGroupMembership) 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 OptionGroupMembership) GoString() string {
	return s.String()
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *OptionGroupMembership) SetOptionGroupName(v string) *OptionGroupMembership {
	s.OptionGroupName = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *OptionGroupMembership) SetStatus(v string) *OptionGroupMembership {
	s.Status = &v
	return s
}

// Available option.
type OptionGroupOption struct {
	_ struct{} `type:"structure"`

	// Indicates whether the option can be copied across Amazon Web Services accounts.
	CopyableCrossAccount *bool `type:"boolean"`

	// If the option requires a port, specifies the default port for the option.
	DefaultPort *int64 `type:"integer"`

	// The description of the option.
	Description *string `type:"string"`

	// The name of the engine that this option can be applied to.
	EngineName *string `type:"string"`

	// Indicates the major engine version that the option is available for.
	MajorEngineVersion *string `type:"string"`

	// The minimum required engine version for the option to be applied.
	MinimumRequiredMinorEngineVersion *string `type:"string"`

	// The name of the option.
	Name *string `type:"string"`

	// The option settings that are available (and the default value) for each option
	// in an option group.
	OptionGroupOptionSettings []*OptionGroupOptionSetting `locationNameList:"OptionGroupOptionSetting" type:"list"`

	// The versions that are available for the option.
	OptionGroupOptionVersions []*OptionVersion `locationNameList:"OptionVersion" type:"list"`

	// The options that conflict with this option.
	OptionsConflictsWith []*string `locationNameList:"OptionConflictName" type:"list"`

	// The options that are prerequisites for this option.
	OptionsDependedOn []*string `locationNameList:"OptionName" type:"list"`

	// Permanent options can never be removed from an option group. An option group
	// containing a permanent option can't be removed from a DB instance.
	Permanent *bool `type:"boolean"`

	// Persistent options can't be removed from an option group while DB instances
	// are associated with the option group. If you disassociate all DB instances
	// from the option group, your can remove the persistent option from the option
	// group.
	Persistent *bool `type:"boolean"`

	// Indicates whether the option requires a port.
	PortRequired *bool `type:"boolean"`

	// If true, you must enable the Auto Minor Version Upgrade setting for your
	// DB instance before you can use this option. You can enable Auto Minor Version
	// Upgrade when you first create your DB instance, or by modifying your DB instance
	// later.
	RequiresAutoMinorEngineVersionUpgrade *bool `type:"boolean"`

	// If true, you can change the option to an earlier version of the option. This
	// only applies to options that have different versions available.
	SupportsOptionVersionDowngrade *bool `type:"boolean"`

	// If true, you can only use this option with a DB instance that is in a VPC.
	VpcOnly *bool `type:"boolean"`
}

// 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 OptionGroupOption) 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 OptionGroupOption) GoString() string {
	return s.String()
}

// SetCopyableCrossAccount sets the CopyableCrossAccount field's value.
func (s *OptionGroupOption) SetCopyableCrossAccount(v bool) *OptionGroupOption {
	s.CopyableCrossAccount = &v
	return s
}

// SetDefaultPort sets the DefaultPort field's value.
func (s *OptionGroupOption) SetDefaultPort(v int64) *OptionGroupOption {
	s.DefaultPort = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *OptionGroupOption) SetDescription(v string) *OptionGroupOption {
	s.Description = &v
	return s
}

// SetEngineName sets the EngineName field's value.
func (s *OptionGroupOption) SetEngineName(v string) *OptionGroupOption {
	s.EngineName = &v
	return s
}

// SetMajorEngineVersion sets the MajorEngineVersion field's value.
func (s *OptionGroupOption) SetMajorEngineVersion(v string) *OptionGroupOption {
	s.MajorEngineVersion = &v
	return s
}

// SetMinimumRequiredMinorEngineVersion sets the MinimumRequiredMinorEngineVersion field's value.
func (s *OptionGroupOption) SetMinimumRequiredMinorEngineVersion(v string) *OptionGroupOption {
	s.MinimumRequiredMinorEngineVersion = &v
	return s
}

// SetName sets the Name field's value.
func (s *OptionGroupOption) SetName(v string) *OptionGroupOption {
	s.Name = &v
	return s
}

// SetOptionGroupOptionSettings sets the OptionGroupOptionSettings field's value.
func (s *OptionGroupOption) SetOptionGroupOptionSettings(v []*OptionGroupOptionSetting) *OptionGroupOption {
	s.OptionGroupOptionSettings = v
	return s
}

// SetOptionGroupOptionVersions sets the OptionGroupOptionVersions field's value.
func (s *OptionGroupOption) SetOptionGroupOptionVersions(v []*OptionVersion) *OptionGroupOption {
	s.OptionGroupOptionVersions = v
	return s
}

// SetOptionsConflictsWith sets the OptionsConflictsWith field's value.
func (s *OptionGroupOption) SetOptionsConflictsWith(v []*string) *OptionGroupOption {
	s.OptionsConflictsWith = v
	return s
}

// SetOptionsDependedOn sets the OptionsDependedOn field's value.
func (s *OptionGroupOption) SetOptionsDependedOn(v []*string) *OptionGroupOption {
	s.OptionsDependedOn = v
	return s
}

// SetPermanent sets the Permanent field's value.
func (s *OptionGroupOption) SetPermanent(v bool) *OptionGroupOption {
	s.Permanent = &v
	return s
}

// SetPersistent sets the Persistent field's value.
func (s *OptionGroupOption) SetPersistent(v bool) *OptionGroupOption {
	s.Persistent = &v
	return s
}

// SetPortRequired sets the PortRequired field's value.
func (s *OptionGroupOption) SetPortRequired(v bool) *OptionGroupOption {
	s.PortRequired = &v
	return s
}

// SetRequiresAutoMinorEngineVersionUpgrade sets the RequiresAutoMinorEngineVersionUpgrade field's value.
func (s *OptionGroupOption) SetRequiresAutoMinorEngineVersionUpgrade(v bool) *OptionGroupOption {
	s.RequiresAutoMinorEngineVersionUpgrade = &v
	return s
}

// SetSupportsOptionVersionDowngrade sets the SupportsOptionVersionDowngrade field's value.
func (s *OptionGroupOption) SetSupportsOptionVersionDowngrade(v bool) *OptionGroupOption {
	s.SupportsOptionVersionDowngrade = &v
	return s
}

// SetVpcOnly sets the VpcOnly field's value.
func (s *OptionGroupOption) SetVpcOnly(v bool) *OptionGroupOption {
	s.VpcOnly = &v
	return s
}

// Option group option settings are used to display settings available for each
// option with their default values and other information. These values are
// used with the DescribeOptionGroupOptions action.
type OptionGroupOptionSetting struct {
	_ struct{} `type:"structure"`

	// Indicates the acceptable values for the option group option.
	AllowedValues *string `type:"string"`

	// The DB engine specific parameter type for the option group option.
	ApplyType *string `type:"string"`

	// The default value for the option group option.
	DefaultValue *string `type:"string"`

	// Indicates whether this option group option can be changed from the default
	// value.
	IsModifiable *bool `type:"boolean"`

	// Indicates whether a value must be specified for this option setting of the
	// option group option.
	IsRequired *bool `type:"boolean"`

	// The minimum DB engine version required for the corresponding allowed value
	// for this option setting.
	MinimumEngineVersionPerAllowedValue []*MinimumEngineVersionPerAllowedValue `locationNameList:"MinimumEngineVersionPerAllowedValue" type:"list"`

	// The description of the option group option.
	SettingDescription *string `type:"string"`

	// The name of the option group option.
	SettingName *string `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 OptionGroupOptionSetting) 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 OptionGroupOptionSetting) GoString() string {
	return s.String()
}

// SetAllowedValues sets the AllowedValues field's value.
func (s *OptionGroupOptionSetting) SetAllowedValues(v string) *OptionGroupOptionSetting {
	s.AllowedValues = &v
	return s
}

// SetApplyType sets the ApplyType field's value.
func (s *OptionGroupOptionSetting) SetApplyType(v string) *OptionGroupOptionSetting {
	s.ApplyType = &v
	return s
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *OptionGroupOptionSetting) SetDefaultValue(v string) *OptionGroupOptionSetting {
	s.DefaultValue = &v
	return s
}

// SetIsModifiable sets the IsModifiable field's value.
func (s *OptionGroupOptionSetting) SetIsModifiable(v bool) *OptionGroupOptionSetting {
	s.IsModifiable = &v
	return s
}

// SetIsRequired sets the IsRequired field's value.
func (s *OptionGroupOptionSetting) SetIsRequired(v bool) *OptionGroupOptionSetting {
	s.IsRequired = &v
	return s
}

// SetMinimumEngineVersionPerAllowedValue sets the MinimumEngineVersionPerAllowedValue field's value.
func (s *OptionGroupOptionSetting) SetMinimumEngineVersionPerAllowedValue(v []*MinimumEngineVersionPerAllowedValue) *OptionGroupOptionSetting {
	s.MinimumEngineVersionPerAllowedValue = v
	return s
}

// SetSettingDescription sets the SettingDescription field's value.
func (s *OptionGroupOptionSetting) SetSettingDescription(v string) *OptionGroupOptionSetting {
	s.SettingDescription = &v
	return s
}

// SetSettingName sets the SettingName field's value.
func (s *OptionGroupOptionSetting) SetSettingName(v string) *OptionGroupOptionSetting {
	s.SettingName = &v
	return s
}

// Option settings are the actual settings being applied or configured for that
// option. It is used when you modify an option group or describe option groups.
// For example, the NATIVE_NETWORK_ENCRYPTION option has a setting called SQLNET.ENCRYPTION_SERVER
// that can have several different values.
type OptionSetting struct {
	_ struct{} `type:"structure"`

	// The allowed values of the option setting.
	AllowedValues *string `type:"string"`

	// The DB engine specific parameter type.
	ApplyType *string `type:"string"`

	// The data type of the option setting.
	DataType *string `type:"string"`

	// The default value of the option setting.
	DefaultValue *string `type:"string"`

	// The description of the option setting.
	Description *string `type:"string"`

	// Indicates whether the option setting is part of a collection.
	IsCollection *bool `type:"boolean"`

	// Indicates whether the option setting can be modified from the default.
	IsModifiable *bool `type:"boolean"`

	// The name of the option that has settings that you can set.
	Name *string `type:"string"`

	// The current value of the option setting.
	Value *string `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 OptionSetting) 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 OptionSetting) GoString() string {
	return s.String()
}

// SetAllowedValues sets the AllowedValues field's value.
func (s *OptionSetting) SetAllowedValues(v string) *OptionSetting {
	s.AllowedValues = &v
	return s
}

// SetApplyType sets the ApplyType field's value.
func (s *OptionSetting) SetApplyType(v string) *OptionSetting {
	s.ApplyType = &v
	return s
}

// SetDataType sets the DataType field's value.
func (s *OptionSetting) SetDataType(v string) *OptionSetting {
	s.DataType = &v
	return s
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *OptionSetting) SetDefaultValue(v string) *OptionSetting {
	s.DefaultValue = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *OptionSetting) SetDescription(v string) *OptionSetting {
	s.Description = &v
	return s
}

// SetIsCollection sets the IsCollection field's value.
func (s *OptionSetting) SetIsCollection(v bool) *OptionSetting {
	s.IsCollection = &v
	return s
}

// SetIsModifiable sets the IsModifiable field's value.
func (s *OptionSetting) SetIsModifiable(v bool) *OptionSetting {
	s.IsModifiable = &v
	return s
}

// SetName sets the Name field's value.
func (s *OptionSetting) SetName(v string) *OptionSetting {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *OptionSetting) SetValue(v string) *OptionSetting {
	s.Value = &v
	return s
}

// The version for an option. Option group option versions are returned by the
// DescribeOptionGroupOptions action.
type OptionVersion struct {
	_ struct{} `type:"structure"`

	// Indicates whether the version is the default version of the option.
	IsDefault *bool `type:"boolean"`

	// The version of the option.
	Version *string `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 OptionVersion) 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 OptionVersion) GoString() string {
	return s.String()
}

// SetIsDefault sets the IsDefault field's value.
func (s *OptionVersion) SetIsDefault(v bool) *OptionVersion {
	s.IsDefault = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *OptionVersion) SetVersion(v string) *OptionVersion {
	s.Version = &v
	return s
}

// Contains a list of available options for a DB instance.
//
// This data type is used as a response element in the DescribeOrderableDBInstanceOptions
// action.
type OrderableDBInstanceOption struct {
	_ struct{} `type:"structure"`

	// The Availability Zone group for a DB instance.
	AvailabilityZoneGroup *string `type:"string"`

	// A list of Availability Zones for a DB instance.
	AvailabilityZones []*AvailabilityZone `locationNameList:"AvailabilityZone" type:"list"`

	// A list of the available processor features for the DB instance class of a
	// DB instance.
	AvailableProcessorFeatures []*AvailableProcessorFeature `locationNameList:"AvailableProcessorFeature" type:"list"`

	// The DB instance class for a DB instance.
	DBInstanceClass *string `type:"string"`

	// The engine type of a DB instance.
	Engine *string `type:"string"`

	// The engine version of a DB instance.
	EngineVersion *string `type:"string"`

	// The license model for a DB instance.
	LicenseModel *string `type:"string"`

	// Maximum total provisioned IOPS for a DB instance.
	MaxIopsPerDbInstance *int64 `type:"integer"`

	// Maximum provisioned IOPS per GiB for a DB instance.
	MaxIopsPerGib *float64 `type:"double"`

	// Maximum storage size for a DB instance.
	MaxStorageSize *int64 `type:"integer"`

	// Maximum storage throughput for a DB instance.
	MaxStorageThroughputPerDbInstance *int64 `type:"integer"`

	// Maximum storage throughput to provisioned IOPS ratio for a DB instance.
	MaxStorageThroughputPerIops *float64 `type:"double"`

	// Minimum total provisioned IOPS for a DB instance.
	MinIopsPerDbInstance *int64 `type:"integer"`

	// Minimum provisioned IOPS per GiB for a DB instance.
	MinIopsPerGib *float64 `type:"double"`

	// Minimum storage size for a DB instance.
	MinStorageSize *int64 `type:"integer"`

	// Minimum storage throughput for a DB instance.
	MinStorageThroughputPerDbInstance *int64 `type:"integer"`

	// Minimum storage throughput to provisioned IOPS ratio for a DB instance.
	MinStorageThroughputPerIops *float64 `type:"double"`

	// Indicates whether a DB instance is Multi-AZ capable.
	MultiAZCapable *bool `type:"boolean"`

	// Indicates whether a DB instance supports RDS on Outposts.
	//
	// For more information about RDS on Outposts, see Amazon RDS on Amazon Web
	// Services Outposts (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html)
	// in the Amazon RDS User Guide.
	OutpostCapable *bool `type:"boolean"`

	// Indicates whether a DB instance can have a read replica.
	ReadReplicaCapable *bool `type:"boolean"`

	// The storage type for a DB instance.
	StorageType *string `type:"string"`

	// The list of supported modes for Database Activity Streams. Aurora PostgreSQL
	// returns the value [sync, async]. Aurora MySQL and RDS for Oracle return [async]
	// only. If Database Activity Streams isn't supported, the return value is an
	// empty list.
	SupportedActivityStreamModes []*string `type:"list"`

	// A list of the supported DB engine modes.
	SupportedEngineModes []*string `type:"list"`

	// The network types supported by the DB instance (IPV4 or DUAL).
	//
	// A DB instance can support only the IPv4 protocol or the IPv4 and the IPv6
	// protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon RDS User Guide.
	SupportedNetworkTypes []*string `type:"list"`

	// Indicates whether DB instances can be configured as a Multi-AZ DB cluster.
	//
	// For more information on Multi-AZ DB clusters, see Multi-AZ deployments with
	// two readable standby DB instances (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
	// in the Amazon RDS User Guide.
	SupportsClusters *bool `type:"boolean"`

	// Indicates whether a DB instance supports using a dedicated log volume (DLV).
	SupportsDedicatedLogVolume *bool `type:"boolean"`

	// Indicates whether a DB instance supports Enhanced Monitoring at intervals
	// from 1 to 60 seconds.
	SupportsEnhancedMonitoring *bool `type:"boolean"`

	// Indicates whether you can use Aurora global databases with a specific combination
	// of other DB engine attributes.
	SupportsGlobalDatabases *bool `type:"boolean"`

	// Indicates whether a DB instance supports IAM database authentication.
	SupportsIAMDatabaseAuthentication *bool `type:"boolean"`

	// Indicates whether a DB instance supports provisioned IOPS.
	SupportsIops *bool `type:"boolean"`

	// Indicates whether a DB instance supports Kerberos Authentication.
	SupportsKerberosAuthentication *bool `type:"boolean"`

	// Indicates whether a DB instance supports Performance Insights.
	SupportsPerformanceInsights *bool `type:"boolean"`

	// Indicates whether Amazon RDS can automatically scale storage for DB instances
	// that use the specified DB instance class.
	SupportsStorageAutoscaling *bool `type:"boolean"`

	// Indicates whether a DB instance supports encrypted storage.
	SupportsStorageEncryption *bool `type:"boolean"`

	// Indicates whether a DB instance supports storage throughput.
	SupportsStorageThroughput *bool `type:"boolean"`

	// Indicates whether a DB instance is in a VPC.
	Vpc *bool `type:"boolean"`
}

// 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 OrderableDBInstanceOption) 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 OrderableDBInstanceOption) GoString() string {
	return s.String()
}

// SetAvailabilityZoneGroup sets the AvailabilityZoneGroup field's value.
func (s *OrderableDBInstanceOption) SetAvailabilityZoneGroup(v string) *OrderableDBInstanceOption {
	s.AvailabilityZoneGroup = &v
	return s
}

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *OrderableDBInstanceOption) SetAvailabilityZones(v []*AvailabilityZone) *OrderableDBInstanceOption {
	s.AvailabilityZones = v
	return s
}

// SetAvailableProcessorFeatures sets the AvailableProcessorFeatures field's value.
func (s *OrderableDBInstanceOption) SetAvailableProcessorFeatures(v []*AvailableProcessorFeature) *OrderableDBInstanceOption {
	s.AvailableProcessorFeatures = v
	return s
}

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *OrderableDBInstanceOption) SetDBInstanceClass(v string) *OrderableDBInstanceOption {
	s.DBInstanceClass = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *OrderableDBInstanceOption) SetEngine(v string) *OrderableDBInstanceOption {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *OrderableDBInstanceOption) SetEngineVersion(v string) *OrderableDBInstanceOption {
	s.EngineVersion = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *OrderableDBInstanceOption) SetLicenseModel(v string) *OrderableDBInstanceOption {
	s.LicenseModel = &v
	return s
}

// SetMaxIopsPerDbInstance sets the MaxIopsPerDbInstance field's value.
func (s *OrderableDBInstanceOption) SetMaxIopsPerDbInstance(v int64) *OrderableDBInstanceOption {
	s.MaxIopsPerDbInstance = &v
	return s
}

// SetMaxIopsPerGib sets the MaxIopsPerGib field's value.
func (s *OrderableDBInstanceOption) SetMaxIopsPerGib(v float64) *OrderableDBInstanceOption {
	s.MaxIopsPerGib = &v
	return s
}

// SetMaxStorageSize sets the MaxStorageSize field's value.
func (s *OrderableDBInstanceOption) SetMaxStorageSize(v int64) *OrderableDBInstanceOption {
	s.MaxStorageSize = &v
	return s
}

// SetMaxStorageThroughputPerDbInstance sets the MaxStorageThroughputPerDbInstance field's value.
func (s *OrderableDBInstanceOption) SetMaxStorageThroughputPerDbInstance(v int64) *OrderableDBInstanceOption {
	s.MaxStorageThroughputPerDbInstance = &v
	return s
}

// SetMaxStorageThroughputPerIops sets the MaxStorageThroughputPerIops field's value.
func (s *OrderableDBInstanceOption) SetMaxStorageThroughputPerIops(v float64) *OrderableDBInstanceOption {
	s.MaxStorageThroughputPerIops = &v
	return s
}

// SetMinIopsPerDbInstance sets the MinIopsPerDbInstance field's value.
func (s *OrderableDBInstanceOption) SetMinIopsPerDbInstance(v int64) *OrderableDBInstanceOption {
	s.MinIopsPerDbInstance = &v
	return s
}

// SetMinIopsPerGib sets the MinIopsPerGib field's value.
func (s *OrderableDBInstanceOption) SetMinIopsPerGib(v float64) *OrderableDBInstanceOption {
	s.MinIopsPerGib = &v
	return s
}

// SetMinStorageSize sets the MinStorageSize field's value.
func (s *OrderableDBInstanceOption) SetMinStorageSize(v int64) *OrderableDBInstanceOption {
	s.MinStorageSize = &v
	return s
}

// SetMinStorageThroughputPerDbInstance sets the MinStorageThroughputPerDbInstance field's value.
func (s *OrderableDBInstanceOption) SetMinStorageThroughputPerDbInstance(v int64) *OrderableDBInstanceOption {
	s.MinStorageThroughputPerDbInstance = &v
	return s
}

// SetMinStorageThroughputPerIops sets the MinStorageThroughputPerIops field's value.
func (s *OrderableDBInstanceOption) SetMinStorageThroughputPerIops(v float64) *OrderableDBInstanceOption {
	s.MinStorageThroughputPerIops = &v
	return s
}

// SetMultiAZCapable sets the MultiAZCapable field's value.
func (s *OrderableDBInstanceOption) SetMultiAZCapable(v bool) *OrderableDBInstanceOption {
	s.MultiAZCapable = &v
	return s
}

// SetOutpostCapable sets the OutpostCapable field's value.
func (s *OrderableDBInstanceOption) SetOutpostCapable(v bool) *OrderableDBInstanceOption {
	s.OutpostCapable = &v
	return s
}

// SetReadReplicaCapable sets the ReadReplicaCapable field's value.
func (s *OrderableDBInstanceOption) SetReadReplicaCapable(v bool) *OrderableDBInstanceOption {
	s.ReadReplicaCapable = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *OrderableDBInstanceOption) SetStorageType(v string) *OrderableDBInstanceOption {
	s.StorageType = &v
	return s
}

// SetSupportedActivityStreamModes sets the SupportedActivityStreamModes field's value.
func (s *OrderableDBInstanceOption) SetSupportedActivityStreamModes(v []*string) *OrderableDBInstanceOption {
	s.SupportedActivityStreamModes = v
	return s
}

// SetSupportedEngineModes sets the SupportedEngineModes field's value.
func (s *OrderableDBInstanceOption) SetSupportedEngineModes(v []*string) *OrderableDBInstanceOption {
	s.SupportedEngineModes = v
	return s
}

// SetSupportedNetworkTypes sets the SupportedNetworkTypes field's value.
func (s *OrderableDBInstanceOption) SetSupportedNetworkTypes(v []*string) *OrderableDBInstanceOption {
	s.SupportedNetworkTypes = v
	return s
}

// SetSupportsClusters sets the SupportsClusters field's value.
func (s *OrderableDBInstanceOption) SetSupportsClusters(v bool) *OrderableDBInstanceOption {
	s.SupportsClusters = &v
	return s
}

// SetSupportsDedicatedLogVolume sets the SupportsDedicatedLogVolume field's value.
func (s *OrderableDBInstanceOption) SetSupportsDedicatedLogVolume(v bool) *OrderableDBInstanceOption {
	s.SupportsDedicatedLogVolume = &v
	return s
}

// SetSupportsEnhancedMonitoring sets the SupportsEnhancedMonitoring field's value.
func (s *OrderableDBInstanceOption) SetSupportsEnhancedMonitoring(v bool) *OrderableDBInstanceOption {
	s.SupportsEnhancedMonitoring = &v
	return s
}

// SetSupportsGlobalDatabases sets the SupportsGlobalDatabases field's value.
func (s *OrderableDBInstanceOption) SetSupportsGlobalDatabases(v bool) *OrderableDBInstanceOption {
	s.SupportsGlobalDatabases = &v
	return s
}

// SetSupportsIAMDatabaseAuthentication sets the SupportsIAMDatabaseAuthentication field's value.
func (s *OrderableDBInstanceOption) SetSupportsIAMDatabaseAuthentication(v bool) *OrderableDBInstanceOption {
	s.SupportsIAMDatabaseAuthentication = &v
	return s
}

// SetSupportsIops sets the SupportsIops field's value.
func (s *OrderableDBInstanceOption) SetSupportsIops(v bool) *OrderableDBInstanceOption {
	s.SupportsIops = &v
	return s
}

// SetSupportsKerberosAuthentication sets the SupportsKerberosAuthentication field's value.
func (s *OrderableDBInstanceOption) SetSupportsKerberosAuthentication(v bool) *OrderableDBInstanceOption {
	s.SupportsKerberosAuthentication = &v
	return s
}

// SetSupportsPerformanceInsights sets the SupportsPerformanceInsights field's value.
func (s *OrderableDBInstanceOption) SetSupportsPerformanceInsights(v bool) *OrderableDBInstanceOption {
	s.SupportsPerformanceInsights = &v
	return s
}

// SetSupportsStorageAutoscaling sets the SupportsStorageAutoscaling field's value.
func (s *OrderableDBInstanceOption) SetSupportsStorageAutoscaling(v bool) *OrderableDBInstanceOption {
	s.SupportsStorageAutoscaling = &v
	return s
}

// SetSupportsStorageEncryption sets the SupportsStorageEncryption field's value.
func (s *OrderableDBInstanceOption) SetSupportsStorageEncryption(v bool) *OrderableDBInstanceOption {
	s.SupportsStorageEncryption = &v
	return s
}

// SetSupportsStorageThroughput sets the SupportsStorageThroughput field's value.
func (s *OrderableDBInstanceOption) SetSupportsStorageThroughput(v bool) *OrderableDBInstanceOption {
	s.SupportsStorageThroughput = &v
	return s
}

// SetVpc sets the Vpc field's value.
func (s *OrderableDBInstanceOption) SetVpc(v bool) *OrderableDBInstanceOption {
	s.Vpc = &v
	return s
}

// A data type that represents an Outpost.
//
// For more information about RDS on Outposts, see Amazon RDS on Amazon Web
// Services Outposts (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html)
// in the Amazon RDS User Guide.
type Outpost struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Outpost.
	Arn *string `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 Outpost) 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 Outpost) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *Outpost) SetArn(v string) *Outpost {
	s.Arn = &v
	return s
}

// This data type is used as a request parameter in the ModifyDBParameterGroup
// and ResetDBParameterGroup actions.
//
// This data type is used as a response element in the DescribeEngineDefaultParameters
// and DescribeDBParameters actions.
type Parameter struct {
	_ struct{} `type:"structure"`

	// Specifies the valid range of values for the parameter.
	AllowedValues *string `type:"string"`

	// Indicates when to apply parameter updates.
	ApplyMethod *string `type:"string" enum:"ApplyMethod"`

	// Specifies the engine specific parameters type.
	ApplyType *string `type:"string"`

	// Specifies the valid data type for the parameter.
	DataType *string `type:"string"`

	// Provides a description of the parameter.
	Description *string `type:"string"`

	// Indicates whether (true) or not (false) the parameter can be modified. Some
	// parameters have security or operational implications that prevent them from
	// being changed.
	IsModifiable *bool `type:"boolean"`

	// The earliest engine version to which the parameter can apply.
	MinimumEngineVersion *string `type:"string"`

	// The name of the parameter.
	ParameterName *string `type:"string"`

	// The value of the parameter.
	ParameterValue *string `type:"string"`

	// The source of the parameter value.
	Source *string `type:"string"`

	// The valid DB engine modes.
	SupportedEngineModes []*string `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 Parameter) 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 Parameter) GoString() string {
	return s.String()
}

// SetAllowedValues sets the AllowedValues field's value.
func (s *Parameter) SetAllowedValues(v string) *Parameter {
	s.AllowedValues = &v
	return s
}

// SetApplyMethod sets the ApplyMethod field's value.
func (s *Parameter) SetApplyMethod(v string) *Parameter {
	s.ApplyMethod = &v
	return s
}

// SetApplyType sets the ApplyType field's value.
func (s *Parameter) SetApplyType(v string) *Parameter {
	s.ApplyType = &v
	return s
}

// SetDataType sets the DataType field's value.
func (s *Parameter) SetDataType(v string) *Parameter {
	s.DataType = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Parameter) SetDescription(v string) *Parameter {
	s.Description = &v
	return s
}

// SetIsModifiable sets the IsModifiable field's value.
func (s *Parameter) SetIsModifiable(v bool) *Parameter {
	s.IsModifiable = &v
	return s
}

// SetMinimumEngineVersion sets the MinimumEngineVersion field's value.
func (s *Parameter) SetMinimumEngineVersion(v string) *Parameter {
	s.MinimumEngineVersion = &v
	return s
}

// SetParameterName sets the ParameterName field's value.
func (s *Parameter) SetParameterName(v string) *Parameter {
	s.ParameterName = &v
	return s
}

// SetParameterValue sets the ParameterValue field's value.
func (s *Parameter) SetParameterValue(v string) *Parameter {
	s.ParameterValue = &v
	return s
}

// SetSource sets the Source field's value.
func (s *Parameter) SetSource(v string) *Parameter {
	s.Source = &v
	return s
}

// SetSupportedEngineModes sets the SupportedEngineModes field's value.
func (s *Parameter) SetSupportedEngineModes(v []*string) *Parameter {
	s.SupportedEngineModes = v
	return s
}

// A list of the log types whose configuration is still pending. In other words,
// these log types are in the process of being activated or deactivated.
type PendingCloudwatchLogsExports struct {
	_ struct{} `type:"structure"`

	// Log types that are in the process of being enabled. After they are enabled,
	// these log types are exported to CloudWatch Logs.
	LogTypesToDisable []*string `type:"list"`

	// Log types that are in the process of being deactivated. After they are deactivated,
	// these log types aren't exported to CloudWatch Logs.
	LogTypesToEnable []*string `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 PendingCloudwatchLogsExports) 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 PendingCloudwatchLogsExports) GoString() string {
	return s.String()
}

// SetLogTypesToDisable sets the LogTypesToDisable field's value.
func (s *PendingCloudwatchLogsExports) SetLogTypesToDisable(v []*string) *PendingCloudwatchLogsExports {
	s.LogTypesToDisable = v
	return s
}

// SetLogTypesToEnable sets the LogTypesToEnable field's value.
func (s *PendingCloudwatchLogsExports) SetLogTypesToEnable(v []*string) *PendingCloudwatchLogsExports {
	s.LogTypesToEnable = v
	return s
}

// Provides information about a pending maintenance action for a resource.
type PendingMaintenanceAction struct {
	_ struct{} `type:"structure"`

	// The type of pending maintenance action that is available for the resource.
	//
	// For more information about maintenance actions, see Maintaining a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html).
	//
	// Valid Values:system-update | db-upgrade | hardware-maintenance | ca-certificate-rotation
	Action *string `type:"string"`

	// The date of the maintenance window when the action is applied. The maintenance
	// action is applied to the resource during its first maintenance window after
	// this date.
	AutoAppliedAfterDate *time.Time `type:"timestamp"`

	// The effective date when the pending maintenance action is applied to the
	// resource. This date takes into account opt-in requests received from the
	// ApplyPendingMaintenanceAction API, the AutoAppliedAfterDate, and the ForcedApplyDate.
	// This value is blank if an opt-in request has not been received and nothing
	// has been specified as AutoAppliedAfterDate or ForcedApplyDate.
	CurrentApplyDate *time.Time `type:"timestamp"`

	// A description providing more detail about the maintenance action.
	Description *string `type:"string"`

	// The date when the maintenance action is automatically applied.
	//
	// On this date, the maintenance action is applied to the resource as soon as
	// possible, regardless of the maintenance window for the resource. There might
	// be a delay of one or more days from this date before the maintenance action
	// is applied.
	ForcedApplyDate *time.Time `type:"timestamp"`

	// Indicates the type of opt-in request that has been received for the resource.
	OptInStatus *string `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 PendingMaintenanceAction) 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 PendingMaintenanceAction) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *PendingMaintenanceAction) SetAction(v string) *PendingMaintenanceAction {
	s.Action = &v
	return s
}

// SetAutoAppliedAfterDate sets the AutoAppliedAfterDate field's value.
func (s *PendingMaintenanceAction) SetAutoAppliedAfterDate(v time.Time) *PendingMaintenanceAction {
	s.AutoAppliedAfterDate = &v
	return s
}

// SetCurrentApplyDate sets the CurrentApplyDate field's value.
func (s *PendingMaintenanceAction) SetCurrentApplyDate(v time.Time) *PendingMaintenanceAction {
	s.CurrentApplyDate = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *PendingMaintenanceAction) SetDescription(v string) *PendingMaintenanceAction {
	s.Description = &v
	return s
}

// SetForcedApplyDate sets the ForcedApplyDate field's value.
func (s *PendingMaintenanceAction) SetForcedApplyDate(v time.Time) *PendingMaintenanceAction {
	s.ForcedApplyDate = &v
	return s
}

// SetOptInStatus sets the OptInStatus field's value.
func (s *PendingMaintenanceAction) SetOptInStatus(v string) *PendingMaintenanceAction {
	s.OptInStatus = &v
	return s
}

// This data type is used as a response element in the ModifyDBInstance operation
// and contains changes that will be applied during the next maintenance window.
type PendingModifiedValues struct {
	_ struct{} `type:"structure"`

	// The allocated storage size for the DB instance specified in gibibytes (GiB).
	AllocatedStorage *int64 `type:"integer"`

	// The automation mode of the RDS Custom DB instance: full or all-paused. If
	// full, the DB instance automates monitoring and instance recovery. If all-paused,
	// the instance pauses automation for the duration set by --resume-full-automation-mode-minutes.
	AutomationMode *string `type:"string" enum:"AutomationMode"`

	// The number of days for which automated backups are retained.
	BackupRetentionPeriod *int64 `type:"integer"`

	// The identifier of the CA certificate for the DB instance.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	CACertificateIdentifier *string `type:"string"`

	// The name of the compute and memory capacity class for the DB instance.
	DBInstanceClass *string `type:"string"`

	// The database identifier for the DB instance.
	DBInstanceIdentifier *string `type:"string"`

	// The DB subnet group for the DB instance.
	DBSubnetGroupName *string `type:"string"`

	// Indicates whether the DB instance has a dedicated log volume (DLV) enabled.>
	DedicatedLogVolume *bool `type:"boolean"`

	// The database engine of the DB instance.
	Engine *string `type:"string"`

	// The database engine version.
	EngineVersion *string `type:"string"`

	// Indicates whether mapping of Amazon Web Services Identity and Access Management
	// (IAM) accounts to database accounts is enabled.
	IAMDatabaseAuthenticationEnabled *bool `type:"boolean"`

	// The Provisioned IOPS value for the DB instance.
	Iops *int64 `type:"integer"`

	// The license model for the DB instance.
	//
	// Valid values: license-included | bring-your-own-license | general-public-license
	LicenseModel *string `type:"string"`

	// The master credentials for the DB instance.
	MasterUserPassword *string `type:"string"`

	// Indicates whether the Single-AZ DB instance will change to a Multi-AZ deployment.
	MultiAZ *bool `type:"boolean"`

	// Indicates whether the DB instance will change to the multi-tenant configuration
	// (TRUE) or the single-tenant configuration (FALSE).
	MultiTenant *bool `type:"boolean"`

	// A list of the log types whose configuration is still pending. In other words,
	// these log types are in the process of being activated or deactivated.
	PendingCloudwatchLogsExports *PendingCloudwatchLogsExports `type:"structure"`

	// The port for the DB instance.
	Port *int64 `type:"integer"`

	// The number of CPU cores and the number of threads per core for the DB instance
	// class of the DB instance.
	ProcessorFeatures []*ProcessorFeature `locationNameList:"ProcessorFeature" type:"list"`

	// The number of minutes to pause the automation. When the time period ends,
	// RDS Custom resumes full automation. The minimum value is 60 (default). The
	// maximum value is 1,440.
	ResumeFullAutomationModeTime *time.Time `type:"timestamp"`

	// The storage throughput of the DB instance.
	StorageThroughput *int64 `type:"integer"`

	// The storage type of the DB instance.
	StorageType *string `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 PendingModifiedValues) 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 PendingModifiedValues) GoString() string {
	return s.String()
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *PendingModifiedValues) SetAllocatedStorage(v int64) *PendingModifiedValues {
	s.AllocatedStorage = &v
	return s
}

// SetAutomationMode sets the AutomationMode field's value.
func (s *PendingModifiedValues) SetAutomationMode(v string) *PendingModifiedValues {
	s.AutomationMode = &v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *PendingModifiedValues) SetBackupRetentionPeriod(v int64) *PendingModifiedValues {
	s.BackupRetentionPeriod = &v
	return s
}

// SetCACertificateIdentifier sets the CACertificateIdentifier field's value.
func (s *PendingModifiedValues) SetCACertificateIdentifier(v string) *PendingModifiedValues {
	s.CACertificateIdentifier = &v
	return s
}

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *PendingModifiedValues) SetDBInstanceClass(v string) *PendingModifiedValues {
	s.DBInstanceClass = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *PendingModifiedValues) SetDBInstanceIdentifier(v string) *PendingModifiedValues {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *PendingModifiedValues) SetDBSubnetGroupName(v string) *PendingModifiedValues {
	s.DBSubnetGroupName = &v
	return s
}

// SetDedicatedLogVolume sets the DedicatedLogVolume field's value.
func (s *PendingModifiedValues) SetDedicatedLogVolume(v bool) *PendingModifiedValues {
	s.DedicatedLogVolume = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *PendingModifiedValues) SetEngine(v string) *PendingModifiedValues {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *PendingModifiedValues) SetEngineVersion(v string) *PendingModifiedValues {
	s.EngineVersion = &v
	return s
}

// SetIAMDatabaseAuthenticationEnabled sets the IAMDatabaseAuthenticationEnabled field's value.
func (s *PendingModifiedValues) SetIAMDatabaseAuthenticationEnabled(v bool) *PendingModifiedValues {
	s.IAMDatabaseAuthenticationEnabled = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *PendingModifiedValues) SetIops(v int64) *PendingModifiedValues {
	s.Iops = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *PendingModifiedValues) SetLicenseModel(v string) *PendingModifiedValues {
	s.LicenseModel = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *PendingModifiedValues) SetMasterUserPassword(v string) *PendingModifiedValues {
	s.MasterUserPassword = &v
	return s
}

// SetMultiAZ sets the MultiAZ field's value.
func (s *PendingModifiedValues) SetMultiAZ(v bool) *PendingModifiedValues {
	s.MultiAZ = &v
	return s
}

// SetMultiTenant sets the MultiTenant field's value.
func (s *PendingModifiedValues) SetMultiTenant(v bool) *PendingModifiedValues {
	s.MultiTenant = &v
	return s
}

// SetPendingCloudwatchLogsExports sets the PendingCloudwatchLogsExports field's value.
func (s *PendingModifiedValues) SetPendingCloudwatchLogsExports(v *PendingCloudwatchLogsExports) *PendingModifiedValues {
	s.PendingCloudwatchLogsExports = v
	return s
}

// SetPort sets the Port field's value.
func (s *PendingModifiedValues) SetPort(v int64) *PendingModifiedValues {
	s.Port = &v
	return s
}

// SetProcessorFeatures sets the ProcessorFeatures field's value.
func (s *PendingModifiedValues) SetProcessorFeatures(v []*ProcessorFeature) *PendingModifiedValues {
	s.ProcessorFeatures = v
	return s
}

// SetResumeFullAutomationModeTime sets the ResumeFullAutomationModeTime field's value.
func (s *PendingModifiedValues) SetResumeFullAutomationModeTime(v time.Time) *PendingModifiedValues {
	s.ResumeFullAutomationModeTime = &v
	return s
}

// SetStorageThroughput sets the StorageThroughput field's value.
func (s *PendingModifiedValues) SetStorageThroughput(v int64) *PendingModifiedValues {
	s.StorageThroughput = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *PendingModifiedValues) SetStorageType(v string) *PendingModifiedValues {
	s.StorageType = &v
	return s
}

// A logical grouping of Performance Insights metrics for a related subject
// area. For example, the db.sql dimension group consists of the following dimensions:
//
//   - db.sql.id - The hash of a running SQL statement, generated by Performance
//     Insights.
//
//   - db.sql.db_id - Either the SQL ID generated by the database engine, or
//     a value generated by Performance Insights that begins with pi-.
//
//   - db.sql.statement - The full text of the SQL statement that is running,
//     for example, SELECT * FROM employees.
//
//   - db.sql_tokenized.id - The hash of the SQL digest generated by Performance
//     Insights.
//
// Each response element returns a maximum of 500 bytes. For larger elements,
// such as SQL statements, only the first 500 bytes are returned.
type PerformanceInsightsMetricDimensionGroup struct {
	_ struct{} `type:"structure"`

	// A list of specific dimensions from a dimension group. If this list isn't
	// included, then all of the dimensions in the group were requested, or are
	// present in the response.
	Dimensions []*string `type:"list"`

	// The available dimension groups for Performance Insights metric type.
	Group *string `type:"string"`

	// The maximum number of items to fetch for this dimension group.
	Limit *int64 `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 PerformanceInsightsMetricDimensionGroup) 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 PerformanceInsightsMetricDimensionGroup) GoString() string {
	return s.String()
}

// SetDimensions sets the Dimensions field's value.
func (s *PerformanceInsightsMetricDimensionGroup) SetDimensions(v []*string) *PerformanceInsightsMetricDimensionGroup {
	s.Dimensions = v
	return s
}

// SetGroup sets the Group field's value.
func (s *PerformanceInsightsMetricDimensionGroup) SetGroup(v string) *PerformanceInsightsMetricDimensionGroup {
	s.Group = &v
	return s
}

// SetLimit sets the Limit field's value.
func (s *PerformanceInsightsMetricDimensionGroup) SetLimit(v int64) *PerformanceInsightsMetricDimensionGroup {
	s.Limit = &v
	return s
}

// A single Performance Insights metric query to process. You must provide the
// metric to the query. If other parameters aren't specified, Performance Insights
// returns all data points for the specified metric. Optionally, you can request
// the data points to be aggregated by dimension group (GroupBy) and return
// only those data points that match your criteria (Filter).
//
// Constraints:
//
//   - Must be a valid Performance Insights query.
type PerformanceInsightsMetricQuery struct {
	_ struct{} `type:"structure"`

	// A specification for how to aggregate the data points from a query result.
	// You must specify a valid dimension group. Performance Insights will return
	// all of the dimensions within that group, unless you provide the names of
	// specific dimensions within that group. You can also request that Performance
	// Insights return a limited number of values for a dimension.
	GroupBy *PerformanceInsightsMetricDimensionGroup `type:"structure"`

	// The name of a Performance Insights metric to be measured.
	//
	// Valid Values:
	//
	//    * db.load.avg - A scaled representation of the number of active sessions
	//    for the database engine.
	//
	//    * db.sampledload.avg - The raw number of active sessions for the database
	//    engine.
	//
	//    * The counter metrics listed in Performance Insights operating system
	//    counters (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights_Counters.html#USER_PerfInsights_Counters.OS)
	//    in the Amazon Aurora User Guide.
	//
	// If the number of active sessions is less than an internal Performance Insights
	// threshold, db.load.avg and db.sampledload.avg are the same value. If the
	// number of active sessions is greater than the internal threshold, Performance
	// Insights samples the active sessions, with db.load.avg showing the scaled
	// values, db.sampledload.avg showing the raw values, and db.sampledload.avg
	// less than db.load.avg. For most use cases, you can query db.load.avg only.
	Metric *string `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 PerformanceInsightsMetricQuery) 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 PerformanceInsightsMetricQuery) GoString() string {
	return s.String()
}

// SetGroupBy sets the GroupBy field's value.
func (s *PerformanceInsightsMetricQuery) SetGroupBy(v *PerformanceInsightsMetricDimensionGroup) *PerformanceInsightsMetricQuery {
	s.GroupBy = v
	return s
}

// SetMetric sets the Metric field's value.
func (s *PerformanceInsightsMetricQuery) SetMetric(v string) *PerformanceInsightsMetricQuery {
	s.Metric = &v
	return s
}

// Details of the performance issue.
type PerformanceIssueDetails struct {
	_ struct{} `type:"structure"`

	// The analysis of the performance issue. The information might contain markdown.
	Analysis *string `type:"string"`

	// The time when the performance issue stopped.
	EndTime *time.Time `type:"timestamp"`

	// The metrics that are relevant to the performance issue.
	Metrics []*Metric `type:"list"`

	// The time when the performance issue started.
	StartTime *time.Time `type:"timestamp"`
}

// 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 PerformanceIssueDetails) 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 PerformanceIssueDetails) GoString() string {
	return s.String()
}

// SetAnalysis sets the Analysis field's value.
func (s *PerformanceIssueDetails) SetAnalysis(v string) *PerformanceIssueDetails {
	s.Analysis = &v
	return s
}

// SetEndTime sets the EndTime field's value.
func (s *PerformanceIssueDetails) SetEndTime(v time.Time) *PerformanceIssueDetails {
	s.EndTime = &v
	return s
}

// SetMetrics sets the Metrics field's value.
func (s *PerformanceIssueDetails) SetMetrics(v []*Metric) *PerformanceIssueDetails {
	s.Metrics = v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *PerformanceIssueDetails) SetStartTime(v time.Time) *PerformanceIssueDetails {
	s.StartTime = &v
	return s
}

// Contains the processor features of a DB instance class.
//
// To specify the number of CPU cores, use the coreCount feature name for the
// Name parameter. To specify the number of threads per core, use the threadsPerCore
// feature name for the Name parameter.
//
// You can set the processor features of the DB instance class for a DB instance
// when you call one of the following actions:
//
//   - CreateDBInstance
//
//   - ModifyDBInstance
//
//   - RestoreDBInstanceFromDBSnapshot
//
//   - RestoreDBInstanceFromS3
//
//   - RestoreDBInstanceToPointInTime
//
// You can view the valid processor values for a particular instance class by
// calling the DescribeOrderableDBInstanceOptions action and specifying the
// instance class for the DBInstanceClass parameter.
//
// In addition, you can use the following actions for DB instance class processor
// information:
//
//   - DescribeDBInstances
//
//   - DescribeDBSnapshots
//
//   - DescribeValidDBInstanceModifications
//
// If you call DescribeDBInstances, ProcessorFeature returns non-null values
// only if the following conditions are met:
//
//   - You are accessing an Oracle DB instance.
//
//   - Your Oracle DB instance class supports configuring the number of CPU
//     cores and threads per core.
//
//   - The current number CPU cores and threads is set to a non-default value.
//
// For more information, see Configuring the processor for a DB instance class
// in RDS for Oracle (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html#USER_ConfigureProcessor)
// in the Amazon RDS User Guide.
type ProcessorFeature struct {
	_ struct{} `type:"structure"`

	// The name of the processor feature. Valid names are coreCount and threadsPerCore.
	Name *string `type:"string"`

	// The value of a processor feature.
	Value *string `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 ProcessorFeature) 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 ProcessorFeature) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *ProcessorFeature) SetName(v string) *ProcessorFeature {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *ProcessorFeature) SetValue(v string) *ProcessorFeature {
	s.Value = &v
	return s
}

type PromoteReadReplicaDBClusterInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the DB cluster read replica to promote. This parameter
	// isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DB cluster read replica.
	//
	// Example: my-cluster-replica1
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `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 PromoteReadReplicaDBClusterInput) 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 PromoteReadReplicaDBClusterInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PromoteReadReplicaDBClusterInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PromoteReadReplicaDBClusterInput"}
	if s.DBClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *PromoteReadReplicaDBClusterInput) SetDBClusterIdentifier(v string) *PromoteReadReplicaDBClusterInput {
	s.DBClusterIdentifier = &v
	return s
}

type PromoteReadReplicaDBClusterOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon Aurora DB cluster or Multi-AZ DB cluster.
	//
	// For an Amazon Aurora DB cluster, this data type is used as a response element
	// in the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, PromoteReadReplicaDBCluster, RestoreDBClusterFromS3, RestoreDBClusterFromSnapshot,
	// RestoreDBClusterToPointInTime, StartDBCluster, and StopDBCluster.
	//
	// For a Multi-AZ DB cluster, this data type is used as a response element in
	// the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, RebootDBCluster, RestoreDBClusterFromSnapshot, and RestoreDBClusterToPointInTime.
	//
	// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
	// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
	// in the Amazon Aurora User Guide.
	//
	// For more information on Multi-AZ DB clusters, see Multi-AZ deployments with
	// two readable standby DB instances (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
	// in the Amazon RDS User Guide.
	DBCluster *DBCluster `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 PromoteReadReplicaDBClusterOutput) 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 PromoteReadReplicaDBClusterOutput) GoString() string {
	return s.String()
}

// SetDBCluster sets the DBCluster field's value.
func (s *PromoteReadReplicaDBClusterOutput) SetDBCluster(v *DBCluster) *PromoteReadReplicaDBClusterOutput {
	s.DBCluster = v
	return s
}

type PromoteReadReplicaInput struct {
	_ struct{} `type:"structure"`

	// The number of days for which automated backups are retained. Setting this
	// parameter to a positive number enables backups. Setting this parameter to
	// 0 disables automated backups.
	//
	// Default: 1
	//
	// Constraints:
	//
	//    * Must be a value from 0 to 35.
	//
	//    * Can't be set to 0 if the DB instance is a source to read replicas.
	BackupRetentionPeriod *int64 `type:"integer"`

	// The DB instance identifier. This value is stored as a lowercase string.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing read replica DB instance.
	//
	// Example: mydbinstance
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// The daily time range during which automated backups are created if automated
	// backups are enabled, using the BackupRetentionPeriod parameter.
	//
	// The default is a 30-minute window selected at random from an 8-hour block
	// of time for each Amazon Web Services Region. To see the time blocks available,
	// see Adjusting the Preferred Maintenance Window (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html)
	// in the Amazon RDS User Guide.
	//
	// Constraints:
	//
	//    * Must be in the format hh24:mi-hh24:mi.
	//
	//    * Must be in Universal Coordinated Time (UTC).
	//
	//    * Must not conflict with the preferred maintenance window.
	//
	//    * Must be at least 30 minutes.
	PreferredBackupWindow *string `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 PromoteReadReplicaInput) 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 PromoteReadReplicaInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PromoteReadReplicaInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PromoteReadReplicaInput"}
	if s.DBInstanceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBInstanceIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *PromoteReadReplicaInput) SetBackupRetentionPeriod(v int64) *PromoteReadReplicaInput {
	s.BackupRetentionPeriod = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *PromoteReadReplicaInput) SetDBInstanceIdentifier(v string) *PromoteReadReplicaInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *PromoteReadReplicaInput) SetPreferredBackupWindow(v string) *PromoteReadReplicaInput {
	s.PreferredBackupWindow = &v
	return s
}

type PromoteReadReplicaOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon RDS DB instance.
	//
	// This data type is used as a response element in the operations CreateDBInstance,
	// CreateDBInstanceReadReplica, DeleteDBInstance, DescribeDBInstances, ModifyDBInstance,
	// PromoteReadReplica, RebootDBInstance, RestoreDBInstanceFromDBSnapshot, RestoreDBInstanceFromS3,
	// RestoreDBInstanceToPointInTime, StartDBInstance, and StopDBInstance.
	DBInstance *DBInstance `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 PromoteReadReplicaOutput) 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 PromoteReadReplicaOutput) GoString() string {
	return s.String()
}

// SetDBInstance sets the DBInstance field's value.
func (s *PromoteReadReplicaOutput) SetDBInstance(v *DBInstance) *PromoteReadReplicaOutput {
	s.DBInstance = v
	return s
}

type PurchaseReservedDBInstancesOfferingInput struct {
	_ struct{} `type:"structure"`

	// The number of instances to reserve.
	//
	// Default: 1
	DBInstanceCount *int64 `type:"integer"`

	// Customer-specified identifier to track this reservation.
	//
	// Example: myreservationID
	ReservedDBInstanceId *string `type:"string"`

	// The ID of the Reserved DB instance offering to purchase.
	//
	// Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
	//
	// ReservedDBInstancesOfferingId is a required field
	ReservedDBInstancesOfferingId *string `type:"string" required:"true"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" 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 PurchaseReservedDBInstancesOfferingInput) 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 PurchaseReservedDBInstancesOfferingInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PurchaseReservedDBInstancesOfferingInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PurchaseReservedDBInstancesOfferingInput"}
	if s.ReservedDBInstancesOfferingId == nil {
		invalidParams.Add(request.NewErrParamRequired("ReservedDBInstancesOfferingId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBInstanceCount sets the DBInstanceCount field's value.
func (s *PurchaseReservedDBInstancesOfferingInput) SetDBInstanceCount(v int64) *PurchaseReservedDBInstancesOfferingInput {
	s.DBInstanceCount = &v
	return s
}

// SetReservedDBInstanceId sets the ReservedDBInstanceId field's value.
func (s *PurchaseReservedDBInstancesOfferingInput) SetReservedDBInstanceId(v string) *PurchaseReservedDBInstancesOfferingInput {
	s.ReservedDBInstanceId = &v
	return s
}

// SetReservedDBInstancesOfferingId sets the ReservedDBInstancesOfferingId field's value.
func (s *PurchaseReservedDBInstancesOfferingInput) SetReservedDBInstancesOfferingId(v string) *PurchaseReservedDBInstancesOfferingInput {
	s.ReservedDBInstancesOfferingId = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *PurchaseReservedDBInstancesOfferingInput) SetTags(v []*Tag) *PurchaseReservedDBInstancesOfferingInput {
	s.Tags = v
	return s
}

type PurchaseReservedDBInstancesOfferingOutput struct {
	_ struct{} `type:"structure"`

	// This data type is used as a response element in the DescribeReservedDBInstances
	// and PurchaseReservedDBInstancesOffering actions.
	ReservedDBInstance *ReservedDBInstance `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 PurchaseReservedDBInstancesOfferingOutput) 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 PurchaseReservedDBInstancesOfferingOutput) GoString() string {
	return s.String()
}

// SetReservedDBInstance sets the ReservedDBInstance field's value.
func (s *PurchaseReservedDBInstancesOfferingOutput) SetReservedDBInstance(v *ReservedDBInstance) *PurchaseReservedDBInstancesOfferingOutput {
	s.ReservedDBInstance = v
	return s
}

// A range of integer values.
type Range struct {
	_ struct{} `type:"structure"`

	// The minimum value in the range.
	From *int64 `type:"integer"`

	// The step value for the range. For example, if you have a range of 5,000 to
	// 10,000, with a step value of 1,000, the valid values start at 5,000 and step
	// up by 1,000. Even though 7,500 is within the range, it isn't a valid value
	// for the range. The valid values are 5,000, 6,000, 7,000, 8,000...
	Step *int64 `type:"integer"`

	// The maximum value in the range.
	To *int64 `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 Range) 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 Range) GoString() string {
	return s.String()
}

// SetFrom sets the From field's value.
func (s *Range) SetFrom(v int64) *Range {
	s.From = &v
	return s
}

// SetStep sets the Step field's value.
func (s *Range) SetStep(v int64) *Range {
	s.Step = &v
	return s
}

// SetTo sets the To field's value.
func (s *Range) SetTo(v int64) *Range {
	s.To = &v
	return s
}

// Reserved for future use.
type RdsCustomClusterConfiguration struct {
	_ struct{} `type:"structure"`

	// Reserved for future use.
	InterconnectSubnetId *string `type:"string"`

	// Reserved for future use.
	ReplicaMode *string `type:"string" enum:"ReplicaMode"`

	// Reserved for future use.
	TransitGatewayMulticastDomainId *string `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 RdsCustomClusterConfiguration) 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 RdsCustomClusterConfiguration) GoString() string {
	return s.String()
}

// SetInterconnectSubnetId sets the InterconnectSubnetId field's value.
func (s *RdsCustomClusterConfiguration) SetInterconnectSubnetId(v string) *RdsCustomClusterConfiguration {
	s.InterconnectSubnetId = &v
	return s
}

// SetReplicaMode sets the ReplicaMode field's value.
func (s *RdsCustomClusterConfiguration) SetReplicaMode(v string) *RdsCustomClusterConfiguration {
	s.ReplicaMode = &v
	return s
}

// SetTransitGatewayMulticastDomainId sets the TransitGatewayMulticastDomainId field's value.
func (s *RdsCustomClusterConfiguration) SetTransitGatewayMulticastDomainId(v string) *RdsCustomClusterConfiguration {
	s.TransitGatewayMulticastDomainId = &v
	return s
}

type RebootDBClusterInput struct {
	_ struct{} `type:"structure"`

	// The DB cluster identifier. This parameter is stored as a lowercase string.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DBCluster.
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `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 RebootDBClusterInput) 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 RebootDBClusterInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RebootDBClusterInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RebootDBClusterInput"}
	if s.DBClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *RebootDBClusterInput) SetDBClusterIdentifier(v string) *RebootDBClusterInput {
	s.DBClusterIdentifier = &v
	return s
}

type RebootDBClusterOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon Aurora DB cluster or Multi-AZ DB cluster.
	//
	// For an Amazon Aurora DB cluster, this data type is used as a response element
	// in the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, PromoteReadReplicaDBCluster, RestoreDBClusterFromS3, RestoreDBClusterFromSnapshot,
	// RestoreDBClusterToPointInTime, StartDBCluster, and StopDBCluster.
	//
	// For a Multi-AZ DB cluster, this data type is used as a response element in
	// the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, RebootDBCluster, RestoreDBClusterFromSnapshot, and RestoreDBClusterToPointInTime.
	//
	// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
	// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
	// in the Amazon Aurora User Guide.
	//
	// For more information on Multi-AZ DB clusters, see Multi-AZ deployments with
	// two readable standby DB instances (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
	// in the Amazon RDS User Guide.
	DBCluster *DBCluster `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 RebootDBClusterOutput) 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 RebootDBClusterOutput) GoString() string {
	return s.String()
}

// SetDBCluster sets the DBCluster field's value.
func (s *RebootDBClusterOutput) SetDBCluster(v *DBCluster) *RebootDBClusterOutput {
	s.DBCluster = v
	return s
}

type RebootDBInstanceInput struct {
	_ struct{} `type:"structure"`

	// The DB instance identifier. This parameter is stored as a lowercase string.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DBInstance.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// Specifies whether the reboot is conducted through a Multi-AZ failover.
	//
	// Constraint: You can't enable force failover if the instance isn't configured
	// for Multi-AZ.
	ForceFailover *bool `type:"boolean"`
}

// 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 RebootDBInstanceInput) 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 RebootDBInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RebootDBInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RebootDBInstanceInput"}
	if s.DBInstanceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBInstanceIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *RebootDBInstanceInput) SetDBInstanceIdentifier(v string) *RebootDBInstanceInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetForceFailover sets the ForceFailover field's value.
func (s *RebootDBInstanceInput) SetForceFailover(v bool) *RebootDBInstanceInput {
	s.ForceFailover = &v
	return s
}

type RebootDBInstanceOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon RDS DB instance.
	//
	// This data type is used as a response element in the operations CreateDBInstance,
	// CreateDBInstanceReadReplica, DeleteDBInstance, DescribeDBInstances, ModifyDBInstance,
	// PromoteReadReplica, RebootDBInstance, RestoreDBInstanceFromDBSnapshot, RestoreDBInstanceFromS3,
	// RestoreDBInstanceToPointInTime, StartDBInstance, and StopDBInstance.
	DBInstance *DBInstance `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 RebootDBInstanceOutput) 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 RebootDBInstanceOutput) GoString() string {
	return s.String()
}

// SetDBInstance sets the DBInstance field's value.
func (s *RebootDBInstanceOutput) SetDBInstance(v *DBInstance) *RebootDBInstanceOutput {
	s.DBInstance = v
	return s
}

type RebootDBShardGroupInput struct {
	_ struct{} `type:"structure"`

	// The name of the DB shard group to reboot.
	//
	// DBShardGroupIdentifier is a required field
	DBShardGroupIdentifier *string `min:"1" 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 RebootDBShardGroupInput) 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 RebootDBShardGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RebootDBShardGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RebootDBShardGroupInput"}
	if s.DBShardGroupIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBShardGroupIdentifier"))
	}
	if s.DBShardGroupIdentifier != nil && len(*s.DBShardGroupIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DBShardGroupIdentifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBShardGroupIdentifier sets the DBShardGroupIdentifier field's value.
func (s *RebootDBShardGroupInput) SetDBShardGroupIdentifier(v string) *RebootDBShardGroupInput {
	s.DBShardGroupIdentifier = &v
	return s
}

type RebootDBShardGroupOutput struct {
	_ struct{} `type:"structure"`

	// Specifies whether to create standby instances for the DB shard group. Valid
	// values are the following:
	//
	//    * 0 - Creates a single, primary DB instance for each physical shard. This
	//    is the default value, and the only one supported for the preview.
	//
	//    * 1 - Creates a primary DB instance and a standby instance in a different
	//    Availability Zone (AZ) for each physical shard.
	//
	//    * 2 - Creates a primary DB instance and two standby instances in different
	//    AZs for each physical shard.
	ComputeRedundancy *int64 `type:"integer"`

	// The name of the primary DB cluster for the DB shard group.
	DBClusterIdentifier *string `type:"string"`

	// The name of the DB shard group.
	DBShardGroupIdentifier *string `min:"1" type:"string"`

	// The Amazon Web Services Region-unique, immutable identifier for the DB shard
	// group.
	DBShardGroupResourceId *string `type:"string"`

	// The connection endpoint for the DB shard group.
	Endpoint *string `type:"string"`

	// The maximum capacity of the DB shard group in Aurora capacity units (ACUs).
	MaxACU *float64 `type:"double"`

	// Indicates whether the DB shard group is publicly accessible.
	//
	// When the DB shard group is publicly accessible, its Domain Name System (DNS)
	// endpoint resolves to the private IP address from within the DB shard group's
	// virtual private cloud (VPC). It resolves to the public IP address from outside
	// of the DB shard group's VPC. Access to the DB shard group is ultimately controlled
	// by the security group it uses. That public access isn't permitted if the
	// security group assigned to the DB shard group doesn't permit it.
	//
	// When the DB shard group isn't publicly accessible, it is an internal DB shard
	// group with a DNS name that resolves to a private IP address.
	//
	// For more information, see CreateDBShardGroup.
	//
	// This setting is only for Aurora Limitless Database.
	PubliclyAccessible *bool `type:"boolean"`

	// The status of the DB shard group.
	Status *string `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 RebootDBShardGroupOutput) 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 RebootDBShardGroupOutput) GoString() string {
	return s.String()
}

// SetComputeRedundancy sets the ComputeRedundancy field's value.
func (s *RebootDBShardGroupOutput) SetComputeRedundancy(v int64) *RebootDBShardGroupOutput {
	s.ComputeRedundancy = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *RebootDBShardGroupOutput) SetDBClusterIdentifier(v string) *RebootDBShardGroupOutput {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBShardGroupIdentifier sets the DBShardGroupIdentifier field's value.
func (s *RebootDBShardGroupOutput) SetDBShardGroupIdentifier(v string) *RebootDBShardGroupOutput {
	s.DBShardGroupIdentifier = &v
	return s
}

// SetDBShardGroupResourceId sets the DBShardGroupResourceId field's value.
func (s *RebootDBShardGroupOutput) SetDBShardGroupResourceId(v string) *RebootDBShardGroupOutput {
	s.DBShardGroupResourceId = &v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *RebootDBShardGroupOutput) SetEndpoint(v string) *RebootDBShardGroupOutput {
	s.Endpoint = &v
	return s
}

// SetMaxACU sets the MaxACU field's value.
func (s *RebootDBShardGroupOutput) SetMaxACU(v float64) *RebootDBShardGroupOutput {
	s.MaxACU = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *RebootDBShardGroupOutput) SetPubliclyAccessible(v bool) *RebootDBShardGroupOutput {
	s.PubliclyAccessible = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *RebootDBShardGroupOutput) SetStatus(v string) *RebootDBShardGroupOutput {
	s.Status = &v
	return s
}

// The recommended actions to apply to resolve the issues associated with your
// DB instances, DB clusters, and DB parameter groups.
type RecommendedAction struct {
	_ struct{} `type:"structure"`

	// The unique identifier of the recommended action.
	ActionId *string `type:"string"`

	// The methods to apply the recommended action.
	//
	// Valid values:
	//
	//    * manual - The action requires you to resolve the recommendation manually.
	//
	//    * immediately - The action is applied immediately.
	//
	//    * next-maintainance-window - The action is applied during the next scheduled
	//    maintainance.
	ApplyModes []*string `type:"list"`

	// The supporting attributes to explain the recommended action.
	ContextAttributes []*ContextAttribute `type:"list"`

	// A detailed description of the action. The description might contain markdown.
	Description *string `type:"string"`

	// The details of the issue.
	IssueDetails *IssueDetails `type:"structure"`

	// An API operation for the action.
	Operation *string `type:"string"`

	// The parameters for the API operation.
	Parameters []*RecommendedActionParameter `type:"list"`

	// The status of the action.
	//
	//    * ready
	//
	//    * applied
	//
	//    * scheduled
	//
	//    * resolved
	Status *string `type:"string"`

	// A short description to summarize the action. The description might contain
	// markdown.
	Title *string `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 RecommendedAction) 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 RecommendedAction) GoString() string {
	return s.String()
}

// SetActionId sets the ActionId field's value.
func (s *RecommendedAction) SetActionId(v string) *RecommendedAction {
	s.ActionId = &v
	return s
}

// SetApplyModes sets the ApplyModes field's value.
func (s *RecommendedAction) SetApplyModes(v []*string) *RecommendedAction {
	s.ApplyModes = v
	return s
}

// SetContextAttributes sets the ContextAttributes field's value.
func (s *RecommendedAction) SetContextAttributes(v []*ContextAttribute) *RecommendedAction {
	s.ContextAttributes = v
	return s
}

// SetDescription sets the Description field's value.
func (s *RecommendedAction) SetDescription(v string) *RecommendedAction {
	s.Description = &v
	return s
}

// SetIssueDetails sets the IssueDetails field's value.
func (s *RecommendedAction) SetIssueDetails(v *IssueDetails) *RecommendedAction {
	s.IssueDetails = v
	return s
}

// SetOperation sets the Operation field's value.
func (s *RecommendedAction) SetOperation(v string) *RecommendedAction {
	s.Operation = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *RecommendedAction) SetParameters(v []*RecommendedActionParameter) *RecommendedAction {
	s.Parameters = v
	return s
}

// SetStatus sets the Status field's value.
func (s *RecommendedAction) SetStatus(v string) *RecommendedAction {
	s.Status = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *RecommendedAction) SetTitle(v string) *RecommendedAction {
	s.Title = &v
	return s
}

// A single parameter to use with the RecommendedAction API operation to apply
// the action.
type RecommendedActionParameter struct {
	_ struct{} `type:"structure"`

	// The key of the parameter to use with the RecommendedAction API operation.
	Key *string `type:"string"`

	// The value of the parameter to use with the RecommendedAction API operation.
	Value *string `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 RecommendedActionParameter) 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 RecommendedActionParameter) GoString() string {
	return s.String()
}

// SetKey sets the Key field's value.
func (s *RecommendedActionParameter) SetKey(v string) *RecommendedActionParameter {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *RecommendedActionParameter) SetValue(v string) *RecommendedActionParameter {
	s.Value = &v
	return s
}

// The recommended status to update for the specified recommendation action
// ID.
type RecommendedActionUpdate struct {
	_ struct{} `type:"structure"`

	// A unique identifier of the updated recommendation action.
	//
	// ActionId is a required field
	ActionId *string `type:"string" required:"true"`

	// The status of the updated recommendation action.
	//
	//    * applied
	//
	//    * scheduled
	//
	// Status is a required field
	Status *string `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 RecommendedActionUpdate) 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 RecommendedActionUpdate) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RecommendedActionUpdate) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RecommendedActionUpdate"}
	if s.ActionId == nil {
		invalidParams.Add(request.NewErrParamRequired("ActionId"))
	}
	if s.Status == nil {
		invalidParams.Add(request.NewErrParamRequired("Status"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActionId sets the ActionId field's value.
func (s *RecommendedActionUpdate) SetActionId(v string) *RecommendedActionUpdate {
	s.ActionId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *RecommendedActionUpdate) SetStatus(v string) *RecommendedActionUpdate {
	s.Status = &v
	return s
}

// This data type is used as a response element in the DescribeReservedDBInstances
// and DescribeReservedDBInstancesOfferings actions.
type RecurringCharge struct {
	_ struct{} `type:"structure"`

	// The amount of the recurring charge.
	RecurringChargeAmount *float64 `type:"double"`

	// The frequency of the recurring charge.
	RecurringChargeFrequency *string `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 RecurringCharge) 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 RecurringCharge) GoString() string {
	return s.String()
}

// SetRecurringChargeAmount sets the RecurringChargeAmount field's value.
func (s *RecurringCharge) SetRecurringChargeAmount(v float64) *RecurringCharge {
	s.RecurringChargeAmount = &v
	return s
}

// SetRecurringChargeFrequency sets the RecurringChargeFrequency field's value.
func (s *RecurringCharge) SetRecurringChargeFrequency(v string) *RecurringCharge {
	s.RecurringChargeFrequency = &v
	return s
}

// The reference details of a metric.
type ReferenceDetails struct {
	_ struct{} `type:"structure"`

	// The metric reference details when the reference is a scalar.
	ScalarReferenceDetails *ScalarReferenceDetails `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 ReferenceDetails) 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 ReferenceDetails) GoString() string {
	return s.String()
}

// SetScalarReferenceDetails sets the ScalarReferenceDetails field's value.
func (s *ReferenceDetails) SetScalarReferenceDetails(v *ScalarReferenceDetails) *ReferenceDetails {
	s.ScalarReferenceDetails = v
	return s
}

type RegisterDBProxyTargetsInput struct {
	_ struct{} `type:"structure"`

	// One or more DB cluster identifiers.
	DBClusterIdentifiers []*string `type:"list"`

	// One or more DB instance identifiers.
	DBInstanceIdentifiers []*string `type:"list"`

	// The identifier of the DBProxy that is associated with the DBProxyTargetGroup.
	//
	// DBProxyName is a required field
	DBProxyName *string `type:"string" required:"true"`

	// The identifier of the DBProxyTargetGroup.
	TargetGroupName *string `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 RegisterDBProxyTargetsInput) 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 RegisterDBProxyTargetsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisterDBProxyTargetsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisterDBProxyTargetsInput"}
	if s.DBProxyName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBProxyName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBClusterIdentifiers sets the DBClusterIdentifiers field's value.
func (s *RegisterDBProxyTargetsInput) SetDBClusterIdentifiers(v []*string) *RegisterDBProxyTargetsInput {
	s.DBClusterIdentifiers = v
	return s
}

// SetDBInstanceIdentifiers sets the DBInstanceIdentifiers field's value.
func (s *RegisterDBProxyTargetsInput) SetDBInstanceIdentifiers(v []*string) *RegisterDBProxyTargetsInput {
	s.DBInstanceIdentifiers = v
	return s
}

// SetDBProxyName sets the DBProxyName field's value.
func (s *RegisterDBProxyTargetsInput) SetDBProxyName(v string) *RegisterDBProxyTargetsInput {
	s.DBProxyName = &v
	return s
}

// SetTargetGroupName sets the TargetGroupName field's value.
func (s *RegisterDBProxyTargetsInput) SetTargetGroupName(v string) *RegisterDBProxyTargetsInput {
	s.TargetGroupName = &v
	return s
}

type RegisterDBProxyTargetsOutput struct {
	_ struct{} `type:"structure"`

	// One or more DBProxyTarget objects that are created when you register targets
	// with a target group.
	DBProxyTargets []*DBProxyTarget `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 RegisterDBProxyTargetsOutput) 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 RegisterDBProxyTargetsOutput) GoString() string {
	return s.String()
}

// SetDBProxyTargets sets the DBProxyTargets field's value.
func (s *RegisterDBProxyTargetsOutput) SetDBProxyTargets(v []*DBProxyTarget) *RegisterDBProxyTargetsOutput {
	s.DBProxyTargets = v
	return s
}

type RemoveFromGlobalClusterInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) identifying the cluster that was detached
	// from the Aurora global database cluster.
	DbClusterIdentifier *string `type:"string"`

	// The cluster identifier to detach from the Aurora global database cluster.
	GlobalClusterIdentifier *string `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 RemoveFromGlobalClusterInput) 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 RemoveFromGlobalClusterInput) GoString() string {
	return s.String()
}

// SetDbClusterIdentifier sets the DbClusterIdentifier field's value.
func (s *RemoveFromGlobalClusterInput) SetDbClusterIdentifier(v string) *RemoveFromGlobalClusterInput {
	s.DbClusterIdentifier = &v
	return s
}

// SetGlobalClusterIdentifier sets the GlobalClusterIdentifier field's value.
func (s *RemoveFromGlobalClusterInput) SetGlobalClusterIdentifier(v string) *RemoveFromGlobalClusterInput {
	s.GlobalClusterIdentifier = &v
	return s
}

type RemoveFromGlobalClusterOutput struct {
	_ struct{} `type:"structure"`

	// A data type representing an Aurora global database.
	GlobalCluster *GlobalCluster `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 RemoveFromGlobalClusterOutput) 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 RemoveFromGlobalClusterOutput) GoString() string {
	return s.String()
}

// SetGlobalCluster sets the GlobalCluster field's value.
func (s *RemoveFromGlobalClusterOutput) SetGlobalCluster(v *GlobalCluster) *RemoveFromGlobalClusterOutput {
	s.GlobalCluster = v
	return s
}

type RemoveRoleFromDBClusterInput struct {
	_ struct{} `type:"structure"`

	// The name of the DB cluster to disassociate the IAM role from.
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// The name of the feature for the DB cluster that the IAM role is to be disassociated
	// from. For information about supported feature names, see DBEngineVersion.
	FeatureName *string `type:"string"`

	// The Amazon Resource Name (ARN) of the IAM role to disassociate from the Aurora
	// DB cluster, for example arn:aws:iam::123456789012:role/AuroraAccessRole.
	//
	// RoleArn is a required field
	RoleArn *string `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 RemoveRoleFromDBClusterInput) 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 RemoveRoleFromDBClusterInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RemoveRoleFromDBClusterInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RemoveRoleFromDBClusterInput"}
	if s.DBClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterIdentifier"))
	}
	if s.RoleArn == nil {
		invalidParams.Add(request.NewErrParamRequired("RoleArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *RemoveRoleFromDBClusterInput) SetDBClusterIdentifier(v string) *RemoveRoleFromDBClusterInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetFeatureName sets the FeatureName field's value.
func (s *RemoveRoleFromDBClusterInput) SetFeatureName(v string) *RemoveRoleFromDBClusterInput {
	s.FeatureName = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *RemoveRoleFromDBClusterInput) SetRoleArn(v string) *RemoveRoleFromDBClusterInput {
	s.RoleArn = &v
	return s
}

type RemoveRoleFromDBClusterOutput 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 RemoveRoleFromDBClusterOutput) 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 RemoveRoleFromDBClusterOutput) GoString() string {
	return s.String()
}

type RemoveRoleFromDBInstanceInput struct {
	_ struct{} `type:"structure"`

	// The name of the DB instance to disassociate the IAM role from.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// The name of the feature for the DB instance that the IAM role is to be disassociated
	// from. For information about supported feature names, see DBEngineVersion.
	//
	// FeatureName is a required field
	FeatureName *string `type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the IAM role to disassociate from the DB
	// instance, for example, arn:aws:iam::123456789012:role/AccessRole.
	//
	// RoleArn is a required field
	RoleArn *string `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 RemoveRoleFromDBInstanceInput) 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 RemoveRoleFromDBInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RemoveRoleFromDBInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RemoveRoleFromDBInstanceInput"}
	if s.DBInstanceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBInstanceIdentifier"))
	}
	if s.FeatureName == nil {
		invalidParams.Add(request.NewErrParamRequired("FeatureName"))
	}
	if s.RoleArn == nil {
		invalidParams.Add(request.NewErrParamRequired("RoleArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *RemoveRoleFromDBInstanceInput) SetDBInstanceIdentifier(v string) *RemoveRoleFromDBInstanceInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetFeatureName sets the FeatureName field's value.
func (s *RemoveRoleFromDBInstanceInput) SetFeatureName(v string) *RemoveRoleFromDBInstanceInput {
	s.FeatureName = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *RemoveRoleFromDBInstanceInput) SetRoleArn(v string) *RemoveRoleFromDBInstanceInput {
	s.RoleArn = &v
	return s
}

type RemoveRoleFromDBInstanceOutput 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 RemoveRoleFromDBInstanceOutput) 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 RemoveRoleFromDBInstanceOutput) GoString() string {
	return s.String()
}

type RemoveSourceIdentifierFromSubscriptionInput struct {
	_ struct{} `type:"structure"`

	// The source identifier to be removed from the subscription, such as the DB
	// instance identifier for a DB instance or the name of a security group.
	//
	// SourceIdentifier is a required field
	SourceIdentifier *string `type:"string" required:"true"`

	// The name of the RDS event notification subscription you want to remove a
	// source identifier from.
	//
	// SubscriptionName is a required field
	SubscriptionName *string `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 RemoveSourceIdentifierFromSubscriptionInput) 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 RemoveSourceIdentifierFromSubscriptionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RemoveSourceIdentifierFromSubscriptionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RemoveSourceIdentifierFromSubscriptionInput"}
	if s.SourceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceIdentifier"))
	}
	if s.SubscriptionName == nil {
		invalidParams.Add(request.NewErrParamRequired("SubscriptionName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSourceIdentifier sets the SourceIdentifier field's value.
func (s *RemoveSourceIdentifierFromSubscriptionInput) SetSourceIdentifier(v string) *RemoveSourceIdentifierFromSubscriptionInput {
	s.SourceIdentifier = &v
	return s
}

// SetSubscriptionName sets the SubscriptionName field's value.
func (s *RemoveSourceIdentifierFromSubscriptionInput) SetSubscriptionName(v string) *RemoveSourceIdentifierFromSubscriptionInput {
	s.SubscriptionName = &v
	return s
}

type RemoveSourceIdentifierFromSubscriptionOutput struct {
	_ struct{} `type:"structure"`

	// Contains the results of a successful invocation of the DescribeEventSubscriptions
	// action.
	EventSubscription *EventSubscription `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 RemoveSourceIdentifierFromSubscriptionOutput) 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 RemoveSourceIdentifierFromSubscriptionOutput) GoString() string {
	return s.String()
}

// SetEventSubscription sets the EventSubscription field's value.
func (s *RemoveSourceIdentifierFromSubscriptionOutput) SetEventSubscription(v *EventSubscription) *RemoveSourceIdentifierFromSubscriptionOutput {
	s.EventSubscription = v
	return s
}

type RemoveTagsFromResourceInput struct {
	_ struct{} `type:"structure"`

	// The Amazon RDS resource that the tags are removed from. This value is an
	// Amazon Resource Name (ARN). For information about creating an ARN, see Constructing
	// an ARN for Amazon RDS (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.ARN.html#USER_Tagging.ARN.Constructing)
	// in the Amazon RDS User Guide.
	//
	// ResourceName is a required field
	ResourceName *string `type:"string" required:"true"`

	// The tag key (name) of the tag to be removed.
	//
	// TagKeys is a required field
	TagKeys []*string `type:"list" 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 RemoveTagsFromResourceInput) 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 RemoveTagsFromResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RemoveTagsFromResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RemoveTagsFromResourceInput"}
	if s.ResourceName == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
	}
	if s.TagKeys == nil {
		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceName sets the ResourceName field's value.
func (s *RemoveTagsFromResourceInput) SetResourceName(v string) *RemoveTagsFromResourceInput {
	s.ResourceName = &v
	return s
}

// SetTagKeys sets the TagKeys field's value.
func (s *RemoveTagsFromResourceInput) SetTagKeys(v []*string) *RemoveTagsFromResourceInput {
	s.TagKeys = v
	return s
}

type RemoveTagsFromResourceOutput 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 RemoveTagsFromResourceOutput) 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 RemoveTagsFromResourceOutput) GoString() string {
	return s.String()
}

// This data type is used as a response element in the DescribeReservedDBInstances
// and PurchaseReservedDBInstancesOffering actions.
type ReservedDBInstance struct {
	_ struct{} `type:"structure"`

	// The currency code for the reserved DB instance.
	CurrencyCode *string `type:"string"`

	// The DB instance class for the reserved DB instance.
	DBInstanceClass *string `type:"string"`

	// The number of reserved DB instances.
	DBInstanceCount *int64 `type:"integer"`

	// The duration of the reservation in seconds.
	Duration *int64 `type:"integer"`

	// The fixed price charged for this reserved DB instance.
	FixedPrice *float64 `type:"double"`

	// The unique identifier for the lease associated with the reserved DB instance.
	//
	// Amazon Web Services Support might request the lease ID for an issue related
	// to a reserved DB instance.
	LeaseId *string `type:"string"`

	// Indicates whether the reservation applies to Multi-AZ deployments.
	MultiAZ *bool `type:"boolean"`

	// The offering type of this reserved DB instance.
	OfferingType *string `type:"string"`

	// The description of the reserved DB instance.
	ProductDescription *string `type:"string"`

	// The recurring price charged to run this reserved DB instance.
	RecurringCharges []*RecurringCharge `locationNameList:"RecurringCharge" type:"list"`

	// The Amazon Resource Name (ARN) for the reserved DB instance.
	ReservedDBInstanceArn *string `type:"string"`

	// The unique identifier for the reservation.
	ReservedDBInstanceId *string `type:"string"`

	// The offering identifier.
	ReservedDBInstancesOfferingId *string `type:"string"`

	// The time the reservation started.
	StartTime *time.Time `type:"timestamp"`

	// The state of the reserved DB instance.
	State *string `type:"string"`

	// The hourly price charged for this reserved DB instance.
	UsagePrice *float64 `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 ReservedDBInstance) 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 ReservedDBInstance) GoString() string {
	return s.String()
}

// SetCurrencyCode sets the CurrencyCode field's value.
func (s *ReservedDBInstance) SetCurrencyCode(v string) *ReservedDBInstance {
	s.CurrencyCode = &v
	return s
}

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *ReservedDBInstance) SetDBInstanceClass(v string) *ReservedDBInstance {
	s.DBInstanceClass = &v
	return s
}

// SetDBInstanceCount sets the DBInstanceCount field's value.
func (s *ReservedDBInstance) SetDBInstanceCount(v int64) *ReservedDBInstance {
	s.DBInstanceCount = &v
	return s
}

// SetDuration sets the Duration field's value.
func (s *ReservedDBInstance) SetDuration(v int64) *ReservedDBInstance {
	s.Duration = &v
	return s
}

// SetFixedPrice sets the FixedPrice field's value.
func (s *ReservedDBInstance) SetFixedPrice(v float64) *ReservedDBInstance {
	s.FixedPrice = &v
	return s
}

// SetLeaseId sets the LeaseId field's value.
func (s *ReservedDBInstance) SetLeaseId(v string) *ReservedDBInstance {
	s.LeaseId = &v
	return s
}

// SetMultiAZ sets the MultiAZ field's value.
func (s *ReservedDBInstance) SetMultiAZ(v bool) *ReservedDBInstance {
	s.MultiAZ = &v
	return s
}

// SetOfferingType sets the OfferingType field's value.
func (s *ReservedDBInstance) SetOfferingType(v string) *ReservedDBInstance {
	s.OfferingType = &v
	return s
}

// SetProductDescription sets the ProductDescription field's value.
func (s *ReservedDBInstance) SetProductDescription(v string) *ReservedDBInstance {
	s.ProductDescription = &v
	return s
}

// SetRecurringCharges sets the RecurringCharges field's value.
func (s *ReservedDBInstance) SetRecurringCharges(v []*RecurringCharge) *ReservedDBInstance {
	s.RecurringCharges = v
	return s
}

// SetReservedDBInstanceArn sets the ReservedDBInstanceArn field's value.
func (s *ReservedDBInstance) SetReservedDBInstanceArn(v string) *ReservedDBInstance {
	s.ReservedDBInstanceArn = &v
	return s
}

// SetReservedDBInstanceId sets the ReservedDBInstanceId field's value.
func (s *ReservedDBInstance) SetReservedDBInstanceId(v string) *ReservedDBInstance {
	s.ReservedDBInstanceId = &v
	return s
}

// SetReservedDBInstancesOfferingId sets the ReservedDBInstancesOfferingId field's value.
func (s *ReservedDBInstance) SetReservedDBInstancesOfferingId(v string) *ReservedDBInstance {
	s.ReservedDBInstancesOfferingId = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *ReservedDBInstance) SetStartTime(v time.Time) *ReservedDBInstance {
	s.StartTime = &v
	return s
}

// SetState sets the State field's value.
func (s *ReservedDBInstance) SetState(v string) *ReservedDBInstance {
	s.State = &v
	return s
}

// SetUsagePrice sets the UsagePrice field's value.
func (s *ReservedDBInstance) SetUsagePrice(v float64) *ReservedDBInstance {
	s.UsagePrice = &v
	return s
}

// This data type is used as a response element in the DescribeReservedDBInstancesOfferings
// action.
type ReservedDBInstancesOffering struct {
	_ struct{} `type:"structure"`

	// The currency code for the reserved DB instance offering.
	CurrencyCode *string `type:"string"`

	// The DB instance class for the reserved DB instance.
	DBInstanceClass *string `type:"string"`

	// The duration of the offering in seconds.
	Duration *int64 `type:"integer"`

	// The fixed price charged for this offering.
	FixedPrice *float64 `type:"double"`

	// Indicates whether the offering applies to Multi-AZ deployments.
	MultiAZ *bool `type:"boolean"`

	// The offering type.
	OfferingType *string `type:"string"`

	// The database engine used by the offering.
	ProductDescription *string `type:"string"`

	// The recurring price charged to run this reserved DB instance.
	RecurringCharges []*RecurringCharge `locationNameList:"RecurringCharge" type:"list"`

	// The offering identifier.
	ReservedDBInstancesOfferingId *string `type:"string"`

	// The hourly price charged for this offering.
	UsagePrice *float64 `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 ReservedDBInstancesOffering) 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 ReservedDBInstancesOffering) GoString() string {
	return s.String()
}

// SetCurrencyCode sets the CurrencyCode field's value.
func (s *ReservedDBInstancesOffering) SetCurrencyCode(v string) *ReservedDBInstancesOffering {
	s.CurrencyCode = &v
	return s
}

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *ReservedDBInstancesOffering) SetDBInstanceClass(v string) *ReservedDBInstancesOffering {
	s.DBInstanceClass = &v
	return s
}

// SetDuration sets the Duration field's value.
func (s *ReservedDBInstancesOffering) SetDuration(v int64) *ReservedDBInstancesOffering {
	s.Duration = &v
	return s
}

// SetFixedPrice sets the FixedPrice field's value.
func (s *ReservedDBInstancesOffering) SetFixedPrice(v float64) *ReservedDBInstancesOffering {
	s.FixedPrice = &v
	return s
}

// SetMultiAZ sets the MultiAZ field's value.
func (s *ReservedDBInstancesOffering) SetMultiAZ(v bool) *ReservedDBInstancesOffering {
	s.MultiAZ = &v
	return s
}

// SetOfferingType sets the OfferingType field's value.
func (s *ReservedDBInstancesOffering) SetOfferingType(v string) *ReservedDBInstancesOffering {
	s.OfferingType = &v
	return s
}

// SetProductDescription sets the ProductDescription field's value.
func (s *ReservedDBInstancesOffering) SetProductDescription(v string) *ReservedDBInstancesOffering {
	s.ProductDescription = &v
	return s
}

// SetRecurringCharges sets the RecurringCharges field's value.
func (s *ReservedDBInstancesOffering) SetRecurringCharges(v []*RecurringCharge) *ReservedDBInstancesOffering {
	s.RecurringCharges = v
	return s
}

// SetReservedDBInstancesOfferingId sets the ReservedDBInstancesOfferingId field's value.
func (s *ReservedDBInstancesOffering) SetReservedDBInstancesOfferingId(v string) *ReservedDBInstancesOffering {
	s.ReservedDBInstancesOfferingId = &v
	return s
}

// SetUsagePrice sets the UsagePrice field's value.
func (s *ReservedDBInstancesOffering) SetUsagePrice(v float64) *ReservedDBInstancesOffering {
	s.UsagePrice = &v
	return s
}

type ResetDBClusterParameterGroupInput struct {
	_ struct{} `type:"structure"`

	// The name of the DB cluster parameter group to reset.
	//
	// DBClusterParameterGroupName is a required field
	DBClusterParameterGroupName *string `type:"string" required:"true"`

	// A list of parameter names in the DB cluster parameter group to reset to the
	// default values. You can't use this parameter if the ResetAllParameters parameter
	// is enabled.
	Parameters []*Parameter `locationNameList:"Parameter" type:"list"`

	// Specifies whether to reset all parameters in the DB cluster parameter group
	// to their default values. You can't use this parameter if there is a list
	// of parameter names specified for the Parameters parameter.
	ResetAllParameters *bool `type:"boolean"`
}

// 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 ResetDBClusterParameterGroupInput) 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 ResetDBClusterParameterGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ResetDBClusterParameterGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ResetDBClusterParameterGroupInput"}
	if s.DBClusterParameterGroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterParameterGroupName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBClusterParameterGroupName sets the DBClusterParameterGroupName field's value.
func (s *ResetDBClusterParameterGroupInput) SetDBClusterParameterGroupName(v string) *ResetDBClusterParameterGroupInput {
	s.DBClusterParameterGroupName = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *ResetDBClusterParameterGroupInput) SetParameters(v []*Parameter) *ResetDBClusterParameterGroupInput {
	s.Parameters = v
	return s
}

// SetResetAllParameters sets the ResetAllParameters field's value.
func (s *ResetDBClusterParameterGroupInput) SetResetAllParameters(v bool) *ResetDBClusterParameterGroupInput {
	s.ResetAllParameters = &v
	return s
}

type ResetDBParameterGroupInput struct {
	_ struct{} `type:"structure"`

	// The name of the DB parameter group.
	//
	// Constraints:
	//
	//    * Must match the name of an existing DBParameterGroup.
	//
	// DBParameterGroupName is a required field
	DBParameterGroupName *string `type:"string" required:"true"`

	// To reset the entire DB parameter group, specify the DBParameterGroup name
	// and ResetAllParameters parameters. To reset specific parameters, provide
	// a list of the following: ParameterName and ApplyMethod. A maximum of 20 parameters
	// can be modified in a single request.
	//
	// MySQL
	//
	// Valid Values (for Apply method): immediate | pending-reboot
	//
	// You can use the immediate value with dynamic parameters only. You can use
	// the pending-reboot value for both dynamic and static parameters, and changes
	// are applied when DB instance reboots.
	//
	// MariaDB
	//
	// Valid Values (for Apply method): immediate | pending-reboot
	//
	// You can use the immediate value with dynamic parameters only. You can use
	// the pending-reboot value for both dynamic and static parameters, and changes
	// are applied when DB instance reboots.
	//
	// Oracle
	//
	// Valid Values (for Apply method): pending-reboot
	Parameters []*Parameter `locationNameList:"Parameter" type:"list"`

	// Specifies whether to reset all parameters in the DB parameter group to default
	// values. By default, all parameters in the DB parameter group are reset to
	// default values.
	ResetAllParameters *bool `type:"boolean"`
}

// 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 ResetDBParameterGroupInput) 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 ResetDBParameterGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ResetDBParameterGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ResetDBParameterGroupInput"}
	if s.DBParameterGroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBParameterGroupName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *ResetDBParameterGroupInput) SetDBParameterGroupName(v string) *ResetDBParameterGroupInput {
	s.DBParameterGroupName = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *ResetDBParameterGroupInput) SetParameters(v []*Parameter) *ResetDBParameterGroupInput {
	s.Parameters = v
	return s
}

// SetResetAllParameters sets the ResetAllParameters field's value.
func (s *ResetDBParameterGroupInput) SetResetAllParameters(v bool) *ResetDBParameterGroupInput {
	s.ResetAllParameters = &v
	return s
}

// Describes the pending maintenance actions for a resource.
type ResourcePendingMaintenanceActions struct {
	_ struct{} `type:"structure"`

	// A list that provides details about the pending maintenance actions for the
	// resource.
	PendingMaintenanceActionDetails []*PendingMaintenanceAction `locationNameList:"PendingMaintenanceAction" type:"list"`

	// The ARN of the resource that has pending maintenance actions.
	ResourceIdentifier *string `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 ResourcePendingMaintenanceActions) 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 ResourcePendingMaintenanceActions) GoString() string {
	return s.String()
}

// SetPendingMaintenanceActionDetails sets the PendingMaintenanceActionDetails field's value.
func (s *ResourcePendingMaintenanceActions) SetPendingMaintenanceActionDetails(v []*PendingMaintenanceAction) *ResourcePendingMaintenanceActions {
	s.PendingMaintenanceActionDetails = v
	return s
}

// SetResourceIdentifier sets the ResourceIdentifier field's value.
func (s *ResourcePendingMaintenanceActions) SetResourceIdentifier(v string) *ResourcePendingMaintenanceActions {
	s.ResourceIdentifier = &v
	return s
}

type RestoreDBClusterFromS3Input struct {
	_ struct{} `type:"structure"`

	// A list of Availability Zones (AZs) where instances in the restored DB cluster
	// can be created.
	AvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`

	// The target backtrack window, in seconds. To disable backtracking, set this
	// value to 0.
	//
	// Currently, Backtrack is only supported for Aurora MySQL DB clusters.
	//
	// Default: 0
	//
	// Constraints:
	//
	//    * If specified, this value must be set to a number from 0 to 259,200 (72
	//    hours).
	BacktrackWindow *int64 `type:"long"`

	// The number of days for which automated backups of the restored DB cluster
	// are retained. You must specify a minimum value of 1.
	//
	// Default: 1
	//
	// Constraints:
	//
	//    * Must be a value from 1 to 35
	BackupRetentionPeriod *int64 `type:"integer"`

	// A value that indicates that the restored DB cluster should be associated
	// with the specified CharacterSet.
	CharacterSetName *string `type:"string"`

	// Specifies whether to copy all tags from the restored DB cluster to snapshots
	// of the restored DB cluster. The default is not to copy them.
	CopyTagsToSnapshot *bool `type:"boolean"`

	// The name of the DB cluster to create from the source data in the Amazon S3
	// bucket. This parameter isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 letters, numbers, or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Example: my-cluster1
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// The name of the DB cluster parameter group to associate with the restored
	// DB cluster. If this argument is omitted, the default parameter group for
	// the engine version is used.
	//
	// Constraints:
	//
	//    * If supplied, must match the name of an existing DBClusterParameterGroup.
	DBClusterParameterGroupName *string `type:"string"`

	// A DB subnet group to associate with the restored DB cluster.
	//
	// Constraints: If supplied, must match the name of an existing DBSubnetGroup.
	//
	// Example: mydbsubnetgroup
	DBSubnetGroupName *string `type:"string"`

	// The database name for the restored DB cluster.
	DatabaseName *string `type:"string"`

	// Specifies whether to enable deletion protection for the DB cluster. The database
	// can't be deleted when deletion protection is enabled. By default, deletion
	// protection isn't enabled.
	DeletionProtection *bool `type:"boolean"`

	// Specify the Active Directory directory ID to restore the DB cluster in. The
	// domain must be created prior to this operation.
	//
	// For Amazon Aurora DB clusters, Amazon RDS can use Kerberos Authentication
	// to authenticate users that connect to the DB cluster. For more information,
	// see Kerberos Authentication (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/kerberos-authentication.html)
	// in the Amazon Aurora User Guide.
	Domain *string `type:"string"`

	// Specify the name of the IAM role to be used when making API calls to the
	// Directory Service.
	DomainIAMRoleName *string `type:"string"`

	// The list of logs that the restored DB cluster is to export to CloudWatch
	// Logs. The values in the list depend on the DB engine being used.
	//
	// Aurora MySQL
	//
	// Possible values are audit, error, general, and slowquery.
	//
	// For more information about exporting CloudWatch Logs for Amazon Aurora, see
	// Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
	// in the Amazon Aurora User Guide.
	EnableCloudwatchLogsExports []*string `type:"list"`

	// Specifies whether to enable mapping of Amazon Web Services Identity and Access
	// Management (IAM) accounts to database accounts. By default, mapping isn't
	// enabled.
	//
	// For more information, see IAM Database Authentication (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html)
	// in the Amazon Aurora User Guide.
	EnableIAMDatabaseAuthentication *bool `type:"boolean"`

	// The name of the database engine to be used for this DB cluster.
	//
	// Valid Values: aurora-mysql (for Aurora MySQL)
	//
	// Engine is a required field
	Engine *string `type:"string" required:"true"`

	// The life cycle type for this DB cluster.
	//
	// By default, this value is set to open-source-rds-extended-support, which
	// enrolls your DB cluster into Amazon RDS Extended Support. At the end of standard
	// support, you can avoid charges for Extended Support by setting the value
	// to open-source-rds-extended-support-disabled. In this case, RDS automatically
	// upgrades your restored DB cluster to a higher engine version, if the major
	// engine version is past its end of standard support date.
	//
	// You can use this setting to enroll your DB cluster into Amazon RDS Extended
	// Support. With RDS Extended Support, you can run the selected major engine
	// version on your DB cluster past the end of standard support for that engine
	// version. For more information, see the following sections:
	//
	//    * Amazon Aurora (PostgreSQL only) - Using Amazon RDS Extended Support
	//    (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/extended-support.html)
	//    in the Amazon Aurora User Guide
	//
	//    * Amazon RDS - Using Amazon RDS Extended Support (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html)
	//    in the Amazon RDS User Guide
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Valid Values: open-source-rds-extended-support | open-source-rds-extended-support-disabled
	//
	// Default: open-source-rds-extended-support
	EngineLifecycleSupport *string `type:"string"`

	// The version number of the database engine to use.
	//
	// To list all of the available engine versions for aurora-mysql (Aurora MySQL),
	// use the following command:
	//
	// aws rds describe-db-engine-versions --engine aurora-mysql --query "DBEngineVersions[].EngineVersion"
	//
	// Aurora MySQL
	//
	// Examples: 5.7.mysql_aurora.2.12.0, 8.0.mysql_aurora.3.04.0
	EngineVersion *string `type:"string"`

	// The Amazon Web Services KMS key identifier for an encrypted DB cluster.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key. To use a KMS key in a different Amazon
	// Web Services account, specify the key ARN or alias ARN.
	//
	// If the StorageEncrypted parameter is enabled, and you do not specify a value
	// for the KmsKeyId parameter, then Amazon RDS will use your default KMS key.
	// There is a default KMS key for your Amazon Web Services account. Your Amazon
	// Web Services account has a different default KMS key for each Amazon Web
	// Services Region.
	KmsKeyId *string `type:"string"`

	// Specifies whether to manage the master user password with Amazon Web Services
	// Secrets Manager.
	//
	// For more information, see Password management with Amazon Web Services Secrets
	// Manager (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html)
	// in the Amazon RDS User Guide and Password management with Amazon Web Services
	// Secrets Manager (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html)
	// in the Amazon Aurora User Guide.
	//
	// Constraints:
	//
	//    * Can't manage the master user password with Amazon Web Services Secrets
	//    Manager if MasterUserPassword is specified.
	ManageMasterUserPassword *bool `type:"boolean"`

	// The password for the master database user. This password can contain any
	// printable ASCII character except "/", """, or "@".
	//
	// Constraints:
	//
	//    * Must contain from 8 to 41 characters.
	//
	//    * Can't be specified if ManageMasterUserPassword is turned on.
	MasterUserPassword *string `type:"string"`

	// The Amazon Web Services KMS key identifier to encrypt a secret that is automatically
	// generated and managed in Amazon Web Services Secrets Manager.
	//
	// This setting is valid only if the master user password is managed by RDS
	// in Amazon Web Services Secrets Manager for the DB cluster.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key. To use a KMS key in a different Amazon
	// Web Services account, specify the key ARN or alias ARN.
	//
	// If you don't specify MasterUserSecretKmsKeyId, then the aws/secretsmanager
	// KMS key is used to encrypt the secret. If the secret is in a different Amazon
	// Web Services account, then you can't use the aws/secretsmanager KMS key to
	// encrypt the secret, and you must use a customer managed KMS key.
	//
	// There is a default KMS key for your Amazon Web Services account. Your Amazon
	// Web Services account has a different default KMS key for each Amazon Web
	// Services Region.
	MasterUserSecretKmsKeyId *string `type:"string"`

	// The name of the master user for the restored DB cluster.
	//
	// Constraints:
	//
	//    * Must be 1 to 16 letters or numbers.
	//
	//    * First character must be a letter.
	//
	//    * Can't be a reserved word for the chosen database engine.
	//
	// MasterUsername is a required field
	MasterUsername *string `type:"string" required:"true"`

	// The network type of the DB cluster.
	//
	// Valid Values:
	//
	//    * IPV4
	//
	//    * DUAL
	//
	// The network type is determined by the DBSubnetGroup specified for the DB
	// cluster. A DBSubnetGroup can support only the IPv4 protocol or the IPv4 and
	// the IPv6 protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon Aurora User Guide.
	NetworkType *string `type:"string"`

	// A value that indicates that the restored DB cluster should be associated
	// with the specified option group.
	//
	// Permanent options can't be removed from an option group. An option group
	// can't be removed from a DB cluster once it is associated with a DB cluster.
	OptionGroupName *string `type:"string"`

	// The port number on which the instances in the restored DB cluster accept
	// connections.
	//
	// Default: 3306
	Port *int64 `type:"integer"`

	// The daily time range during which automated backups are created if automated
	// backups are enabled using the BackupRetentionPeriod parameter.
	//
	// The default is a 30-minute window selected at random from an 8-hour block
	// of time for each Amazon Web Services Region. To view the time blocks available,
	// see Backup window (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html#Aurora.Managing.Backups.BackupWindow)
	// in the Amazon Aurora User Guide.
	//
	// Constraints:
	//
	//    * Must be in the format hh24:mi-hh24:mi.
	//
	//    * Must be in Universal Coordinated Time (UTC).
	//
	//    * Must not conflict with the preferred maintenance window.
	//
	//    * Must be at least 30 minutes.
	PreferredBackupWindow *string `type:"string"`

	// The weekly time range during which system maintenance can occur, in Universal
	// Coordinated Time (UTC).
	//
	// Format: ddd:hh24:mi-ddd:hh24:mi
	//
	// The default is a 30-minute window selected at random from an 8-hour block
	// of time for each Amazon Web Services Region, occurring on a random day of
	// the week. To see the time blocks available, see Adjusting the Preferred Maintenance
	// Window (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow.Aurora)
	// in the Amazon Aurora User Guide.
	//
	// Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
	//
	// Constraints: Minimum 30-minute window.
	PreferredMaintenanceWindow *string `type:"string"`

	// The name of the Amazon S3 bucket that contains the data used to create the
	// Amazon Aurora DB cluster.
	//
	// S3BucketName is a required field
	S3BucketName *string `type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the Amazon Web Services Identity and Access
	// Management (IAM) role that authorizes Amazon RDS to access the Amazon S3
	// bucket on your behalf.
	//
	// S3IngestionRoleArn is a required field
	S3IngestionRoleArn *string `type:"string" required:"true"`

	// The prefix for all of the file names that contain the data used to create
	// the Amazon Aurora DB cluster. If you do not specify a SourceS3Prefix value,
	// then the Amazon Aurora DB cluster is created by using all of the files in
	// the Amazon S3 bucket.
	S3Prefix *string `type:"string"`

	// Contains the scaling configuration of an Aurora Serverless v2 DB cluster.
	//
	// For more information, see Using Amazon Aurora Serverless v2 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html)
	// in the Amazon Aurora User Guide.
	ServerlessV2ScalingConfiguration *ServerlessV2ScalingConfiguration `type:"structure"`

	// The identifier for the database engine that was backed up to create the files
	// stored in the Amazon S3 bucket.
	//
	// Valid Values: mysql
	//
	// SourceEngine is a required field
	SourceEngine *string `type:"string" required:"true"`

	// The version of the database that the backup files were created from.
	//
	// MySQL versions 5.7 and 8.0 are supported.
	//
	// Example: 5.7.40, 8.0.28
	//
	// SourceEngineVersion is a required field
	SourceEngineVersion *string `type:"string" required:"true"`

	// Specifies whether the restored DB cluster is encrypted.
	StorageEncrypted *bool `type:"boolean"`

	// Specifies the storage type to be associated with the DB cluster.
	//
	// Valid Values: aurora, aurora-iopt1
	//
	// Default: aurora
	//
	// Valid for: Aurora DB clusters only
	StorageType *string `type:"string"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// A list of EC2 VPC security groups to associate with the restored DB cluster.
	VpcSecurityGroupIds []*string `locationNameList:"VpcSecurityGroupId" 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 RestoreDBClusterFromS3Input) 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 RestoreDBClusterFromS3Input) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RestoreDBClusterFromS3Input) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RestoreDBClusterFromS3Input"}
	if s.DBClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterIdentifier"))
	}
	if s.Engine == nil {
		invalidParams.Add(request.NewErrParamRequired("Engine"))
	}
	if s.MasterUsername == nil {
		invalidParams.Add(request.NewErrParamRequired("MasterUsername"))
	}
	if s.S3BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("S3BucketName"))
	}
	if s.S3IngestionRoleArn == nil {
		invalidParams.Add(request.NewErrParamRequired("S3IngestionRoleArn"))
	}
	if s.SourceEngine == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceEngine"))
	}
	if s.SourceEngineVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceEngineVersion"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *RestoreDBClusterFromS3Input) SetAvailabilityZones(v []*string) *RestoreDBClusterFromS3Input {
	s.AvailabilityZones = v
	return s
}

// SetBacktrackWindow sets the BacktrackWindow field's value.
func (s *RestoreDBClusterFromS3Input) SetBacktrackWindow(v int64) *RestoreDBClusterFromS3Input {
	s.BacktrackWindow = &v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *RestoreDBClusterFromS3Input) SetBackupRetentionPeriod(v int64) *RestoreDBClusterFromS3Input {
	s.BackupRetentionPeriod = &v
	return s
}

// SetCharacterSetName sets the CharacterSetName field's value.
func (s *RestoreDBClusterFromS3Input) SetCharacterSetName(v string) *RestoreDBClusterFromS3Input {
	s.CharacterSetName = &v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *RestoreDBClusterFromS3Input) SetCopyTagsToSnapshot(v bool) *RestoreDBClusterFromS3Input {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *RestoreDBClusterFromS3Input) SetDBClusterIdentifier(v string) *RestoreDBClusterFromS3Input {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBClusterParameterGroupName sets the DBClusterParameterGroupName field's value.
func (s *RestoreDBClusterFromS3Input) SetDBClusterParameterGroupName(v string) *RestoreDBClusterFromS3Input {
	s.DBClusterParameterGroupName = &v
	return s
}

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *RestoreDBClusterFromS3Input) SetDBSubnetGroupName(v string) *RestoreDBClusterFromS3Input {
	s.DBSubnetGroupName = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *RestoreDBClusterFromS3Input) SetDatabaseName(v string) *RestoreDBClusterFromS3Input {
	s.DatabaseName = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *RestoreDBClusterFromS3Input) SetDeletionProtection(v bool) *RestoreDBClusterFromS3Input {
	s.DeletionProtection = &v
	return s
}

// SetDomain sets the Domain field's value.
func (s *RestoreDBClusterFromS3Input) SetDomain(v string) *RestoreDBClusterFromS3Input {
	s.Domain = &v
	return s
}

// SetDomainIAMRoleName sets the DomainIAMRoleName field's value.
func (s *RestoreDBClusterFromS3Input) SetDomainIAMRoleName(v string) *RestoreDBClusterFromS3Input {
	s.DomainIAMRoleName = &v
	return s
}

// SetEnableCloudwatchLogsExports sets the EnableCloudwatchLogsExports field's value.
func (s *RestoreDBClusterFromS3Input) SetEnableCloudwatchLogsExports(v []*string) *RestoreDBClusterFromS3Input {
	s.EnableCloudwatchLogsExports = v
	return s
}

// SetEnableIAMDatabaseAuthentication sets the EnableIAMDatabaseAuthentication field's value.
func (s *RestoreDBClusterFromS3Input) SetEnableIAMDatabaseAuthentication(v bool) *RestoreDBClusterFromS3Input {
	s.EnableIAMDatabaseAuthentication = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *RestoreDBClusterFromS3Input) SetEngine(v string) *RestoreDBClusterFromS3Input {
	s.Engine = &v
	return s
}

// SetEngineLifecycleSupport sets the EngineLifecycleSupport field's value.
func (s *RestoreDBClusterFromS3Input) SetEngineLifecycleSupport(v string) *RestoreDBClusterFromS3Input {
	s.EngineLifecycleSupport = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *RestoreDBClusterFromS3Input) SetEngineVersion(v string) *RestoreDBClusterFromS3Input {
	s.EngineVersion = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *RestoreDBClusterFromS3Input) SetKmsKeyId(v string) *RestoreDBClusterFromS3Input {
	s.KmsKeyId = &v
	return s
}

// SetManageMasterUserPassword sets the ManageMasterUserPassword field's value.
func (s *RestoreDBClusterFromS3Input) SetManageMasterUserPassword(v bool) *RestoreDBClusterFromS3Input {
	s.ManageMasterUserPassword = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *RestoreDBClusterFromS3Input) SetMasterUserPassword(v string) *RestoreDBClusterFromS3Input {
	s.MasterUserPassword = &v
	return s
}

// SetMasterUserSecretKmsKeyId sets the MasterUserSecretKmsKeyId field's value.
func (s *RestoreDBClusterFromS3Input) SetMasterUserSecretKmsKeyId(v string) *RestoreDBClusterFromS3Input {
	s.MasterUserSecretKmsKeyId = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *RestoreDBClusterFromS3Input) SetMasterUsername(v string) *RestoreDBClusterFromS3Input {
	s.MasterUsername = &v
	return s
}

// SetNetworkType sets the NetworkType field's value.
func (s *RestoreDBClusterFromS3Input) SetNetworkType(v string) *RestoreDBClusterFromS3Input {
	s.NetworkType = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *RestoreDBClusterFromS3Input) SetOptionGroupName(v string) *RestoreDBClusterFromS3Input {
	s.OptionGroupName = &v
	return s
}

// SetPort sets the Port field's value.
func (s *RestoreDBClusterFromS3Input) SetPort(v int64) *RestoreDBClusterFromS3Input {
	s.Port = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *RestoreDBClusterFromS3Input) SetPreferredBackupWindow(v string) *RestoreDBClusterFromS3Input {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *RestoreDBClusterFromS3Input) SetPreferredMaintenanceWindow(v string) *RestoreDBClusterFromS3Input {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetS3BucketName sets the S3BucketName field's value.
func (s *RestoreDBClusterFromS3Input) SetS3BucketName(v string) *RestoreDBClusterFromS3Input {
	s.S3BucketName = &v
	return s
}

// SetS3IngestionRoleArn sets the S3IngestionRoleArn field's value.
func (s *RestoreDBClusterFromS3Input) SetS3IngestionRoleArn(v string) *RestoreDBClusterFromS3Input {
	s.S3IngestionRoleArn = &v
	return s
}

// SetS3Prefix sets the S3Prefix field's value.
func (s *RestoreDBClusterFromS3Input) SetS3Prefix(v string) *RestoreDBClusterFromS3Input {
	s.S3Prefix = &v
	return s
}

// SetServerlessV2ScalingConfiguration sets the ServerlessV2ScalingConfiguration field's value.
func (s *RestoreDBClusterFromS3Input) SetServerlessV2ScalingConfiguration(v *ServerlessV2ScalingConfiguration) *RestoreDBClusterFromS3Input {
	s.ServerlessV2ScalingConfiguration = v
	return s
}

// SetSourceEngine sets the SourceEngine field's value.
func (s *RestoreDBClusterFromS3Input) SetSourceEngine(v string) *RestoreDBClusterFromS3Input {
	s.SourceEngine = &v
	return s
}

// SetSourceEngineVersion sets the SourceEngineVersion field's value.
func (s *RestoreDBClusterFromS3Input) SetSourceEngineVersion(v string) *RestoreDBClusterFromS3Input {
	s.SourceEngineVersion = &v
	return s
}

// SetStorageEncrypted sets the StorageEncrypted field's value.
func (s *RestoreDBClusterFromS3Input) SetStorageEncrypted(v bool) *RestoreDBClusterFromS3Input {
	s.StorageEncrypted = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *RestoreDBClusterFromS3Input) SetStorageType(v string) *RestoreDBClusterFromS3Input {
	s.StorageType = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *RestoreDBClusterFromS3Input) SetTags(v []*Tag) *RestoreDBClusterFromS3Input {
	s.Tags = v
	return s
}

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *RestoreDBClusterFromS3Input) SetVpcSecurityGroupIds(v []*string) *RestoreDBClusterFromS3Input {
	s.VpcSecurityGroupIds = v
	return s
}

type RestoreDBClusterFromS3Output struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon Aurora DB cluster or Multi-AZ DB cluster.
	//
	// For an Amazon Aurora DB cluster, this data type is used as a response element
	// in the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, PromoteReadReplicaDBCluster, RestoreDBClusterFromS3, RestoreDBClusterFromSnapshot,
	// RestoreDBClusterToPointInTime, StartDBCluster, and StopDBCluster.
	//
	// For a Multi-AZ DB cluster, this data type is used as a response element in
	// the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, RebootDBCluster, RestoreDBClusterFromSnapshot, and RestoreDBClusterToPointInTime.
	//
	// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
	// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
	// in the Amazon Aurora User Guide.
	//
	// For more information on Multi-AZ DB clusters, see Multi-AZ deployments with
	// two readable standby DB instances (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
	// in the Amazon RDS User Guide.
	DBCluster *DBCluster `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 RestoreDBClusterFromS3Output) 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 RestoreDBClusterFromS3Output) GoString() string {
	return s.String()
}

// SetDBCluster sets the DBCluster field's value.
func (s *RestoreDBClusterFromS3Output) SetDBCluster(v *DBCluster) *RestoreDBClusterFromS3Output {
	s.DBCluster = v
	return s
}

type RestoreDBClusterFromSnapshotInput struct {
	_ struct{} `type:"structure"`

	// Provides the list of Availability Zones (AZs) where instances in the restored
	// DB cluster can be created.
	//
	// Valid for: Aurora DB clusters only
	AvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`

	// The target backtrack window, in seconds. To disable backtracking, set this
	// value to 0.
	//
	// Currently, Backtrack is only supported for Aurora MySQL DB clusters.
	//
	// Default: 0
	//
	// Constraints:
	//
	//    * If specified, this value must be set to a number from 0 to 259,200 (72
	//    hours).
	//
	// Valid for: Aurora DB clusters only
	BacktrackWindow *int64 `type:"long"`

	// Specifies whether to copy all tags from the restored DB cluster to snapshots
	// of the restored DB cluster. The default is not to copy them.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	CopyTagsToSnapshot *bool `type:"boolean"`

	// The name of the DB cluster to create from the DB snapshot or DB cluster snapshot.
	// This parameter isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 letters, numbers, or hyphens
	//
	//    * First character must be a letter
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens
	//
	// Example: my-snapshot-id
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// The compute and memory capacity of the each DB instance in the Multi-AZ DB
	// cluster, for example db.m6gd.xlarge. Not all DB instance classes are available
	// in all Amazon Web Services Regions, or for all database engines.
	//
	// For the full list of DB instance classes, and availability for your engine,
	// see DB Instance Class (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
	// in the Amazon RDS User Guide.
	//
	// Valid for: Multi-AZ DB clusters only
	DBClusterInstanceClass *string `type:"string"`

	// The name of the DB cluster parameter group to associate with this DB cluster.
	// If this argument is omitted, the default DB cluster parameter group for the
	// specified engine is used.
	//
	// Constraints:
	//
	//    * If supplied, must match the name of an existing default DB cluster parameter
	//    group.
	//
	//    * Must be 1 to 255 letters, numbers, or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	DBClusterParameterGroupName *string `type:"string"`

	// The name of the DB subnet group to use for the new DB cluster.
	//
	// Constraints: If supplied, must match the name of an existing DB subnet group.
	//
	// Example: mydbsubnetgroup
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	DBSubnetGroupName *string `type:"string"`

	// The database name for the restored DB cluster.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	DatabaseName *string `type:"string"`

	// Specifies whether to enable deletion protection for the DB cluster. The database
	// can't be deleted when deletion protection is enabled. By default, deletion
	// protection isn't enabled.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	DeletionProtection *bool `type:"boolean"`

	// The Active Directory directory ID to restore the DB cluster in. The domain
	// must be created prior to this operation. Currently, only MySQL, Microsoft
	// SQL Server, Oracle, and PostgreSQL DB instances can be created in an Active
	// Directory Domain.
	//
	// For more information, see Kerberos Authentication (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html)
	// in the Amazon RDS User Guide.
	//
	// Valid for: Aurora DB clusters only
	Domain *string `type:"string"`

	// The name of the IAM role to be used when making API calls to the Directory
	// Service.
	//
	// Valid for: Aurora DB clusters only
	DomainIAMRoleName *string `type:"string"`

	// The list of logs that the restored DB cluster is to export to Amazon CloudWatch
	// Logs. The values in the list depend on the DB engine being used.
	//
	// RDS for MySQL
	//
	// Possible values are error, general, and slowquery.
	//
	// RDS for PostgreSQL
	//
	// Possible values are postgresql and upgrade.
	//
	// Aurora MySQL
	//
	// Possible values are audit, error, general, and slowquery.
	//
	// Aurora PostgreSQL
	//
	// Possible value is postgresql.
	//
	// For more information about exporting CloudWatch Logs for Amazon RDS, see
	// Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
	// in the Amazon RDS User Guide.
	//
	// For more information about exporting CloudWatch Logs for Amazon Aurora, see
	// Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
	// in the Amazon Aurora User Guide.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	EnableCloudwatchLogsExports []*string `type:"list"`

	// Specifies whether to enable mapping of Amazon Web Services Identity and Access
	// Management (IAM) accounts to database accounts. By default, mapping isn't
	// enabled.
	//
	// For more information, see IAM Database Authentication (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for: Aurora DB clusters only
	EnableIAMDatabaseAuthentication *bool `type:"boolean"`

	// The database engine to use for the new DB cluster.
	//
	// Default: The same as source
	//
	// Constraint: Must be compatible with the engine of the source
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Engine is a required field
	Engine *string `type:"string" required:"true"`

	// The life cycle type for this DB cluster.
	//
	// By default, this value is set to open-source-rds-extended-support, which
	// enrolls your DB cluster into Amazon RDS Extended Support. At the end of standard
	// support, you can avoid charges for Extended Support by setting the value
	// to open-source-rds-extended-support-disabled. In this case, RDS automatically
	// upgrades your restored DB cluster to a higher engine version, if the major
	// engine version is past its end of standard support date.
	//
	// You can use this setting to enroll your DB cluster into Amazon RDS Extended
	// Support. With RDS Extended Support, you can run the selected major engine
	// version on your DB cluster past the end of standard support for that engine
	// version. For more information, see the following sections:
	//
	//    * Amazon Aurora (PostgreSQL only) - Using Amazon RDS Extended Support
	//    (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/extended-support.html)
	//    in the Amazon Aurora User Guide
	//
	//    * Amazon RDS - Using Amazon RDS Extended Support (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html)
	//    in the Amazon RDS User Guide
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Valid Values: open-source-rds-extended-support | open-source-rds-extended-support-disabled
	//
	// Default: open-source-rds-extended-support
	EngineLifecycleSupport *string `type:"string"`

	// The DB engine mode of the DB cluster, either provisioned or serverless.
	//
	// For more information, see CreateDBCluster (https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html).
	//
	// Valid for: Aurora DB clusters only
	EngineMode *string `type:"string"`

	// The version of the database engine to use for the new DB cluster. If you
	// don't specify an engine version, the default version for the database engine
	// in the Amazon Web Services Region is used.
	//
	// To list all of the available engine versions for Aurora MySQL, use the following
	// command:
	//
	// aws rds describe-db-engine-versions --engine aurora-mysql --query "DBEngineVersions[].EngineVersion"
	//
	// To list all of the available engine versions for Aurora PostgreSQL, use the
	// following command:
	//
	// aws rds describe-db-engine-versions --engine aurora-postgresql --query "DBEngineVersions[].EngineVersion"
	//
	// To list all of the available engine versions for RDS for MySQL, use the following
	// command:
	//
	// aws rds describe-db-engine-versions --engine mysql --query "DBEngineVersions[].EngineVersion"
	//
	// To list all of the available engine versions for RDS for PostgreSQL, use
	// the following command:
	//
	// aws rds describe-db-engine-versions --engine postgres --query "DBEngineVersions[].EngineVersion"
	//
	// Aurora MySQL
	//
	// See Database engine updates for Amazon Aurora MySQL (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.html)
	// in the Amazon Aurora User Guide.
	//
	// Aurora PostgreSQL
	//
	// See Amazon Aurora PostgreSQL releases and engine versions (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html)
	// in the Amazon Aurora User Guide.
	//
	// MySQL
	//
	// See Amazon RDS for MySQL (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt)
	// in the Amazon RDS User Guide.
	//
	// PostgreSQL
	//
	// See Amazon RDS for PostgreSQL versions and extensions (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts)
	// in the Amazon RDS User Guide.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	EngineVersion *string `type:"string"`

	// The amount of Provisioned IOPS (input/output operations per second) to be
	// initially allocated for each DB instance in the Multi-AZ DB cluster.
	//
	// For information about valid IOPS values, see Amazon RDS Provisioned IOPS
	// storage (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#USER_PIOPS)
	// in the Amazon RDS User Guide.
	//
	// Constraints: Must be a multiple between .5 and 50 of the storage amount for
	// the DB instance.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	Iops *int64 `type:"integer"`

	// The Amazon Web Services KMS key identifier to use when restoring an encrypted
	// DB cluster from a DB snapshot or DB cluster snapshot.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key. To use a KMS key in a different Amazon
	// Web Services account, specify the key ARN or alias ARN.
	//
	// When you don't specify a value for the KmsKeyId parameter, then the following
	// occurs:
	//
	//    * If the DB snapshot or DB cluster snapshot in SnapshotIdentifier is encrypted,
	//    then the restored DB cluster is encrypted using the KMS key that was used
	//    to encrypt the DB snapshot or DB cluster snapshot.
	//
	//    * If the DB snapshot or DB cluster snapshot in SnapshotIdentifier isn't
	//    encrypted, then the restored DB cluster isn't encrypted.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	KmsKeyId *string `type:"string"`

	// The network type of the DB cluster.
	//
	// Valid Values:
	//
	//    * IPV4
	//
	//    * DUAL
	//
	// The network type is determined by the DBSubnetGroup specified for the DB
	// cluster. A DBSubnetGroup can support only the IPv4 protocol or the IPv4 and
	// the IPv6 protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for: Aurora DB clusters only
	NetworkType *string `type:"string"`

	// The name of the option group to use for the restored DB cluster.
	//
	// DB clusters are associated with a default option group that can't be modified.
	OptionGroupName *string `type:"string"`

	// The port number on which the new DB cluster accepts connections.
	//
	// Constraints: This value must be 1150-65535
	//
	// Default: The same port as the original DB cluster.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	Port *int64 `type:"integer"`

	// Specifies whether the DB cluster is publicly accessible.
	//
	// When the DB cluster is publicly accessible, its Domain Name System (DNS)
	// endpoint resolves to the private IP address from within the DB cluster's
	// virtual private cloud (VPC). It resolves to the public IP address from outside
	// of the DB cluster's VPC. Access to the DB cluster is ultimately controlled
	// by the security group it uses. That public access is not permitted if the
	// security group assigned to the DB cluster doesn't permit it.
	//
	// When the DB cluster isn't publicly accessible, it is an internal DB cluster
	// with a DNS name that resolves to a private IP address.
	//
	// Default: The default behavior varies depending on whether DBSubnetGroupName
	// is specified.
	//
	// If DBSubnetGroupName isn't specified, and PubliclyAccessible isn't specified,
	// the following applies:
	//
	//    * If the default VPC in the target Region doesn’t have an internet gateway
	//    attached to it, the DB cluster is private.
	//
	//    * If the default VPC in the target Region has an internet gateway attached
	//    to it, the DB cluster is public.
	//
	// If DBSubnetGroupName is specified, and PubliclyAccessible isn't specified,
	// the following applies:
	//
	//    * If the subnets are part of a VPC that doesn’t have an internet gateway
	//    attached to it, the DB cluster is private.
	//
	//    * If the subnets are part of a VPC that has an internet gateway attached
	//    to it, the DB cluster is public.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	PubliclyAccessible *bool `type:"boolean"`

	// Reserved for future use.
	RdsCustomClusterConfiguration *RdsCustomClusterConfiguration `type:"structure"`

	// For DB clusters in serverless DB engine mode, the scaling properties of the
	// DB cluster.
	//
	// Valid for: Aurora DB clusters only
	ScalingConfiguration *ScalingConfiguration `type:"structure"`

	// Contains the scaling configuration of an Aurora Serverless v2 DB cluster.
	//
	// For more information, see Using Amazon Aurora Serverless v2 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html)
	// in the Amazon Aurora User Guide.
	ServerlessV2ScalingConfiguration *ServerlessV2ScalingConfiguration `type:"structure"`

	// The identifier for the DB snapshot or DB cluster snapshot to restore from.
	//
	// You can use either the name or the Amazon Resource Name (ARN) to specify
	// a DB cluster snapshot. However, you can use only the ARN to specify a DB
	// snapshot.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing Snapshot.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	//
	// SnapshotIdentifier is a required field
	SnapshotIdentifier *string `type:"string" required:"true"`

	// Specifies the storage type to be associated with the DB cluster.
	//
	// When specified for a Multi-AZ DB cluster, a value for the Iops parameter
	// is required.
	//
	// Valid Values: aurora, aurora-iopt1 (Aurora DB clusters); io1 (Multi-AZ DB
	// clusters)
	//
	// Default: aurora (Aurora DB clusters); io1 (Multi-AZ DB clusters)
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	StorageType *string `type:"string"`

	// The tags to be assigned to the restored DB cluster.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// A list of VPC security groups that the new DB cluster will belong to.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	VpcSecurityGroupIds []*string `locationNameList:"VpcSecurityGroupId" 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 RestoreDBClusterFromSnapshotInput) 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 RestoreDBClusterFromSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RestoreDBClusterFromSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RestoreDBClusterFromSnapshotInput"}
	if s.DBClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterIdentifier"))
	}
	if s.Engine == nil {
		invalidParams.Add(request.NewErrParamRequired("Engine"))
	}
	if s.SnapshotIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("SnapshotIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAvailabilityZones sets the AvailabilityZones field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetAvailabilityZones(v []*string) *RestoreDBClusterFromSnapshotInput {
	s.AvailabilityZones = v
	return s
}

// SetBacktrackWindow sets the BacktrackWindow field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetBacktrackWindow(v int64) *RestoreDBClusterFromSnapshotInput {
	s.BacktrackWindow = &v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetCopyTagsToSnapshot(v bool) *RestoreDBClusterFromSnapshotInput {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetDBClusterIdentifier(v string) *RestoreDBClusterFromSnapshotInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBClusterInstanceClass sets the DBClusterInstanceClass field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetDBClusterInstanceClass(v string) *RestoreDBClusterFromSnapshotInput {
	s.DBClusterInstanceClass = &v
	return s
}

// SetDBClusterParameterGroupName sets the DBClusterParameterGroupName field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetDBClusterParameterGroupName(v string) *RestoreDBClusterFromSnapshotInput {
	s.DBClusterParameterGroupName = &v
	return s
}

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetDBSubnetGroupName(v string) *RestoreDBClusterFromSnapshotInput {
	s.DBSubnetGroupName = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetDatabaseName(v string) *RestoreDBClusterFromSnapshotInput {
	s.DatabaseName = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetDeletionProtection(v bool) *RestoreDBClusterFromSnapshotInput {
	s.DeletionProtection = &v
	return s
}

// SetDomain sets the Domain field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetDomain(v string) *RestoreDBClusterFromSnapshotInput {
	s.Domain = &v
	return s
}

// SetDomainIAMRoleName sets the DomainIAMRoleName field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetDomainIAMRoleName(v string) *RestoreDBClusterFromSnapshotInput {
	s.DomainIAMRoleName = &v
	return s
}

// SetEnableCloudwatchLogsExports sets the EnableCloudwatchLogsExports field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetEnableCloudwatchLogsExports(v []*string) *RestoreDBClusterFromSnapshotInput {
	s.EnableCloudwatchLogsExports = v
	return s
}

// SetEnableIAMDatabaseAuthentication sets the EnableIAMDatabaseAuthentication field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetEnableIAMDatabaseAuthentication(v bool) *RestoreDBClusterFromSnapshotInput {
	s.EnableIAMDatabaseAuthentication = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetEngine(v string) *RestoreDBClusterFromSnapshotInput {
	s.Engine = &v
	return s
}

// SetEngineLifecycleSupport sets the EngineLifecycleSupport field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetEngineLifecycleSupport(v string) *RestoreDBClusterFromSnapshotInput {
	s.EngineLifecycleSupport = &v
	return s
}

// SetEngineMode sets the EngineMode field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetEngineMode(v string) *RestoreDBClusterFromSnapshotInput {
	s.EngineMode = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetEngineVersion(v string) *RestoreDBClusterFromSnapshotInput {
	s.EngineVersion = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetIops(v int64) *RestoreDBClusterFromSnapshotInput {
	s.Iops = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetKmsKeyId(v string) *RestoreDBClusterFromSnapshotInput {
	s.KmsKeyId = &v
	return s
}

// SetNetworkType sets the NetworkType field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetNetworkType(v string) *RestoreDBClusterFromSnapshotInput {
	s.NetworkType = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetOptionGroupName(v string) *RestoreDBClusterFromSnapshotInput {
	s.OptionGroupName = &v
	return s
}

// SetPort sets the Port field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetPort(v int64) *RestoreDBClusterFromSnapshotInput {
	s.Port = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetPubliclyAccessible(v bool) *RestoreDBClusterFromSnapshotInput {
	s.PubliclyAccessible = &v
	return s
}

// SetRdsCustomClusterConfiguration sets the RdsCustomClusterConfiguration field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetRdsCustomClusterConfiguration(v *RdsCustomClusterConfiguration) *RestoreDBClusterFromSnapshotInput {
	s.RdsCustomClusterConfiguration = v
	return s
}

// SetScalingConfiguration sets the ScalingConfiguration field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetScalingConfiguration(v *ScalingConfiguration) *RestoreDBClusterFromSnapshotInput {
	s.ScalingConfiguration = v
	return s
}

// SetServerlessV2ScalingConfiguration sets the ServerlessV2ScalingConfiguration field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetServerlessV2ScalingConfiguration(v *ServerlessV2ScalingConfiguration) *RestoreDBClusterFromSnapshotInput {
	s.ServerlessV2ScalingConfiguration = v
	return s
}

// SetSnapshotIdentifier sets the SnapshotIdentifier field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetSnapshotIdentifier(v string) *RestoreDBClusterFromSnapshotInput {
	s.SnapshotIdentifier = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetStorageType(v string) *RestoreDBClusterFromSnapshotInput {
	s.StorageType = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetTags(v []*Tag) *RestoreDBClusterFromSnapshotInput {
	s.Tags = v
	return s
}

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *RestoreDBClusterFromSnapshotInput) SetVpcSecurityGroupIds(v []*string) *RestoreDBClusterFromSnapshotInput {
	s.VpcSecurityGroupIds = v
	return s
}

type RestoreDBClusterFromSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon Aurora DB cluster or Multi-AZ DB cluster.
	//
	// For an Amazon Aurora DB cluster, this data type is used as a response element
	// in the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, PromoteReadReplicaDBCluster, RestoreDBClusterFromS3, RestoreDBClusterFromSnapshot,
	// RestoreDBClusterToPointInTime, StartDBCluster, and StopDBCluster.
	//
	// For a Multi-AZ DB cluster, this data type is used as a response element in
	// the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, RebootDBCluster, RestoreDBClusterFromSnapshot, and RestoreDBClusterToPointInTime.
	//
	// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
	// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
	// in the Amazon Aurora User Guide.
	//
	// For more information on Multi-AZ DB clusters, see Multi-AZ deployments with
	// two readable standby DB instances (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
	// in the Amazon RDS User Guide.
	DBCluster *DBCluster `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 RestoreDBClusterFromSnapshotOutput) 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 RestoreDBClusterFromSnapshotOutput) GoString() string {
	return s.String()
}

// SetDBCluster sets the DBCluster field's value.
func (s *RestoreDBClusterFromSnapshotOutput) SetDBCluster(v *DBCluster) *RestoreDBClusterFromSnapshotOutput {
	s.DBCluster = v
	return s
}

type RestoreDBClusterToPointInTimeInput struct {
	_ struct{} `type:"structure"`

	// The target backtrack window, in seconds. To disable backtracking, set this
	// value to 0.
	//
	// Default: 0
	//
	// Constraints:
	//
	//    * If specified, this value must be set to a number from 0 to 259,200 (72
	//    hours).
	//
	// Valid for: Aurora MySQL DB clusters only
	BacktrackWindow *int64 `type:"long"`

	// Specifies whether to copy all tags from the restored DB cluster to snapshots
	// of the restored DB cluster. The default is not to copy them.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	CopyTagsToSnapshot *bool `type:"boolean"`

	// The name of the new DB cluster to be created.
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 letters, numbers, or hyphens
	//
	//    * First character must be a letter
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `type:"string" required:"true"`

	// The compute and memory capacity of the each DB instance in the Multi-AZ DB
	// cluster, for example db.m6gd.xlarge. Not all DB instance classes are available
	// in all Amazon Web Services Regions, or for all database engines.
	//
	// For the full list of DB instance classes, and availability for your engine,
	// see DB instance class (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
	// in the Amazon RDS User Guide.
	//
	// Valid for: Multi-AZ DB clusters only
	DBClusterInstanceClass *string `type:"string"`

	// The name of the custom DB cluster parameter group to associate with this
	// DB cluster.
	//
	// If the DBClusterParameterGroupName parameter is omitted, the default DB cluster
	// parameter group for the specified engine is used.
	//
	// Constraints:
	//
	//    * If supplied, must match the name of an existing DB cluster parameter
	//    group.
	//
	//    * Must be 1 to 255 letters, numbers, or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	DBClusterParameterGroupName *string `type:"string"`

	// The DB subnet group name to use for the new DB cluster.
	//
	// Constraints: If supplied, must match the name of an existing DBSubnetGroup.
	//
	// Example: mydbsubnetgroup
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	DBSubnetGroupName *string `type:"string"`

	// Specifies whether to enable deletion protection for the DB cluster. The database
	// can't be deleted when deletion protection is enabled. By default, deletion
	// protection isn't enabled.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	DeletionProtection *bool `type:"boolean"`

	// The Active Directory directory ID to restore the DB cluster in. The domain
	// must be created prior to this operation.
	//
	// For Amazon Aurora DB clusters, Amazon RDS can use Kerberos Authentication
	// to authenticate users that connect to the DB cluster. For more information,
	// see Kerberos Authentication (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/kerberos-authentication.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for: Aurora DB clusters only
	Domain *string `type:"string"`

	// The name of the IAM role to be used when making API calls to the Directory
	// Service.
	//
	// Valid for: Aurora DB clusters only
	DomainIAMRoleName *string `type:"string"`

	// The list of logs that the restored DB cluster is to export to CloudWatch
	// Logs. The values in the list depend on the DB engine being used.
	//
	// RDS for MySQL
	//
	// Possible values are error, general, and slowquery.
	//
	// RDS for PostgreSQL
	//
	// Possible values are postgresql and upgrade.
	//
	// Aurora MySQL
	//
	// Possible values are audit, error, general, and slowquery.
	//
	// Aurora PostgreSQL
	//
	// Possible value is postgresql.
	//
	// For more information about exporting CloudWatch Logs for Amazon RDS, see
	// Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
	// in the Amazon RDS User Guide.
	//
	// For more information about exporting CloudWatch Logs for Amazon Aurora, see
	// Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
	// in the Amazon Aurora User Guide.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	EnableCloudwatchLogsExports []*string `type:"list"`

	// Specifies whether to enable mapping of Amazon Web Services Identity and Access
	// Management (IAM) accounts to database accounts. By default, mapping isn't
	// enabled.
	//
	// For more information, see IAM Database Authentication (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for: Aurora DB clusters only
	EnableIAMDatabaseAuthentication *bool `type:"boolean"`

	// The life cycle type for this DB cluster.
	//
	// By default, this value is set to open-source-rds-extended-support, which
	// enrolls your DB cluster into Amazon RDS Extended Support. At the end of standard
	// support, you can avoid charges for Extended Support by setting the value
	// to open-source-rds-extended-support-disabled. In this case, RDS automatically
	// upgrades your restored DB cluster to a higher engine version, if the major
	// engine version is past its end of standard support date.
	//
	// You can use this setting to enroll your DB cluster into Amazon RDS Extended
	// Support. With RDS Extended Support, you can run the selected major engine
	// version on your DB cluster past the end of standard support for that engine
	// version. For more information, see the following sections:
	//
	//    * Amazon Aurora (PostgreSQL only) - Using Amazon RDS Extended Support
	//    (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/extended-support.html)
	//    in the Amazon Aurora User Guide
	//
	//    * Amazon RDS - Using Amazon RDS Extended Support (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html)
	//    in the Amazon RDS User Guide
	//
	// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
	//
	// Valid Values: open-source-rds-extended-support | open-source-rds-extended-support-disabled
	//
	// Default: open-source-rds-extended-support
	EngineLifecycleSupport *string `type:"string"`

	// The engine mode of the new cluster. Specify provisioned or serverless, depending
	// on the type of the cluster you are creating. You can create an Aurora Serverless
	// v1 clone from a provisioned cluster, or a provisioned clone from an Aurora
	// Serverless v1 cluster. To create a clone that is an Aurora Serverless v1
	// cluster, the original cluster must be an Aurora Serverless v1 cluster or
	// an encrypted provisioned cluster.
	//
	// Valid for: Aurora DB clusters only
	EngineMode *string `type:"string"`

	// The amount of Provisioned IOPS (input/output operations per second) to be
	// initially allocated for each DB instance in the Multi-AZ DB cluster.
	//
	// For information about valid IOPS values, see Amazon RDS Provisioned IOPS
	// storage (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#USER_PIOPS)
	// in the Amazon RDS User Guide.
	//
	// Constraints: Must be a multiple between .5 and 50 of the storage amount for
	// the DB instance.
	//
	// Valid for: Multi-AZ DB clusters only
	Iops *int64 `type:"integer"`

	// The Amazon Web Services KMS key identifier to use when restoring an encrypted
	// DB cluster from an encrypted DB cluster.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key. To use a KMS key in a different Amazon
	// Web Services account, specify the key ARN or alias ARN.
	//
	// You can restore to a new DB cluster and encrypt the new DB cluster with a
	// KMS key that is different from the KMS key used to encrypt the source DB
	// cluster. The new DB cluster is encrypted with the KMS key identified by the
	// KmsKeyId parameter.
	//
	// If you don't specify a value for the KmsKeyId parameter, then the following
	// occurs:
	//
	//    * If the DB cluster is encrypted, then the restored DB cluster is encrypted
	//    using the KMS key that was used to encrypt the source DB cluster.
	//
	//    * If the DB cluster isn't encrypted, then the restored DB cluster isn't
	//    encrypted.
	//
	// If DBClusterIdentifier refers to a DB cluster that isn't encrypted, then
	// the restore request is rejected.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	KmsKeyId *string `type:"string"`

	// The network type of the DB cluster.
	//
	// Valid Values:
	//
	//    * IPV4
	//
	//    * DUAL
	//
	// The network type is determined by the DBSubnetGroup specified for the DB
	// cluster. A DBSubnetGroup can support only the IPv4 protocol or the IPv4 and
	// the IPv6 protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon Aurora User Guide.
	//
	// Valid for: Aurora DB clusters only
	NetworkType *string `type:"string"`

	// The name of the option group for the new DB cluster.
	//
	// DB clusters are associated with a default option group that can't be modified.
	OptionGroupName *string `type:"string"`

	// The port number on which the new DB cluster accepts connections.
	//
	// Constraints: A value from 1150-65535.
	//
	// Default: The default port for the engine.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	Port *int64 `type:"integer"`

	// Specifies whether the DB cluster is publicly accessible.
	//
	// When the DB cluster is publicly accessible, its Domain Name System (DNS)
	// endpoint resolves to the private IP address from within the DB cluster's
	// virtual private cloud (VPC). It resolves to the public IP address from outside
	// of the DB cluster's VPC. Access to the DB cluster is ultimately controlled
	// by the security group it uses. That public access is not permitted if the
	// security group assigned to the DB cluster doesn't permit it.
	//
	// When the DB cluster isn't publicly accessible, it is an internal DB cluster
	// with a DNS name that resolves to a private IP address.
	//
	// Default: The default behavior varies depending on whether DBSubnetGroupName
	// is specified.
	//
	// If DBSubnetGroupName isn't specified, and PubliclyAccessible isn't specified,
	// the following applies:
	//
	//    * If the default VPC in the target Region doesn’t have an internet gateway
	//    attached to it, the DB cluster is private.
	//
	//    * If the default VPC in the target Region has an internet gateway attached
	//    to it, the DB cluster is public.
	//
	// If DBSubnetGroupName is specified, and PubliclyAccessible isn't specified,
	// the following applies:
	//
	//    * If the subnets are part of a VPC that doesn’t have an internet gateway
	//    attached to it, the DB cluster is private.
	//
	//    * If the subnets are part of a VPC that has an internet gateway attached
	//    to it, the DB cluster is public.
	//
	// Valid for: Multi-AZ DB clusters only
	PubliclyAccessible *bool `type:"boolean"`

	// Reserved for future use.
	RdsCustomClusterConfiguration *RdsCustomClusterConfiguration `type:"structure"`

	// The date and time to restore the DB cluster to.
	//
	// Valid Values: Value must be a time in Universal Coordinated Time (UTC) format
	//
	// Constraints:
	//
	//    * Must be before the latest restorable time for the DB instance
	//
	//    * Must be specified if UseLatestRestorableTime parameter isn't provided
	//
	//    * Can't be specified if the UseLatestRestorableTime parameter is enabled
	//
	//    * Can't be specified if the RestoreType parameter is copy-on-write
	//
	// Example: 2015-03-07T23:45:00Z
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	RestoreToTime *time.Time `type:"timestamp"`

	// The type of restore to be performed. You can specify one of the following
	// values:
	//
	//    * full-copy - The new DB cluster is restored as a full copy of the source
	//    DB cluster.
	//
	//    * copy-on-write - The new DB cluster is restored as a clone of the source
	//    DB cluster.
	//
	// If you don't specify a RestoreType value, then the new DB cluster is restored
	// as a full copy of the source DB cluster.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	RestoreType *string `type:"string"`

	// For DB clusters in serverless DB engine mode, the scaling properties of the
	// DB cluster.
	//
	// Valid for: Aurora DB clusters only
	ScalingConfiguration *ScalingConfiguration `type:"structure"`

	// Contains the scaling configuration of an Aurora Serverless v2 DB cluster.
	//
	// For more information, see Using Amazon Aurora Serverless v2 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html)
	// in the Amazon Aurora User Guide.
	ServerlessV2ScalingConfiguration *ServerlessV2ScalingConfiguration `type:"structure"`

	// The identifier of the source DB cluster from which to restore.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DBCluster.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	SourceDBClusterIdentifier *string `type:"string"`

	// The resource ID of the source DB cluster from which to restore.
	SourceDbClusterResourceId *string `type:"string"`

	// Specifies the storage type to be associated with the DB cluster.
	//
	// When specified for a Multi-AZ DB cluster, a value for the Iops parameter
	// is required.
	//
	// Valid Values: aurora, aurora-iopt1 (Aurora DB clusters); io1 (Multi-AZ DB
	// clusters)
	//
	// Default: aurora (Aurora DB clusters); io1 (Multi-AZ DB clusters)
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	StorageType *string `type:"string"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// Specifies whether to restore the DB cluster to the latest restorable backup
	// time. By default, the DB cluster isn't restored to the latest restorable
	// backup time.
	//
	// Constraints: Can't be specified if RestoreToTime parameter is provided.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	UseLatestRestorableTime *bool `type:"boolean"`

	// A list of VPC security groups that the new DB cluster belongs to.
	//
	// Valid for: Aurora DB clusters and Multi-AZ DB clusters
	VpcSecurityGroupIds []*string `locationNameList:"VpcSecurityGroupId" 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 RestoreDBClusterToPointInTimeInput) 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 RestoreDBClusterToPointInTimeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RestoreDBClusterToPointInTimeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RestoreDBClusterToPointInTimeInput"}
	if s.DBClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBacktrackWindow sets the BacktrackWindow field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetBacktrackWindow(v int64) *RestoreDBClusterToPointInTimeInput {
	s.BacktrackWindow = &v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetCopyTagsToSnapshot(v bool) *RestoreDBClusterToPointInTimeInput {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetDBClusterIdentifier(v string) *RestoreDBClusterToPointInTimeInput {
	s.DBClusterIdentifier = &v
	return s
}

// SetDBClusterInstanceClass sets the DBClusterInstanceClass field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetDBClusterInstanceClass(v string) *RestoreDBClusterToPointInTimeInput {
	s.DBClusterInstanceClass = &v
	return s
}

// SetDBClusterParameterGroupName sets the DBClusterParameterGroupName field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetDBClusterParameterGroupName(v string) *RestoreDBClusterToPointInTimeInput {
	s.DBClusterParameterGroupName = &v
	return s
}

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetDBSubnetGroupName(v string) *RestoreDBClusterToPointInTimeInput {
	s.DBSubnetGroupName = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetDeletionProtection(v bool) *RestoreDBClusterToPointInTimeInput {
	s.DeletionProtection = &v
	return s
}

// SetDomain sets the Domain field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetDomain(v string) *RestoreDBClusterToPointInTimeInput {
	s.Domain = &v
	return s
}

// SetDomainIAMRoleName sets the DomainIAMRoleName field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetDomainIAMRoleName(v string) *RestoreDBClusterToPointInTimeInput {
	s.DomainIAMRoleName = &v
	return s
}

// SetEnableCloudwatchLogsExports sets the EnableCloudwatchLogsExports field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetEnableCloudwatchLogsExports(v []*string) *RestoreDBClusterToPointInTimeInput {
	s.EnableCloudwatchLogsExports = v
	return s
}

// SetEnableIAMDatabaseAuthentication sets the EnableIAMDatabaseAuthentication field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetEnableIAMDatabaseAuthentication(v bool) *RestoreDBClusterToPointInTimeInput {
	s.EnableIAMDatabaseAuthentication = &v
	return s
}

// SetEngineLifecycleSupport sets the EngineLifecycleSupport field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetEngineLifecycleSupport(v string) *RestoreDBClusterToPointInTimeInput {
	s.EngineLifecycleSupport = &v
	return s
}

// SetEngineMode sets the EngineMode field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetEngineMode(v string) *RestoreDBClusterToPointInTimeInput {
	s.EngineMode = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetIops(v int64) *RestoreDBClusterToPointInTimeInput {
	s.Iops = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetKmsKeyId(v string) *RestoreDBClusterToPointInTimeInput {
	s.KmsKeyId = &v
	return s
}

// SetNetworkType sets the NetworkType field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetNetworkType(v string) *RestoreDBClusterToPointInTimeInput {
	s.NetworkType = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetOptionGroupName(v string) *RestoreDBClusterToPointInTimeInput {
	s.OptionGroupName = &v
	return s
}

// SetPort sets the Port field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetPort(v int64) *RestoreDBClusterToPointInTimeInput {
	s.Port = &v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetPubliclyAccessible(v bool) *RestoreDBClusterToPointInTimeInput {
	s.PubliclyAccessible = &v
	return s
}

// SetRdsCustomClusterConfiguration sets the RdsCustomClusterConfiguration field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetRdsCustomClusterConfiguration(v *RdsCustomClusterConfiguration) *RestoreDBClusterToPointInTimeInput {
	s.RdsCustomClusterConfiguration = v
	return s
}

// SetRestoreToTime sets the RestoreToTime field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetRestoreToTime(v time.Time) *RestoreDBClusterToPointInTimeInput {
	s.RestoreToTime = &v
	return s
}

// SetRestoreType sets the RestoreType field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetRestoreType(v string) *RestoreDBClusterToPointInTimeInput {
	s.RestoreType = &v
	return s
}

// SetScalingConfiguration sets the ScalingConfiguration field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetScalingConfiguration(v *ScalingConfiguration) *RestoreDBClusterToPointInTimeInput {
	s.ScalingConfiguration = v
	return s
}

// SetServerlessV2ScalingConfiguration sets the ServerlessV2ScalingConfiguration field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetServerlessV2ScalingConfiguration(v *ServerlessV2ScalingConfiguration) *RestoreDBClusterToPointInTimeInput {
	s.ServerlessV2ScalingConfiguration = v
	return s
}

// SetSourceDBClusterIdentifier sets the SourceDBClusterIdentifier field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetSourceDBClusterIdentifier(v string) *RestoreDBClusterToPointInTimeInput {
	s.SourceDBClusterIdentifier = &v
	return s
}

// SetSourceDbClusterResourceId sets the SourceDbClusterResourceId field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetSourceDbClusterResourceId(v string) *RestoreDBClusterToPointInTimeInput {
	s.SourceDbClusterResourceId = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetStorageType(v string) *RestoreDBClusterToPointInTimeInput {
	s.StorageType = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetTags(v []*Tag) *RestoreDBClusterToPointInTimeInput {
	s.Tags = v
	return s
}

// SetUseLatestRestorableTime sets the UseLatestRestorableTime field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetUseLatestRestorableTime(v bool) *RestoreDBClusterToPointInTimeInput {
	s.UseLatestRestorableTime = &v
	return s
}

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *RestoreDBClusterToPointInTimeInput) SetVpcSecurityGroupIds(v []*string) *RestoreDBClusterToPointInTimeInput {
	s.VpcSecurityGroupIds = v
	return s
}

type RestoreDBClusterToPointInTimeOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon Aurora DB cluster or Multi-AZ DB cluster.
	//
	// For an Amazon Aurora DB cluster, this data type is used as a response element
	// in the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, PromoteReadReplicaDBCluster, RestoreDBClusterFromS3, RestoreDBClusterFromSnapshot,
	// RestoreDBClusterToPointInTime, StartDBCluster, and StopDBCluster.
	//
	// For a Multi-AZ DB cluster, this data type is used as a response element in
	// the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, RebootDBCluster, RestoreDBClusterFromSnapshot, and RestoreDBClusterToPointInTime.
	//
	// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
	// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
	// in the Amazon Aurora User Guide.
	//
	// For more information on Multi-AZ DB clusters, see Multi-AZ deployments with
	// two readable standby DB instances (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
	// in the Amazon RDS User Guide.
	DBCluster *DBCluster `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 RestoreDBClusterToPointInTimeOutput) 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 RestoreDBClusterToPointInTimeOutput) GoString() string {
	return s.String()
}

// SetDBCluster sets the DBCluster field's value.
func (s *RestoreDBClusterToPointInTimeOutput) SetDBCluster(v *DBCluster) *RestoreDBClusterToPointInTimeOutput {
	s.DBCluster = v
	return s
}

type RestoreDBInstanceFromDBSnapshotInput struct {
	_ struct{} `type:"structure"`

	// The amount of storage (in gibibytes) to allocate initially for the DB instance.
	// Follow the allocation rules specified in CreateDBInstance.
	//
	// Be sure to allocate enough storage for your new DB instance so that the restore
	// operation can succeed. You can also allocate additional storage for future
	// growth.
	AllocatedStorage *int64 `type:"integer"`

	// Specifies whether to automatically apply minor version upgrades to the DB
	// instance during the maintenance window.
	//
	// If you restore an RDS Custom DB instance, you must disable this parameter.
	AutoMinorVersionUpgrade *bool `type:"boolean"`

	// The Availability Zone (AZ) where the DB instance will be created.
	//
	// Default: A random, system-chosen Availability Zone.
	//
	// Constraint: You can't specify the AvailabilityZone parameter if the DB instance
	// is a Multi-AZ deployment.
	//
	// Example: us-east-1a
	AvailabilityZone *string `type:"string"`

	// Specifies where automated backups and manual snapshots are stored for the
	// restored DB instance.
	//
	// Possible values are outposts (Amazon Web Services Outposts) and region (Amazon
	// Web Services Region). The default is region.
	//
	// For more information, see Working with Amazon RDS on Amazon Web Services
	// Outposts (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html)
	// in the Amazon RDS User Guide.
	BackupTarget *string `type:"string"`

	// The CA certificate identifier to use for the DB instance's server certificate.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	CACertificateIdentifier *string `type:"string"`

	// Specifies whether to copy all tags from the restored DB instance to snapshots
	// of the DB instance.
	//
	// In most cases, tags aren't copied by default. However, when you restore a
	// DB instance from a DB snapshot, RDS checks whether you specify new tags.
	// If yes, the new tags are added to the restored DB instance. If there are
	// no new tags, RDS looks for the tags from the source DB instance for the DB
	// snapshot, and then adds those tags to the restored DB instance.
	//
	// For more information, see Copying tags to DB instance snapshots (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html#USER_Tagging.CopyTags)
	// in the Amazon RDS User Guide.
	CopyTagsToSnapshot *bool `type:"boolean"`

	// The instance profile associated with the underlying Amazon EC2 instance of
	// an RDS Custom DB instance. The instance profile must meet the following requirements:
	//
	//    * The profile must exist in your account.
	//
	//    * The profile must have an IAM role that Amazon EC2 has permissions to
	//    assume.
	//
	//    * The instance profile name and the associated IAM role name must start
	//    with the prefix AWSRDSCustom.
	//
	// For the list of permissions required for the IAM role, see Configure IAM
	// and your VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc)
	// in the Amazon RDS User Guide.
	//
	// This setting is required for RDS Custom.
	CustomIamInstanceProfile *string `type:"string"`

	// The identifier for the Multi-AZ DB cluster snapshot to restore from.
	//
	// For more information on Multi-AZ DB clusters, see Multi-AZ DB cluster deployments
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
	// in the Amazon RDS User Guide.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing Multi-AZ DB cluster snapshot.
	//
	//    * Can't be specified when DBSnapshotIdentifier is specified.
	//
	//    * Must be specified when DBSnapshotIdentifier isn't specified.
	//
	//    * If you are restoring from a shared manual Multi-AZ DB cluster snapshot,
	//    the DBClusterSnapshotIdentifier must be the ARN of the shared snapshot.
	//
	//    * Can't be the identifier of an Aurora DB cluster snapshot.
	DBClusterSnapshotIdentifier *string `type:"string"`

	// The compute and memory capacity of the Amazon RDS DB instance, for example
	// db.m4.large. Not all DB instance classes are available in all Amazon Web
	// Services Regions, or for all database engines. For the full list of DB instance
	// classes, and availability for your engine, see DB Instance Class (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
	// in the Amazon RDS User Guide.
	//
	// Default: The same DBInstanceClass as the original DB instance.
	DBInstanceClass *string `type:"string"`

	// The name of the DB instance to create from the DB snapshot. This parameter
	// isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 numbers, letters, or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Example: my-snapshot-id
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// The name of the database for the restored DB instance.
	//
	// This parameter only applies to RDS for Oracle and RDS for SQL Server DB instances.
	// It doesn't apply to the other engines or to RDS Custom DB instances.
	DBName *string `type:"string"`

	// The name of the DB parameter group to associate with this DB instance.
	//
	// If you don't specify a value for DBParameterGroupName, then RDS uses the
	// default DBParameterGroup for the specified DB engine.
	//
	// This setting doesn't apply to RDS Custom.
	//
	// Constraints:
	//
	//    * If supplied, must match the name of an existing DB parameter group.
	//
	//    * Must be 1 to 255 letters, numbers, or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	DBParameterGroupName *string `type:"string"`

	// The identifier for the DB snapshot to restore from.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DB snapshot.
	//
	//    * Can't be specified when DBClusterSnapshotIdentifier is specified.
	//
	//    * Must be specified when DBClusterSnapshotIdentifier isn't specified.
	//
	//    * If you are restoring from a shared manual DB snapshot, the DBSnapshotIdentifier
	//    must be the ARN of the shared DB snapshot.
	DBSnapshotIdentifier *string `type:"string"`

	// The name of the DB subnet group to use for the new instance.
	//
	// Constraints:
	//
	//    * If supplied, must match the name of an existing DB subnet group.
	//
	// Example: mydbsubnetgroup
	DBSubnetGroupName *string `type:"string"`

	// Specifies whether to enable a dedicated log volume (DLV) for the DB instance.
	DedicatedLogVolume *bool `type:"boolean"`

	// Specifies whether to enable deletion protection for the DB instance. The
	// database can't be deleted when deletion protection is enabled. By default,
	// deletion protection isn't enabled. For more information, see Deleting a DB
	// Instance (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html).
	DeletionProtection *bool `type:"boolean"`

	// The Active Directory directory ID to restore the DB instance in. The domain/
	// must be created prior to this operation. Currently, you can create only Db2,
	// MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB instances in an Active
	// Directory Domain.
	//
	// For more information, see Kerberos Authentication (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom.
	Domain *string `type:"string"`

	// The ARN for the Secrets Manager secret with the credentials for the user
	// joining the domain.
	//
	// Constraints:
	//
	//    * Can't be longer than 64 characters.
	//
	// Example: arn:aws:secretsmanager:region:account-number:secret:myselfmanagedADtestsecret-123456
	DomainAuthSecretArn *string `type:"string"`

	// The IPv4 DNS IP addresses of your primary and secondary Active Directory
	// domain controllers.
	//
	// Constraints:
	//
	//    * Two IP addresses must be provided. If there isn't a secondary domain
	//    controller, use the IP address of the primary domain controller for both
	//    entries in the list.
	//
	// Example: 123.124.125.126,234.235.236.237
	DomainDnsIps []*string `type:"list"`

	// The fully qualified domain name (FQDN) of an Active Directory domain.
	//
	// Constraints:
	//
	//    * Can't be longer than 64 characters.
	//
	// Example: mymanagedADtest.mymanagedAD.mydomain
	DomainFqdn *string `type:"string"`

	// The name of the IAM role to use when making API calls to the Directory Service.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	DomainIAMRoleName *string `type:"string"`

	// The Active Directory organizational unit for your DB instance to join.
	//
	// Constraints:
	//
	//    * Must be in the distinguished name format.
	//
	//    * Can't be longer than 64 characters.
	//
	// Example: OU=mymanagedADtestOU,DC=mymanagedADtest,DC=mymanagedAD,DC=mydomain
	DomainOu *string `type:"string"`

	// The list of logs for the restored DB instance to export to CloudWatch Logs.
	// The values in the list depend on the DB engine. For more information, see
	// Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom.
	EnableCloudwatchLogsExports []*string `type:"list"`

	// Specifies whether to enable a customer-owned IP address (CoIP) for an RDS
	// on Outposts DB instance.
	//
	// A CoIP provides local or external connectivity to resources in your Outpost
	// subnets through your on-premises network. For some use cases, a CoIP can
	// provide lower latency for connections to the DB instance from outside of
	// its virtual private cloud (VPC) on your local network.
	//
	// This setting doesn't apply to RDS Custom.
	//
	// For more information about RDS on Outposts, see Working with Amazon RDS on
	// Amazon Web Services Outposts (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html)
	// in the Amazon RDS User Guide.
	//
	// For more information about CoIPs, see Customer-owned IP addresses (https://docs.aws.amazon.com/outposts/latest/userguide/routing.html#ip-addressing)
	// in the Amazon Web Services Outposts User Guide.
	EnableCustomerOwnedIp *bool `type:"boolean"`

	// Specifies whether to enable mapping of Amazon Web Services Identity and Access
	// Management (IAM) accounts to database accounts. By default, mapping is disabled.
	//
	// For more information about IAM database authentication, see IAM Database
	// Authentication for MySQL and PostgreSQL (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom.
	EnableIAMDatabaseAuthentication *bool `type:"boolean"`

	// The database engine to use for the new instance.
	//
	// This setting doesn't apply to RDS Custom.
	//
	// Default: The same as source
	//
	// Constraint: Must be compatible with the engine of the source. For example,
	// you can restore a MariaDB 10.1 DB instance from a MySQL 5.6 snapshot.
	//
	// Valid Values:
	//
	//    * db2-ae
	//
	//    * db2-se
	//
	//    * mariadb
	//
	//    * mysql
	//
	//    * oracle-ee
	//
	//    * oracle-ee-cdb
	//
	//    * oracle-se2
	//
	//    * oracle-se2-cdb
	//
	//    * postgres
	//
	//    * sqlserver-ee
	//
	//    * sqlserver-se
	//
	//    * sqlserver-ex
	//
	//    * sqlserver-web
	Engine *string `type:"string"`

	// The life cycle type for this DB instance.
	//
	// By default, this value is set to open-source-rds-extended-support, which
	// enrolls your DB instance into Amazon RDS Extended Support. At the end of
	// standard support, you can avoid charges for Extended Support by setting the
	// value to open-source-rds-extended-support-disabled. In this case, RDS automatically
	// upgrades your restored DB instance to a higher engine version, if the major
	// engine version is past its end of standard support date.
	//
	// You can use this setting to enroll your DB instance into Amazon RDS Extended
	// Support. With RDS Extended Support, you can run the selected major engine
	// version on your DB instance past the end of standard support for that engine
	// version. For more information, see Using Amazon RDS Extended Support (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html)
	// in the Amazon RDS User Guide.
	//
	// This setting applies only to RDS for MySQL and RDS for PostgreSQL. For Amazon
	// Aurora DB instances, the life cycle type is managed by the DB cluster.
	//
	// Valid Values: open-source-rds-extended-support | open-source-rds-extended-support-disabled
	//
	// Default: open-source-rds-extended-support
	EngineLifecycleSupport *string `type:"string"`

	// Specifies the amount of provisioned IOPS for the DB instance, expressed in
	// I/O operations per second. If this parameter isn't specified, the IOPS value
	// is taken from the backup. If this parameter is set to 0, the new instance
	// is converted to a non-PIOPS instance. The conversion takes additional time,
	// though your DB instance is available for connections before the conversion
	// starts.
	//
	// The provisioned IOPS value must follow the requirements for your database
	// engine. For more information, see Amazon RDS Provisioned IOPS storage (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#USER_PIOPS)
	// in the Amazon RDS User Guide.
	//
	// Constraints: Must be an integer greater than 1000.
	Iops *int64 `type:"integer"`

	// License model information for the restored DB instance.
	//
	// License models for RDS for Db2 require additional configuration. The Bring
	// Your Own License (BYOL) model requires a custom parameter group. The Db2
	// license through Amazon Web Services Marketplace model requires an Amazon
	// Web Services Marketplace subscription. For more information, see RDS for
	// Db2 licensing options (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-licensing.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
	//
	// Valid Values:
	//
	//    * RDS for Db2 - bring-your-own-license | marketplace-license
	//
	//    * RDS for MariaDB - general-public-license
	//
	//    * RDS for Microsoft SQL Server - license-included
	//
	//    * RDS for MySQL - general-public-license
	//
	//    * RDS for Oracle - bring-your-own-license | license-included
	//
	//    * RDS for PostgreSQL - postgresql-license
	//
	// Default: Same as the source.
	LicenseModel *string `type:"string"`

	// Specifies whether the DB instance is a Multi-AZ deployment.
	//
	// This setting doesn't apply to RDS Custom.
	//
	// Constraint: You can't specify the AvailabilityZone parameter if the DB instance
	// is a Multi-AZ deployment.
	MultiAZ *bool `type:"boolean"`

	// The network type of the DB instance.
	//
	// Valid Values:
	//
	//    * IPV4
	//
	//    * DUAL
	//
	// The network type is determined by the DBSubnetGroup specified for the DB
	// instance. A DBSubnetGroup can support only the IPv4 protocol or the IPv4
	// and the IPv6 protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon RDS User Guide.
	NetworkType *string `type:"string"`

	// The name of the option group to be used for the restored DB instance.
	//
	// Permanent options, such as the TDE option for Oracle Advanced Security TDE,
	// can't be removed from an option group, and that option group can't be removed
	// from a DB instance after it is associated with a DB instance.
	//
	// This setting doesn't apply to RDS Custom.
	OptionGroupName *string `type:"string"`

	// The port number on which the database accepts connections.
	//
	// Default: The same port as the original DB instance
	//
	// Constraints: Value must be 1150-65535
	Port *int64 `type:"integer"`

	// The number of CPU cores and the number of threads per core for the DB instance
	// class of the DB instance.
	//
	// This setting doesn't apply to RDS Custom.
	ProcessorFeatures []*ProcessorFeature `locationNameList:"ProcessorFeature" type:"list"`

	// Specifies whether the DB instance is publicly accessible.
	//
	// When the DB instance is publicly accessible, its Domain Name System (DNS)
	// endpoint resolves to the private IP address from within the DB instance's
	// virtual private cloud (VPC). It resolves to the public IP address from outside
	// of the DB instance's VPC. Access to the DB instance is ultimately controlled
	// by the security group it uses. That public access is not permitted if the
	// security group assigned to the DB instance doesn't permit it.
	//
	// When the DB instance isn't publicly accessible, it is an internal DB instance
	// with a DNS name that resolves to a private IP address.
	//
	// For more information, see CreateDBInstance.
	PubliclyAccessible *bool `type:"boolean"`

	// Specifies the storage throughput value for the DB instance.
	//
	// This setting doesn't apply to RDS Custom or Amazon Aurora.
	StorageThroughput *int64 `type:"integer"`

	// Specifies the storage type to be associated with the DB instance.
	//
	// Valid Values: gp2 | gp3 | io1 | io2 | standard
	//
	// If you specify io1, io2, or gp3, you must also include a value for the Iops
	// parameter.
	//
	// Default: io1 if the Iops parameter is specified, otherwise gp2
	StorageType *string `type:"string"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// The ARN from the key store with which to associate the instance for TDE encryption.
	//
	// This setting doesn't apply to RDS Custom.
	TdeCredentialArn *string `type:"string"`

	// The password for the given ARN from the key store in order to access the
	// device.
	//
	// This setting doesn't apply to RDS Custom.
	TdeCredentialPassword *string `type:"string"`

	// Specifies whether the DB instance class of the DB instance uses its default
	// processor features.
	//
	// This setting doesn't apply to RDS Custom.
	UseDefaultProcessorFeatures *bool `type:"boolean"`

	// A list of EC2 VPC security groups to associate with this DB instance.
	//
	// Default: The default EC2 VPC security group for the DB subnet group's VPC.
	VpcSecurityGroupIds []*string `locationNameList:"VpcSecurityGroupId" 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 RestoreDBInstanceFromDBSnapshotInput) 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 RestoreDBInstanceFromDBSnapshotInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RestoreDBInstanceFromDBSnapshotInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RestoreDBInstanceFromDBSnapshotInput"}
	if s.DBInstanceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBInstanceIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetAllocatedStorage(v int64) *RestoreDBInstanceFromDBSnapshotInput {
	s.AllocatedStorage = &v
	return s
}

// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetAutoMinorVersionUpgrade(v bool) *RestoreDBInstanceFromDBSnapshotInput {
	s.AutoMinorVersionUpgrade = &v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetAvailabilityZone(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.AvailabilityZone = &v
	return s
}

// SetBackupTarget sets the BackupTarget field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetBackupTarget(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.BackupTarget = &v
	return s
}

// SetCACertificateIdentifier sets the CACertificateIdentifier field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetCACertificateIdentifier(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.CACertificateIdentifier = &v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetCopyTagsToSnapshot(v bool) *RestoreDBInstanceFromDBSnapshotInput {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetCustomIamInstanceProfile sets the CustomIamInstanceProfile field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetCustomIamInstanceProfile(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.CustomIamInstanceProfile = &v
	return s
}

// SetDBClusterSnapshotIdentifier sets the DBClusterSnapshotIdentifier field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDBClusterSnapshotIdentifier(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.DBClusterSnapshotIdentifier = &v
	return s
}

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDBInstanceClass(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.DBInstanceClass = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDBInstanceIdentifier(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDBName sets the DBName field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDBName(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.DBName = &v
	return s
}

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDBParameterGroupName(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.DBParameterGroupName = &v
	return s
}

// SetDBSnapshotIdentifier sets the DBSnapshotIdentifier field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDBSnapshotIdentifier(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.DBSnapshotIdentifier = &v
	return s
}

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDBSubnetGroupName(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.DBSubnetGroupName = &v
	return s
}

// SetDedicatedLogVolume sets the DedicatedLogVolume field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDedicatedLogVolume(v bool) *RestoreDBInstanceFromDBSnapshotInput {
	s.DedicatedLogVolume = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDeletionProtection(v bool) *RestoreDBInstanceFromDBSnapshotInput {
	s.DeletionProtection = &v
	return s
}

// SetDomain sets the Domain field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDomain(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.Domain = &v
	return s
}

// SetDomainAuthSecretArn sets the DomainAuthSecretArn field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDomainAuthSecretArn(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.DomainAuthSecretArn = &v
	return s
}

// SetDomainDnsIps sets the DomainDnsIps field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDomainDnsIps(v []*string) *RestoreDBInstanceFromDBSnapshotInput {
	s.DomainDnsIps = v
	return s
}

// SetDomainFqdn sets the DomainFqdn field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDomainFqdn(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.DomainFqdn = &v
	return s
}

// SetDomainIAMRoleName sets the DomainIAMRoleName field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDomainIAMRoleName(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.DomainIAMRoleName = &v
	return s
}

// SetDomainOu sets the DomainOu field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetDomainOu(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.DomainOu = &v
	return s
}

// SetEnableCloudwatchLogsExports sets the EnableCloudwatchLogsExports field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetEnableCloudwatchLogsExports(v []*string) *RestoreDBInstanceFromDBSnapshotInput {
	s.EnableCloudwatchLogsExports = v
	return s
}

// SetEnableCustomerOwnedIp sets the EnableCustomerOwnedIp field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetEnableCustomerOwnedIp(v bool) *RestoreDBInstanceFromDBSnapshotInput {
	s.EnableCustomerOwnedIp = &v
	return s
}

// SetEnableIAMDatabaseAuthentication sets the EnableIAMDatabaseAuthentication field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetEnableIAMDatabaseAuthentication(v bool) *RestoreDBInstanceFromDBSnapshotInput {
	s.EnableIAMDatabaseAuthentication = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetEngine(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.Engine = &v
	return s
}

// SetEngineLifecycleSupport sets the EngineLifecycleSupport field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetEngineLifecycleSupport(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.EngineLifecycleSupport = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetIops(v int64) *RestoreDBInstanceFromDBSnapshotInput {
	s.Iops = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetLicenseModel(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.LicenseModel = &v
	return s
}

// SetMultiAZ sets the MultiAZ field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetMultiAZ(v bool) *RestoreDBInstanceFromDBSnapshotInput {
	s.MultiAZ = &v
	return s
}

// SetNetworkType sets the NetworkType field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetNetworkType(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.NetworkType = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetOptionGroupName(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.OptionGroupName = &v
	return s
}

// SetPort sets the Port field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetPort(v int64) *RestoreDBInstanceFromDBSnapshotInput {
	s.Port = &v
	return s
}

// SetProcessorFeatures sets the ProcessorFeatures field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetProcessorFeatures(v []*ProcessorFeature) *RestoreDBInstanceFromDBSnapshotInput {
	s.ProcessorFeatures = v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetPubliclyAccessible(v bool) *RestoreDBInstanceFromDBSnapshotInput {
	s.PubliclyAccessible = &v
	return s
}

// SetStorageThroughput sets the StorageThroughput field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetStorageThroughput(v int64) *RestoreDBInstanceFromDBSnapshotInput {
	s.StorageThroughput = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetStorageType(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.StorageType = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetTags(v []*Tag) *RestoreDBInstanceFromDBSnapshotInput {
	s.Tags = v
	return s
}

// SetTdeCredentialArn sets the TdeCredentialArn field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetTdeCredentialArn(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.TdeCredentialArn = &v
	return s
}

// SetTdeCredentialPassword sets the TdeCredentialPassword field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetTdeCredentialPassword(v string) *RestoreDBInstanceFromDBSnapshotInput {
	s.TdeCredentialPassword = &v
	return s
}

// SetUseDefaultProcessorFeatures sets the UseDefaultProcessorFeatures field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetUseDefaultProcessorFeatures(v bool) *RestoreDBInstanceFromDBSnapshotInput {
	s.UseDefaultProcessorFeatures = &v
	return s
}

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *RestoreDBInstanceFromDBSnapshotInput) SetVpcSecurityGroupIds(v []*string) *RestoreDBInstanceFromDBSnapshotInput {
	s.VpcSecurityGroupIds = v
	return s
}

type RestoreDBInstanceFromDBSnapshotOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon RDS DB instance.
	//
	// This data type is used as a response element in the operations CreateDBInstance,
	// CreateDBInstanceReadReplica, DeleteDBInstance, DescribeDBInstances, ModifyDBInstance,
	// PromoteReadReplica, RebootDBInstance, RestoreDBInstanceFromDBSnapshot, RestoreDBInstanceFromS3,
	// RestoreDBInstanceToPointInTime, StartDBInstance, and StopDBInstance.
	DBInstance *DBInstance `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 RestoreDBInstanceFromDBSnapshotOutput) 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 RestoreDBInstanceFromDBSnapshotOutput) GoString() string {
	return s.String()
}

// SetDBInstance sets the DBInstance field's value.
func (s *RestoreDBInstanceFromDBSnapshotOutput) SetDBInstance(v *DBInstance) *RestoreDBInstanceFromDBSnapshotOutput {
	s.DBInstance = v
	return s
}

type RestoreDBInstanceFromS3Input struct {
	_ struct{} `type:"structure"`

	// The amount of storage (in gibibytes) to allocate initially for the DB instance.
	// Follow the allocation rules specified in CreateDBInstance.
	//
	// Be sure to allocate enough storage for your new DB instance so that the restore
	// operation can succeed. You can also allocate additional storage for future
	// growth.
	AllocatedStorage *int64 `type:"integer"`

	// Specifies whether to automatically apply minor engine upgrades to the DB
	// instance during the maintenance window. By default, minor engine upgrades
	// are not applied automatically.
	AutoMinorVersionUpgrade *bool `type:"boolean"`

	// The Availability Zone that the DB instance is created in. For information
	// about Amazon Web Services Regions and Availability Zones, see Regions and
	// Availability Zones (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html)
	// in the Amazon RDS User Guide.
	//
	// Default: A random, system-chosen Availability Zone in the endpoint's Amazon
	// Web Services Region.
	//
	// Example: us-east-1d
	//
	// Constraint: The AvailabilityZone parameter can't be specified if the DB instance
	// is a Multi-AZ deployment. The specified Availability Zone must be in the
	// same Amazon Web Services Region as the current endpoint.
	AvailabilityZone *string `type:"string"`

	// The number of days for which automated backups are retained. Setting this
	// parameter to a positive number enables backups. For more information, see
	// CreateDBInstance.
	BackupRetentionPeriod *int64 `type:"integer"`

	// The CA certificate identifier to use for the DB instance's server certificate.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	CACertificateIdentifier *string `type:"string"`

	// Specifies whether to copy all tags from the DB instance to snapshots of the
	// DB instance. By default, tags are not copied.
	CopyTagsToSnapshot *bool `type:"boolean"`

	// The compute and memory capacity of the DB instance, for example db.m4.large.
	// Not all DB instance classes are available in all Amazon Web Services Regions,
	// or for all database engines. For the full list of DB instance classes, and
	// availability for your engine, see DB Instance Class (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
	// in the Amazon RDS User Guide.
	//
	// Importing from Amazon S3 isn't supported on the db.t2.micro DB instance class.
	//
	// DBInstanceClass is a required field
	DBInstanceClass *string `type:"string" required:"true"`

	// The DB instance identifier. This parameter is stored as a lowercase string.
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 letters, numbers, or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// Example: mydbinstance
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// The name of the database to create when the DB instance is created. Follow
	// the naming rules specified in CreateDBInstance.
	DBName *string `type:"string"`

	// The name of the DB parameter group to associate with this DB instance.
	//
	// If you do not specify a value for DBParameterGroupName, then the default
	// DBParameterGroup for the specified DB engine is used.
	DBParameterGroupName *string `type:"string"`

	// A list of DB security groups to associate with this DB instance.
	//
	// Default: The default DB security group for the database engine.
	DBSecurityGroups []*string `locationNameList:"DBSecurityGroupName" type:"list"`

	// A DB subnet group to associate with this DB instance.
	//
	// Constraints: If supplied, must match the name of an existing DBSubnetGroup.
	//
	// Example: mydbsubnetgroup
	DBSubnetGroupName *string `type:"string"`

	// Specifies whether to enable a dedicated log volume (DLV) for the DB instance.
	DedicatedLogVolume *bool `type:"boolean"`

	// Specifies whether to enable deletion protection for the DB instance. The
	// database can't be deleted when deletion protection is enabled. By default,
	// deletion protection isn't enabled. For more information, see Deleting a DB
	// Instance (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html).
	DeletionProtection *bool `type:"boolean"`

	// The list of logs that the restored DB instance is to export to CloudWatch
	// Logs. The values in the list depend on the DB engine being used. For more
	// information, see Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
	// in the Amazon RDS User Guide.
	EnableCloudwatchLogsExports []*string `type:"list"`

	// Specifies whether to enable mapping of Amazon Web Services Identity and Access
	// Management (IAM) accounts to database accounts. By default, mapping isn't
	// enabled.
	//
	// For more information about IAM database authentication, see IAM Database
	// Authentication for MySQL and PostgreSQL (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)
	// in the Amazon RDS User Guide.
	EnableIAMDatabaseAuthentication *bool `type:"boolean"`

	// Specifies whether to enable Performance Insights for the DB instance.
	//
	// For more information, see Using Amazon Performance Insights (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html)
	// in the Amazon RDS User Guide.
	EnablePerformanceInsights *bool `type:"boolean"`

	// The name of the database engine to be used for this instance.
	//
	// Valid Values: mysql
	//
	// Engine is a required field
	Engine *string `type:"string" required:"true"`

	// The life cycle type for this DB instance.
	//
	// By default, this value is set to open-source-rds-extended-support, which
	// enrolls your DB instance into Amazon RDS Extended Support. At the end of
	// standard support, you can avoid charges for Extended Support by setting the
	// value to open-source-rds-extended-support-disabled. In this case, RDS automatically
	// upgrades your restored DB instance to a higher engine version, if the major
	// engine version is past its end of standard support date.
	//
	// You can use this setting to enroll your DB instance into Amazon RDS Extended
	// Support. With RDS Extended Support, you can run the selected major engine
	// version on your DB instance past the end of standard support for that engine
	// version. For more information, see Using Amazon RDS Extended Support (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html)
	// in the Amazon RDS User Guide.
	//
	// This setting applies only to RDS for MySQL and RDS for PostgreSQL. For Amazon
	// Aurora DB instances, the life cycle type is managed by the DB cluster.
	//
	// Valid Values: open-source-rds-extended-support | open-source-rds-extended-support-disabled
	//
	// Default: open-source-rds-extended-support
	EngineLifecycleSupport *string `type:"string"`

	// The version number of the database engine to use. Choose the latest minor
	// version of your database engine. For information about engine versions, see
	// CreateDBInstance, or call DescribeDBEngineVersions.
	EngineVersion *string `type:"string"`

	// The amount of Provisioned IOPS (input/output operations per second) to allocate
	// initially for the DB instance. For information about valid IOPS values, see
	// Amazon RDS Provisioned IOPS storage (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#USER_PIOPS)
	// in the Amazon RDS User Guide.
	Iops *int64 `type:"integer"`

	// The Amazon Web Services KMS key identifier for an encrypted DB instance.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key. To use a KMS key in a different Amazon
	// Web Services account, specify the key ARN or alias ARN.
	//
	// If the StorageEncrypted parameter is enabled, and you do not specify a value
	// for the KmsKeyId parameter, then Amazon RDS will use your default KMS key.
	// There is a default KMS key for your Amazon Web Services account. Your Amazon
	// Web Services account has a different default KMS key for each Amazon Web
	// Services Region.
	KmsKeyId *string `type:"string"`

	// The license model for this DB instance. Use general-public-license.
	LicenseModel *string `type:"string"`

	// Specifies whether to manage the master user password with Amazon Web Services
	// Secrets Manager.
	//
	// For more information, see Password management with Amazon Web Services Secrets
	// Manager (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html)
	// in the Amazon RDS User Guide.
	//
	// Constraints:
	//
	//    * Can't manage the master user password with Amazon Web Services Secrets
	//    Manager if MasterUserPassword is specified.
	ManageMasterUserPassword *bool `type:"boolean"`

	// The password for the master user.
	//
	// Constraints:
	//
	//    * Can't be specified if ManageMasterUserPassword is turned on.
	//
	//    * Can include any printable ASCII character except "/", """, or "@". For
	//    RDS for Oracle, can't include the "&" (ampersand) or the "'" (single quotes)
	//    character.
	//
	// Length Constraints:
	//
	//    * RDS for Db2 - Must contain from 8 to 128 characters.
	//
	//    * RDS for MariaDB - Must contain from 8 to 41 characters.
	//
	//    * RDS for Microsoft SQL Server - Must contain from 8 to 128 characters.
	//
	//    * RDS for MySQL - Must contain from 8 to 41 characters.
	//
	//    * RDS for Oracle - Must contain from 8 to 30 characters.
	//
	//    * RDS for PostgreSQL - Must contain from 8 to 128 characters.
	MasterUserPassword *string `type:"string"`

	// The Amazon Web Services KMS key identifier to encrypt a secret that is automatically
	// generated and managed in Amazon Web Services Secrets Manager.
	//
	// This setting is valid only if the master user password is managed by RDS
	// in Amazon Web Services Secrets Manager for the DB instance.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key. To use a KMS key in a different Amazon
	// Web Services account, specify the key ARN or alias ARN.
	//
	// If you don't specify MasterUserSecretKmsKeyId, then the aws/secretsmanager
	// KMS key is used to encrypt the secret. If the secret is in a different Amazon
	// Web Services account, then you can't use the aws/secretsmanager KMS key to
	// encrypt the secret, and you must use a customer managed KMS key.
	//
	// There is a default KMS key for your Amazon Web Services account. Your Amazon
	// Web Services account has a different default KMS key for each Amazon Web
	// Services Region.
	MasterUserSecretKmsKeyId *string `type:"string"`

	// The name for the master user.
	//
	// Constraints:
	//
	//    * Must be 1 to 16 letters or numbers.
	//
	//    * First character must be a letter.
	//
	//    * Can't be a reserved word for the chosen database engine.
	MasterUsername *string `type:"string"`

	// The upper limit in gibibytes (GiB) to which Amazon RDS can automatically
	// scale the storage of the DB instance.
	//
	// For more information about this setting, including limitations that apply
	// to it, see Managing capacity automatically with Amazon RDS storage autoscaling
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling)
	// in the Amazon RDS User Guide.
	MaxAllocatedStorage *int64 `type:"integer"`

	// The interval, in seconds, between points when Enhanced Monitoring metrics
	// are collected for the DB instance. To disable collecting Enhanced Monitoring
	// metrics, specify 0.
	//
	// If MonitoringRoleArn is specified, then you must also set MonitoringInterval
	// to a value other than 0.
	//
	// Valid Values: 0, 1, 5, 10, 15, 30, 60
	//
	// Default: 0
	MonitoringInterval *int64 `type:"integer"`

	// The ARN for the IAM role that permits RDS to send enhanced monitoring metrics
	// to Amazon CloudWatch Logs. For example, arn:aws:iam:123456789012:role/emaccess.
	// For information on creating a monitoring role, see Setting Up and Enabling
	// Enhanced Monitoring (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling)
	// in the Amazon RDS User Guide.
	//
	// If MonitoringInterval is set to a value other than 0, then you must supply
	// a MonitoringRoleArn value.
	MonitoringRoleArn *string `type:"string"`

	// Specifies whether the DB instance is a Multi-AZ deployment. If the DB instance
	// is a Multi-AZ deployment, you can't set the AvailabilityZone parameter.
	MultiAZ *bool `type:"boolean"`

	// The network type of the DB instance.
	//
	// Valid Values:
	//
	//    * IPV4
	//
	//    * DUAL
	//
	// The network type is determined by the DBSubnetGroup specified for the DB
	// instance. A DBSubnetGroup can support only the IPv4 protocol or the IPv4
	// and the IPv6 protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon RDS User Guide.
	NetworkType *string `type:"string"`

	// The name of the option group to associate with this DB instance. If this
	// argument is omitted, the default option group for the specified engine is
	// used.
	OptionGroupName *string `type:"string"`

	// The Amazon Web Services KMS key identifier for encryption of Performance
	// Insights data.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	//
	// If you do not specify a value for PerformanceInsightsKMSKeyId, then Amazon
	// RDS uses your default KMS key. There is a default KMS key for your Amazon
	// Web Services account. Your Amazon Web Services account has a different default
	// KMS key for each Amazon Web Services Region.
	PerformanceInsightsKMSKeyId *string `type:"string"`

	// The number of days to retain Performance Insights data. The default is 7
	// days. The following values are valid:
	//
	//    * 7
	//
	//    * month * 31, where month is a number of months from 1-23
	//
	//    * 731
	//
	// For example, the following values are valid:
	//
	//    * 93 (3 months * 31)
	//
	//    * 341 (11 months * 31)
	//
	//    * 589 (19 months * 31)
	//
	//    * 731
	//
	// If you specify a retention period such as 94, which isn't a valid value,
	// RDS issues an error.
	PerformanceInsightsRetentionPeriod *int64 `type:"integer"`

	// The port number on which the database accepts connections.
	//
	// Type: Integer
	//
	// Valid Values: 1150-65535
	//
	// Default: 3306
	Port *int64 `type:"integer"`

	// The time range each day during which automated backups are created if automated
	// backups are enabled. For more information, see Backup window (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow)
	// in the Amazon RDS User Guide.
	//
	// Constraints:
	//
	//    * Must be in the format hh24:mi-hh24:mi.
	//
	//    * Must be in Universal Coordinated Time (UTC).
	//
	//    * Must not conflict with the preferred maintenance window.
	//
	//    * Must be at least 30 minutes.
	PreferredBackupWindow *string `type:"string"`

	// The time range each week during which system maintenance can occur, in Universal
	// Coordinated Time (UTC). For more information, see Amazon RDS Maintenance
	// Window (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#Concepts.DBMaintenance)
	// in the Amazon RDS User Guide.
	//
	// Constraints:
	//
	//    * Must be in the format ddd:hh24:mi-ddd:hh24:mi.
	//
	//    * Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
	//
	//    * Must be in Universal Coordinated Time (UTC).
	//
	//    * Must not conflict with the preferred backup window.
	//
	//    * Must be at least 30 minutes.
	PreferredMaintenanceWindow *string `type:"string"`

	// The number of CPU cores and the number of threads per core for the DB instance
	// class of the DB instance.
	ProcessorFeatures []*ProcessorFeature `locationNameList:"ProcessorFeature" type:"list"`

	// Specifies whether the DB instance is publicly accessible.
	//
	// When the DB instance is publicly accessible, its Domain Name System (DNS)
	// endpoint resolves to the private IP address from within the DB instance's
	// virtual private cloud (VPC). It resolves to the public IP address from outside
	// of the DB instance's VPC. Access to the DB instance is ultimately controlled
	// by the security group it uses. That public access is not permitted if the
	// security group assigned to the DB instance doesn't permit it.
	//
	// When the DB instance isn't publicly accessible, it is an internal DB instance
	// with a DNS name that resolves to a private IP address.
	//
	// For more information, see CreateDBInstance.
	PubliclyAccessible *bool `type:"boolean"`

	// The name of your Amazon S3 bucket that contains your database backup file.
	//
	// S3BucketName is a required field
	S3BucketName *string `type:"string" required:"true"`

	// An Amazon Web Services Identity and Access Management (IAM) role with a trust
	// policy and a permissions policy that allows Amazon RDS to access your Amazon
	// S3 bucket. For information about this role, see Creating an IAM role manually
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.html#MySQL.Procedural.Importing.Enabling.IAM)
	// in the Amazon RDS User Guide.
	//
	// S3IngestionRoleArn is a required field
	S3IngestionRoleArn *string `type:"string" required:"true"`

	// The prefix of your Amazon S3 bucket.
	S3Prefix *string `type:"string"`

	// The name of the engine of your source database.
	//
	// Valid Values: mysql
	//
	// SourceEngine is a required field
	SourceEngine *string `type:"string" required:"true"`

	// The version of the database that the backup files were created from.
	//
	// MySQL versions 5.6 and 5.7 are supported.
	//
	// Example: 5.6.40
	//
	// SourceEngineVersion is a required field
	SourceEngineVersion *string `type:"string" required:"true"`

	// Specifies whether the new DB instance is encrypted or not.
	StorageEncrypted *bool `type:"boolean"`

	// Specifies the storage throughput value for the DB instance.
	//
	// This setting doesn't apply to RDS Custom or Amazon Aurora.
	StorageThroughput *int64 `type:"integer"`

	// Specifies the storage type to be associated with the DB instance.
	//
	// Valid Values: gp2 | gp3 | io1 | io2 | standard
	//
	// If you specify io1, io2, or gp3, you must also include a value for the Iops
	// parameter.
	//
	// Default: io1 if the Iops parameter is specified; otherwise gp2
	StorageType *string `type:"string"`

	// A list of tags to associate with this DB instance. For more information,
	// see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// Specifies whether the DB instance class of the DB instance uses its default
	// processor features.
	UseDefaultProcessorFeatures *bool `type:"boolean"`

	// A list of VPC security groups to associate with this DB instance.
	VpcSecurityGroupIds []*string `locationNameList:"VpcSecurityGroupId" 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 RestoreDBInstanceFromS3Input) 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 RestoreDBInstanceFromS3Input) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RestoreDBInstanceFromS3Input) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RestoreDBInstanceFromS3Input"}
	if s.DBInstanceClass == nil {
		invalidParams.Add(request.NewErrParamRequired("DBInstanceClass"))
	}
	if s.DBInstanceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBInstanceIdentifier"))
	}
	if s.Engine == nil {
		invalidParams.Add(request.NewErrParamRequired("Engine"))
	}
	if s.S3BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("S3BucketName"))
	}
	if s.S3IngestionRoleArn == nil {
		invalidParams.Add(request.NewErrParamRequired("S3IngestionRoleArn"))
	}
	if s.SourceEngine == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceEngine"))
	}
	if s.SourceEngineVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceEngineVersion"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *RestoreDBInstanceFromS3Input) SetAllocatedStorage(v int64) *RestoreDBInstanceFromS3Input {
	s.AllocatedStorage = &v
	return s
}

// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
func (s *RestoreDBInstanceFromS3Input) SetAutoMinorVersionUpgrade(v bool) *RestoreDBInstanceFromS3Input {
	s.AutoMinorVersionUpgrade = &v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *RestoreDBInstanceFromS3Input) SetAvailabilityZone(v string) *RestoreDBInstanceFromS3Input {
	s.AvailabilityZone = &v
	return s
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *RestoreDBInstanceFromS3Input) SetBackupRetentionPeriod(v int64) *RestoreDBInstanceFromS3Input {
	s.BackupRetentionPeriod = &v
	return s
}

// SetCACertificateIdentifier sets the CACertificateIdentifier field's value.
func (s *RestoreDBInstanceFromS3Input) SetCACertificateIdentifier(v string) *RestoreDBInstanceFromS3Input {
	s.CACertificateIdentifier = &v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *RestoreDBInstanceFromS3Input) SetCopyTagsToSnapshot(v bool) *RestoreDBInstanceFromS3Input {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *RestoreDBInstanceFromS3Input) SetDBInstanceClass(v string) *RestoreDBInstanceFromS3Input {
	s.DBInstanceClass = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *RestoreDBInstanceFromS3Input) SetDBInstanceIdentifier(v string) *RestoreDBInstanceFromS3Input {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDBName sets the DBName field's value.
func (s *RestoreDBInstanceFromS3Input) SetDBName(v string) *RestoreDBInstanceFromS3Input {
	s.DBName = &v
	return s
}

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *RestoreDBInstanceFromS3Input) SetDBParameterGroupName(v string) *RestoreDBInstanceFromS3Input {
	s.DBParameterGroupName = &v
	return s
}

// SetDBSecurityGroups sets the DBSecurityGroups field's value.
func (s *RestoreDBInstanceFromS3Input) SetDBSecurityGroups(v []*string) *RestoreDBInstanceFromS3Input {
	s.DBSecurityGroups = v
	return s
}

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *RestoreDBInstanceFromS3Input) SetDBSubnetGroupName(v string) *RestoreDBInstanceFromS3Input {
	s.DBSubnetGroupName = &v
	return s
}

// SetDedicatedLogVolume sets the DedicatedLogVolume field's value.
func (s *RestoreDBInstanceFromS3Input) SetDedicatedLogVolume(v bool) *RestoreDBInstanceFromS3Input {
	s.DedicatedLogVolume = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *RestoreDBInstanceFromS3Input) SetDeletionProtection(v bool) *RestoreDBInstanceFromS3Input {
	s.DeletionProtection = &v
	return s
}

// SetEnableCloudwatchLogsExports sets the EnableCloudwatchLogsExports field's value.
func (s *RestoreDBInstanceFromS3Input) SetEnableCloudwatchLogsExports(v []*string) *RestoreDBInstanceFromS3Input {
	s.EnableCloudwatchLogsExports = v
	return s
}

// SetEnableIAMDatabaseAuthentication sets the EnableIAMDatabaseAuthentication field's value.
func (s *RestoreDBInstanceFromS3Input) SetEnableIAMDatabaseAuthentication(v bool) *RestoreDBInstanceFromS3Input {
	s.EnableIAMDatabaseAuthentication = &v
	return s
}

// SetEnablePerformanceInsights sets the EnablePerformanceInsights field's value.
func (s *RestoreDBInstanceFromS3Input) SetEnablePerformanceInsights(v bool) *RestoreDBInstanceFromS3Input {
	s.EnablePerformanceInsights = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *RestoreDBInstanceFromS3Input) SetEngine(v string) *RestoreDBInstanceFromS3Input {
	s.Engine = &v
	return s
}

// SetEngineLifecycleSupport sets the EngineLifecycleSupport field's value.
func (s *RestoreDBInstanceFromS3Input) SetEngineLifecycleSupport(v string) *RestoreDBInstanceFromS3Input {
	s.EngineLifecycleSupport = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *RestoreDBInstanceFromS3Input) SetEngineVersion(v string) *RestoreDBInstanceFromS3Input {
	s.EngineVersion = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *RestoreDBInstanceFromS3Input) SetIops(v int64) *RestoreDBInstanceFromS3Input {
	s.Iops = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *RestoreDBInstanceFromS3Input) SetKmsKeyId(v string) *RestoreDBInstanceFromS3Input {
	s.KmsKeyId = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *RestoreDBInstanceFromS3Input) SetLicenseModel(v string) *RestoreDBInstanceFromS3Input {
	s.LicenseModel = &v
	return s
}

// SetManageMasterUserPassword sets the ManageMasterUserPassword field's value.
func (s *RestoreDBInstanceFromS3Input) SetManageMasterUserPassword(v bool) *RestoreDBInstanceFromS3Input {
	s.ManageMasterUserPassword = &v
	return s
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *RestoreDBInstanceFromS3Input) SetMasterUserPassword(v string) *RestoreDBInstanceFromS3Input {
	s.MasterUserPassword = &v
	return s
}

// SetMasterUserSecretKmsKeyId sets the MasterUserSecretKmsKeyId field's value.
func (s *RestoreDBInstanceFromS3Input) SetMasterUserSecretKmsKeyId(v string) *RestoreDBInstanceFromS3Input {
	s.MasterUserSecretKmsKeyId = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *RestoreDBInstanceFromS3Input) SetMasterUsername(v string) *RestoreDBInstanceFromS3Input {
	s.MasterUsername = &v
	return s
}

// SetMaxAllocatedStorage sets the MaxAllocatedStorage field's value.
func (s *RestoreDBInstanceFromS3Input) SetMaxAllocatedStorage(v int64) *RestoreDBInstanceFromS3Input {
	s.MaxAllocatedStorage = &v
	return s
}

// SetMonitoringInterval sets the MonitoringInterval field's value.
func (s *RestoreDBInstanceFromS3Input) SetMonitoringInterval(v int64) *RestoreDBInstanceFromS3Input {
	s.MonitoringInterval = &v
	return s
}

// SetMonitoringRoleArn sets the MonitoringRoleArn field's value.
func (s *RestoreDBInstanceFromS3Input) SetMonitoringRoleArn(v string) *RestoreDBInstanceFromS3Input {
	s.MonitoringRoleArn = &v
	return s
}

// SetMultiAZ sets the MultiAZ field's value.
func (s *RestoreDBInstanceFromS3Input) SetMultiAZ(v bool) *RestoreDBInstanceFromS3Input {
	s.MultiAZ = &v
	return s
}

// SetNetworkType sets the NetworkType field's value.
func (s *RestoreDBInstanceFromS3Input) SetNetworkType(v string) *RestoreDBInstanceFromS3Input {
	s.NetworkType = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *RestoreDBInstanceFromS3Input) SetOptionGroupName(v string) *RestoreDBInstanceFromS3Input {
	s.OptionGroupName = &v
	return s
}

// SetPerformanceInsightsKMSKeyId sets the PerformanceInsightsKMSKeyId field's value.
func (s *RestoreDBInstanceFromS3Input) SetPerformanceInsightsKMSKeyId(v string) *RestoreDBInstanceFromS3Input {
	s.PerformanceInsightsKMSKeyId = &v
	return s
}

// SetPerformanceInsightsRetentionPeriod sets the PerformanceInsightsRetentionPeriod field's value.
func (s *RestoreDBInstanceFromS3Input) SetPerformanceInsightsRetentionPeriod(v int64) *RestoreDBInstanceFromS3Input {
	s.PerformanceInsightsRetentionPeriod = &v
	return s
}

// SetPort sets the Port field's value.
func (s *RestoreDBInstanceFromS3Input) SetPort(v int64) *RestoreDBInstanceFromS3Input {
	s.Port = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *RestoreDBInstanceFromS3Input) SetPreferredBackupWindow(v string) *RestoreDBInstanceFromS3Input {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *RestoreDBInstanceFromS3Input) SetPreferredMaintenanceWindow(v string) *RestoreDBInstanceFromS3Input {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetProcessorFeatures sets the ProcessorFeatures field's value.
func (s *RestoreDBInstanceFromS3Input) SetProcessorFeatures(v []*ProcessorFeature) *RestoreDBInstanceFromS3Input {
	s.ProcessorFeatures = v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *RestoreDBInstanceFromS3Input) SetPubliclyAccessible(v bool) *RestoreDBInstanceFromS3Input {
	s.PubliclyAccessible = &v
	return s
}

// SetS3BucketName sets the S3BucketName field's value.
func (s *RestoreDBInstanceFromS3Input) SetS3BucketName(v string) *RestoreDBInstanceFromS3Input {
	s.S3BucketName = &v
	return s
}

// SetS3IngestionRoleArn sets the S3IngestionRoleArn field's value.
func (s *RestoreDBInstanceFromS3Input) SetS3IngestionRoleArn(v string) *RestoreDBInstanceFromS3Input {
	s.S3IngestionRoleArn = &v
	return s
}

// SetS3Prefix sets the S3Prefix field's value.
func (s *RestoreDBInstanceFromS3Input) SetS3Prefix(v string) *RestoreDBInstanceFromS3Input {
	s.S3Prefix = &v
	return s
}

// SetSourceEngine sets the SourceEngine field's value.
func (s *RestoreDBInstanceFromS3Input) SetSourceEngine(v string) *RestoreDBInstanceFromS3Input {
	s.SourceEngine = &v
	return s
}

// SetSourceEngineVersion sets the SourceEngineVersion field's value.
func (s *RestoreDBInstanceFromS3Input) SetSourceEngineVersion(v string) *RestoreDBInstanceFromS3Input {
	s.SourceEngineVersion = &v
	return s
}

// SetStorageEncrypted sets the StorageEncrypted field's value.
func (s *RestoreDBInstanceFromS3Input) SetStorageEncrypted(v bool) *RestoreDBInstanceFromS3Input {
	s.StorageEncrypted = &v
	return s
}

// SetStorageThroughput sets the StorageThroughput field's value.
func (s *RestoreDBInstanceFromS3Input) SetStorageThroughput(v int64) *RestoreDBInstanceFromS3Input {
	s.StorageThroughput = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *RestoreDBInstanceFromS3Input) SetStorageType(v string) *RestoreDBInstanceFromS3Input {
	s.StorageType = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *RestoreDBInstanceFromS3Input) SetTags(v []*Tag) *RestoreDBInstanceFromS3Input {
	s.Tags = v
	return s
}

// SetUseDefaultProcessorFeatures sets the UseDefaultProcessorFeatures field's value.
func (s *RestoreDBInstanceFromS3Input) SetUseDefaultProcessorFeatures(v bool) *RestoreDBInstanceFromS3Input {
	s.UseDefaultProcessorFeatures = &v
	return s
}

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *RestoreDBInstanceFromS3Input) SetVpcSecurityGroupIds(v []*string) *RestoreDBInstanceFromS3Input {
	s.VpcSecurityGroupIds = v
	return s
}

type RestoreDBInstanceFromS3Output struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon RDS DB instance.
	//
	// This data type is used as a response element in the operations CreateDBInstance,
	// CreateDBInstanceReadReplica, DeleteDBInstance, DescribeDBInstances, ModifyDBInstance,
	// PromoteReadReplica, RebootDBInstance, RestoreDBInstanceFromDBSnapshot, RestoreDBInstanceFromS3,
	// RestoreDBInstanceToPointInTime, StartDBInstance, and StopDBInstance.
	DBInstance *DBInstance `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 RestoreDBInstanceFromS3Output) 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 RestoreDBInstanceFromS3Output) GoString() string {
	return s.String()
}

// SetDBInstance sets the DBInstance field's value.
func (s *RestoreDBInstanceFromS3Output) SetDBInstance(v *DBInstance) *RestoreDBInstanceFromS3Output {
	s.DBInstance = v
	return s
}

type RestoreDBInstanceToPointInTimeInput struct {
	_ struct{} `type:"structure"`

	// The amount of storage (in gibibytes) to allocate initially for the DB instance.
	// Follow the allocation rules specified in CreateDBInstance.
	//
	// Be sure to allocate enough storage for your new DB instance so that the restore
	// operation can succeed. You can also allocate additional storage for future
	// growth.
	AllocatedStorage *int64 `type:"integer"`

	// Specifies whether minor version upgrades are applied automatically to the
	// DB instance during the maintenance window.
	//
	// This setting doesn't apply to RDS Custom.
	AutoMinorVersionUpgrade *bool `type:"boolean"`

	// The Availability Zone (AZ) where the DB instance will be created.
	//
	// Default: A random, system-chosen Availability Zone.
	//
	// Constraints:
	//
	//    * You can't specify the AvailabilityZone parameter if the DB instance
	//    is a Multi-AZ deployment.
	//
	// Example: us-east-1a
	AvailabilityZone *string `type:"string"`

	// The location for storing automated backups and manual snapshots for the restored
	// DB instance.
	//
	// Valid Values:
	//
	//    * outposts (Amazon Web Services Outposts)
	//
	//    * region (Amazon Web Services Region)
	//
	// Default: region
	//
	// For more information, see Working with Amazon RDS on Amazon Web Services
	// Outposts (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html)
	// in the Amazon RDS User Guide.
	BackupTarget *string `type:"string"`

	// The CA certificate identifier to use for the DB instance's server certificate.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	//
	// For more information, see Using SSL/TLS to encrypt a connection to a DB instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)
	// in the Amazon RDS User Guide and Using SSL/TLS to encrypt a connection to
	// a DB cluster (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.SSL.html)
	// in the Amazon Aurora User Guide.
	CACertificateIdentifier *string `type:"string"`

	// Specifies whether to copy all tags from the restored DB instance to snapshots
	// of the DB instance. By default, tags are not copied.
	CopyTagsToSnapshot *bool `type:"boolean"`

	// The instance profile associated with the underlying Amazon EC2 instance of
	// an RDS Custom DB instance. The instance profile must meet the following requirements:
	//
	//    * The profile must exist in your account.
	//
	//    * The profile must have an IAM role that Amazon EC2 has permissions to
	//    assume.
	//
	//    * The instance profile name and the associated IAM role name must start
	//    with the prefix AWSRDSCustom.
	//
	// For the list of permissions required for the IAM role, see Configure IAM
	// and your VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc)
	// in the Amazon RDS User Guide.
	//
	// This setting is required for RDS Custom.
	CustomIamInstanceProfile *string `type:"string"`

	// The compute and memory capacity of the Amazon RDS DB instance, for example
	// db.m4.large. Not all DB instance classes are available in all Amazon Web
	// Services Regions, or for all database engines. For the full list of DB instance
	// classes, and availability for your engine, see DB Instance Class (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)
	// in the Amazon RDS User Guide.
	//
	// Default: The same DB instance class as the original DB instance.
	DBInstanceClass *string `type:"string"`

	// The database name for the restored DB instance.
	//
	// This parameter doesn't apply to the following DB instances:
	//
	//    * RDS Custom
	//
	//    * RDS for Db2
	//
	//    * RDS for MariaDB
	//
	//    * RDS for MySQL
	DBName *string `type:"string"`

	// The name of the DB parameter group to associate with this DB instance.
	//
	// If you do not specify a value for DBParameterGroupName, then the default
	// DBParameterGroup for the specified DB engine is used.
	//
	// This setting doesn't apply to RDS Custom.
	//
	// Constraints:
	//
	//    * If supplied, must match the name of an existing DB parameter group.
	//
	//    * Must be 1 to 255 letters, numbers, or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	DBParameterGroupName *string `type:"string"`

	// The DB subnet group name to use for the new instance.
	//
	// Constraints:
	//
	//    * If supplied, must match the name of an existing DB subnet group.
	//
	// Example: mydbsubnetgroup
	DBSubnetGroupName *string `type:"string"`

	// Specifies whether to enable a dedicated log volume (DLV) for the DB instance.
	DedicatedLogVolume *bool `type:"boolean"`

	// Specifies whether the DB instance has deletion protection enabled. The database
	// can't be deleted when deletion protection is enabled. By default, deletion
	// protection isn't enabled. For more information, see Deleting a DB Instance
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html).
	DeletionProtection *bool `type:"boolean"`

	// The Active Directory directory ID to restore the DB instance in. Create the
	// domain before running this command. Currently, you can create only the MySQL,
	// Microsoft SQL Server, Oracle, and PostgreSQL DB instances in an Active Directory
	// Domain.
	//
	// This setting doesn't apply to RDS Custom.
	//
	// For more information, see Kerberos Authentication (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html)
	// in the Amazon RDS User Guide.
	Domain *string `type:"string"`

	// The ARN for the Secrets Manager secret with the credentials for the user
	// joining the domain.
	//
	// Constraints:
	//
	//    * Can't be longer than 64 characters.
	//
	// Example: arn:aws:secretsmanager:region:account-number:secret:myselfmanagedADtestsecret-123456
	DomainAuthSecretArn *string `type:"string"`

	// The IPv4 DNS IP addresses of your primary and secondary Active Directory
	// domain controllers.
	//
	// Constraints:
	//
	//    * Two IP addresses must be provided. If there isn't a secondary domain
	//    controller, use the IP address of the primary domain controller for both
	//    entries in the list.
	//
	// Example: 123.124.125.126,234.235.236.237
	DomainDnsIps []*string `type:"list"`

	// The fully qualified domain name (FQDN) of an Active Directory domain.
	//
	// Constraints:
	//
	//    * Can't be longer than 64 characters.
	//
	// Example: mymanagedADtest.mymanagedAD.mydomain
	DomainFqdn *string `type:"string"`

	// The name of the IAM role to use when making API calls to the Directory Service.
	//
	// This setting doesn't apply to RDS Custom DB instances.
	DomainIAMRoleName *string `type:"string"`

	// The Active Directory organizational unit for your DB instance to join.
	//
	// Constraints:
	//
	//    * Must be in the distinguished name format.
	//
	//    * Can't be longer than 64 characters.
	//
	// Example: OU=mymanagedADtestOU,DC=mymanagedADtest,DC=mymanagedAD,DC=mydomain
	DomainOu *string `type:"string"`

	// The list of logs that the restored DB instance is to export to CloudWatch
	// Logs. The values in the list depend on the DB engine being used. For more
	// information, see Publishing Database Logs to Amazon CloudWatch Logs (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom.
	EnableCloudwatchLogsExports []*string `type:"list"`

	// Specifies whether to enable a customer-owned IP address (CoIP) for an RDS
	// on Outposts DB instance.
	//
	// A CoIP provides local or external connectivity to resources in your Outpost
	// subnets through your on-premises network. For some use cases, a CoIP can
	// provide lower latency for connections to the DB instance from outside of
	// its virtual private cloud (VPC) on your local network.
	//
	// This setting doesn't apply to RDS Custom.
	//
	// For more information about RDS on Outposts, see Working with Amazon RDS on
	// Amazon Web Services Outposts (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html)
	// in the Amazon RDS User Guide.
	//
	// For more information about CoIPs, see Customer-owned IP addresses (https://docs.aws.amazon.com/outposts/latest/userguide/routing.html#ip-addressing)
	// in the Amazon Web Services Outposts User Guide.
	EnableCustomerOwnedIp *bool `type:"boolean"`

	// Specifies whether to enable mapping of Amazon Web Services Identity and Access
	// Management (IAM) accounts to database accounts. By default, mapping isn't
	// enabled.
	//
	// This setting doesn't apply to RDS Custom.
	//
	// For more information about IAM database authentication, see IAM Database
	// Authentication for MySQL and PostgreSQL (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html)
	// in the Amazon RDS User Guide.
	EnableIAMDatabaseAuthentication *bool `type:"boolean"`

	// The database engine to use for the new instance.
	//
	// This setting doesn't apply to RDS Custom.
	//
	// Valid Values:
	//
	//    * db2-ae
	//
	//    * db2-se
	//
	//    * mariadb
	//
	//    * mysql
	//
	//    * oracle-ee
	//
	//    * oracle-ee-cdb
	//
	//    * oracle-se2
	//
	//    * oracle-se2-cdb
	//
	//    * postgres
	//
	//    * sqlserver-ee
	//
	//    * sqlserver-se
	//
	//    * sqlserver-ex
	//
	//    * sqlserver-web
	//
	// Default: The same as source
	//
	// Constraints:
	//
	//    * Must be compatible with the engine of the source.
	Engine *string `type:"string"`

	// The life cycle type for this DB instance.
	//
	// By default, this value is set to open-source-rds-extended-support, which
	// enrolls your DB instance into Amazon RDS Extended Support. At the end of
	// standard support, you can avoid charges for Extended Support by setting the
	// value to open-source-rds-extended-support-disabled. In this case, RDS automatically
	// upgrades your restored DB instance to a higher engine version, if the major
	// engine version is past its end of standard support date.
	//
	// You can use this setting to enroll your DB instance into Amazon RDS Extended
	// Support. With RDS Extended Support, you can run the selected major engine
	// version on your DB instance past the end of standard support for that engine
	// version. For more information, see Using Amazon RDS Extended Support (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html)
	// in the Amazon RDS User Guide.
	//
	// This setting applies only to RDS for MySQL and RDS for PostgreSQL. For Amazon
	// Aurora DB instances, the life cycle type is managed by the DB cluster.
	//
	// Valid Values: open-source-rds-extended-support | open-source-rds-extended-support-disabled
	//
	// Default: open-source-rds-extended-support
	EngineLifecycleSupport *string `type:"string"`

	// The amount of Provisioned IOPS (input/output operations per second) to initially
	// allocate for the DB instance.
	//
	// This setting doesn't apply to SQL Server.
	//
	// Constraints:
	//
	//    * Must be an integer greater than 1000.
	Iops *int64 `type:"integer"`

	// The license model information for the restored DB instance.
	//
	// License models for RDS for Db2 require additional configuration. The Bring
	// Your Own License (BYOL) model requires a custom parameter group. The Db2
	// license through Amazon Web Services Marketplace model requires an Amazon
	// Web Services Marketplace subscription. For more information, see RDS for
	// Db2 licensing options (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-licensing.html)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
	//
	// Valid Values:
	//
	//    * RDS for Db2 - bring-your-own-license | marketplace-license
	//
	//    * RDS for MariaDB - general-public-license
	//
	//    * RDS for Microsoft SQL Server - license-included
	//
	//    * RDS for MySQL - general-public-license
	//
	//    * RDS for Oracle - bring-your-own-license | license-included
	//
	//    * RDS for PostgreSQL - postgresql-license
	//
	// Default: Same as the source.
	LicenseModel *string `type:"string"`

	// The upper limit in gibibytes (GiB) to which Amazon RDS can automatically
	// scale the storage of the DB instance.
	//
	// For more information about this setting, including limitations that apply
	// to it, see Managing capacity automatically with Amazon RDS storage autoscaling
	// (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling)
	// in the Amazon RDS User Guide.
	//
	// This setting doesn't apply to RDS Custom.
	MaxAllocatedStorage *int64 `type:"integer"`

	// Secifies whether the DB instance is a Multi-AZ deployment.
	//
	// This setting doesn't apply to RDS Custom.
	//
	// Constraints:
	//
	//    * You can't specify the AvailabilityZone parameter if the DB instance
	//    is a Multi-AZ deployment.
	MultiAZ *bool `type:"boolean"`

	// The network type of the DB instance.
	//
	// The network type is determined by the DBSubnetGroup specified for the DB
	// instance. A DBSubnetGroup can support only the IPv4 protocol or the IPv4
	// and the IPv6 protocols (DUAL).
	//
	// For more information, see Working with a DB instance in a VPC (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
	// in the Amazon RDS User Guide.
	//
	// Valid Values:
	//
	//    * IPV4
	//
	//    * DUAL
	NetworkType *string `type:"string"`

	// The name of the option group to use for the restored DB instance.
	//
	// Permanent options, such as the TDE option for Oracle Advanced Security TDE,
	// can't be removed from an option group, and that option group can't be removed
	// from a DB instance after it is associated with a DB instance
	//
	// This setting doesn't apply to RDS Custom.
	OptionGroupName *string `type:"string"`

	// The port number on which the database accepts connections.
	//
	// Default: The same port as the original DB instance.
	//
	// Constraints:
	//
	//    * The value must be 1150-65535.
	Port *int64 `type:"integer"`

	// The number of CPU cores and the number of threads per core for the DB instance
	// class of the DB instance.
	//
	// This setting doesn't apply to RDS Custom.
	ProcessorFeatures []*ProcessorFeature `locationNameList:"ProcessorFeature" type:"list"`

	// Specifies whether the DB instance is publicly accessible.
	//
	// When the DB cluster is publicly accessible, its Domain Name System (DNS)
	// endpoint resolves to the private IP address from within the DB cluster's
	// virtual private cloud (VPC). It resolves to the public IP address from outside
	// of the DB cluster's VPC. Access to the DB cluster is ultimately controlled
	// by the security group it uses. That public access isn't permitted if the
	// security group assigned to the DB cluster doesn't permit it.
	//
	// When the DB instance isn't publicly accessible, it is an internal DB instance
	// with a DNS name that resolves to a private IP address.
	//
	// For more information, see CreateDBInstance.
	PubliclyAccessible *bool `type:"boolean"`

	// The date and time to restore from.
	//
	// Constraints:
	//
	//    * Must be a time in Universal Coordinated Time (UTC) format.
	//
	//    * Must be before the latest restorable time for the DB instance.
	//
	//    * Can't be specified if the UseLatestRestorableTime parameter is enabled.
	//
	// Example: 2009-09-07T23:45:00Z
	RestoreTime *time.Time `type:"timestamp"`

	// The Amazon Resource Name (ARN) of the replicated automated backups from which
	// to restore, for example, arn:aws:rds:us-east-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE.
	//
	// This setting doesn't apply to RDS Custom.
	SourceDBInstanceAutomatedBackupsArn *string `type:"string"`

	// The identifier of the source DB instance from which to restore.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing DB instance.
	SourceDBInstanceIdentifier *string `type:"string"`

	// The resource ID of the source DB instance from which to restore.
	SourceDbiResourceId *string `type:"string"`

	// The storage throughput value for the DB instance.
	//
	// This setting doesn't apply to RDS Custom or Amazon Aurora.
	StorageThroughput *int64 `type:"integer"`

	// The storage type to associate with the DB instance.
	//
	// Valid Values: gp2 | gp3 | io1 | io2 | standard
	//
	// Default: io1, if the Iops parameter is specified. Otherwise, gp2.
	//
	// Constraints:
	//
	//    * If you specify io1, io2, or gp3, you must also include a value for the
	//    Iops parameter.
	StorageType *string `type:"string"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	Tags []*Tag `locationNameList:"Tag" type:"list"`

	// The name of the new DB instance to create.
	//
	// Constraints:
	//
	//    * Must contain from 1 to 63 letters, numbers, or hyphens.
	//
	//    * First character must be a letter.
	//
	//    * Can't end with a hyphen or contain two consecutive hyphens.
	//
	// TargetDBInstanceIdentifier is a required field
	TargetDBInstanceIdentifier *string `type:"string" required:"true"`

	// The ARN from the key store with which to associate the instance for TDE encryption.
	//
	// This setting doesn't apply to RDS Custom.
	TdeCredentialArn *string `type:"string"`

	// The password for the given ARN from the key store in order to access the
	// device.
	//
	// This setting doesn't apply to RDS Custom.
	TdeCredentialPassword *string `type:"string"`

	// Specifies whether the DB instance class of the DB instance uses its default
	// processor features.
	//
	// This setting doesn't apply to RDS Custom.
	UseDefaultProcessorFeatures *bool `type:"boolean"`

	// Specifies whether the DB instance is restored from the latest backup time.
	// By default, the DB instance isn't restored from the latest backup time.
	//
	// Constraints:
	//
	//    * Can't be specified if the RestoreTime parameter is provided.
	UseLatestRestorableTime *bool `type:"boolean"`

	// A list of EC2 VPC security groups to associate with this DB instance.
	//
	// Default: The default EC2 VPC security group for the DB subnet group's VPC.
	VpcSecurityGroupIds []*string `locationNameList:"VpcSecurityGroupId" 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 RestoreDBInstanceToPointInTimeInput) 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 RestoreDBInstanceToPointInTimeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RestoreDBInstanceToPointInTimeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RestoreDBInstanceToPointInTimeInput"}
	if s.TargetDBInstanceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("TargetDBInstanceIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllocatedStorage sets the AllocatedStorage field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetAllocatedStorage(v int64) *RestoreDBInstanceToPointInTimeInput {
	s.AllocatedStorage = &v
	return s
}

// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetAutoMinorVersionUpgrade(v bool) *RestoreDBInstanceToPointInTimeInput {
	s.AutoMinorVersionUpgrade = &v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetAvailabilityZone(v string) *RestoreDBInstanceToPointInTimeInput {
	s.AvailabilityZone = &v
	return s
}

// SetBackupTarget sets the BackupTarget field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetBackupTarget(v string) *RestoreDBInstanceToPointInTimeInput {
	s.BackupTarget = &v
	return s
}

// SetCACertificateIdentifier sets the CACertificateIdentifier field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetCACertificateIdentifier(v string) *RestoreDBInstanceToPointInTimeInput {
	s.CACertificateIdentifier = &v
	return s
}

// SetCopyTagsToSnapshot sets the CopyTagsToSnapshot field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetCopyTagsToSnapshot(v bool) *RestoreDBInstanceToPointInTimeInput {
	s.CopyTagsToSnapshot = &v
	return s
}

// SetCustomIamInstanceProfile sets the CustomIamInstanceProfile field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetCustomIamInstanceProfile(v string) *RestoreDBInstanceToPointInTimeInput {
	s.CustomIamInstanceProfile = &v
	return s
}

// SetDBInstanceClass sets the DBInstanceClass field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetDBInstanceClass(v string) *RestoreDBInstanceToPointInTimeInput {
	s.DBInstanceClass = &v
	return s
}

// SetDBName sets the DBName field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetDBName(v string) *RestoreDBInstanceToPointInTimeInput {
	s.DBName = &v
	return s
}

// SetDBParameterGroupName sets the DBParameterGroupName field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetDBParameterGroupName(v string) *RestoreDBInstanceToPointInTimeInput {
	s.DBParameterGroupName = &v
	return s
}

// SetDBSubnetGroupName sets the DBSubnetGroupName field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetDBSubnetGroupName(v string) *RestoreDBInstanceToPointInTimeInput {
	s.DBSubnetGroupName = &v
	return s
}

// SetDedicatedLogVolume sets the DedicatedLogVolume field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetDedicatedLogVolume(v bool) *RestoreDBInstanceToPointInTimeInput {
	s.DedicatedLogVolume = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetDeletionProtection(v bool) *RestoreDBInstanceToPointInTimeInput {
	s.DeletionProtection = &v
	return s
}

// SetDomain sets the Domain field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetDomain(v string) *RestoreDBInstanceToPointInTimeInput {
	s.Domain = &v
	return s
}

// SetDomainAuthSecretArn sets the DomainAuthSecretArn field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetDomainAuthSecretArn(v string) *RestoreDBInstanceToPointInTimeInput {
	s.DomainAuthSecretArn = &v
	return s
}

// SetDomainDnsIps sets the DomainDnsIps field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetDomainDnsIps(v []*string) *RestoreDBInstanceToPointInTimeInput {
	s.DomainDnsIps = v
	return s
}

// SetDomainFqdn sets the DomainFqdn field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetDomainFqdn(v string) *RestoreDBInstanceToPointInTimeInput {
	s.DomainFqdn = &v
	return s
}

// SetDomainIAMRoleName sets the DomainIAMRoleName field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetDomainIAMRoleName(v string) *RestoreDBInstanceToPointInTimeInput {
	s.DomainIAMRoleName = &v
	return s
}

// SetDomainOu sets the DomainOu field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetDomainOu(v string) *RestoreDBInstanceToPointInTimeInput {
	s.DomainOu = &v
	return s
}

// SetEnableCloudwatchLogsExports sets the EnableCloudwatchLogsExports field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetEnableCloudwatchLogsExports(v []*string) *RestoreDBInstanceToPointInTimeInput {
	s.EnableCloudwatchLogsExports = v
	return s
}

// SetEnableCustomerOwnedIp sets the EnableCustomerOwnedIp field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetEnableCustomerOwnedIp(v bool) *RestoreDBInstanceToPointInTimeInput {
	s.EnableCustomerOwnedIp = &v
	return s
}

// SetEnableIAMDatabaseAuthentication sets the EnableIAMDatabaseAuthentication field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetEnableIAMDatabaseAuthentication(v bool) *RestoreDBInstanceToPointInTimeInput {
	s.EnableIAMDatabaseAuthentication = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetEngine(v string) *RestoreDBInstanceToPointInTimeInput {
	s.Engine = &v
	return s
}

// SetEngineLifecycleSupport sets the EngineLifecycleSupport field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetEngineLifecycleSupport(v string) *RestoreDBInstanceToPointInTimeInput {
	s.EngineLifecycleSupport = &v
	return s
}

// SetIops sets the Iops field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetIops(v int64) *RestoreDBInstanceToPointInTimeInput {
	s.Iops = &v
	return s
}

// SetLicenseModel sets the LicenseModel field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetLicenseModel(v string) *RestoreDBInstanceToPointInTimeInput {
	s.LicenseModel = &v
	return s
}

// SetMaxAllocatedStorage sets the MaxAllocatedStorage field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetMaxAllocatedStorage(v int64) *RestoreDBInstanceToPointInTimeInput {
	s.MaxAllocatedStorage = &v
	return s
}

// SetMultiAZ sets the MultiAZ field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetMultiAZ(v bool) *RestoreDBInstanceToPointInTimeInput {
	s.MultiAZ = &v
	return s
}

// SetNetworkType sets the NetworkType field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetNetworkType(v string) *RestoreDBInstanceToPointInTimeInput {
	s.NetworkType = &v
	return s
}

// SetOptionGroupName sets the OptionGroupName field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetOptionGroupName(v string) *RestoreDBInstanceToPointInTimeInput {
	s.OptionGroupName = &v
	return s
}

// SetPort sets the Port field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetPort(v int64) *RestoreDBInstanceToPointInTimeInput {
	s.Port = &v
	return s
}

// SetProcessorFeatures sets the ProcessorFeatures field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetProcessorFeatures(v []*ProcessorFeature) *RestoreDBInstanceToPointInTimeInput {
	s.ProcessorFeatures = v
	return s
}

// SetPubliclyAccessible sets the PubliclyAccessible field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetPubliclyAccessible(v bool) *RestoreDBInstanceToPointInTimeInput {
	s.PubliclyAccessible = &v
	return s
}

// SetRestoreTime sets the RestoreTime field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetRestoreTime(v time.Time) *RestoreDBInstanceToPointInTimeInput {
	s.RestoreTime = &v
	return s
}

// SetSourceDBInstanceAutomatedBackupsArn sets the SourceDBInstanceAutomatedBackupsArn field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetSourceDBInstanceAutomatedBackupsArn(v string) *RestoreDBInstanceToPointInTimeInput {
	s.SourceDBInstanceAutomatedBackupsArn = &v
	return s
}

// SetSourceDBInstanceIdentifier sets the SourceDBInstanceIdentifier field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetSourceDBInstanceIdentifier(v string) *RestoreDBInstanceToPointInTimeInput {
	s.SourceDBInstanceIdentifier = &v
	return s
}

// SetSourceDbiResourceId sets the SourceDbiResourceId field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetSourceDbiResourceId(v string) *RestoreDBInstanceToPointInTimeInput {
	s.SourceDbiResourceId = &v
	return s
}

// SetStorageThroughput sets the StorageThroughput field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetStorageThroughput(v int64) *RestoreDBInstanceToPointInTimeInput {
	s.StorageThroughput = &v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetStorageType(v string) *RestoreDBInstanceToPointInTimeInput {
	s.StorageType = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetTags(v []*Tag) *RestoreDBInstanceToPointInTimeInput {
	s.Tags = v
	return s
}

// SetTargetDBInstanceIdentifier sets the TargetDBInstanceIdentifier field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetTargetDBInstanceIdentifier(v string) *RestoreDBInstanceToPointInTimeInput {
	s.TargetDBInstanceIdentifier = &v
	return s
}

// SetTdeCredentialArn sets the TdeCredentialArn field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetTdeCredentialArn(v string) *RestoreDBInstanceToPointInTimeInput {
	s.TdeCredentialArn = &v
	return s
}

// SetTdeCredentialPassword sets the TdeCredentialPassword field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetTdeCredentialPassword(v string) *RestoreDBInstanceToPointInTimeInput {
	s.TdeCredentialPassword = &v
	return s
}

// SetUseDefaultProcessorFeatures sets the UseDefaultProcessorFeatures field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetUseDefaultProcessorFeatures(v bool) *RestoreDBInstanceToPointInTimeInput {
	s.UseDefaultProcessorFeatures = &v
	return s
}

// SetUseLatestRestorableTime sets the UseLatestRestorableTime field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetUseLatestRestorableTime(v bool) *RestoreDBInstanceToPointInTimeInput {
	s.UseLatestRestorableTime = &v
	return s
}

// SetVpcSecurityGroupIds sets the VpcSecurityGroupIds field's value.
func (s *RestoreDBInstanceToPointInTimeInput) SetVpcSecurityGroupIds(v []*string) *RestoreDBInstanceToPointInTimeInput {
	s.VpcSecurityGroupIds = v
	return s
}

type RestoreDBInstanceToPointInTimeOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon RDS DB instance.
	//
	// This data type is used as a response element in the operations CreateDBInstance,
	// CreateDBInstanceReadReplica, DeleteDBInstance, DescribeDBInstances, ModifyDBInstance,
	// PromoteReadReplica, RebootDBInstance, RestoreDBInstanceFromDBSnapshot, RestoreDBInstanceFromS3,
	// RestoreDBInstanceToPointInTime, StartDBInstance, and StopDBInstance.
	DBInstance *DBInstance `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 RestoreDBInstanceToPointInTimeOutput) 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 RestoreDBInstanceToPointInTimeOutput) GoString() string {
	return s.String()
}

// SetDBInstance sets the DBInstance field's value.
func (s *RestoreDBInstanceToPointInTimeOutput) SetDBInstance(v *DBInstance) *RestoreDBInstanceToPointInTimeOutput {
	s.DBInstance = v
	return s
}

// Earliest and latest time an instance can be restored to:
type RestoreWindow struct {
	_ struct{} `type:"structure"`

	// The earliest time you can restore an instance to.
	EarliestTime *time.Time `type:"timestamp"`

	// The latest time you can restore an instance to.
	LatestTime *time.Time `type:"timestamp"`
}

// 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 RestoreWindow) 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 RestoreWindow) GoString() string {
	return s.String()
}

// SetEarliestTime sets the EarliestTime field's value.
func (s *RestoreWindow) SetEarliestTime(v time.Time) *RestoreWindow {
	s.EarliestTime = &v
	return s
}

// SetLatestTime sets the LatestTime field's value.
func (s *RestoreWindow) SetLatestTime(v time.Time) *RestoreWindow {
	s.LatestTime = &v
	return s
}

type RevokeDBSecurityGroupIngressInput struct {
	_ struct{} `type:"structure"`

	// The IP range to revoke access from. Must be a valid CIDR range. If CIDRIP
	// is specified, EC2SecurityGroupName, EC2SecurityGroupId and EC2SecurityGroupOwnerId
	// can't be provided.
	CIDRIP *string `type:"string"`

	// The name of the DB security group to revoke ingress from.
	//
	// DBSecurityGroupName is a required field
	DBSecurityGroupName *string `type:"string" required:"true"`

	// The id of the EC2 security group to revoke access from. For VPC DB security
	// groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId
	// and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.
	EC2SecurityGroupId *string `type:"string"`

	// The name of the EC2 security group to revoke access from. For VPC DB security
	// groups, EC2SecurityGroupId must be provided. Otherwise, EC2SecurityGroupOwnerId
	// and either EC2SecurityGroupName or EC2SecurityGroupId must be provided.
	EC2SecurityGroupName *string `type:"string"`

	// The Amazon Web Services account number of the owner of the EC2 security group
	// specified in the EC2SecurityGroupName parameter. The Amazon Web Services
	// access key ID isn't an acceptable value. For VPC DB security groups, EC2SecurityGroupId
	// must be provided. Otherwise, EC2SecurityGroupOwnerId and either EC2SecurityGroupName
	// or EC2SecurityGroupId must be provided.
	EC2SecurityGroupOwnerId *string `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 RevokeDBSecurityGroupIngressInput) 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 RevokeDBSecurityGroupIngressInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RevokeDBSecurityGroupIngressInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RevokeDBSecurityGroupIngressInput"}
	if s.DBSecurityGroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("DBSecurityGroupName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCIDRIP sets the CIDRIP field's value.
func (s *RevokeDBSecurityGroupIngressInput) SetCIDRIP(v string) *RevokeDBSecurityGroupIngressInput {
	s.CIDRIP = &v
	return s
}

// SetDBSecurityGroupName sets the DBSecurityGroupName field's value.
func (s *RevokeDBSecurityGroupIngressInput) SetDBSecurityGroupName(v string) *RevokeDBSecurityGroupIngressInput {
	s.DBSecurityGroupName = &v
	return s
}

// SetEC2SecurityGroupId sets the EC2SecurityGroupId field's value.
func (s *RevokeDBSecurityGroupIngressInput) SetEC2SecurityGroupId(v string) *RevokeDBSecurityGroupIngressInput {
	s.EC2SecurityGroupId = &v
	return s
}

// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
func (s *RevokeDBSecurityGroupIngressInput) SetEC2SecurityGroupName(v string) *RevokeDBSecurityGroupIngressInput {
	s.EC2SecurityGroupName = &v
	return s
}

// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
func (s *RevokeDBSecurityGroupIngressInput) SetEC2SecurityGroupOwnerId(v string) *RevokeDBSecurityGroupIngressInput {
	s.EC2SecurityGroupOwnerId = &v
	return s
}

type RevokeDBSecurityGroupIngressOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details for an Amazon RDS DB security group.
	//
	// This data type is used as a response element in the DescribeDBSecurityGroups
	// action.
	DBSecurityGroup *DBSecurityGroup `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 RevokeDBSecurityGroupIngressOutput) 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 RevokeDBSecurityGroupIngressOutput) GoString() string {
	return s.String()
}

// SetDBSecurityGroup sets the DBSecurityGroup field's value.
func (s *RevokeDBSecurityGroupIngressOutput) SetDBSecurityGroup(v *DBSecurityGroup) *RevokeDBSecurityGroupIngressOutput {
	s.DBSecurityGroup = v
	return s
}

// The metric reference details when the reference is a scalar.
type ScalarReferenceDetails struct {
	_ struct{} `type:"structure"`

	// The value of a scalar reference.
	Value *float64 `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 ScalarReferenceDetails) 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 ScalarReferenceDetails) GoString() string {
	return s.String()
}

// SetValue sets the Value field's value.
func (s *ScalarReferenceDetails) SetValue(v float64) *ScalarReferenceDetails {
	s.Value = &v
	return s
}

// Contains the scaling configuration of an Aurora Serverless v1 DB cluster.
//
// For more information, see Using Amazon Aurora Serverless v1 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html)
// in the Amazon Aurora User Guide.
type ScalingConfiguration struct {
	_ struct{} `type:"structure"`

	// Indicates whether to allow or disallow automatic pause for an Aurora DB cluster
	// in serverless DB engine mode. A DB cluster can be paused only when it's idle
	// (it has no connections).
	//
	// If a DB cluster is paused for more than seven days, the DB cluster might
	// be backed up with a snapshot. In this case, the DB cluster is restored when
	// there is a request to connect to it.
	AutoPause *bool `type:"boolean"`

	// The maximum capacity for an Aurora DB cluster in serverless DB engine mode.
	//
	// For Aurora MySQL, valid capacity values are 1, 2, 4, 8, 16, 32, 64, 128,
	// and 256.
	//
	// For Aurora PostgreSQL, valid capacity values are 2, 4, 8, 16, 32, 64, 192,
	// and 384.
	//
	// The maximum capacity must be greater than or equal to the minimum capacity.
	MaxCapacity *int64 `type:"integer"`

	// The minimum capacity for an Aurora DB cluster in serverless DB engine mode.
	//
	// For Aurora MySQL, valid capacity values are 1, 2, 4, 8, 16, 32, 64, 128,
	// and 256.
	//
	// For Aurora PostgreSQL, valid capacity values are 2, 4, 8, 16, 32, 64, 192,
	// and 384.
	//
	// The minimum capacity must be less than or equal to the maximum capacity.
	MinCapacity *int64 `type:"integer"`

	// The amount of time, in seconds, that Aurora Serverless v1 tries to find a
	// scaling point to perform seamless scaling before enforcing the timeout action.
	// The default is 300.
	//
	// Specify a value between 60 and 600 seconds.
	SecondsBeforeTimeout *int64 `type:"integer"`

	// The time, in seconds, before an Aurora DB cluster in serverless mode is paused.
	//
	// Specify a value between 300 and 86,400 seconds.
	SecondsUntilAutoPause *int64 `type:"integer"`

	// The action to take when the timeout is reached, either ForceApplyCapacityChange
	// or RollbackCapacityChange.
	//
	// ForceApplyCapacityChange sets the capacity to the specified value as soon
	// as possible.
	//
	// RollbackCapacityChange, the default, ignores the capacity change if a scaling
	// point isn't found in the timeout period.
	//
	// If you specify ForceApplyCapacityChange, connections that prevent Aurora
	// Serverless v1 from finding a scaling point might be dropped.
	//
	// For more information, see Autoscaling for Aurora Serverless v1 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html#aurora-serverless.how-it-works.auto-scaling)
	// in the Amazon Aurora User Guide.
	TimeoutAction *string `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 ScalingConfiguration) 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 ScalingConfiguration) GoString() string {
	return s.String()
}

// SetAutoPause sets the AutoPause field's value.
func (s *ScalingConfiguration) SetAutoPause(v bool) *ScalingConfiguration {
	s.AutoPause = &v
	return s
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *ScalingConfiguration) SetMaxCapacity(v int64) *ScalingConfiguration {
	s.MaxCapacity = &v
	return s
}

// SetMinCapacity sets the MinCapacity field's value.
func (s *ScalingConfiguration) SetMinCapacity(v int64) *ScalingConfiguration {
	s.MinCapacity = &v
	return s
}

// SetSecondsBeforeTimeout sets the SecondsBeforeTimeout field's value.
func (s *ScalingConfiguration) SetSecondsBeforeTimeout(v int64) *ScalingConfiguration {
	s.SecondsBeforeTimeout = &v
	return s
}

// SetSecondsUntilAutoPause sets the SecondsUntilAutoPause field's value.
func (s *ScalingConfiguration) SetSecondsUntilAutoPause(v int64) *ScalingConfiguration {
	s.SecondsUntilAutoPause = &v
	return s
}

// SetTimeoutAction sets the TimeoutAction field's value.
func (s *ScalingConfiguration) SetTimeoutAction(v string) *ScalingConfiguration {
	s.TimeoutAction = &v
	return s
}

// The scaling configuration for an Aurora DB cluster in serverless DB engine
// mode.
//
// For more information, see Using Amazon Aurora Serverless v1 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html)
// in the Amazon Aurora User Guide.
type ScalingConfigurationInfo struct {
	_ struct{} `type:"structure"`

	// Indicates whether automatic pause is allowed for the Aurora DB cluster in
	// serverless DB engine mode.
	//
	// When the value is set to false for an Aurora Serverless v1 DB cluster, the
	// DB cluster automatically resumes.
	AutoPause *bool `type:"boolean"`

	// The maximum capacity for an Aurora DB cluster in serverless DB engine mode.
	MaxCapacity *int64 `type:"integer"`

	// The minimum capacity for an Aurora DB cluster in serverless DB engine mode.
	MinCapacity *int64 `type:"integer"`

	// The number of seconds before scaling times out. What happens when an attempted
	// scaling action times out is determined by the TimeoutAction setting.
	SecondsBeforeTimeout *int64 `type:"integer"`

	// The remaining amount of time, in seconds, before the Aurora DB cluster in
	// serverless mode is paused. A DB cluster can be paused only when it's idle
	// (it has no connections).
	SecondsUntilAutoPause *int64 `type:"integer"`

	// The action that occurs when Aurora times out while attempting to change the
	// capacity of an Aurora Serverless v1 cluster. The value is either ForceApplyCapacityChange
	// or RollbackCapacityChange.
	//
	// ForceApplyCapacityChange, the default, sets the capacity to the specified
	// value as soon as possible.
	//
	// RollbackCapacityChange ignores the capacity change if a scaling point isn't
	// found in the timeout period.
	TimeoutAction *string `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 ScalingConfigurationInfo) 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 ScalingConfigurationInfo) GoString() string {
	return s.String()
}

// SetAutoPause sets the AutoPause field's value.
func (s *ScalingConfigurationInfo) SetAutoPause(v bool) *ScalingConfigurationInfo {
	s.AutoPause = &v
	return s
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *ScalingConfigurationInfo) SetMaxCapacity(v int64) *ScalingConfigurationInfo {
	s.MaxCapacity = &v
	return s
}

// SetMinCapacity sets the MinCapacity field's value.
func (s *ScalingConfigurationInfo) SetMinCapacity(v int64) *ScalingConfigurationInfo {
	s.MinCapacity = &v
	return s
}

// SetSecondsBeforeTimeout sets the SecondsBeforeTimeout field's value.
func (s *ScalingConfigurationInfo) SetSecondsBeforeTimeout(v int64) *ScalingConfigurationInfo {
	s.SecondsBeforeTimeout = &v
	return s
}

// SetSecondsUntilAutoPause sets the SecondsUntilAutoPause field's value.
func (s *ScalingConfigurationInfo) SetSecondsUntilAutoPause(v int64) *ScalingConfigurationInfo {
	s.SecondsUntilAutoPause = &v
	return s
}

// SetTimeoutAction sets the TimeoutAction field's value.
func (s *ScalingConfigurationInfo) SetTimeoutAction(v string) *ScalingConfigurationInfo {
	s.TimeoutAction = &v
	return s
}

// Contains the scaling configuration of an Aurora Serverless v2 DB cluster.
//
// For more information, see Using Amazon Aurora Serverless v2 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html)
// in the Amazon Aurora User Guide.
type ServerlessV2ScalingConfiguration struct {
	_ struct{} `type:"structure"`

	// The maximum number of Aurora capacity units (ACUs) for a DB instance in an
	// Aurora Serverless v2 cluster. You can specify ACU values in half-step increments,
	// such as 40, 40.5, 41, and so on. The largest value that you can use is 128.
	MaxCapacity *float64 `type:"double"`

	// The minimum number of Aurora capacity units (ACUs) for a DB instance in an
	// Aurora Serverless v2 cluster. You can specify ACU values in half-step increments,
	// such as 8, 8.5, 9, and so on. The smallest value that you can use is 0.5.
	MinCapacity *float64 `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 ServerlessV2ScalingConfiguration) 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 ServerlessV2ScalingConfiguration) GoString() string {
	return s.String()
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *ServerlessV2ScalingConfiguration) SetMaxCapacity(v float64) *ServerlessV2ScalingConfiguration {
	s.MaxCapacity = &v
	return s
}

// SetMinCapacity sets the MinCapacity field's value.
func (s *ServerlessV2ScalingConfiguration) SetMinCapacity(v float64) *ServerlessV2ScalingConfiguration {
	s.MinCapacity = &v
	return s
}

// The scaling configuration for an Aurora Serverless v2 DB cluster.
//
// For more information, see Using Amazon Aurora Serverless v2 (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html)
// in the Amazon Aurora User Guide.
type ServerlessV2ScalingConfigurationInfo struct {
	_ struct{} `type:"structure"`

	// The maximum number of Aurora capacity units (ACUs) for a DB instance in an
	// Aurora Serverless v2 cluster. You can specify ACU values in half-step increments,
	// such as 40, 40.5, 41, and so on. The largest value that you can use is 128.
	MaxCapacity *float64 `type:"double"`

	// The minimum number of Aurora capacity units (ACUs) for a DB instance in an
	// Aurora Serverless v2 cluster. You can specify ACU values in half-step increments,
	// such as 8, 8.5, 9, and so on. The smallest value that you can use is 0.5.
	MinCapacity *float64 `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 ServerlessV2ScalingConfigurationInfo) 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 ServerlessV2ScalingConfigurationInfo) GoString() string {
	return s.String()
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *ServerlessV2ScalingConfigurationInfo) SetMaxCapacity(v float64) *ServerlessV2ScalingConfigurationInfo {
	s.MaxCapacity = &v
	return s
}

// SetMinCapacity sets the MinCapacity field's value.
func (s *ServerlessV2ScalingConfigurationInfo) SetMinCapacity(v float64) *ServerlessV2ScalingConfigurationInfo {
	s.MinCapacity = &v
	return s
}

// Contains an Amazon Web Services Region name as the result of a successful
// call to the DescribeSourceRegions action.
type SourceRegion struct {
	_ struct{} `type:"structure"`

	// The endpoint for the source Amazon Web Services Region endpoint.
	Endpoint *string `type:"string"`

	// The name of the source Amazon Web Services Region.
	RegionName *string `type:"string"`

	// The status of the source Amazon Web Services Region.
	Status *string `type:"string"`

	// Indicates whether the source Amazon Web Services Region supports replicating
	// automated backups to the current Amazon Web Services Region.
	SupportsDBInstanceAutomatedBackupsReplication *bool `type:"boolean"`
}

// 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 SourceRegion) 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 SourceRegion) GoString() string {
	return s.String()
}

// SetEndpoint sets the Endpoint field's value.
func (s *SourceRegion) SetEndpoint(v string) *SourceRegion {
	s.Endpoint = &v
	return s
}

// SetRegionName sets the RegionName field's value.
func (s *SourceRegion) SetRegionName(v string) *SourceRegion {
	s.RegionName = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SourceRegion) SetStatus(v string) *SourceRegion {
	s.Status = &v
	return s
}

// SetSupportsDBInstanceAutomatedBackupsReplication sets the SupportsDBInstanceAutomatedBackupsReplication field's value.
func (s *SourceRegion) SetSupportsDBInstanceAutomatedBackupsReplication(v bool) *SourceRegion {
	s.SupportsDBInstanceAutomatedBackupsReplication = &v
	return s
}

type StartActivityStreamInput struct {
	_ struct{} `type:"structure"`

	// Specifies whether or not the database activity stream is to start as soon
	// as possible, regardless of the maintenance window for the database.
	ApplyImmediately *bool `type:"boolean"`

	// Specifies whether the database activity stream includes engine-native audit
	// fields. This option applies to an Oracle or Microsoft SQL Server DB instance.
	// By default, no engine-native audit fields are included.
	EngineNativeAuditFieldsIncluded *bool `type:"boolean"`

	// The Amazon Web Services KMS key identifier for encrypting messages in the
	// database activity stream. The Amazon Web Services KMS key identifier is the
	// key ARN, key ID, alias ARN, or alias name for the KMS key.
	//
	// KmsKeyId is a required field
	KmsKeyId *string `type:"string" required:"true"`

	// Specifies the mode of the database activity stream. Database events such
	// as a change or access generate an activity stream event. The database session
	// can handle these events either synchronously or asynchronously.
	//
	// Mode is a required field
	Mode *string `type:"string" required:"true" enum:"ActivityStreamMode"`

	// The Amazon Resource Name (ARN) of the DB cluster, for example, arn:aws:rds:us-east-1:12345667890:cluster:das-cluster.
	//
	// ResourceArn is a required field
	ResourceArn *string `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 StartActivityStreamInput) 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 StartActivityStreamInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartActivityStreamInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartActivityStreamInput"}
	if s.KmsKeyId == nil {
		invalidParams.Add(request.NewErrParamRequired("KmsKeyId"))
	}
	if s.Mode == nil {
		invalidParams.Add(request.NewErrParamRequired("Mode"))
	}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplyImmediately sets the ApplyImmediately field's value.
func (s *StartActivityStreamInput) SetApplyImmediately(v bool) *StartActivityStreamInput {
	s.ApplyImmediately = &v
	return s
}

// SetEngineNativeAuditFieldsIncluded sets the EngineNativeAuditFieldsIncluded field's value.
func (s *StartActivityStreamInput) SetEngineNativeAuditFieldsIncluded(v bool) *StartActivityStreamInput {
	s.EngineNativeAuditFieldsIncluded = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *StartActivityStreamInput) SetKmsKeyId(v string) *StartActivityStreamInput {
	s.KmsKeyId = &v
	return s
}

// SetMode sets the Mode field's value.
func (s *StartActivityStreamInput) SetMode(v string) *StartActivityStreamInput {
	s.Mode = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *StartActivityStreamInput) SetResourceArn(v string) *StartActivityStreamInput {
	s.ResourceArn = &v
	return s
}

type StartActivityStreamOutput struct {
	_ struct{} `type:"structure"`

	// Indicates whether or not the database activity stream will start as soon
	// as possible, regardless of the maintenance window for the database.
	ApplyImmediately *bool `type:"boolean"`

	// Indicates whether engine-native audit fields are included in the database
	// activity stream.
	EngineNativeAuditFieldsIncluded *bool `type:"boolean"`

	// The name of the Amazon Kinesis data stream to be used for the database activity
	// stream.
	KinesisStreamName *string `type:"string"`

	// The Amazon Web Services KMS key identifier for encryption of messages in
	// the database activity stream.
	KmsKeyId *string `type:"string"`

	// The mode of the database activity stream.
	Mode *string `type:"string" enum:"ActivityStreamMode"`

	// The status of the database activity stream.
	Status *string `type:"string" enum:"ActivityStreamStatus"`
}

// 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 StartActivityStreamOutput) 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 StartActivityStreamOutput) GoString() string {
	return s.String()
}

// SetApplyImmediately sets the ApplyImmediately field's value.
func (s *StartActivityStreamOutput) SetApplyImmediately(v bool) *StartActivityStreamOutput {
	s.ApplyImmediately = &v
	return s
}

// SetEngineNativeAuditFieldsIncluded sets the EngineNativeAuditFieldsIncluded field's value.
func (s *StartActivityStreamOutput) SetEngineNativeAuditFieldsIncluded(v bool) *StartActivityStreamOutput {
	s.EngineNativeAuditFieldsIncluded = &v
	return s
}

// SetKinesisStreamName sets the KinesisStreamName field's value.
func (s *StartActivityStreamOutput) SetKinesisStreamName(v string) *StartActivityStreamOutput {
	s.KinesisStreamName = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *StartActivityStreamOutput) SetKmsKeyId(v string) *StartActivityStreamOutput {
	s.KmsKeyId = &v
	return s
}

// SetMode sets the Mode field's value.
func (s *StartActivityStreamOutput) SetMode(v string) *StartActivityStreamOutput {
	s.Mode = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *StartActivityStreamOutput) SetStatus(v string) *StartActivityStreamOutput {
	s.Status = &v
	return s
}

type StartDBClusterInput struct {
	_ struct{} `type:"structure"`

	// The DB cluster identifier of the Amazon Aurora DB cluster to be started.
	// This parameter is stored as a lowercase string.
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `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 StartDBClusterInput) 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 StartDBClusterInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartDBClusterInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartDBClusterInput"}
	if s.DBClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *StartDBClusterInput) SetDBClusterIdentifier(v string) *StartDBClusterInput {
	s.DBClusterIdentifier = &v
	return s
}

type StartDBClusterOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon Aurora DB cluster or Multi-AZ DB cluster.
	//
	// For an Amazon Aurora DB cluster, this data type is used as a response element
	// in the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, PromoteReadReplicaDBCluster, RestoreDBClusterFromS3, RestoreDBClusterFromSnapshot,
	// RestoreDBClusterToPointInTime, StartDBCluster, and StopDBCluster.
	//
	// For a Multi-AZ DB cluster, this data type is used as a response element in
	// the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, RebootDBCluster, RestoreDBClusterFromSnapshot, and RestoreDBClusterToPointInTime.
	//
	// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
	// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
	// in the Amazon Aurora User Guide.
	//
	// For more information on Multi-AZ DB clusters, see Multi-AZ deployments with
	// two readable standby DB instances (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
	// in the Amazon RDS User Guide.
	DBCluster *DBCluster `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 StartDBClusterOutput) 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 StartDBClusterOutput) GoString() string {
	return s.String()
}

// SetDBCluster sets the DBCluster field's value.
func (s *StartDBClusterOutput) SetDBCluster(v *DBCluster) *StartDBClusterOutput {
	s.DBCluster = v
	return s
}

type StartDBInstanceAutomatedBackupsReplicationInput struct {
	_ struct{} `type:"structure"`

	// The retention period for the replicated automated backups.
	BackupRetentionPeriod *int64 `type:"integer"`

	// DestinationRegion is used for presigning the request to a given region.
	DestinationRegion *string `type:"string"`

	// The Amazon Web Services KMS key identifier for encryption of the replicated
	// automated backups. The KMS key ID is the Amazon Resource Name (ARN) for the
	// KMS encryption key in the destination Amazon Web Services Region, for example,
	// arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE.
	KmsKeyId *string `type:"string"`

	// In an Amazon Web Services GovCloud (US) Region, an URL that contains a Signature
	// Version 4 signed request for the StartDBInstanceAutomatedBackupsReplication
	// operation to call in the Amazon Web Services Region of the source DB instance.
	// The presigned URL must be a valid request for the StartDBInstanceAutomatedBackupsReplication
	// API operation that can run in the Amazon Web Services Region that contains
	// the source DB instance.
	//
	// This setting applies only to Amazon Web Services GovCloud (US) Regions. It's
	// ignored in other Amazon Web Services Regions.
	//
	// To learn how to generate a Signature Version 4 signed request, see Authenticating
	// Requests: Using Query Parameters (Amazon Web Services Signature Version 4)
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)
	// and Signature Version 4 Signing Process (https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).
	//
	// If you are using an Amazon Web Services SDK tool or the CLI, you can specify
	// SourceRegion (or --source-region for the CLI) instead of specifying PreSignedUrl
	// manually. Specifying SourceRegion autogenerates a presigned URL that is a
	// valid request for the operation that can run in the source Amazon Web Services
	// Region.
	PreSignedUrl *string `type:"string"`

	// The Amazon Resource Name (ARN) of the source DB instance for the replicated
	// automated backups, for example, arn:aws:rds:us-west-2:123456789012:db:mydatabase.
	//
	// SourceDBInstanceArn is a required field
	SourceDBInstanceArn *string `type:"string" required:"true"`

	// SourceRegion is the source region where the resource exists. This is not
	// sent over the wire and is only used for presigning. This value should always
	// have the same region as the source ARN.
	SourceRegion *string `type:"string" ignore:"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 StartDBInstanceAutomatedBackupsReplicationInput) 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 StartDBInstanceAutomatedBackupsReplicationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartDBInstanceAutomatedBackupsReplicationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartDBInstanceAutomatedBackupsReplicationInput"}
	if s.SourceDBInstanceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceDBInstanceArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBackupRetentionPeriod sets the BackupRetentionPeriod field's value.
func (s *StartDBInstanceAutomatedBackupsReplicationInput) SetBackupRetentionPeriod(v int64) *StartDBInstanceAutomatedBackupsReplicationInput {
	s.BackupRetentionPeriod = &v
	return s
}

// SetDestinationRegion sets the DestinationRegion field's value.
func (s *StartDBInstanceAutomatedBackupsReplicationInput) SetDestinationRegion(v string) *StartDBInstanceAutomatedBackupsReplicationInput {
	s.DestinationRegion = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *StartDBInstanceAutomatedBackupsReplicationInput) SetKmsKeyId(v string) *StartDBInstanceAutomatedBackupsReplicationInput {
	s.KmsKeyId = &v
	return s
}

// SetPreSignedUrl sets the PreSignedUrl field's value.
func (s *StartDBInstanceAutomatedBackupsReplicationInput) SetPreSignedUrl(v string) *StartDBInstanceAutomatedBackupsReplicationInput {
	s.PreSignedUrl = &v
	return s
}

// SetSourceDBInstanceArn sets the SourceDBInstanceArn field's value.
func (s *StartDBInstanceAutomatedBackupsReplicationInput) SetSourceDBInstanceArn(v string) *StartDBInstanceAutomatedBackupsReplicationInput {
	s.SourceDBInstanceArn = &v
	return s
}

// SetSourceRegion sets the SourceRegion field's value.
func (s *StartDBInstanceAutomatedBackupsReplicationInput) SetSourceRegion(v string) *StartDBInstanceAutomatedBackupsReplicationInput {
	s.SourceRegion = &v
	return s
}

type StartDBInstanceAutomatedBackupsReplicationOutput struct {
	_ struct{} `type:"structure"`

	// An automated backup of a DB instance. It consists of system backups, transaction
	// logs, and the database instance properties that existed at the time you deleted
	// the source instance.
	DBInstanceAutomatedBackup *DBInstanceAutomatedBackup `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 StartDBInstanceAutomatedBackupsReplicationOutput) 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 StartDBInstanceAutomatedBackupsReplicationOutput) GoString() string {
	return s.String()
}

// SetDBInstanceAutomatedBackup sets the DBInstanceAutomatedBackup field's value.
func (s *StartDBInstanceAutomatedBackupsReplicationOutput) SetDBInstanceAutomatedBackup(v *DBInstanceAutomatedBackup) *StartDBInstanceAutomatedBackupsReplicationOutput {
	s.DBInstanceAutomatedBackup = v
	return s
}

type StartDBInstanceInput struct {
	_ struct{} `type:"structure"`

	// The user-supplied instance identifier.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `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 StartDBInstanceInput) 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 StartDBInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartDBInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartDBInstanceInput"}
	if s.DBInstanceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBInstanceIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *StartDBInstanceInput) SetDBInstanceIdentifier(v string) *StartDBInstanceInput {
	s.DBInstanceIdentifier = &v
	return s
}

type StartDBInstanceOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon RDS DB instance.
	//
	// This data type is used as a response element in the operations CreateDBInstance,
	// CreateDBInstanceReadReplica, DeleteDBInstance, DescribeDBInstances, ModifyDBInstance,
	// PromoteReadReplica, RebootDBInstance, RestoreDBInstanceFromDBSnapshot, RestoreDBInstanceFromS3,
	// RestoreDBInstanceToPointInTime, StartDBInstance, and StopDBInstance.
	DBInstance *DBInstance `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 StartDBInstanceOutput) 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 StartDBInstanceOutput) GoString() string {
	return s.String()
}

// SetDBInstance sets the DBInstance field's value.
func (s *StartDBInstanceOutput) SetDBInstance(v *DBInstance) *StartDBInstanceOutput {
	s.DBInstance = v
	return s
}

type StartExportTaskInput struct {
	_ struct{} `type:"structure"`

	// The data to be exported from the snapshot or cluster. If this parameter isn't
	// provided, all of the data is exported.
	//
	// Valid Values:
	//
	//    * database - Export all the data from a specified database.
	//
	//    * database.table table-name - Export a table of the snapshot or cluster.
	//    This format is valid only for RDS for MySQL, RDS for MariaDB, and Aurora
	//    MySQL.
	//
	//    * database.schema schema-name - Export a database schema of the snapshot
	//    or cluster. This format is valid only for RDS for PostgreSQL and Aurora
	//    PostgreSQL.
	//
	//    * database.schema.table table-name - Export a table of the database schema.
	//    This format is valid only for RDS for PostgreSQL and Aurora PostgreSQL.
	ExportOnly []*string `type:"list"`

	// A unique identifier for the export task. This ID isn't an identifier for
	// the Amazon S3 bucket where the data is to be exported.
	//
	// ExportTaskIdentifier is a required field
	ExportTaskIdentifier *string `type:"string" required:"true"`

	// The name of the IAM role to use for writing to the Amazon S3 bucket when
	// exporting a snapshot or cluster.
	//
	// In the IAM policy attached to your IAM role, include the following required
	// actions to allow the transfer of files from Amazon RDS or Amazon Aurora to
	// an S3 bucket:
	//
	//    * s3:PutObject*
	//
	//    * s3:GetObject*
	//
	//    * s3:ListBucket
	//
	//    * s3:DeleteObject*
	//
	//    * s3:GetBucketLocation
	//
	// In the policy, include the resources to identify the S3 bucket and objects
	// in the bucket. The following list of resources shows the Amazon Resource
	// Name (ARN) format for accessing S3:
	//
	//    * arn:aws:s3:::your-s3-bucket
	//
	//    * arn:aws:s3:::your-s3-bucket/*
	//
	// IamRoleArn is a required field
	IamRoleArn *string `type:"string" required:"true"`

	// The ID of the Amazon Web Services KMS key to use to encrypt the data exported
	// to Amazon S3. The Amazon Web Services KMS key identifier is the key ARN,
	// key ID, alias ARN, or alias name for the KMS key. The caller of this operation
	// must be authorized to run the following operations. These can be set in the
	// Amazon Web Services KMS key policy:
	//
	//    * kms:Encrypt
	//
	//    * kms:Decrypt
	//
	//    * kms:GenerateDataKey
	//
	//    * kms:GenerateDataKeyWithoutPlaintext
	//
	//    * kms:ReEncryptFrom
	//
	//    * kms:ReEncryptTo
	//
	//    * kms:CreateGrant
	//
	//    * kms:DescribeKey
	//
	//    * kms:RetireGrant
	//
	// KmsKeyId is a required field
	KmsKeyId *string `type:"string" required:"true"`

	// The name of the Amazon S3 bucket to export the snapshot or cluster data to.
	//
	// S3BucketName is a required field
	S3BucketName *string `type:"string" required:"true"`

	// The Amazon S3 bucket prefix to use as the file name and path of the exported
	// data.
	S3Prefix *string `type:"string"`

	// The Amazon Resource Name (ARN) of the snapshot or cluster to export to Amazon
	// S3.
	//
	// SourceArn is a required field
	SourceArn *string `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 StartExportTaskInput) 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 StartExportTaskInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartExportTaskInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartExportTaskInput"}
	if s.ExportTaskIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("ExportTaskIdentifier"))
	}
	if s.IamRoleArn == nil {
		invalidParams.Add(request.NewErrParamRequired("IamRoleArn"))
	}
	if s.KmsKeyId == nil {
		invalidParams.Add(request.NewErrParamRequired("KmsKeyId"))
	}
	if s.S3BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("S3BucketName"))
	}
	if s.SourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetExportOnly sets the ExportOnly field's value.
func (s *StartExportTaskInput) SetExportOnly(v []*string) *StartExportTaskInput {
	s.ExportOnly = v
	return s
}

// SetExportTaskIdentifier sets the ExportTaskIdentifier field's value.
func (s *StartExportTaskInput) SetExportTaskIdentifier(v string) *StartExportTaskInput {
	s.ExportTaskIdentifier = &v
	return s
}

// SetIamRoleArn sets the IamRoleArn field's value.
func (s *StartExportTaskInput) SetIamRoleArn(v string) *StartExportTaskInput {
	s.IamRoleArn = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *StartExportTaskInput) SetKmsKeyId(v string) *StartExportTaskInput {
	s.KmsKeyId = &v
	return s
}

// SetS3BucketName sets the S3BucketName field's value.
func (s *StartExportTaskInput) SetS3BucketName(v string) *StartExportTaskInput {
	s.S3BucketName = &v
	return s
}

// SetS3Prefix sets the S3Prefix field's value.
func (s *StartExportTaskInput) SetS3Prefix(v string) *StartExportTaskInput {
	s.S3Prefix = &v
	return s
}

// SetSourceArn sets the SourceArn field's value.
func (s *StartExportTaskInput) SetSourceArn(v string) *StartExportTaskInput {
	s.SourceArn = &v
	return s
}

// Contains the details of a snapshot or cluster export to Amazon S3.
//
// This data type is used as a response element in the DescribeExportTasks operation.
type StartExportTaskOutput struct {
	_ struct{} `type:"structure"`

	// The data exported from the snapshot or cluster.
	//
	// Valid Values:
	//
	//    * database - Export all the data from a specified database.
	//
	//    * database.table table-name - Export a table of the snapshot or cluster.
	//    This format is valid only for RDS for MySQL, RDS for MariaDB, and Aurora
	//    MySQL.
	//
	//    * database.schema schema-name - Export a database schema of the snapshot
	//    or cluster. This format is valid only for RDS for PostgreSQL and Aurora
	//    PostgreSQL.
	//
	//    * database.schema.table table-name - Export a table of the database schema.
	//    This format is valid only for RDS for PostgreSQL and Aurora PostgreSQL.
	ExportOnly []*string `type:"list"`

	// A unique identifier for the snapshot or cluster export task. This ID isn't
	// an identifier for the Amazon S3 bucket where the data is exported.
	ExportTaskIdentifier *string `type:"string"`

	// The reason the export failed, if it failed.
	FailureCause *string `type:"string"`

	// The name of the IAM role that is used to write to Amazon S3 when exporting
	// a snapshot or cluster.
	IamRoleArn *string `type:"string"`

	// The key identifier of the Amazon Web Services KMS key that is used to encrypt
	// the data when it's exported to Amazon S3. The KMS key identifier is its key
	// ARN, key ID, alias ARN, or alias name. The IAM role used for the export must
	// have encryption and decryption permissions to use this KMS key.
	KmsKeyId *string `type:"string"`

	// The progress of the snapshot or cluster export task as a percentage.
	PercentProgress *int64 `type:"integer"`

	// The Amazon S3 bucket where the snapshot or cluster is exported to.
	S3Bucket *string `type:"string"`

	// The Amazon S3 bucket prefix that is the file name and path of the exported
	// data.
	S3Prefix *string `type:"string"`

	// The time when the snapshot was created.
	SnapshotTime *time.Time `type:"timestamp"`

	// The Amazon Resource Name (ARN) of the snapshot or cluster exported to Amazon
	// S3.
	SourceArn *string `type:"string"`

	// The type of source for the export.
	SourceType *string `type:"string" enum:"ExportSourceType"`

	// The progress status of the export task. The status can be one of the following:
	//
	//    * CANCELED
	//
	//    * CANCELING
	//
	//    * COMPLETE
	//
	//    * FAILED
	//
	//    * IN_PROGRESS
	//
	//    * STARTING
	Status *string `type:"string"`

	// The time when the snapshot or cluster export task ended.
	TaskEndTime *time.Time `type:"timestamp"`

	// The time when the snapshot or cluster export task started.
	TaskStartTime *time.Time `type:"timestamp"`

	// The total amount of data exported, in gigabytes.
	TotalExtractedDataInGB *int64 `type:"integer"`

	// A warning about the snapshot or cluster export task.
	WarningMessage *string `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 StartExportTaskOutput) 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 StartExportTaskOutput) GoString() string {
	return s.String()
}

// SetExportOnly sets the ExportOnly field's value.
func (s *StartExportTaskOutput) SetExportOnly(v []*string) *StartExportTaskOutput {
	s.ExportOnly = v
	return s
}

// SetExportTaskIdentifier sets the ExportTaskIdentifier field's value.
func (s *StartExportTaskOutput) SetExportTaskIdentifier(v string) *StartExportTaskOutput {
	s.ExportTaskIdentifier = &v
	return s
}

// SetFailureCause sets the FailureCause field's value.
func (s *StartExportTaskOutput) SetFailureCause(v string) *StartExportTaskOutput {
	s.FailureCause = &v
	return s
}

// SetIamRoleArn sets the IamRoleArn field's value.
func (s *StartExportTaskOutput) SetIamRoleArn(v string) *StartExportTaskOutput {
	s.IamRoleArn = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *StartExportTaskOutput) SetKmsKeyId(v string) *StartExportTaskOutput {
	s.KmsKeyId = &v
	return s
}

// SetPercentProgress sets the PercentProgress field's value.
func (s *StartExportTaskOutput) SetPercentProgress(v int64) *StartExportTaskOutput {
	s.PercentProgress = &v
	return s
}

// SetS3Bucket sets the S3Bucket field's value.
func (s *StartExportTaskOutput) SetS3Bucket(v string) *StartExportTaskOutput {
	s.S3Bucket = &v
	return s
}

// SetS3Prefix sets the S3Prefix field's value.
func (s *StartExportTaskOutput) SetS3Prefix(v string) *StartExportTaskOutput {
	s.S3Prefix = &v
	return s
}

// SetSnapshotTime sets the SnapshotTime field's value.
func (s *StartExportTaskOutput) SetSnapshotTime(v time.Time) *StartExportTaskOutput {
	s.SnapshotTime = &v
	return s
}

// SetSourceArn sets the SourceArn field's value.
func (s *StartExportTaskOutput) SetSourceArn(v string) *StartExportTaskOutput {
	s.SourceArn = &v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *StartExportTaskOutput) SetSourceType(v string) *StartExportTaskOutput {
	s.SourceType = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *StartExportTaskOutput) SetStatus(v string) *StartExportTaskOutput {
	s.Status = &v
	return s
}

// SetTaskEndTime sets the TaskEndTime field's value.
func (s *StartExportTaskOutput) SetTaskEndTime(v time.Time) *StartExportTaskOutput {
	s.TaskEndTime = &v
	return s
}

// SetTaskStartTime sets the TaskStartTime field's value.
func (s *StartExportTaskOutput) SetTaskStartTime(v time.Time) *StartExportTaskOutput {
	s.TaskStartTime = &v
	return s
}

// SetTotalExtractedDataInGB sets the TotalExtractedDataInGB field's value.
func (s *StartExportTaskOutput) SetTotalExtractedDataInGB(v int64) *StartExportTaskOutput {
	s.TotalExtractedDataInGB = &v
	return s
}

// SetWarningMessage sets the WarningMessage field's value.
func (s *StartExportTaskOutput) SetWarningMessage(v string) *StartExportTaskOutput {
	s.WarningMessage = &v
	return s
}

type StopActivityStreamInput struct {
	_ struct{} `type:"structure"`

	// Specifies whether or not the database activity stream is to stop as soon
	// as possible, regardless of the maintenance window for the database.
	ApplyImmediately *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) of the DB cluster for the database activity
	// stream. For example, arn:aws:rds:us-east-1:12345667890:cluster:das-cluster.
	//
	// ResourceArn is a required field
	ResourceArn *string `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 StopActivityStreamInput) 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 StopActivityStreamInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopActivityStreamInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopActivityStreamInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplyImmediately sets the ApplyImmediately field's value.
func (s *StopActivityStreamInput) SetApplyImmediately(v bool) *StopActivityStreamInput {
	s.ApplyImmediately = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *StopActivityStreamInput) SetResourceArn(v string) *StopActivityStreamInput {
	s.ResourceArn = &v
	return s
}

type StopActivityStreamOutput struct {
	_ struct{} `type:"structure"`

	// The name of the Amazon Kinesis data stream used for the database activity
	// stream.
	KinesisStreamName *string `type:"string"`

	// The Amazon Web Services KMS key identifier used for encrypting messages in
	// the database activity stream.
	//
	// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias
	// ARN, or alias name for the KMS key.
	KmsKeyId *string `type:"string"`

	// The status of the database activity stream.
	Status *string `type:"string" enum:"ActivityStreamStatus"`
}

// 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 StopActivityStreamOutput) 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 StopActivityStreamOutput) GoString() string {
	return s.String()
}

// SetKinesisStreamName sets the KinesisStreamName field's value.
func (s *StopActivityStreamOutput) SetKinesisStreamName(v string) *StopActivityStreamOutput {
	s.KinesisStreamName = &v
	return s
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *StopActivityStreamOutput) SetKmsKeyId(v string) *StopActivityStreamOutput {
	s.KmsKeyId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *StopActivityStreamOutput) SetStatus(v string) *StopActivityStreamOutput {
	s.Status = &v
	return s
}

type StopDBClusterInput struct {
	_ struct{} `type:"structure"`

	// The DB cluster identifier of the Amazon Aurora DB cluster to be stopped.
	// This parameter is stored as a lowercase string.
	//
	// DBClusterIdentifier is a required field
	DBClusterIdentifier *string `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 StopDBClusterInput) 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 StopDBClusterInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopDBClusterInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopDBClusterInput"}
	if s.DBClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBClusterIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBClusterIdentifier sets the DBClusterIdentifier field's value.
func (s *StopDBClusterInput) SetDBClusterIdentifier(v string) *StopDBClusterInput {
	s.DBClusterIdentifier = &v
	return s
}

type StopDBClusterOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon Aurora DB cluster or Multi-AZ DB cluster.
	//
	// For an Amazon Aurora DB cluster, this data type is used as a response element
	// in the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, PromoteReadReplicaDBCluster, RestoreDBClusterFromS3, RestoreDBClusterFromSnapshot,
	// RestoreDBClusterToPointInTime, StartDBCluster, and StopDBCluster.
	//
	// For a Multi-AZ DB cluster, this data type is used as a response element in
	// the operations CreateDBCluster, DeleteDBCluster, DescribeDBClusters, FailoverDBCluster,
	// ModifyDBCluster, RebootDBCluster, RestoreDBClusterFromSnapshot, and RestoreDBClusterToPointInTime.
	//
	// For more information on Amazon Aurora DB clusters, see What is Amazon Aurora?
	// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html)
	// in the Amazon Aurora User Guide.
	//
	// For more information on Multi-AZ DB clusters, see Multi-AZ deployments with
	// two readable standby DB instances (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html)
	// in the Amazon RDS User Guide.
	DBCluster *DBCluster `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 StopDBClusterOutput) 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 StopDBClusterOutput) GoString() string {
	return s.String()
}

// SetDBCluster sets the DBCluster field's value.
func (s *StopDBClusterOutput) SetDBCluster(v *DBCluster) *StopDBClusterOutput {
	s.DBCluster = v
	return s
}

type StopDBInstanceAutomatedBackupsReplicationInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the source DB instance for which to stop
	// replicating automate backups, for example, arn:aws:rds:us-west-2:123456789012:db:mydatabase.
	//
	// SourceDBInstanceArn is a required field
	SourceDBInstanceArn *string `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 StopDBInstanceAutomatedBackupsReplicationInput) 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 StopDBInstanceAutomatedBackupsReplicationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopDBInstanceAutomatedBackupsReplicationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopDBInstanceAutomatedBackupsReplicationInput"}
	if s.SourceDBInstanceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceDBInstanceArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSourceDBInstanceArn sets the SourceDBInstanceArn field's value.
func (s *StopDBInstanceAutomatedBackupsReplicationInput) SetSourceDBInstanceArn(v string) *StopDBInstanceAutomatedBackupsReplicationInput {
	s.SourceDBInstanceArn = &v
	return s
}

type StopDBInstanceAutomatedBackupsReplicationOutput struct {
	_ struct{} `type:"structure"`

	// An automated backup of a DB instance. It consists of system backups, transaction
	// logs, and the database instance properties that existed at the time you deleted
	// the source instance.
	DBInstanceAutomatedBackup *DBInstanceAutomatedBackup `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 StopDBInstanceAutomatedBackupsReplicationOutput) 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 StopDBInstanceAutomatedBackupsReplicationOutput) GoString() string {
	return s.String()
}

// SetDBInstanceAutomatedBackup sets the DBInstanceAutomatedBackup field's value.
func (s *StopDBInstanceAutomatedBackupsReplicationOutput) SetDBInstanceAutomatedBackup(v *DBInstanceAutomatedBackup) *StopDBInstanceAutomatedBackupsReplicationOutput {
	s.DBInstanceAutomatedBackup = v
	return s
}

type StopDBInstanceInput struct {
	_ struct{} `type:"structure"`

	// The user-supplied instance identifier.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `type:"string" required:"true"`

	// The user-supplied instance identifier of the DB Snapshot created immediately
	// before the DB instance is stopped.
	DBSnapshotIdentifier *string `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 StopDBInstanceInput) 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 StopDBInstanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopDBInstanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopDBInstanceInput"}
	if s.DBInstanceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBInstanceIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *StopDBInstanceInput) SetDBInstanceIdentifier(v string) *StopDBInstanceInput {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDBSnapshotIdentifier sets the DBSnapshotIdentifier field's value.
func (s *StopDBInstanceInput) SetDBSnapshotIdentifier(v string) *StopDBInstanceInput {
	s.DBSnapshotIdentifier = &v
	return s
}

type StopDBInstanceOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon RDS DB instance.
	//
	// This data type is used as a response element in the operations CreateDBInstance,
	// CreateDBInstanceReadReplica, DeleteDBInstance, DescribeDBInstances, ModifyDBInstance,
	// PromoteReadReplica, RebootDBInstance, RestoreDBInstanceFromDBSnapshot, RestoreDBInstanceFromS3,
	// RestoreDBInstanceToPointInTime, StartDBInstance, and StopDBInstance.
	DBInstance *DBInstance `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 StopDBInstanceOutput) 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 StopDBInstanceOutput) GoString() string {
	return s.String()
}

// SetDBInstance sets the DBInstance field's value.
func (s *StopDBInstanceOutput) SetDBInstance(v *DBInstance) *StopDBInstanceOutput {
	s.DBInstance = v
	return s
}

// This data type is used as a response element for the DescribeDBSubnetGroups
// operation.
type Subnet struct {
	_ struct{} `type:"structure"`

	// Contains Availability Zone information.
	//
	// This data type is used as an element in the OrderableDBInstanceOption data
	// type.
	SubnetAvailabilityZone *AvailabilityZone `type:"structure"`

	// The identifier of the subnet.
	SubnetIdentifier *string `type:"string"`

	// If the subnet is associated with an Outpost, this value specifies the Outpost.
	//
	// For more information about RDS on Outposts, see Amazon RDS on Amazon Web
	// Services Outposts (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html)
	// in the Amazon RDS User Guide.
	SubnetOutpost *Outpost `type:"structure"`

	// The status of the subnet.
	SubnetStatus *string `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 Subnet) 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 Subnet) GoString() string {
	return s.String()
}

// SetSubnetAvailabilityZone sets the SubnetAvailabilityZone field's value.
func (s *Subnet) SetSubnetAvailabilityZone(v *AvailabilityZone) *Subnet {
	s.SubnetAvailabilityZone = v
	return s
}

// SetSubnetIdentifier sets the SubnetIdentifier field's value.
func (s *Subnet) SetSubnetIdentifier(v string) *Subnet {
	s.SubnetIdentifier = &v
	return s
}

// SetSubnetOutpost sets the SubnetOutpost field's value.
func (s *Subnet) SetSubnetOutpost(v *Outpost) *Subnet {
	s.SubnetOutpost = v
	return s
}

// SetSubnetStatus sets the SubnetStatus field's value.
func (s *Subnet) SetSubnetStatus(v string) *Subnet {
	s.SubnetStatus = &v
	return s
}

type SwitchoverBlueGreenDeploymentInput struct {
	_ struct{} `type:"structure"`

	// The unique identifier of the blue/green deployment.
	//
	// Constraints:
	//
	//    * Must match an existing blue/green deployment identifier.
	//
	// BlueGreenDeploymentIdentifier is a required field
	BlueGreenDeploymentIdentifier *string `min:"1" type:"string" required:"true"`

	// The amount of time, in seconds, for the switchover to complete.
	//
	// Default: 300
	//
	// If the switchover takes longer than the specified duration, then any changes
	// are rolled back, and no changes are made to the environments.
	SwitchoverTimeout *int64 `min:"30" 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 SwitchoverBlueGreenDeploymentInput) 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 SwitchoverBlueGreenDeploymentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SwitchoverBlueGreenDeploymentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SwitchoverBlueGreenDeploymentInput"}
	if s.BlueGreenDeploymentIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("BlueGreenDeploymentIdentifier"))
	}
	if s.BlueGreenDeploymentIdentifier != nil && len(*s.BlueGreenDeploymentIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BlueGreenDeploymentIdentifier", 1))
	}
	if s.SwitchoverTimeout != nil && *s.SwitchoverTimeout < 30 {
		invalidParams.Add(request.NewErrParamMinValue("SwitchoverTimeout", 30))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBlueGreenDeploymentIdentifier sets the BlueGreenDeploymentIdentifier field's value.
func (s *SwitchoverBlueGreenDeploymentInput) SetBlueGreenDeploymentIdentifier(v string) *SwitchoverBlueGreenDeploymentInput {
	s.BlueGreenDeploymentIdentifier = &v
	return s
}

// SetSwitchoverTimeout sets the SwitchoverTimeout field's value.
func (s *SwitchoverBlueGreenDeploymentInput) SetSwitchoverTimeout(v int64) *SwitchoverBlueGreenDeploymentInput {
	s.SwitchoverTimeout = &v
	return s
}

type SwitchoverBlueGreenDeploymentOutput struct {
	_ struct{} `type:"structure"`

	// Details about a blue/green deployment.
	//
	// For more information, see Using Amazon RDS Blue/Green Deployments for database
	// updates (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments.html)
	// in the Amazon RDS User Guide and Using Amazon RDS Blue/Green Deployments
	// for database updates (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html)
	// in the Amazon Aurora User Guide.
	BlueGreenDeployment *BlueGreenDeployment `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 SwitchoverBlueGreenDeploymentOutput) 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 SwitchoverBlueGreenDeploymentOutput) GoString() string {
	return s.String()
}

// SetBlueGreenDeployment sets the BlueGreenDeployment field's value.
func (s *SwitchoverBlueGreenDeploymentOutput) SetBlueGreenDeployment(v *BlueGreenDeployment) *SwitchoverBlueGreenDeploymentOutput {
	s.BlueGreenDeployment = v
	return s
}

// Contains the details about a blue/green deployment.
//
// For more information, see Using Amazon RDS Blue/Green Deployments for database
// updates (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments.html)
// in the Amazon RDS User Guide and Using Amazon RDS Blue/Green Deployments
// for database updates (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html)
// in the Amazon Aurora User Guide.
type SwitchoverDetail struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of a resource in the blue environment.
	SourceMember *string `min:"1" type:"string"`

	// The switchover status of a resource in a blue/green deployment.
	//
	// Values:
	//
	//    * PROVISIONING - The resource is being prepared to switch over.
	//
	//    * AVAILABLE - The resource is ready to switch over.
	//
	//    * SWITCHOVER_IN_PROGRESS - The resource is being switched over.
	//
	//    * SWITCHOVER_COMPLETED - The resource has been switched over.
	//
	//    * SWITCHOVER_FAILED - The resource attempted to switch over but failed.
	//
	//    * MISSING_SOURCE - The source resource has been deleted.
	//
	//    * MISSING_TARGET - The target resource has been deleted.
	Status *string `type:"string"`

	// The Amazon Resource Name (ARN) of a resource in the green environment.
	TargetMember *string `min:"1" 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 SwitchoverDetail) 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 SwitchoverDetail) GoString() string {
	return s.String()
}

// SetSourceMember sets the SourceMember field's value.
func (s *SwitchoverDetail) SetSourceMember(v string) *SwitchoverDetail {
	s.SourceMember = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SwitchoverDetail) SetStatus(v string) *SwitchoverDetail {
	s.Status = &v
	return s
}

// SetTargetMember sets the TargetMember field's value.
func (s *SwitchoverDetail) SetTargetMember(v string) *SwitchoverDetail {
	s.TargetMember = &v
	return s
}

type SwitchoverGlobalClusterInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the global database cluster to switch over. This parameter
	// isn't case-sensitive.
	//
	// Constraints:
	//
	//    * Must match the identifier of an existing global database cluster (Aurora
	//    global database).
	//
	// GlobalClusterIdentifier is a required field
	GlobalClusterIdentifier *string `min:"1" type:"string" required:"true"`

	// The identifier of the secondary Aurora DB cluster to promote to the new primary
	// for the global database cluster. Use the Amazon Resource Name (ARN) for the
	// identifier so that Aurora can locate the cluster in its Amazon Web Services
	// Region.
	//
	// TargetDbClusterIdentifier is a required field
	TargetDbClusterIdentifier *string `min:"1" 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 SwitchoverGlobalClusterInput) 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 SwitchoverGlobalClusterInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SwitchoverGlobalClusterInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SwitchoverGlobalClusterInput"}
	if s.GlobalClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("GlobalClusterIdentifier"))
	}
	if s.GlobalClusterIdentifier != nil && len(*s.GlobalClusterIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GlobalClusterIdentifier", 1))
	}
	if s.TargetDbClusterIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("TargetDbClusterIdentifier"))
	}
	if s.TargetDbClusterIdentifier != nil && len(*s.TargetDbClusterIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TargetDbClusterIdentifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetGlobalClusterIdentifier sets the GlobalClusterIdentifier field's value.
func (s *SwitchoverGlobalClusterInput) SetGlobalClusterIdentifier(v string) *SwitchoverGlobalClusterInput {
	s.GlobalClusterIdentifier = &v
	return s
}

// SetTargetDbClusterIdentifier sets the TargetDbClusterIdentifier field's value.
func (s *SwitchoverGlobalClusterInput) SetTargetDbClusterIdentifier(v string) *SwitchoverGlobalClusterInput {
	s.TargetDbClusterIdentifier = &v
	return s
}

type SwitchoverGlobalClusterOutput struct {
	_ struct{} `type:"structure"`

	// A data type representing an Aurora global database.
	GlobalCluster *GlobalCluster `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 SwitchoverGlobalClusterOutput) 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 SwitchoverGlobalClusterOutput) GoString() string {
	return s.String()
}

// SetGlobalCluster sets the GlobalCluster field's value.
func (s *SwitchoverGlobalClusterOutput) SetGlobalCluster(v *GlobalCluster) *SwitchoverGlobalClusterOutput {
	s.GlobalCluster = v
	return s
}

type SwitchoverReadReplicaInput struct {
	_ struct{} `type:"structure"`

	// The DB instance identifier of the current standby database. This value is
	// stored as a lowercase string.
	//
	// Constraints:
	//
	//    * Must match the identiﬁer of an existing Oracle read replica DB instance.
	//
	// DBInstanceIdentifier is a required field
	DBInstanceIdentifier *string `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 SwitchoverReadReplicaInput) 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 SwitchoverReadReplicaInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SwitchoverReadReplicaInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SwitchoverReadReplicaInput"}
	if s.DBInstanceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DBInstanceIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *SwitchoverReadReplicaInput) SetDBInstanceIdentifier(v string) *SwitchoverReadReplicaInput {
	s.DBInstanceIdentifier = &v
	return s
}

type SwitchoverReadReplicaOutput struct {
	_ struct{} `type:"structure"`

	// Contains the details of an Amazon RDS DB instance.
	//
	// This data type is used as a response element in the operations CreateDBInstance,
	// CreateDBInstanceReadReplica, DeleteDBInstance, DescribeDBInstances, ModifyDBInstance,
	// PromoteReadReplica, RebootDBInstance, RestoreDBInstanceFromDBSnapshot, RestoreDBInstanceFromS3,
	// RestoreDBInstanceToPointInTime, StartDBInstance, and StopDBInstance.
	DBInstance *DBInstance `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 SwitchoverReadReplicaOutput) 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 SwitchoverReadReplicaOutput) GoString() string {
	return s.String()
}

// SetDBInstance sets the DBInstance field's value.
func (s *SwitchoverReadReplicaOutput) SetDBInstance(v *DBInstance) *SwitchoverReadReplicaOutput {
	s.DBInstance = v
	return s
}

// Metadata assigned to an Amazon RDS resource consisting of a key-value pair.
//
// For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
// in the Amazon RDS User Guide or Tagging Amazon Aurora and Amazon RDS Resources
// (https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html)
// in the Amazon Aurora User Guide.
type Tag struct {
	_ struct{} `type:"structure"`

	// A key is the required name of the tag. The string value can be from 1 to
	// 128 Unicode characters in length and can't be prefixed with aws: or rds:.
	// The string can only contain only the set of Unicode letters, digits, white-space,
	// '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$").
	Key *string `type:"string"`

	// A value is the optional value of the tag. The string value can be from 1
	// to 256 Unicode characters in length and can't be prefixed with aws: or rds:.
	// The string can only contain only the set of Unicode letters, digits, white-space,
	// '_', '.', ':', '/', '=', '+', '-', '@' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$").
	Value *string `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
}

// Information about the connection health of an RDS Proxy target.
type TargetHealth struct {
	_ struct{} `type:"structure"`

	// A description of the health of the RDS Proxy target. If the State is AVAILABLE,
	// a description is not included.
	Description *string `type:"string"`

	// The reason for the current health State of the RDS Proxy target.
	Reason *string `type:"string" enum:"TargetHealthReason"`

	// The current state of the connection health lifecycle for the RDS Proxy target.
	// The following is a typical lifecycle example for the states of an RDS Proxy
	// target:
	//
	// registering > unavailable > available > unavailable > available
	State *string `type:"string" enum:"TargetState"`
}

// 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 TargetHealth) 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 TargetHealth) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *TargetHealth) SetDescription(v string) *TargetHealth {
	s.Description = &v
	return s
}

// SetReason sets the Reason field's value.
func (s *TargetHealth) SetReason(v string) *TargetHealth {
	s.Reason = &v
	return s
}

// SetState sets the State field's value.
func (s *TargetHealth) SetState(v string) *TargetHealth {
	s.State = &v
	return s
}

// A tenant database in the DB instance. This data type is an element in the
// response to the DescribeTenantDatabases action.
type TenantDatabase struct {
	_ struct{} `type:"structure"`

	// The character set of the tenant database.
	CharacterSetName *string `type:"string"`

	// The ID of the DB instance that contains the tenant database.
	DBInstanceIdentifier *string `type:"string"`

	// The Amazon Web Services Region-unique, immutable identifier for the DB instance.
	DbiResourceId *string `type:"string"`

	// Specifies whether deletion protection is enabled for the DB instance.
	DeletionProtection *bool `type:"boolean"`

	// The master username of the tenant database.
	MasterUsername *string `type:"string"`

	// The NCHAR character set name of the tenant database.
	NcharCharacterSetName *string `type:"string"`

	// Information about pending changes for a tenant database.
	PendingModifiedValues *TenantDatabasePendingModifiedValues `type:"structure"`

	// The status of the tenant database.
	Status *string `type:"string"`

	// A list of tags. For more information, see Tagging Amazon RDS Resources (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)
	// in the Amazon RDS User Guide.
	TagList []*Tag `locationNameList:"Tag" type:"list"`

	// The database name of the tenant database.
	TenantDBName *string `type:"string"`

	// The Amazon Resource Name (ARN) for the tenant database.
	TenantDatabaseARN *string `type:"string"`

	// The creation time of the tenant database.
	TenantDatabaseCreateTime *time.Time `type:"timestamp"`

	// The Amazon Web Services Region-unique, immutable identifier for the tenant
	// database.
	TenantDatabaseResourceId *string `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 TenantDatabase) 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 TenantDatabase) GoString() string {
	return s.String()
}

// SetCharacterSetName sets the CharacterSetName field's value.
func (s *TenantDatabase) SetCharacterSetName(v string) *TenantDatabase {
	s.CharacterSetName = &v
	return s
}

// SetDBInstanceIdentifier sets the DBInstanceIdentifier field's value.
func (s *TenantDatabase) SetDBInstanceIdentifier(v string) *TenantDatabase {
	s.DBInstanceIdentifier = &v
	return s
}

// SetDbiResourceId sets the DbiResourceId field's value.
func (s *TenantDatabase) SetDbiResourceId(v string) *TenantDatabase {
	s.DbiResourceId = &v
	return s
}

// SetDeletionProtection sets the DeletionProtection field's value.
func (s *TenantDatabase) SetDeletionProtection(v bool) *TenantDatabase {
	s.DeletionProtection = &v
	return s
}

// SetMasterUsername sets the MasterUsername field's value.
func (s *TenantDatabase) SetMasterUsername(v string) *TenantDatabase {
	s.MasterUsername = &v
	return s
}

// SetNcharCharacterSetName sets the NcharCharacterSetName field's value.
func (s *TenantDatabase) SetNcharCharacterSetName(v string) *TenantDatabase {
	s.NcharCharacterSetName = &v
	return s
}

// SetPendingModifiedValues sets the PendingModifiedValues field's value.
func (s *TenantDatabase) SetPendingModifiedValues(v *TenantDatabasePendingModifiedValues) *TenantDatabase {
	s.PendingModifiedValues = v
	return s
}

// SetStatus sets the Status field's value.
func (s *TenantDatabase) SetStatus(v string) *TenantDatabase {
	s.Status = &v
	return s
}

// SetTagList sets the TagList field's value.
func (s *TenantDatabase) SetTagList(v []*Tag) *TenantDatabase {
	s.TagList = v
	return s
}

// SetTenantDBName sets the TenantDBName field's value.
func (s *TenantDatabase) SetTenantDBName(v string) *TenantDatabase {
	s.TenantDBName = &v
	return s
}

// SetTenantDatabaseARN sets the TenantDatabaseARN field's value.
func (s *TenantDatabase) SetTenantDatabaseARN(v string) *TenantDatabase {
	s.TenantDatabaseARN = &v
	return s
}

// SetTenantDatabaseCreateTime sets the TenantDatabaseCreateTime field's value.
func (s *TenantDatabase) SetTenantDatabaseCreateTime(v time.Time) *TenantDatabase {
	s.TenantDatabaseCreateTime = &v
	return s
}

// SetTenantDatabaseResourceId sets the TenantDatabaseResourceId field's value.
func (s *TenantDatabase) SetTenantDatabaseResourceId(v string) *TenantDatabase {
	s.TenantDatabaseResourceId = &v
	return s
}

// A response element in the ModifyTenantDatabase operation that describes changes
// that will be applied. Specific changes are identified by subelements.
type TenantDatabasePendingModifiedValues struct {
	_ struct{} `type:"structure"`

	// The master password for the tenant database.
	//
	// MasterUserPassword is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by TenantDatabasePendingModifiedValues's
	// String and GoString methods.
	MasterUserPassword *string `type:"string" sensitive:"true"`

	// The name of the tenant database.
	TenantDBName *string `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 TenantDatabasePendingModifiedValues) 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 TenantDatabasePendingModifiedValues) GoString() string {
	return s.String()
}

// SetMasterUserPassword sets the MasterUserPassword field's value.
func (s *TenantDatabasePendingModifiedValues) SetMasterUserPassword(v string) *TenantDatabasePendingModifiedValues {
	s.MasterUserPassword = &v
	return s
}

// SetTenantDBName sets the TenantDBName field's value.
func (s *TenantDatabasePendingModifiedValues) SetTenantDBName(v string) *TenantDatabasePendingModifiedValues {
	s.TenantDBName = &v
	return s
}

// A time zone associated with a DBInstance or a DBSnapshot. This data type
// is an element in the response to the DescribeDBInstances, the DescribeDBSnapshots,
// and the DescribeDBEngineVersions actions.
type Timezone struct {
	_ struct{} `type:"structure"`

	// The name of the time zone.
	TimezoneName *string `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 Timezone) 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 Timezone) GoString() string {
	return s.String()
}

// SetTimezoneName sets the TimezoneName field's value.
func (s *Timezone) SetTimezoneName(v string) *Timezone {
	s.TimezoneName = &v
	return s
}

// The version of the database engine that a DB instance can be upgraded to.
type UpgradeTarget struct {
	_ struct{} `type:"structure"`

	// Indicates whether the target version is applied to any source DB instances
	// that have AutoMinorVersionUpgrade set to true.
	//
	// This parameter is dynamic, and is set by RDS.
	AutoUpgrade *bool `type:"boolean"`

	// The version of the database engine that a DB instance can be upgraded to.
	Description *string `type:"string"`

	// The name of the upgrade target database engine.
	Engine *string `type:"string"`

	// The version number of the upgrade target database engine.
	EngineVersion *string `type:"string"`

	// Indicates whether upgrading to the target version requires upgrading the
	// major version of the database engine.
	IsMajorVersionUpgrade *bool `type:"boolean"`

	// A list of the supported DB engine modes for the target engine version.
	SupportedEngineModes []*string `type:"list"`

	// Indicates whether you can use Babelfish for Aurora PostgreSQL with the target
	// engine version.
	SupportsBabelfish *bool `type:"boolean"`

	// Indicates whether you can use Aurora global databases with the target engine
	// version.
	SupportsGlobalDatabases *bool `type:"boolean"`

	// Indicates whether the DB engine version supports zero-ETL integrations with
	// Amazon Redshift.
	SupportsIntegrations *bool `type:"boolean"`

	// Indicates whether the DB engine version supports Aurora Limitless Database.
	SupportsLimitlessDatabase *bool `type:"boolean"`

	// Indicates whether the target engine version supports forwarding write operations
	// from reader DB instances to the writer DB instance in the DB cluster. By
	// default, write operations aren't allowed on reader DB instances.
	//
	// Valid for: Aurora DB clusters only
	SupportsLocalWriteForwarding *bool `type:"boolean"`

	// Indicates whether you can use Aurora parallel query with the target engine
	// version.
	SupportsParallelQuery *bool `type:"boolean"`
}

// 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 UpgradeTarget) 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 UpgradeTarget) GoString() string {
	return s.String()
}

// SetAutoUpgrade sets the AutoUpgrade field's value.
func (s *UpgradeTarget) SetAutoUpgrade(v bool) *UpgradeTarget {
	s.AutoUpgrade = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpgradeTarget) SetDescription(v string) *UpgradeTarget {
	s.Description = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *UpgradeTarget) SetEngine(v string) *UpgradeTarget {
	s.Engine = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *UpgradeTarget) SetEngineVersion(v string) *UpgradeTarget {
	s.EngineVersion = &v
	return s
}

// SetIsMajorVersionUpgrade sets the IsMajorVersionUpgrade field's value.
func (s *UpgradeTarget) SetIsMajorVersionUpgrade(v bool) *UpgradeTarget {
	s.IsMajorVersionUpgrade = &v
	return s
}

// SetSupportedEngineModes sets the SupportedEngineModes field's value.
func (s *UpgradeTarget) SetSupportedEngineModes(v []*string) *UpgradeTarget {
	s.SupportedEngineModes = v
	return s
}

// SetSupportsBabelfish sets the SupportsBabelfish field's value.
func (s *UpgradeTarget) SetSupportsBabelfish(v bool) *UpgradeTarget {
	s.SupportsBabelfish = &v
	return s
}

// SetSupportsGlobalDatabases sets the SupportsGlobalDatabases field's value.
func (s *UpgradeTarget) SetSupportsGlobalDatabases(v bool) *UpgradeTarget {
	s.SupportsGlobalDatabases = &v
	return s
}

// SetSupportsIntegrations sets the SupportsIntegrations field's value.
func (s *UpgradeTarget) SetSupportsIntegrations(v bool) *UpgradeTarget {
	s.SupportsIntegrations = &v
	return s
}

// SetSupportsLimitlessDatabase sets the SupportsLimitlessDatabase field's value.
func (s *UpgradeTarget) SetSupportsLimitlessDatabase(v bool) *UpgradeTarget {
	s.SupportsLimitlessDatabase = &v
	return s
}

// SetSupportsLocalWriteForwarding sets the SupportsLocalWriteForwarding field's value.
func (s *UpgradeTarget) SetSupportsLocalWriteForwarding(v bool) *UpgradeTarget {
	s.SupportsLocalWriteForwarding = &v
	return s
}

// SetSupportsParallelQuery sets the SupportsParallelQuery field's value.
func (s *UpgradeTarget) SetSupportsParallelQuery(v bool) *UpgradeTarget {
	s.SupportsParallelQuery = &v
	return s
}

// Specifies the details of authentication used by a proxy to log in as a specific
// database user.
type UserAuthConfig struct {
	_ struct{} `type:"structure"`

	// The type of authentication that the proxy uses for connections from the proxy
	// to the underlying database.
	AuthScheme *string `type:"string" enum:"AuthScheme"`

	// The type of authentication the proxy uses for connections from clients.
	ClientPasswordAuthType *string `type:"string" enum:"ClientPasswordAuthType"`

	// A user-specified description about the authentication used by a proxy to
	// log in as a specific database user.
	Description *string `type:"string"`

	// A value that indicates whether to require or disallow Amazon Web Services
	// Identity and Access Management (IAM) authentication for connections to the
	// proxy. The ENABLED value is valid only for proxies with RDS for Microsoft
	// SQL Server.
	IAMAuth *string `type:"string" enum:"IAMAuthMode"`

	// The Amazon Resource Name (ARN) representing the secret that the proxy uses
	// to authenticate to the RDS DB instance or Aurora DB cluster. These secrets
	// are stored within Amazon Secrets Manager.
	SecretArn *string `type:"string"`

	// The name of the database user to which the proxy connects.
	UserName *string `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 UserAuthConfig) 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 UserAuthConfig) GoString() string {
	return s.String()
}

// SetAuthScheme sets the AuthScheme field's value.
func (s *UserAuthConfig) SetAuthScheme(v string) *UserAuthConfig {
	s.AuthScheme = &v
	return s
}

// SetClientPasswordAuthType sets the ClientPasswordAuthType field's value.
func (s *UserAuthConfig) SetClientPasswordAuthType(v string) *UserAuthConfig {
	s.ClientPasswordAuthType = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UserAuthConfig) SetDescription(v string) *UserAuthConfig {
	s.Description = &v
	return s
}

// SetIAMAuth sets the IAMAuth field's value.
func (s *UserAuthConfig) SetIAMAuth(v string) *UserAuthConfig {
	s.IAMAuth = &v
	return s
}

// SetSecretArn sets the SecretArn field's value.
func (s *UserAuthConfig) SetSecretArn(v string) *UserAuthConfig {
	s.SecretArn = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *UserAuthConfig) SetUserName(v string) *UserAuthConfig {
	s.UserName = &v
	return s
}

// Returns the details of authentication used by a proxy to log in as a specific
// database user.
type UserAuthConfigInfo struct {
	_ struct{} `type:"structure"`

	// The type of authentication that the proxy uses for connections from the proxy
	// to the underlying database.
	AuthScheme *string `type:"string" enum:"AuthScheme"`

	// The type of authentication the proxy uses for connections from clients.
	ClientPasswordAuthType *string `type:"string" enum:"ClientPasswordAuthType"`

	// A user-specified description about the authentication used by a proxy to
	// log in as a specific database user.
	Description *string `type:"string"`

	// Whether to require or disallow Amazon Web Services Identity and Access Management
	// (IAM) authentication for connections to the proxy. The ENABLED value is valid
	// only for proxies with RDS for Microsoft SQL Server.
	IAMAuth *string `type:"string" enum:"IAMAuthMode"`

	// The Amazon Resource Name (ARN) representing the secret that the proxy uses
	// to authenticate to the RDS DB instance or Aurora DB cluster. These secrets
	// are stored within Amazon Secrets Manager.
	SecretArn *string `type:"string"`

	// The name of the database user to which the proxy connects.
	UserName *string `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 UserAuthConfigInfo) 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 UserAuthConfigInfo) GoString() string {
	return s.String()
}

// SetAuthScheme sets the AuthScheme field's value.
func (s *UserAuthConfigInfo) SetAuthScheme(v string) *UserAuthConfigInfo {
	s.AuthScheme = &v
	return s
}

// SetClientPasswordAuthType sets the ClientPasswordAuthType field's value.
func (s *UserAuthConfigInfo) SetClientPasswordAuthType(v string) *UserAuthConfigInfo {
	s.ClientPasswordAuthType = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UserAuthConfigInfo) SetDescription(v string) *UserAuthConfigInfo {
	s.Description = &v
	return s
}

// SetIAMAuth sets the IAMAuth field's value.
func (s *UserAuthConfigInfo) SetIAMAuth(v string) *UserAuthConfigInfo {
	s.IAMAuth = &v
	return s
}

// SetSecretArn sets the SecretArn field's value.
func (s *UserAuthConfigInfo) SetSecretArn(v string) *UserAuthConfigInfo {
	s.SecretArn = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *UserAuthConfigInfo) SetUserName(v string) *UserAuthConfigInfo {
	s.UserName = &v
	return s
}

// Information about valid modifications that you can make to your DB instance.
// Contains the result of a successful call to the DescribeValidDBInstanceModifications
// action. You can use this information when you call ModifyDBInstance.
type ValidDBInstanceModificationsMessage struct {
	_ struct{} `type:"structure"`

	// Valid storage options for your DB instance.
	Storage []*ValidStorageOptions `locationNameList:"ValidStorageOptions" type:"list"`

	// Indicates whether a DB instance supports using a dedicated log volume (DLV).
	SupportsDedicatedLogVolume *bool `type:"boolean"`

	// Valid processor features for your DB instance.
	ValidProcessorFeatures []*AvailableProcessorFeature `locationNameList:"AvailableProcessorFeature" 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 ValidDBInstanceModificationsMessage) 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 ValidDBInstanceModificationsMessage) GoString() string {
	return s.String()
}

// SetStorage sets the Storage field's value.
func (s *ValidDBInstanceModificationsMessage) SetStorage(v []*ValidStorageOptions) *ValidDBInstanceModificationsMessage {
	s.Storage = v
	return s
}

// SetSupportsDedicatedLogVolume sets the SupportsDedicatedLogVolume field's value.
func (s *ValidDBInstanceModificationsMessage) SetSupportsDedicatedLogVolume(v bool) *ValidDBInstanceModificationsMessage {
	s.SupportsDedicatedLogVolume = &v
	return s
}

// SetValidProcessorFeatures sets the ValidProcessorFeatures field's value.
func (s *ValidDBInstanceModificationsMessage) SetValidProcessorFeatures(v []*AvailableProcessorFeature) *ValidDBInstanceModificationsMessage {
	s.ValidProcessorFeatures = v
	return s
}

// Information about valid modifications that you can make to your DB instance.
// Contains the result of a successful call to the DescribeValidDBInstanceModifications
// action.
type ValidStorageOptions struct {
	_ struct{} `type:"structure"`

	// The valid range of Provisioned IOPS to gibibytes of storage multiplier. For
	// example, 3-10, which means that provisioned IOPS can be between 3 and 10
	// times storage.
	IopsToStorageRatio []*DoubleRange `locationNameList:"DoubleRange" type:"list"`

	// The valid range of provisioned IOPS. For example, 1000-256,000.
	ProvisionedIops []*Range `locationNameList:"Range" type:"list"`

	// The valid range of provisioned storage throughput. For example, 500-4,000
	// mebibytes per second (MiBps).
	ProvisionedStorageThroughput []*Range `locationNameList:"Range" type:"list"`

	// The valid range of storage in gibibytes (GiB). For example, 100 to 16,384.
	StorageSize []*Range `locationNameList:"Range" type:"list"`

	// The valid range of storage throughput to provisioned IOPS ratios. For example,
	// 0-0.25.
	StorageThroughputToIopsRatio []*DoubleRange `locationNameList:"DoubleRange" type:"list"`

	// The valid storage types for your DB instance. For example: gp2, gp3, io1,
	// io2.
	StorageType *string `type:"string"`

	// Indicates whether or not Amazon RDS can automatically scale storage for DB
	// instances that use the new instance class.
	SupportsStorageAutoscaling *bool `type:"boolean"`
}

// 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 ValidStorageOptions) 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 ValidStorageOptions) GoString() string {
	return s.String()
}

// SetIopsToStorageRatio sets the IopsToStorageRatio field's value.
func (s *ValidStorageOptions) SetIopsToStorageRatio(v []*DoubleRange) *ValidStorageOptions {
	s.IopsToStorageRatio = v
	return s
}

// SetProvisionedIops sets the ProvisionedIops field's value.
func (s *ValidStorageOptions) SetProvisionedIops(v []*Range) *ValidStorageOptions {
	s.ProvisionedIops = v
	return s
}

// SetProvisionedStorageThroughput sets the ProvisionedStorageThroughput field's value.
func (s *ValidStorageOptions) SetProvisionedStorageThroughput(v []*Range) *ValidStorageOptions {
	s.ProvisionedStorageThroughput = v
	return s
}

// SetStorageSize sets the StorageSize field's value.
func (s *ValidStorageOptions) SetStorageSize(v []*Range) *ValidStorageOptions {
	s.StorageSize = v
	return s
}

// SetStorageThroughputToIopsRatio sets the StorageThroughputToIopsRatio field's value.
func (s *ValidStorageOptions) SetStorageThroughputToIopsRatio(v []*DoubleRange) *ValidStorageOptions {
	s.StorageThroughputToIopsRatio = v
	return s
}

// SetStorageType sets the StorageType field's value.
func (s *ValidStorageOptions) SetStorageType(v string) *ValidStorageOptions {
	s.StorageType = &v
	return s
}

// SetSupportsStorageAutoscaling sets the SupportsStorageAutoscaling field's value.
func (s *ValidStorageOptions) SetSupportsStorageAutoscaling(v bool) *ValidStorageOptions {
	s.SupportsStorageAutoscaling = &v
	return s
}

// This data type is used as a response element for queries on VPC security
// group membership.
type VpcSecurityGroupMembership struct {
	_ struct{} `type:"structure"`

	// The membership status of the VPC security group.
	//
	// Currently, the only valid status is active.
	Status *string `type:"string"`

	// The name of the VPC security group.
	VpcSecurityGroupId *string `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 VpcSecurityGroupMembership) 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 VpcSecurityGroupMembership) GoString() string {
	return s.String()
}

// SetStatus sets the Status field's value.
func (s *VpcSecurityGroupMembership) SetStatus(v string) *VpcSecurityGroupMembership {
	s.Status = &v
	return s
}

// SetVpcSecurityGroupId sets the VpcSecurityGroupId field's value.
func (s *VpcSecurityGroupMembership) SetVpcSecurityGroupId(v string) *VpcSecurityGroupMembership {
	s.VpcSecurityGroupId = &v
	return s
}

const (
	// ActivityStreamModeSync is a ActivityStreamMode enum value
	ActivityStreamModeSync = "sync"

	// ActivityStreamModeAsync is a ActivityStreamMode enum value
	ActivityStreamModeAsync = "async"
)

// ActivityStreamMode_Values returns all elements of the ActivityStreamMode enum
func ActivityStreamMode_Values() []string {
	return []string{
		ActivityStreamModeSync,
		ActivityStreamModeAsync,
	}
}

const (
	// ActivityStreamPolicyStatusLocked is a ActivityStreamPolicyStatus enum value
	ActivityStreamPolicyStatusLocked = "locked"

	// ActivityStreamPolicyStatusUnlocked is a ActivityStreamPolicyStatus enum value
	ActivityStreamPolicyStatusUnlocked = "unlocked"

	// ActivityStreamPolicyStatusLockingPolicy is a ActivityStreamPolicyStatus enum value
	ActivityStreamPolicyStatusLockingPolicy = "locking-policy"

	// ActivityStreamPolicyStatusUnlockingPolicy is a ActivityStreamPolicyStatus enum value
	ActivityStreamPolicyStatusUnlockingPolicy = "unlocking-policy"
)

// ActivityStreamPolicyStatus_Values returns all elements of the ActivityStreamPolicyStatus enum
func ActivityStreamPolicyStatus_Values() []string {
	return []string{
		ActivityStreamPolicyStatusLocked,
		ActivityStreamPolicyStatusUnlocked,
		ActivityStreamPolicyStatusLockingPolicy,
		ActivityStreamPolicyStatusUnlockingPolicy,
	}
}

const (
	// ActivityStreamStatusStopped is a ActivityStreamStatus enum value
	ActivityStreamStatusStopped = "stopped"

	// ActivityStreamStatusStarting is a ActivityStreamStatus enum value
	ActivityStreamStatusStarting = "starting"

	// ActivityStreamStatusStarted is a ActivityStreamStatus enum value
	ActivityStreamStatusStarted = "started"

	// ActivityStreamStatusStopping is a ActivityStreamStatus enum value
	ActivityStreamStatusStopping = "stopping"
)

// ActivityStreamStatus_Values returns all elements of the ActivityStreamStatus enum
func ActivityStreamStatus_Values() []string {
	return []string{
		ActivityStreamStatusStopped,
		ActivityStreamStatusStarting,
		ActivityStreamStatusStarted,
		ActivityStreamStatusStopping,
	}
}

const (
	// ApplyMethodImmediate is a ApplyMethod enum value
	ApplyMethodImmediate = "immediate"

	// ApplyMethodPendingReboot is a ApplyMethod enum value
	ApplyMethodPendingReboot = "pending-reboot"
)

// ApplyMethod_Values returns all elements of the ApplyMethod enum
func ApplyMethod_Values() []string {
	return []string{
		ApplyMethodImmediate,
		ApplyMethodPendingReboot,
	}
}

const (
	// AuditPolicyStateLocked is a AuditPolicyState enum value
	AuditPolicyStateLocked = "locked"

	// AuditPolicyStateUnlocked is a AuditPolicyState enum value
	AuditPolicyStateUnlocked = "unlocked"
)

// AuditPolicyState_Values returns all elements of the AuditPolicyState enum
func AuditPolicyState_Values() []string {
	return []string{
		AuditPolicyStateLocked,
		AuditPolicyStateUnlocked,
	}
}

const (
	// AuthSchemeSecrets is a AuthScheme enum value
	AuthSchemeSecrets = "SECRETS"
)

// AuthScheme_Values returns all elements of the AuthScheme enum
func AuthScheme_Values() []string {
	return []string{
		AuthSchemeSecrets,
	}
}

const (
	// AutomationModeFull is a AutomationMode enum value
	AutomationModeFull = "full"

	// AutomationModeAllPaused is a AutomationMode enum value
	AutomationModeAllPaused = "all-paused"
)

// AutomationMode_Values returns all elements of the AutomationMode enum
func AutomationMode_Values() []string {
	return []string{
		AutomationModeFull,
		AutomationModeAllPaused,
	}
}

const (
	// ClientPasswordAuthTypeMysqlNativePassword is a ClientPasswordAuthType enum value
	ClientPasswordAuthTypeMysqlNativePassword = "MYSQL_NATIVE_PASSWORD"

	// ClientPasswordAuthTypePostgresScramSha256 is a ClientPasswordAuthType enum value
	ClientPasswordAuthTypePostgresScramSha256 = "POSTGRES_SCRAM_SHA_256"

	// ClientPasswordAuthTypePostgresMd5 is a ClientPasswordAuthType enum value
	ClientPasswordAuthTypePostgresMd5 = "POSTGRES_MD5"

	// ClientPasswordAuthTypeSqlServerAuthentication is a ClientPasswordAuthType enum value
	ClientPasswordAuthTypeSqlServerAuthentication = "SQL_SERVER_AUTHENTICATION"
)

// ClientPasswordAuthType_Values returns all elements of the ClientPasswordAuthType enum
func ClientPasswordAuthType_Values() []string {
	return []string{
		ClientPasswordAuthTypeMysqlNativePassword,
		ClientPasswordAuthTypePostgresScramSha256,
		ClientPasswordAuthTypePostgresMd5,
		ClientPasswordAuthTypeSqlServerAuthentication,
	}
}

const (
	// CustomEngineVersionStatusAvailable is a CustomEngineVersionStatus enum value
	CustomEngineVersionStatusAvailable = "available"

	// CustomEngineVersionStatusInactive is a CustomEngineVersionStatus enum value
	CustomEngineVersionStatusInactive = "inactive"

	// CustomEngineVersionStatusInactiveExceptRestore is a CustomEngineVersionStatus enum value
	CustomEngineVersionStatusInactiveExceptRestore = "inactive-except-restore"
)

// CustomEngineVersionStatus_Values returns all elements of the CustomEngineVersionStatus enum
func CustomEngineVersionStatus_Values() []string {
	return []string{
		CustomEngineVersionStatusAvailable,
		CustomEngineVersionStatusInactive,
		CustomEngineVersionStatusInactiveExceptRestore,
	}
}

const (
	// DBProxyEndpointStatusAvailable is a DBProxyEndpointStatus enum value
	DBProxyEndpointStatusAvailable = "available"

	// DBProxyEndpointStatusModifying is a DBProxyEndpointStatus enum value
	DBProxyEndpointStatusModifying = "modifying"

	// DBProxyEndpointStatusIncompatibleNetwork is a DBProxyEndpointStatus enum value
	DBProxyEndpointStatusIncompatibleNetwork = "incompatible-network"

	// DBProxyEndpointStatusInsufficientResourceLimits is a DBProxyEndpointStatus enum value
	DBProxyEndpointStatusInsufficientResourceLimits = "insufficient-resource-limits"

	// DBProxyEndpointStatusCreating is a DBProxyEndpointStatus enum value
	DBProxyEndpointStatusCreating = "creating"

	// DBProxyEndpointStatusDeleting is a DBProxyEndpointStatus enum value
	DBProxyEndpointStatusDeleting = "deleting"
)

// DBProxyEndpointStatus_Values returns all elements of the DBProxyEndpointStatus enum
func DBProxyEndpointStatus_Values() []string {
	return []string{
		DBProxyEndpointStatusAvailable,
		DBProxyEndpointStatusModifying,
		DBProxyEndpointStatusIncompatibleNetwork,
		DBProxyEndpointStatusInsufficientResourceLimits,
		DBProxyEndpointStatusCreating,
		DBProxyEndpointStatusDeleting,
	}
}

const (
	// DBProxyEndpointTargetRoleReadWrite is a DBProxyEndpointTargetRole enum value
	DBProxyEndpointTargetRoleReadWrite = "READ_WRITE"

	// DBProxyEndpointTargetRoleReadOnly is a DBProxyEndpointTargetRole enum value
	DBProxyEndpointTargetRoleReadOnly = "READ_ONLY"
)

// DBProxyEndpointTargetRole_Values returns all elements of the DBProxyEndpointTargetRole enum
func DBProxyEndpointTargetRole_Values() []string {
	return []string{
		DBProxyEndpointTargetRoleReadWrite,
		DBProxyEndpointTargetRoleReadOnly,
	}
}

const (
	// DBProxyStatusAvailable is a DBProxyStatus enum value
	DBProxyStatusAvailable = "available"

	// DBProxyStatusModifying is a DBProxyStatus enum value
	DBProxyStatusModifying = "modifying"

	// DBProxyStatusIncompatibleNetwork is a DBProxyStatus enum value
	DBProxyStatusIncompatibleNetwork = "incompatible-network"

	// DBProxyStatusInsufficientResourceLimits is a DBProxyStatus enum value
	DBProxyStatusInsufficientResourceLimits = "insufficient-resource-limits"

	// DBProxyStatusCreating is a DBProxyStatus enum value
	DBProxyStatusCreating = "creating"

	// DBProxyStatusDeleting is a DBProxyStatus enum value
	DBProxyStatusDeleting = "deleting"

	// DBProxyStatusSuspended is a DBProxyStatus enum value
	DBProxyStatusSuspended = "suspended"

	// DBProxyStatusSuspending is a DBProxyStatus enum value
	DBProxyStatusSuspending = "suspending"

	// DBProxyStatusReactivating is a DBProxyStatus enum value
	DBProxyStatusReactivating = "reactivating"
)

// DBProxyStatus_Values returns all elements of the DBProxyStatus enum
func DBProxyStatus_Values() []string {
	return []string{
		DBProxyStatusAvailable,
		DBProxyStatusModifying,
		DBProxyStatusIncompatibleNetwork,
		DBProxyStatusInsufficientResourceLimits,
		DBProxyStatusCreating,
		DBProxyStatusDeleting,
		DBProxyStatusSuspended,
		DBProxyStatusSuspending,
		DBProxyStatusReactivating,
	}
}

const (
	// EngineFamilyMysql is a EngineFamily enum value
	EngineFamilyMysql = "MYSQL"

	// EngineFamilyPostgresql is a EngineFamily enum value
	EngineFamilyPostgresql = "POSTGRESQL"

	// EngineFamilySqlserver is a EngineFamily enum value
	EngineFamilySqlserver = "SQLSERVER"
)

// EngineFamily_Values returns all elements of the EngineFamily enum
func EngineFamily_Values() []string {
	return []string{
		EngineFamilyMysql,
		EngineFamilyPostgresql,
		EngineFamilySqlserver,
	}
}

const (
	// ExportSourceTypeSnapshot is a ExportSourceType enum value
	ExportSourceTypeSnapshot = "SNAPSHOT"

	// ExportSourceTypeCluster is a ExportSourceType enum value
	ExportSourceTypeCluster = "CLUSTER"
)

// ExportSourceType_Values returns all elements of the ExportSourceType enum
func ExportSourceType_Values() []string {
	return []string{
		ExportSourceTypeSnapshot,
		ExportSourceTypeCluster,
	}
}

const (
	// FailoverStatusPending is a FailoverStatus enum value
	FailoverStatusPending = "pending"

	// FailoverStatusFailingOver is a FailoverStatus enum value
	FailoverStatusFailingOver = "failing-over"

	// FailoverStatusCancelling is a FailoverStatus enum value
	FailoverStatusCancelling = "cancelling"
)

// FailoverStatus_Values returns all elements of the FailoverStatus enum
func FailoverStatus_Values() []string {
	return []string{
		FailoverStatusPending,
		FailoverStatusFailingOver,
		FailoverStatusCancelling,
	}
}

const (
	// GlobalClusterMemberSynchronizationStatusConnected is a GlobalClusterMemberSynchronizationStatus enum value
	GlobalClusterMemberSynchronizationStatusConnected = "connected"

	// GlobalClusterMemberSynchronizationStatusPendingResync is a GlobalClusterMemberSynchronizationStatus enum value
	GlobalClusterMemberSynchronizationStatusPendingResync = "pending-resync"
)

// GlobalClusterMemberSynchronizationStatus_Values returns all elements of the GlobalClusterMemberSynchronizationStatus enum
func GlobalClusterMemberSynchronizationStatus_Values() []string {
	return []string{
		GlobalClusterMemberSynchronizationStatusConnected,
		GlobalClusterMemberSynchronizationStatusPendingResync,
	}
}

const (
	// IAMAuthModeDisabled is a IAMAuthMode enum value
	IAMAuthModeDisabled = "DISABLED"

	// IAMAuthModeRequired is a IAMAuthMode enum value
	IAMAuthModeRequired = "REQUIRED"

	// IAMAuthModeEnabled is a IAMAuthMode enum value
	IAMAuthModeEnabled = "ENABLED"
)

// IAMAuthMode_Values returns all elements of the IAMAuthMode enum
func IAMAuthMode_Values() []string {
	return []string{
		IAMAuthModeDisabled,
		IAMAuthModeRequired,
		IAMAuthModeEnabled,
	}
}

const (
	// IntegrationStatusCreating is a IntegrationStatus enum value
	IntegrationStatusCreating = "creating"

	// IntegrationStatusActive is a IntegrationStatus enum value
	IntegrationStatusActive = "active"

	// IntegrationStatusModifying is a IntegrationStatus enum value
	IntegrationStatusModifying = "modifying"

	// IntegrationStatusFailed is a IntegrationStatus enum value
	IntegrationStatusFailed = "failed"

	// IntegrationStatusDeleting is a IntegrationStatus enum value
	IntegrationStatusDeleting = "deleting"

	// IntegrationStatusSyncing is a IntegrationStatus enum value
	IntegrationStatusSyncing = "syncing"

	// IntegrationStatusNeedsAttention is a IntegrationStatus enum value
	IntegrationStatusNeedsAttention = "needs_attention"
)

// IntegrationStatus_Values returns all elements of the IntegrationStatus enum
func IntegrationStatus_Values() []string {
	return []string{
		IntegrationStatusCreating,
		IntegrationStatusActive,
		IntegrationStatusModifying,
		IntegrationStatusFailed,
		IntegrationStatusDeleting,
		IntegrationStatusSyncing,
		IntegrationStatusNeedsAttention,
	}
}

const (
	// LimitlessDatabaseStatusActive is a LimitlessDatabaseStatus enum value
	LimitlessDatabaseStatusActive = "active"

	// LimitlessDatabaseStatusNotInUse is a LimitlessDatabaseStatus enum value
	LimitlessDatabaseStatusNotInUse = "not-in-use"

	// LimitlessDatabaseStatusEnabled is a LimitlessDatabaseStatus enum value
	LimitlessDatabaseStatusEnabled = "enabled"

	// LimitlessDatabaseStatusDisabled is a LimitlessDatabaseStatus enum value
	LimitlessDatabaseStatusDisabled = "disabled"

	// LimitlessDatabaseStatusEnabling is a LimitlessDatabaseStatus enum value
	LimitlessDatabaseStatusEnabling = "enabling"

	// LimitlessDatabaseStatusDisabling is a LimitlessDatabaseStatus enum value
	LimitlessDatabaseStatusDisabling = "disabling"

	// LimitlessDatabaseStatusModifyingMaxCapacity is a LimitlessDatabaseStatus enum value
	LimitlessDatabaseStatusModifyingMaxCapacity = "modifying-max-capacity"

	// LimitlessDatabaseStatusError is a LimitlessDatabaseStatus enum value
	LimitlessDatabaseStatusError = "error"
)

// LimitlessDatabaseStatus_Values returns all elements of the LimitlessDatabaseStatus enum
func LimitlessDatabaseStatus_Values() []string {
	return []string{
		LimitlessDatabaseStatusActive,
		LimitlessDatabaseStatusNotInUse,
		LimitlessDatabaseStatusEnabled,
		LimitlessDatabaseStatusDisabled,
		LimitlessDatabaseStatusEnabling,
		LimitlessDatabaseStatusDisabling,
		LimitlessDatabaseStatusModifyingMaxCapacity,
		LimitlessDatabaseStatusError,
	}
}

const (
	// LocalWriteForwardingStatusEnabled is a LocalWriteForwardingStatus enum value
	LocalWriteForwardingStatusEnabled = "enabled"

	// LocalWriteForwardingStatusDisabled is a LocalWriteForwardingStatus enum value
	LocalWriteForwardingStatusDisabled = "disabled"

	// LocalWriteForwardingStatusEnabling is a LocalWriteForwardingStatus enum value
	LocalWriteForwardingStatusEnabling = "enabling"

	// LocalWriteForwardingStatusDisabling is a LocalWriteForwardingStatus enum value
	LocalWriteForwardingStatusDisabling = "disabling"

	// LocalWriteForwardingStatusRequested is a LocalWriteForwardingStatus enum value
	LocalWriteForwardingStatusRequested = "requested"
)

// LocalWriteForwardingStatus_Values returns all elements of the LocalWriteForwardingStatus enum
func LocalWriteForwardingStatus_Values() []string {
	return []string{
		LocalWriteForwardingStatusEnabled,
		LocalWriteForwardingStatusDisabled,
		LocalWriteForwardingStatusEnabling,
		LocalWriteForwardingStatusDisabling,
		LocalWriteForwardingStatusRequested,
	}
}

const (
	// ReplicaModeOpenReadOnly is a ReplicaMode enum value
	ReplicaModeOpenReadOnly = "open-read-only"

	// ReplicaModeMounted is a ReplicaMode enum value
	ReplicaModeMounted = "mounted"
)

// ReplicaMode_Values returns all elements of the ReplicaMode enum
func ReplicaMode_Values() []string {
	return []string{
		ReplicaModeOpenReadOnly,
		ReplicaModeMounted,
	}
}

const (
	// SourceTypeDbInstance is a SourceType enum value
	SourceTypeDbInstance = "db-instance"

	// SourceTypeDbParameterGroup is a SourceType enum value
	SourceTypeDbParameterGroup = "db-parameter-group"

	// SourceTypeDbSecurityGroup is a SourceType enum value
	SourceTypeDbSecurityGroup = "db-security-group"

	// SourceTypeDbSnapshot is a SourceType enum value
	SourceTypeDbSnapshot = "db-snapshot"

	// SourceTypeDbCluster is a SourceType enum value
	SourceTypeDbCluster = "db-cluster"

	// SourceTypeDbClusterSnapshot is a SourceType enum value
	SourceTypeDbClusterSnapshot = "db-cluster-snapshot"

	// SourceTypeCustomEngineVersion is a SourceType enum value
	SourceTypeCustomEngineVersion = "custom-engine-version"

	// SourceTypeDbProxy is a SourceType enum value
	SourceTypeDbProxy = "db-proxy"

	// SourceTypeBlueGreenDeployment is a SourceType enum value
	SourceTypeBlueGreenDeployment = "blue-green-deployment"
)

// SourceType_Values returns all elements of the SourceType enum
func SourceType_Values() []string {
	return []string{
		SourceTypeDbInstance,
		SourceTypeDbParameterGroup,
		SourceTypeDbSecurityGroup,
		SourceTypeDbSnapshot,
		SourceTypeDbCluster,
		SourceTypeDbClusterSnapshot,
		SourceTypeCustomEngineVersion,
		SourceTypeDbProxy,
		SourceTypeBlueGreenDeployment,
	}
}

const (
	// TargetHealthReasonUnreachable is a TargetHealthReason enum value
	TargetHealthReasonUnreachable = "UNREACHABLE"

	// TargetHealthReasonConnectionFailed is a TargetHealthReason enum value
	TargetHealthReasonConnectionFailed = "CONNECTION_FAILED"

	// TargetHealthReasonAuthFailure is a TargetHealthReason enum value
	TargetHealthReasonAuthFailure = "AUTH_FAILURE"

	// TargetHealthReasonPendingProxyCapacity is a TargetHealthReason enum value
	TargetHealthReasonPendingProxyCapacity = "PENDING_PROXY_CAPACITY"

	// TargetHealthReasonInvalidReplicationState is a TargetHealthReason enum value
	TargetHealthReasonInvalidReplicationState = "INVALID_REPLICATION_STATE"
)

// TargetHealthReason_Values returns all elements of the TargetHealthReason enum
func TargetHealthReason_Values() []string {
	return []string{
		TargetHealthReasonUnreachable,
		TargetHealthReasonConnectionFailed,
		TargetHealthReasonAuthFailure,
		TargetHealthReasonPendingProxyCapacity,
		TargetHealthReasonInvalidReplicationState,
	}
}

const (
	// TargetRoleReadWrite is a TargetRole enum value
	TargetRoleReadWrite = "READ_WRITE"

	// TargetRoleReadOnly is a TargetRole enum value
	TargetRoleReadOnly = "READ_ONLY"

	// TargetRoleUnknown is a TargetRole enum value
	TargetRoleUnknown = "UNKNOWN"
)

// TargetRole_Values returns all elements of the TargetRole enum
func TargetRole_Values() []string {
	return []string{
		TargetRoleReadWrite,
		TargetRoleReadOnly,
		TargetRoleUnknown,
	}
}

const (
	// TargetStateRegistering is a TargetState enum value
	TargetStateRegistering = "REGISTERING"

	// TargetStateAvailable is a TargetState enum value
	TargetStateAvailable = "AVAILABLE"

	// TargetStateUnavailable is a TargetState enum value
	TargetStateUnavailable = "UNAVAILABLE"
)

// TargetState_Values returns all elements of the TargetState enum
func TargetState_Values() []string {
	return []string{
		TargetStateRegistering,
		TargetStateAvailable,
		TargetStateUnavailable,
	}
}

const (
	// TargetTypeRdsInstance is a TargetType enum value
	TargetTypeRdsInstance = "RDS_INSTANCE"

	// TargetTypeRdsServerlessEndpoint is a TargetType enum value
	TargetTypeRdsServerlessEndpoint = "RDS_SERVERLESS_ENDPOINT"

	// TargetTypeTrackedCluster is a TargetType enum value
	TargetTypeTrackedCluster = "TRACKED_CLUSTER"
)

// TargetType_Values returns all elements of the TargetType enum
func TargetType_Values() []string {
	return []string{
		TargetTypeRdsInstance,
		TargetTypeRdsServerlessEndpoint,
		TargetTypeTrackedCluster,
	}
}

const (
	// WriteForwardingStatusEnabled is a WriteForwardingStatus enum value
	WriteForwardingStatusEnabled = "enabled"

	// WriteForwardingStatusDisabled is a WriteForwardingStatus enum value
	WriteForwardingStatusDisabled = "disabled"

	// WriteForwardingStatusEnabling is a WriteForwardingStatus enum value
	WriteForwardingStatusEnabling = "enabling"

	// WriteForwardingStatusDisabling is a WriteForwardingStatus enum value
	WriteForwardingStatusDisabling = "disabling"

	// WriteForwardingStatusUnknown is a WriteForwardingStatus enum value
	WriteForwardingStatusUnknown = "unknown"
)

// WriteForwardingStatus_Values returns all elements of the WriteForwardingStatus enum
func WriteForwardingStatus_Values() []string {
	return []string{
		WriteForwardingStatusEnabled,
		WriteForwardingStatusDisabled,
		WriteForwardingStatusEnabling,
		WriteForwardingStatusDisabling,
		WriteForwardingStatusUnknown,
	}
}
