service/elasticache/api_op_ModifyReplicationGroup.go (167 lines of code) (raw):
// Code generated by smithy-go-codegen DO NOT EDIT.
package elasticache
import (
"context"
"fmt"
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
"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 replication group. This is limited to Valkey and
// Redis OSS 7 and above.
//
// [Scaling for Valkey or Redis OSS (cluster mode enabled)]
// - in the ElastiCache User Guide
//
// [ModifyReplicationGroupShardConfiguration]
// - in the ElastiCache API Reference
//
// This operation is valid for Valkey or Redis OSS only.
//
// [ModifyReplicationGroupShardConfiguration]: https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroupShardConfiguration.html
// [Scaling for Valkey or Redis OSS (cluster mode enabled)]: https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/scaling-redis-cluster-mode-enabled.html
func (c *Client) ModifyReplicationGroup(ctx context.Context, params *ModifyReplicationGroupInput, optFns ...func(*Options)) (*ModifyReplicationGroupOutput, error) {
if params == nil {
params = &ModifyReplicationGroupInput{}
}
result, metadata, err := c.invokeOperation(ctx, "ModifyReplicationGroup", params, optFns, c.addOperationModifyReplicationGroupMiddlewares)
if err != nil {
return nil, err
}
out := result.(*ModifyReplicationGroupOutput)
out.ResultMetadata = metadata
return out, nil
}
// Represents the input of a ModifyReplicationGroups operation.
type ModifyReplicationGroupInput struct {
// The identifier of the replication group to modify.
//
// This member is required.
ReplicationGroupId *string
// 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 replication group.
//
// If false , changes to the nodes in the replication group are applied on the next
// maintenance reboot, or the next failure reboot, whichever occurs first.
//
// 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-strategy
// 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].
//
// [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 - default, if no update strategy is provided
//
// - SET - allowed only after ROTATE
//
// - DELETE - allowed only when transitioning to RBAC
//
// For more information, see [Authenticating Users with AUTH]
//
// [Authenticating Users with AUTH]: http://docs.aws.amazon.com/AmazonElastiCache/latest/dg/auth.html
AuthTokenUpdateStrategy types.AuthTokenUpdateStrategyType
// If you are running Valkey or Redis OSS 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
// Determines whether a read replica is automatically promoted to read/write
// primary if the existing primary encounters a failure.
//
// Valid values: true | false
AutomaticFailoverEnabled *bool
// A valid cache node type that you want to scale this replication group to.
CacheNodeType *string
// The name of the cache parameter group to apply to all of the clusters in this
// replication group. 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 for the clusters in this
// replication group. This change is asynchronously applied as soon as possible.
//
// This parameter can be used only with replication group containing clusters
// running outside of an Amazon Virtual Private Cloud (Amazon VPC).
//
// Constraints: Must contain no more than 255 alphanumeric characters. Must not be
// Default .
CacheSecurityGroupNames []string
// Enabled or Disabled. To modify cluster mode from Disabled to Enabled, you must
// first set the cluster mode to Compatible. Compatible mode allows your Valkey or
// Redis OSS clients to connect using both cluster mode enabled and cluster mode
// disabled. After you migrate all Valkey or Redis OSS clients to use cluster mode
// enabled, you can then complete cluster mode configuration and set the cluster
// mode to Enabled.
ClusterMode types.ClusterMode
// Modifies the engine listed in a replication group message. The options are
// redis, memcached or valkey.
Engine *string
// The upgraded version of the cache engine to be run on the clusters in the
// replication group.
//
// Important: You can upgrade to a newer engine version (see [Selecting a Cache Engine and Version]), but you cannot
// downgrade to an earlier engine version. If you want to use an earlier engine
// version, you must delete the existing replication group and create it anew with
// the earlier engine version.
//
// [Selecting a Cache Engine and Version]: https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/SelectEngine.html#VersionManagement
EngineVersion *string
// The network type you choose when modifying a cluster, either ipv4 | ipv6 . IPv6
// is supported for workloads using Valkey 7.2 and above, Redis OSS engine version
// 6.2 to 7.1 and Memcached engine version 1.6.6 and above on all instances built
// on the [Nitro system].
//
// [Nitro system]: http://aws.amazon.com/ec2/nitro/
IpDiscovery types.IpDiscovery
// Specifies the destination, format and type of the logs.
LogDeliveryConfigurations []types.LogDeliveryConfigurationRequest
// A flag to indicate MultiAZ is enabled.
MultiAZEnabled *bool
// Deprecated. This parameter is not used.
//
// Deprecated: This member has been deprecated.
NodeGroupId *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 replication group owner.
NotificationTopicArn *string
// The status of the Amazon SNS notification topic for the replication group.
// Notifications are sent only if the status is active .
//
// Valid values: active | inactive
NotificationTopicStatus *string
// 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
// For replication groups with a single primary, if this parameter is specified,
// ElastiCache promotes the specified cluster in the specified replication group to
// the primary role. The nodes of all other clusters in the replication group are
// read replicas.
PrimaryClusterId *string
// Removes the user group associated with this replication group.
RemoveUserGroups *bool
// A description for the replication group. Maximum length is 255 characters.
ReplicationGroupDescription *string
// Specifies the VPC Security Groups associated with the clusters in the
// replication group.
//
// This parameter can be used only with replication group containing clusters
// running in an Amazon Virtual Private Cloud (Amazon VPC).
SecurityGroupIds []string
// The number of days for which ElastiCache retains automatic node group (shard)
// 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.
//
// Important 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 the node group (shard) specified by SnapshottingClusterId .
//
// Example: 05:00-09:00
//
// If you do not specify this parameter, ElastiCache automatically chooses an
// appropriate time range.
SnapshotWindow *string
// The cluster ID that is used as the daily snapshot source for the replication
// group. This parameter cannot be set for Valkey or Redis OSS (cluster mode
// enabled) replication groups.
SnapshottingClusterId *string
// A flag that enables in-transit encryption when set to true. If you are enabling
// in-transit encryption for an existing cluster, you must also set
// TransitEncryptionMode to preferred .
TransitEncryptionEnabled *bool
// A setting that allows you to migrate your clients to use in-transit encryption,
// with no downtime.
//
// You must set TransitEncryptionEnabled to true , for your existing cluster, and
// set TransitEncryptionMode to preferred in the same request to allow both
// encrypted and unencrypted connections at the same time. Once you migrate all
// your Valkey or Redis OSS clients to use encrypted connections you can set the
// value to required to allow encrypted connections only.
//
// Setting TransitEncryptionMode to required is a two-step process that requires
// you to first set the TransitEncryptionMode to preferred , after that you can set
// TransitEncryptionMode to required .
TransitEncryptionMode types.TransitEncryptionMode
// The ID of the user group you are associating with the replication group.
UserGroupIdsToAdd []string
// The ID of the user group to disassociate from the replication group, meaning
// the users in the group no longer can access the replication group.
UserGroupIdsToRemove []string
noSmithyDocumentSerde
}
type ModifyReplicationGroupOutput struct {
// Contains all of the attributes of a specific Valkey or Redis OSS replication
// group.
ReplicationGroup *types.ReplicationGroup
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func (c *Client) addOperationModifyReplicationGroupMiddlewares(stack *middleware.Stack, options Options) (err error) {
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
return err
}
err = stack.Serialize.Add(&awsAwsquery_serializeOpModifyReplicationGroup{}, middleware.After)
if err != nil {
return err
}
err = stack.Deserialize.Add(&awsAwsquery_deserializeOpModifyReplicationGroup{}, middleware.After)
if err != nil {
return err
}
if err := addProtocolFinalizerMiddlewares(stack, options, "ModifyReplicationGroup"); err != nil {
return fmt.Errorf("add protocol finalizers: %v", err)
}
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
return err
}
if err = addSetLoggerMiddleware(stack, options); err != nil {
return err
}
if err = addClientRequestID(stack); err != nil {
return err
}
if err = addComputeContentLength(stack); err != nil {
return err
}
if err = addResolveEndpointMiddleware(stack, options); err != nil {
return err
}
if err = addComputePayloadSHA256(stack); err != nil {
return err
}
if err = addRetry(stack, options); err != nil {
return err
}
if err = addRawResponseToMetadata(stack); err != nil {
return err
}
if err = addRecordResponseTiming(stack); err != nil {
return err
}
if err = addSpanRetryLoop(stack, options); 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 = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
return err
}
if err = addTimeOffsetBuild(stack, c); err != nil {
return err
}
if err = addUserAgentRetryMode(stack, options); err != nil {
return err
}
if err = addCredentialSource(stack, options); err != nil {
return err
}
if err = addOpModifyReplicationGroupValidationMiddleware(stack); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opModifyReplicationGroup(options.Region), middleware.Before); err != nil {
return err
}
if err = 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
}
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
return err
}
if err = addSpanInitializeStart(stack); err != nil {
return err
}
if err = addSpanInitializeEnd(stack); err != nil {
return err
}
if err = addSpanBuildRequestStart(stack); err != nil {
return err
}
if err = addSpanBuildRequestEnd(stack); err != nil {
return err
}
return nil
}
func newServiceMetadataMiddleware_opModifyReplicationGroup(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
OperationName: "ModifyReplicationGroup",
}
}