// Code generated by smithy-go-codegen DO NOT EDIT. package redshift import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" "github.com/aws/aws-sdk-go-v2/service/redshift/types" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) // Modifies the settings for a cluster. You can also change node type and the // number of nodes to scale up or down the cluster. When resizing a cluster, you // must specify both the number of nodes and the node type even if one of the // parameters does not change. You can add another security or parameter group, or // change the admin user password. Resetting a cluster password or modifying the // security groups associated with a cluster do not need a reboot. However, // modifying a parameter group requires a reboot for parameters to take effect. For // more information about managing clusters, go to Amazon Redshift Clusters (https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html) // in the Amazon Redshift Cluster Management Guide. func (c *Client) ModifyCluster(ctx context.Context, params *ModifyClusterInput, optFns ...func(*Options)) (*ModifyClusterOutput, error) { if params == nil { params = &ModifyClusterInput{} } result, metadata, err := c.invokeOperation(ctx, "ModifyCluster", params, optFns, c.addOperationModifyClusterMiddlewares) if err != nil { return nil, err } out := result.(*ModifyClusterOutput) out.ResultMetadata = metadata return out, nil } type ModifyClusterInput struct { // The unique identifier of the cluster to be modified. Example: examplecluster // // This member is required. ClusterIdentifier *string // If true , major version upgrades will be applied automatically to the cluster // during the maintenance window. Default: false AllowVersionUpgrade *bool // The number of days that automated snapshots are retained. If the value is 0, // automated snapshots are disabled. Even if automated snapshots are disabled, you // can still create manual snapshots when you want with CreateClusterSnapshot . If // you decrease the automated snapshot retention period from its current value, // existing automated snapshots that fall outside of the new retention period will // be immediately deleted. You can't disable automated snapshots for RA3 node // types. Set the automated retention period from 1-35 days. Default: Uses existing // setting. Constraints: Must be a value from 0 to 35. AutomatedSnapshotRetentionPeriod *int32 // The option to initiate relocation for an Amazon Redshift cluster to the target // Availability Zone. AvailabilityZone *string // The option to enable relocation for an Amazon Redshift cluster between // Availability Zones after the cluster modification is complete. AvailabilityZoneRelocation *bool // The name of the cluster parameter group to apply to this cluster. This change // is applied only after the cluster is rebooted. To reboot a cluster use // RebootCluster . Default: Uses existing setting. Constraints: The cluster // parameter group must be in the same parameter group family that matches the // cluster version. ClusterParameterGroupName *string // A list of cluster security groups to be authorized on this cluster. This change // is asynchronously applied as soon as possible. Security groups currently // associated with the cluster, and not in the list of groups to apply, will be // revoked from the cluster. Constraints: // - Must be 1 to 255 alphanumeric characters or hyphens // - First character must be a letter // - Cannot end with a hyphen or contain two consecutive hyphens ClusterSecurityGroups []string // The new cluster type. When you submit your cluster resize request, your // existing cluster goes into a read-only mode. After Amazon Redshift provisions a // new cluster based on your resize requirements, there will be outage for a period // while the old cluster is deleted and your connection is switched to the new // cluster. You can use DescribeResize to track the progress of the resize // request. Valid Values: multi-node | single-node ClusterType *string // The new version number of the Amazon Redshift engine to upgrade to. For major // version upgrades, if a non-default cluster parameter group is currently in use, // a new cluster parameter group in the cluster parameter group family for the new // version must be specified. The new cluster parameter group can be the default // for that cluster parameter group family. For more information about parameters // and parameter groups, go to Amazon Redshift Parameter Groups (https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html) // in the Amazon Redshift Cluster Management Guide. Example: 1.0 ClusterVersion *string // The Elastic IP (EIP) address for the cluster. Constraints: The cluster must be // provisioned in EC2-VPC and publicly-accessible through an Internet gateway. For // more information about provisioning clusters in EC2-VPC, go to Supported // Platforms to Launch Your Cluster (https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms) // in the Amazon Redshift Cluster Management Guide. ElasticIp *string // Indicates whether the cluster is encrypted. If the value is encrypted (true) // and you provide a value for the KmsKeyId parameter, we encrypt the cluster with // the provided KmsKeyId . If you don't provide a KmsKeyId , we encrypt with the // default key. If the value is not encrypted (false), then the cluster is // decrypted. Encrypted *bool // An option that specifies whether to create the cluster with enhanced VPC // routing enabled. To create a cluster that uses enhanced VPC routing, the cluster // must be in a VPC. For more information, see Enhanced VPC Routing (https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html) // in the Amazon Redshift Cluster Management Guide. If this option is true , // enhanced VPC routing is enabled. Default: false EnhancedVpcRouting *bool // Specifies the name of the HSM client certificate the Amazon Redshift cluster // uses to retrieve the data encryption keys stored in an HSM. HsmClientCertificateIdentifier *string // Specifies the name of the HSM configuration that contains the information the // Amazon Redshift cluster can use to retrieve and store keys in an HSM. HsmConfigurationIdentifier *string // The Key Management Service (KMS) key ID of the encryption key that you want to // use to encrypt data in the cluster. KmsKeyId *string // The name for the maintenance track that you want to assign for the cluster. // This name change is asynchronous. The new track name stays in the // PendingModifiedValues for the cluster until the next maintenance window. When // the maintenance track changes, the cluster is switched to the latest cluster // release available for the maintenance track. At this point, the maintenance // track name is applied. MaintenanceTrackName *string // The default for number of days that a newly created manual snapshot is // retained. If the value is -1, the manual snapshot is retained indefinitely. This // value doesn't retroactively change the retention periods of existing manual // snapshots. The value must be either -1 or an integer between 1 and 3,653. The // default value is -1. ManualSnapshotRetentionPeriod *int32 // The new password for the cluster admin user. This 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. Operations never return // the password, so this operation provides a way to regain access to the admin // user account for a cluster if the password is lost. Default: Uses existing // setting. Constraints: // - Must be between 8 and 64 characters in length. // - Must contain at least one uppercase letter. // - Must contain at least one lowercase letter. // - Must contain one number. // - Can be any printable ASCII character (ASCII code 33-126) except ' (single // quote), " (double quote), \ , / , or @ . MasterUserPassword *string // The new identifier for the cluster. Constraints: // - Must contain from 1 to 63 alphanumeric characters or hyphens. // - Alphabetic characters must be lowercase. // - First character must be a letter. // - Cannot end with a hyphen or contain two consecutive hyphens. // - Must be unique for all clusters within an Amazon Web Services account. // Example: examplecluster NewClusterIdentifier *string // The new node type of the cluster. If you specify a new node type, you must also // specify the number of nodes parameter. For more information about resizing // clusters, go to Resizing Clusters in Amazon Redshift (https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html) // in the Amazon Redshift Cluster Management Guide. Valid Values: ds2.xlarge | // ds2.8xlarge | dc1.large | dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.xlplus | // ra3.4xlarge | ra3.16xlarge NodeType *string // The new number of nodes of the cluster. If you specify a new number of nodes, // you must also specify the node type parameter. For more information about // resizing clusters, go to Resizing Clusters in Amazon Redshift (https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html) // in the Amazon Redshift Cluster Management Guide. Valid Values: Integer greater // than 0 . NumberOfNodes *int32 // The option to change the port of an Amazon Redshift cluster. Port *int32 // The weekly time range (in UTC) during which system maintenance can occur, if // necessary. If system maintenance is necessary during the window, it may result // in an outage. This maintenance window change is made immediately. If the new // maintenance window indicates the current time, there must be at least 120 // minutes between the current time and end of the window in order to ensure that // pending changes are applied. Default: Uses existing setting. Format: // ddd:hh24:mi-ddd:hh24:mi, for example wed:07:30-wed:08:00 . Valid Days: Mon | Tue // | Wed | Thu | Fri | Sat | Sun Constraints: Must be at least 30 minutes. PreferredMaintenanceWindow *string // If true , the cluster can be accessed from a public network. Only clusters in // VPCs can be set to be publicly available. PubliclyAccessible *bool // A list of virtual private cloud (VPC) security groups to be associated with the // cluster. This change is asynchronously applied as soon as possible. VpcSecurityGroupIds []string noSmithyDocumentSerde } type ModifyClusterOutput struct { // Describes a cluster. Cluster *types.Cluster // Metadata pertaining to the operation's result. ResultMetadata middleware.Metadata noSmithyDocumentSerde } func (c *Client) addOperationModifyClusterMiddlewares(stack *middleware.Stack, options Options) (err error) { err = stack.Serialize.Add(&awsAwsquery_serializeOpModifyCluster{}, middleware.After) if err != nil { return err } err = stack.Deserialize.Add(&awsAwsquery_deserializeOpModifyCluster{}, middleware.After) if err != nil { return err } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { return err } if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { return err } if err = addRetryMiddlewares(stack, options); err != nil { return err } if err = addHTTPSignerV4Middleware(stack, options); err != nil { return err } if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { return err } if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { return err } if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { return err } if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } if err = addOpModifyClusterValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opModifyCluster(options.Region), middleware.Before); err != nil { return err } if err = awsmiddleware.AddRecursionDetection(stack); err != nil { return err } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { return err } if err = addRequestResponseLogging(stack, options); err != nil { return err } return nil } func newServiceMetadataMiddleware_opModifyCluster(region string) *awsmiddleware.RegisterServiceMetadata { return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, SigningName: "redshift", OperationName: "ModifyCluster", } }