// Code generated by smithy-go-codegen DO NOT EDIT. package elasticache 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/elasticache/types" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) // Modifies the settings for a cluster. You can use this operation to change one // or more cluster configuration parameters by specifying the parameters and the // new values. func (c *Client) ModifyCacheCluster(ctx context.Context, params *ModifyCacheClusterInput, optFns ...func(*Options)) (*ModifyCacheClusterOutput, error) { if params == nil { params = &ModifyCacheClusterInput{} } result, metadata, err := c.invokeOperation(ctx, "ModifyCacheCluster", params, optFns, c.addOperationModifyCacheClusterMiddlewares) if err != nil { return nil, err } out := result.(*ModifyCacheClusterOutput) out.ResultMetadata = metadata return out, nil } // Represents the input of a ModifyCacheCluster operation. type ModifyCacheClusterInput struct { // The cluster identifier. This value is stored as a lowercase string. // // This member is required. CacheClusterId *string // Specifies whether the new nodes in this Memcached cluster are all created in a // single Availability Zone or created across multiple Availability Zones. Valid // values: single-az | cross-az . This option is only supported for Memcached // clusters. You cannot specify single-az if the Memcached cluster already has // cache nodes in different Availability Zones. If cross-az is specified, existing // Memcached nodes remain in their current Availability Zone. Only newly created // nodes are located in different Availability Zones. AZMode types.AZMode // If true , this parameter causes the modifications in this request and any // pending modifications to be applied, asynchronously and as soon as possible, // regardless of the PreferredMaintenanceWindow setting for the cluster. If false , // changes to the cluster are applied on the next maintenance reboot, or the next // failure reboot, whichever occurs first. If you perform a ModifyCacheCluster // before a pending modification is applied, the pending modification is replaced // by the newer modification. Valid values: true | false Default: false ApplyImmediately bool // Reserved parameter. The password used to access a password protected server. // This parameter must be specified with the auth-token-update parameter. Password // constraints: // - Must be only printable ASCII characters // - Must be at least 16 characters and no more than 128 characters in length // - Cannot contain any of the following characters: '/', '"', or '@', '%' // For more information, see AUTH password at AUTH (http://redis.io/commands/AUTH) . AuthToken *string // Specifies the strategy to use to update the AUTH token. This parameter must be // specified with the auth-token parameter. Possible values: // - Rotate // - Set // For more information, see Authenticating Users with Redis AUTH (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html) AuthTokenUpdateStrategy types.AuthTokenUpdateStrategyType // If you are running Redis engine version 6.0 or later, set this parameter to // yes if you want to opt-in to the next auto minor version upgrade campaign. This // parameter is disabled for previous versions. AutoMinorVersionUpgrade *bool // A list of cache node IDs to be removed. A node ID is a numeric identifier // (0001, 0002, etc.). This parameter is only valid when NumCacheNodes is less // than the existing number of cache nodes. The number of cache node IDs supplied // in this parameter must match the difference between the existing number of cache // nodes in the cluster or pending cache nodes, whichever is greater, and the value // of NumCacheNodes in the request. For example: If you have 3 active cache nodes, // 7 pending cache nodes, and the number of cache nodes in this ModifyCacheCluster // call is 5, you must list 2 (7 - 5) cache node IDs to remove. CacheNodeIdsToRemove []string // A valid cache node type that you want to scale this cluster up to. CacheNodeType *string // The name of the cache parameter group to apply to this cluster. This change is // asynchronously applied as soon as possible for parameters when the // ApplyImmediately parameter is specified as true for this request. CacheParameterGroupName *string // A list of cache security group names to authorize on this cluster. This change // is asynchronously applied as soon as possible. You can use this parameter only // with clusters that are created outside of an Amazon Virtual Private Cloud // (Amazon VPC). Constraints: Must contain no more than 255 alphanumeric // characters. Must not be "Default". CacheSecurityGroupNames []string // The upgraded version of the cache engine to be run on the cache nodes. // Important: You can upgrade to a newer engine version (see Selecting a Cache // Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement) // ), but you cannot downgrade to an earlier engine version. If you want to use an // earlier engine version, you must delete the existing cluster and create it anew // with the earlier engine version. EngineVersion *string // The network type you choose when modifying a cluster, either ipv4 | ipv6 . IPv6 // is supported for workloads using Redis engine version 6.2 onward or Memcached // engine version 1.6.6 on all instances built on the Nitro system (http://aws.amazon.com/ec2/nitro/) // . IpDiscovery types.IpDiscovery // Specifies the destination, format and type of the logs. LogDeliveryConfigurations []types.LogDeliveryConfigurationRequest // This option is only supported on Memcached clusters. The list of Availability // Zones where the new Memcached cache nodes are created. This parameter is only // valid when NumCacheNodes in the request is greater than the sum of the number // of active cache nodes and the number of cache nodes pending creation (which may // be zero). The number of Availability Zones supplied in this list must match the // cache nodes being added in this request. Scenarios: // - Scenario 1: You have 3 active nodes and wish to add 2 nodes. Specify // NumCacheNodes=5 (3 + 2) and optionally specify two Availability Zones for the // two new nodes. // - Scenario 2: You have 3 active nodes and 2 nodes pending creation (from the // scenario 1 call) and want to add 1 more node. Specify NumCacheNodes=6 ((3 + 2) // + 1) and optionally specify an Availability Zone for the new node. // - Scenario 3: You want to cancel all pending operations. Specify // NumCacheNodes=3 to cancel all pending operations. // The Availability Zone placement of nodes pending creation cannot be modified. // If you wish to cancel any nodes pending creation, add 0 nodes by setting // NumCacheNodes to the number of current nodes. If cross-az is specified, // existing Memcached nodes remain in their current Availability Zone. Only newly // created nodes can be located in different Availability Zones. For guidance on // how to move existing Memcached nodes to different Availability Zones, see the // Availability Zone Considerations section of Cache Node Considerations for // Memcached (https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html) // . Impact of new add/remove requests upon pending requests // - Scenario-1 // - Pending Action: Delete // - New Request: Delete // - Result: The new delete, pending or immediate, replaces the pending delete. // - Scenario-2 // - Pending Action: Delete // - New Request: Create // - Result: The new create, pending or immediate, replaces the pending delete. // - Scenario-3 // - Pending Action: Create // - New Request: Delete // - Result: The new delete, pending or immediate, replaces the pending create. // - Scenario-4 // - Pending Action: Create // - New Request: Create // - Result: The new create is added to the pending create. Important: If the // new create request is Apply Immediately - Yes, all creates are performed // immediately. If the new create request is Apply Immediately - No, all creates // are pending. NewAvailabilityZones []string // The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications // are sent. The Amazon SNS topic owner must be same as the cluster owner. NotificationTopicArn *string // The status of the Amazon SNS notification topic. Notifications are sent only if // the status is active . Valid values: active | inactive NotificationTopicStatus *string // The number of cache nodes that the cluster should have. If the value for // NumCacheNodes is greater than the sum of the number of current cache nodes and // the number of cache nodes pending creation (which may be zero), more nodes are // added. If the value is less than the number of existing cache nodes, nodes are // removed. If the value is equal to the number of current cache nodes, any pending // add or remove requests are canceled. If you are removing cache nodes, you must // use the CacheNodeIdsToRemove parameter to provide the IDs of the specific cache // nodes to remove. For clusters running Redis, this value must be 1. For clusters // running Memcached, this value must be between 1 and 40. Adding or removing // Memcached cache nodes can be applied immediately or as a pending operation (see // ApplyImmediately ). A pending operation to modify the number of cache nodes in a // cluster during its maintenance window, whether by adding or removing nodes in // accordance with the scale out architecture, is not queued. The customer's latest // request to add or remove nodes to the cluster overrides any previous pending // operations to modify the number of cache nodes in the cluster. For example, a // request to remove 2 nodes would override a previous pending operation to remove // 3 nodes. Similarly, a request to add 2 nodes would override a previous pending // operation to remove 3 nodes and vice versa. As Memcached cache nodes may now be // provisioned in different Availability Zones with flexible cache node placement, // a request to add nodes does not automatically override a previous pending // operation to add nodes. The customer can modify the previous pending operation // to add more nodes or explicitly cancel the pending request and retry the new // request. To cancel pending operations to modify the number of cache nodes in a // cluster, use the ModifyCacheCluster request and set NumCacheNodes equal to the // number of cache nodes currently in the cluster. NumCacheNodes *int32 // Specifies the weekly time range during which maintenance on the cluster is // performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H // Clock UTC). The minimum maintenance window is a 60 minute period. Valid values // for ddd are: // - sun // - mon // - tue // - wed // - thu // - fri // - sat // Example: sun:23:00-mon:01:30 PreferredMaintenanceWindow *string // Specifies the VPC Security Groups associated with the cluster. This parameter // can be used only with clusters that are created in an Amazon Virtual Private // Cloud (Amazon VPC). SecurityGroupIds []string // The number of days for which ElastiCache retains automatic cluster snapshots // before deleting them. For example, if you set SnapshotRetentionLimit to 5, a // snapshot that was taken today is retained for 5 days before being deleted. If // the value of SnapshotRetentionLimit is set to zero (0), backups are turned off. SnapshotRetentionLimit *int32 // The daily time range (in UTC) during which ElastiCache begins taking a daily // snapshot of your cluster. SnapshotWindow *string noSmithyDocumentSerde } type ModifyCacheClusterOutput struct { // Contains all of the attributes of a specific cluster. CacheCluster *types.CacheCluster // Metadata pertaining to the operation's result. ResultMetadata middleware.Metadata noSmithyDocumentSerde } func (c *Client) addOperationModifyCacheClusterMiddlewares(stack *middleware.Stack, options Options) (err error) { err = stack.Serialize.Add(&awsAwsquery_serializeOpModifyCacheCluster{}, middleware.After) if err != nil { return err } err = stack.Deserialize.Add(&awsAwsquery_deserializeOpModifyCacheCluster{}, 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 = addOpModifyCacheClusterValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opModifyCacheCluster(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_opModifyCacheCluster(region string) *awsmiddleware.RegisterServiceMetadata { return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, SigningName: "elasticache", OperationName: "ModifyCacheCluster", } }