aws_sdk_elasticache/operation/create_replication_group/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::create_replication_group::_create_replication_group_output::CreateReplicationGroupOutputBuilder;
3
4pub use crate::operation::create_replication_group::_create_replication_group_input::CreateReplicationGroupInputBuilder;
5
6impl crate::operation::create_replication_group::builders::CreateReplicationGroupInputBuilder {
7    /// Sends a request with this input using the given client.
8    pub async fn send_with(
9        self,
10        client: &crate::Client,
11    ) -> ::std::result::Result<
12        crate::operation::create_replication_group::CreateReplicationGroupOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::create_replication_group::CreateReplicationGroupError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.create_replication_group();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `CreateReplicationGroup`.
24///
25/// <p>Creates a Valkey or Redis OSS (cluster mode disabled) or a Valkey or Redis OSS (cluster mode enabled) replication group.</p>
26/// <p>This API can be used to create a standalone regional replication group or a secondary replication group associated with a Global datastore.</p>
27/// <p>A Valkey or Redis OSS (cluster mode disabled) replication group is a collection of nodes, where one of the nodes is a read/write primary and the others are read-only replicas. Writes to the primary are asynchronously propagated to the replicas.</p>
28/// <p>A Valkey or Redis OSS cluster-mode enabled cluster is comprised of from 1 to 90 shards (API/CLI: node groups). Each shard has a primary node and up to 5 read-only replica nodes. The configuration can range from 90 shards and 0 replicas to 15 shards and 5 replicas, which is the maximum number or replicas allowed.</p>
29/// <p>The node or shard limit can be increased to a maximum of 500 per cluster if the Valkey or Redis OSS engine version is 5.0.6 or higher. For example, you can choose to configure a 500 node cluster that ranges between 83 shards (one primary and 5 replicas per shard) and 500 shards (single primary and no replicas). Make sure there are enough available IP addresses to accommodate the increase. Common pitfalls include the subnets in the subnet group have too small a CIDR range or the subnets are shared and heavily used by other clusters. For more information, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/SubnetGroups.Creating.html">Creating a Subnet Group</a>. For versions below 5.0.6, the limit is 250 per cluster.</p>
30/// <p>To request a limit increase, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html">Amazon Service Limits</a> and choose the limit type <b>Nodes per cluster per instance type</b>.</p>
31/// <p>When a Valkey or Redis OSS (cluster mode disabled) replication group has been successfully created, you can add one or more read replicas to it, up to a total of 5 read replicas. If you need to increase or decrease the number of node groups (console: shards), you can use scaling. For more information, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Scaling.html">Scaling self-designed clusters</a> in the <i>ElastiCache User Guide</i>.</p><note>
32/// <p>This operation is valid for Valkey and Redis OSS only.</p>
33/// </note>
34#[derive(::std::clone::Clone, ::std::fmt::Debug)]
35pub struct CreateReplicationGroupFluentBuilder {
36    handle: ::std::sync::Arc<crate::client::Handle>,
37    inner: crate::operation::create_replication_group::builders::CreateReplicationGroupInputBuilder,
38    config_override: ::std::option::Option<crate::config::Builder>,
39}
40impl
41    crate::client::customize::internal::CustomizableSend<
42        crate::operation::create_replication_group::CreateReplicationGroupOutput,
43        crate::operation::create_replication_group::CreateReplicationGroupError,
44    > for CreateReplicationGroupFluentBuilder
45{
46    fn send(
47        self,
48        config_override: crate::config::Builder,
49    ) -> crate::client::customize::internal::BoxFuture<
50        crate::client::customize::internal::SendResult<
51            crate::operation::create_replication_group::CreateReplicationGroupOutput,
52            crate::operation::create_replication_group::CreateReplicationGroupError,
53        >,
54    > {
55        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
56    }
57}
58impl CreateReplicationGroupFluentBuilder {
59    /// Creates a new `CreateReplicationGroupFluentBuilder`.
60    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
61        Self {
62            handle,
63            inner: ::std::default::Default::default(),
64            config_override: ::std::option::Option::None,
65        }
66    }
67    /// Access the CreateReplicationGroup as a reference.
68    pub fn as_input(&self) -> &crate::operation::create_replication_group::builders::CreateReplicationGroupInputBuilder {
69        &self.inner
70    }
71    /// Sends the request and returns the response.
72    ///
73    /// If an error occurs, an `SdkError` will be returned with additional details that
74    /// can be matched against.
75    ///
76    /// By default, any retryable failures will be retried twice. Retry behavior
77    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
78    /// set when configuring the client.
79    pub async fn send(
80        self,
81    ) -> ::std::result::Result<
82        crate::operation::create_replication_group::CreateReplicationGroupOutput,
83        ::aws_smithy_runtime_api::client::result::SdkError<
84            crate::operation::create_replication_group::CreateReplicationGroupError,
85            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
86        >,
87    > {
88        let input = self
89            .inner
90            .build()
91            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
92        let runtime_plugins = crate::operation::create_replication_group::CreateReplicationGroup::operation_runtime_plugins(
93            self.handle.runtime_plugins.clone(),
94            &self.handle.conf,
95            self.config_override,
96        );
97        crate::operation::create_replication_group::CreateReplicationGroup::orchestrate(&runtime_plugins, input).await
98    }
99
100    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
101    pub fn customize(
102        self,
103    ) -> crate::client::customize::CustomizableOperation<
104        crate::operation::create_replication_group::CreateReplicationGroupOutput,
105        crate::operation::create_replication_group::CreateReplicationGroupError,
106        Self,
107    > {
108        crate::client::customize::CustomizableOperation::new(self)
109    }
110    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
111        self.set_config_override(::std::option::Option::Some(config_override.into()));
112        self
113    }
114
115    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
116        self.config_override = config_override;
117        self
118    }
119    /// <p>The replication group identifier. This parameter is stored as a lowercase string.</p>
120    /// <p>Constraints:</p>
121    /// <ul>
122    /// <li>
123    /// <p>A name must contain from 1 to 40 alphanumeric characters or hyphens.</p></li>
124    /// <li>
125    /// <p>The first character must be a letter.</p></li>
126    /// <li>
127    /// <p>A name cannot end with a hyphen or contain two consecutive hyphens.</p></li>
128    /// </ul>
129    pub fn replication_group_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
130        self.inner = self.inner.replication_group_id(input.into());
131        self
132    }
133    /// <p>The replication group identifier. This parameter is stored as a lowercase string.</p>
134    /// <p>Constraints:</p>
135    /// <ul>
136    /// <li>
137    /// <p>A name must contain from 1 to 40 alphanumeric characters or hyphens.</p></li>
138    /// <li>
139    /// <p>The first character must be a letter.</p></li>
140    /// <li>
141    /// <p>A name cannot end with a hyphen or contain two consecutive hyphens.</p></li>
142    /// </ul>
143    pub fn set_replication_group_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
144        self.inner = self.inner.set_replication_group_id(input);
145        self
146    }
147    /// <p>The replication group identifier. This parameter is stored as a lowercase string.</p>
148    /// <p>Constraints:</p>
149    /// <ul>
150    /// <li>
151    /// <p>A name must contain from 1 to 40 alphanumeric characters or hyphens.</p></li>
152    /// <li>
153    /// <p>The first character must be a letter.</p></li>
154    /// <li>
155    /// <p>A name cannot end with a hyphen or contain two consecutive hyphens.</p></li>
156    /// </ul>
157    pub fn get_replication_group_id(&self) -> &::std::option::Option<::std::string::String> {
158        self.inner.get_replication_group_id()
159    }
160    /// <p>A user-created description for the replication group.</p>
161    pub fn replication_group_description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
162        self.inner = self.inner.replication_group_description(input.into());
163        self
164    }
165    /// <p>A user-created description for the replication group.</p>
166    pub fn set_replication_group_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
167        self.inner = self.inner.set_replication_group_description(input);
168        self
169    }
170    /// <p>A user-created description for the replication group.</p>
171    pub fn get_replication_group_description(&self) -> &::std::option::Option<::std::string::String> {
172        self.inner.get_replication_group_description()
173    }
174    /// <p>The name of the Global datastore</p>
175    pub fn global_replication_group_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
176        self.inner = self.inner.global_replication_group_id(input.into());
177        self
178    }
179    /// <p>The name of the Global datastore</p>
180    pub fn set_global_replication_group_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
181        self.inner = self.inner.set_global_replication_group_id(input);
182        self
183    }
184    /// <p>The name of the Global datastore</p>
185    pub fn get_global_replication_group_id(&self) -> &::std::option::Option<::std::string::String> {
186        self.inner.get_global_replication_group_id()
187    }
188    /// <p>The identifier of the cluster that serves as the primary for this replication group. This cluster must already exist and have a status of <code>available</code>.</p>
189    /// <p>This parameter is not required if <code>NumCacheClusters</code>, <code>NumNodeGroups</code>, or <code>ReplicasPerNodeGroup</code> is specified.</p>
190    pub fn primary_cluster_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
191        self.inner = self.inner.primary_cluster_id(input.into());
192        self
193    }
194    /// <p>The identifier of the cluster that serves as the primary for this replication group. This cluster must already exist and have a status of <code>available</code>.</p>
195    /// <p>This parameter is not required if <code>NumCacheClusters</code>, <code>NumNodeGroups</code>, or <code>ReplicasPerNodeGroup</code> is specified.</p>
196    pub fn set_primary_cluster_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
197        self.inner = self.inner.set_primary_cluster_id(input);
198        self
199    }
200    /// <p>The identifier of the cluster that serves as the primary for this replication group. This cluster must already exist and have a status of <code>available</code>.</p>
201    /// <p>This parameter is not required if <code>NumCacheClusters</code>, <code>NumNodeGroups</code>, or <code>ReplicasPerNodeGroup</code> is specified.</p>
202    pub fn get_primary_cluster_id(&self) -> &::std::option::Option<::std::string::String> {
203        self.inner.get_primary_cluster_id()
204    }
205    /// <p>Specifies whether a read-only replica is automatically promoted to read/write primary if the existing primary fails.</p>
206    /// <p><code>AutomaticFailoverEnabled</code> must be enabled for Valkey or Redis OSS (cluster mode enabled) replication groups.</p>
207    /// <p>Default: false</p>
208    pub fn automatic_failover_enabled(mut self, input: bool) -> Self {
209        self.inner = self.inner.automatic_failover_enabled(input);
210        self
211    }
212    /// <p>Specifies whether a read-only replica is automatically promoted to read/write primary if the existing primary fails.</p>
213    /// <p><code>AutomaticFailoverEnabled</code> must be enabled for Valkey or Redis OSS (cluster mode enabled) replication groups.</p>
214    /// <p>Default: false</p>
215    pub fn set_automatic_failover_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
216        self.inner = self.inner.set_automatic_failover_enabled(input);
217        self
218    }
219    /// <p>Specifies whether a read-only replica is automatically promoted to read/write primary if the existing primary fails.</p>
220    /// <p><code>AutomaticFailoverEnabled</code> must be enabled for Valkey or Redis OSS (cluster mode enabled) replication groups.</p>
221    /// <p>Default: false</p>
222    pub fn get_automatic_failover_enabled(&self) -> &::std::option::Option<bool> {
223        self.inner.get_automatic_failover_enabled()
224    }
225    /// <p>A flag indicating if you have Multi-AZ enabled to enhance fault tolerance. For more information, see <a href="http://docs.aws.amazon.com/AmazonElastiCache/latest/dg/AutoFailover.html">Minimizing Downtime: Multi-AZ</a>.</p>
226    pub fn multi_az_enabled(mut self, input: bool) -> Self {
227        self.inner = self.inner.multi_az_enabled(input);
228        self
229    }
230    /// <p>A flag indicating if you have Multi-AZ enabled to enhance fault tolerance. For more information, see <a href="http://docs.aws.amazon.com/AmazonElastiCache/latest/dg/AutoFailover.html">Minimizing Downtime: Multi-AZ</a>.</p>
231    pub fn set_multi_az_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
232        self.inner = self.inner.set_multi_az_enabled(input);
233        self
234    }
235    /// <p>A flag indicating if you have Multi-AZ enabled to enhance fault tolerance. For more information, see <a href="http://docs.aws.amazon.com/AmazonElastiCache/latest/dg/AutoFailover.html">Minimizing Downtime: Multi-AZ</a>.</p>
236    pub fn get_multi_az_enabled(&self) -> &::std::option::Option<bool> {
237        self.inner.get_multi_az_enabled()
238    }
239    /// <p>The number of clusters this replication group initially has.</p>
240    /// <p>This parameter is not used if there is more than one node group (shard). You should use <code>ReplicasPerNodeGroup</code> instead.</p>
241    /// <p>If <code>AutomaticFailoverEnabled</code> is <code>true</code>, the value of this parameter must be at least 2. If <code>AutomaticFailoverEnabled</code> is <code>false</code> you can omit this parameter (it will default to 1), or you can explicitly set it to a value between 2 and 6.</p>
242    /// <p>The maximum permitted value for <code>NumCacheClusters</code> is 6 (1 primary plus 5 replicas).</p>
243    pub fn num_cache_clusters(mut self, input: i32) -> Self {
244        self.inner = self.inner.num_cache_clusters(input);
245        self
246    }
247    /// <p>The number of clusters this replication group initially has.</p>
248    /// <p>This parameter is not used if there is more than one node group (shard). You should use <code>ReplicasPerNodeGroup</code> instead.</p>
249    /// <p>If <code>AutomaticFailoverEnabled</code> is <code>true</code>, the value of this parameter must be at least 2. If <code>AutomaticFailoverEnabled</code> is <code>false</code> you can omit this parameter (it will default to 1), or you can explicitly set it to a value between 2 and 6.</p>
250    /// <p>The maximum permitted value for <code>NumCacheClusters</code> is 6 (1 primary plus 5 replicas).</p>
251    pub fn set_num_cache_clusters(mut self, input: ::std::option::Option<i32>) -> Self {
252        self.inner = self.inner.set_num_cache_clusters(input);
253        self
254    }
255    /// <p>The number of clusters this replication group initially has.</p>
256    /// <p>This parameter is not used if there is more than one node group (shard). You should use <code>ReplicasPerNodeGroup</code> instead.</p>
257    /// <p>If <code>AutomaticFailoverEnabled</code> is <code>true</code>, the value of this parameter must be at least 2. If <code>AutomaticFailoverEnabled</code> is <code>false</code> you can omit this parameter (it will default to 1), or you can explicitly set it to a value between 2 and 6.</p>
258    /// <p>The maximum permitted value for <code>NumCacheClusters</code> is 6 (1 primary plus 5 replicas).</p>
259    pub fn get_num_cache_clusters(&self) -> &::std::option::Option<i32> {
260        self.inner.get_num_cache_clusters()
261    }
262    ///
263    /// Appends an item to `PreferredCacheClusterAZs`.
264    ///
265    /// To override the contents of this collection use [`set_preferred_cache_cluster_azs`](Self::set_preferred_cache_cluster_azs).
266    ///
267    /// <p>A list of EC2 Availability Zones in which the replication group's clusters are created. The order of the Availability Zones in the list is the order in which clusters are allocated. The primary cluster is created in the first AZ in the list.</p>
268    /// <p>This parameter is not used if there is more than one node group (shard). You should use <code>NodeGroupConfiguration</code> instead.</p><note>
269    /// <p>If you are creating your replication group in an Amazon VPC (recommended), you can only locate clusters in Availability Zones associated with the subnets in the selected subnet group.</p>
270    /// <p>The number of Availability Zones listed must equal the value of <code>NumCacheClusters</code>.</p>
271    /// </note>
272    /// <p>Default: system chosen Availability Zones.</p>
273    pub fn preferred_cache_cluster_azs(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
274        self.inner = self.inner.preferred_cache_cluster_azs(input.into());
275        self
276    }
277    /// <p>A list of EC2 Availability Zones in which the replication group's clusters are created. The order of the Availability Zones in the list is the order in which clusters are allocated. The primary cluster is created in the first AZ in the list.</p>
278    /// <p>This parameter is not used if there is more than one node group (shard). You should use <code>NodeGroupConfiguration</code> instead.</p><note>
279    /// <p>If you are creating your replication group in an Amazon VPC (recommended), you can only locate clusters in Availability Zones associated with the subnets in the selected subnet group.</p>
280    /// <p>The number of Availability Zones listed must equal the value of <code>NumCacheClusters</code>.</p>
281    /// </note>
282    /// <p>Default: system chosen Availability Zones.</p>
283    pub fn set_preferred_cache_cluster_azs(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
284        self.inner = self.inner.set_preferred_cache_cluster_azs(input);
285        self
286    }
287    /// <p>A list of EC2 Availability Zones in which the replication group's clusters are created. The order of the Availability Zones in the list is the order in which clusters are allocated. The primary cluster is created in the first AZ in the list.</p>
288    /// <p>This parameter is not used if there is more than one node group (shard). You should use <code>NodeGroupConfiguration</code> instead.</p><note>
289    /// <p>If you are creating your replication group in an Amazon VPC (recommended), you can only locate clusters in Availability Zones associated with the subnets in the selected subnet group.</p>
290    /// <p>The number of Availability Zones listed must equal the value of <code>NumCacheClusters</code>.</p>
291    /// </note>
292    /// <p>Default: system chosen Availability Zones.</p>
293    pub fn get_preferred_cache_cluster_azs(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
294        self.inner.get_preferred_cache_cluster_azs()
295    }
296    /// <p>An optional parameter that specifies the number of node groups (shards) for this Valkey or Redis OSS (cluster mode enabled) replication group. For Valkey or Redis OSS (cluster mode disabled) either omit this parameter or set it to 1.</p>
297    /// <p>Default: 1</p>
298    pub fn num_node_groups(mut self, input: i32) -> Self {
299        self.inner = self.inner.num_node_groups(input);
300        self
301    }
302    /// <p>An optional parameter that specifies the number of node groups (shards) for this Valkey or Redis OSS (cluster mode enabled) replication group. For Valkey or Redis OSS (cluster mode disabled) either omit this parameter or set it to 1.</p>
303    /// <p>Default: 1</p>
304    pub fn set_num_node_groups(mut self, input: ::std::option::Option<i32>) -> Self {
305        self.inner = self.inner.set_num_node_groups(input);
306        self
307    }
308    /// <p>An optional parameter that specifies the number of node groups (shards) for this Valkey or Redis OSS (cluster mode enabled) replication group. For Valkey or Redis OSS (cluster mode disabled) either omit this parameter or set it to 1.</p>
309    /// <p>Default: 1</p>
310    pub fn get_num_node_groups(&self) -> &::std::option::Option<i32> {
311        self.inner.get_num_node_groups()
312    }
313    /// <p>An optional parameter that specifies the number of replica nodes in each node group (shard). Valid values are 0 to 5.</p>
314    pub fn replicas_per_node_group(mut self, input: i32) -> Self {
315        self.inner = self.inner.replicas_per_node_group(input);
316        self
317    }
318    /// <p>An optional parameter that specifies the number of replica nodes in each node group (shard). Valid values are 0 to 5.</p>
319    pub fn set_replicas_per_node_group(mut self, input: ::std::option::Option<i32>) -> Self {
320        self.inner = self.inner.set_replicas_per_node_group(input);
321        self
322    }
323    /// <p>An optional parameter that specifies the number of replica nodes in each node group (shard). Valid values are 0 to 5.</p>
324    pub fn get_replicas_per_node_group(&self) -> &::std::option::Option<i32> {
325        self.inner.get_replicas_per_node_group()
326    }
327    ///
328    /// Appends an item to `NodeGroupConfiguration`.
329    ///
330    /// To override the contents of this collection use [`set_node_group_configuration`](Self::set_node_group_configuration).
331    ///
332    /// <p>A list of node group (shard) configuration options. Each node group (shard) configuration has the following members: <code>PrimaryAvailabilityZone</code>, <code>ReplicaAvailabilityZones</code>, <code>ReplicaCount</code>, and <code>Slots</code>.</p>
333    /// <p>If you're creating a Valkey or Redis OSS (cluster mode disabled) or a Valkey or Redis OSS (cluster mode enabled) replication group, you can use this parameter to individually configure each node group (shard), or you can omit this parameter. However, it is required when seeding a Valkey or Redis OSS (cluster mode enabled) cluster from a S3 rdb file. You must configure each node group (shard) using this parameter because you must specify the slots for each node group.</p>
334    pub fn node_group_configuration(mut self, input: crate::types::NodeGroupConfiguration) -> Self {
335        self.inner = self.inner.node_group_configuration(input);
336        self
337    }
338    /// <p>A list of node group (shard) configuration options. Each node group (shard) configuration has the following members: <code>PrimaryAvailabilityZone</code>, <code>ReplicaAvailabilityZones</code>, <code>ReplicaCount</code>, and <code>Slots</code>.</p>
339    /// <p>If you're creating a Valkey or Redis OSS (cluster mode disabled) or a Valkey or Redis OSS (cluster mode enabled) replication group, you can use this parameter to individually configure each node group (shard), or you can omit this parameter. However, it is required when seeding a Valkey or Redis OSS (cluster mode enabled) cluster from a S3 rdb file. You must configure each node group (shard) using this parameter because you must specify the slots for each node group.</p>
340    pub fn set_node_group_configuration(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::NodeGroupConfiguration>>) -> Self {
341        self.inner = self.inner.set_node_group_configuration(input);
342        self
343    }
344    /// <p>A list of node group (shard) configuration options. Each node group (shard) configuration has the following members: <code>PrimaryAvailabilityZone</code>, <code>ReplicaAvailabilityZones</code>, <code>ReplicaCount</code>, and <code>Slots</code>.</p>
345    /// <p>If you're creating a Valkey or Redis OSS (cluster mode disabled) or a Valkey or Redis OSS (cluster mode enabled) replication group, you can use this parameter to individually configure each node group (shard), or you can omit this parameter. However, it is required when seeding a Valkey or Redis OSS (cluster mode enabled) cluster from a S3 rdb file. You must configure each node group (shard) using this parameter because you must specify the slots for each node group.</p>
346    pub fn get_node_group_configuration(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::NodeGroupConfiguration>> {
347        self.inner.get_node_group_configuration()
348    }
349    /// <p>The compute and memory capacity of the nodes in the node group (shard).</p>
350    /// <p>The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.</p>
351    /// <ul>
352    /// <li>
353    /// <p>General purpose:</p>
354    /// <ul>
355    /// <li>
356    /// <p>Current generation:</p>
357    /// <p><b>M7g node types</b>: <code>cache.m7g.large</code>, <code>cache.m7g.xlarge</code>, <code>cache.m7g.2xlarge</code>, <code>cache.m7g.4xlarge</code>, <code>cache.m7g.8xlarge</code>, <code>cache.m7g.12xlarge</code>, <code>cache.m7g.16xlarge</code></p><note>
358    /// <p>For region availability, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion">Supported Node Types</a></p>
359    /// </note>
360    /// <p><b>M6g node types</b> (available only for Redis OSS engine version 5.0.6 onward and for Memcached engine version 1.5.16 onward): <code>cache.m6g.large</code>, <code>cache.m6g.xlarge</code>, <code>cache.m6g.2xlarge</code>, <code>cache.m6g.4xlarge</code>, <code>cache.m6g.8xlarge</code>, <code>cache.m6g.12xlarge</code>, <code>cache.m6g.16xlarge</code></p>
361    /// <p><b>M5 node types:</b> <code>cache.m5.large</code>, <code>cache.m5.xlarge</code>, <code>cache.m5.2xlarge</code>, <code>cache.m5.4xlarge</code>, <code>cache.m5.12xlarge</code>, <code>cache.m5.24xlarge</code></p>
362    /// <p><b>M4 node types:</b> <code>cache.m4.large</code>, <code>cache.m4.xlarge</code>, <code>cache.m4.2xlarge</code>, <code>cache.m4.4xlarge</code>, <code>cache.m4.10xlarge</code></p>
363    /// <p><b>T4g node types</b> (available only for Redis OSS engine version 5.0.6 onward and Memcached engine version 1.5.16 onward): <code>cache.t4g.micro</code>, <code>cache.t4g.small</code>, <code>cache.t4g.medium</code></p>
364    /// <p><b>T3 node types:</b> <code>cache.t3.micro</code>, <code>cache.t3.small</code>, <code>cache.t3.medium</code></p>
365    /// <p><b>T2 node types:</b> <code>cache.t2.micro</code>, <code>cache.t2.small</code>, <code>cache.t2.medium</code></p></li>
366    /// <li>
367    /// <p>Previous generation: (not recommended. Existing clusters are still supported but creation of new clusters is not supported for these types.)</p>
368    /// <p><b>T1 node types:</b> <code>cache.t1.micro</code></p>
369    /// <p><b>M1 node types:</b> <code>cache.m1.small</code>, <code>cache.m1.medium</code>, <code>cache.m1.large</code>, <code>cache.m1.xlarge</code></p>
370    /// <p><b>M3 node types:</b> <code>cache.m3.medium</code>, <code>cache.m3.large</code>, <code>cache.m3.xlarge</code>, <code>cache.m3.2xlarge</code></p></li>
371    /// </ul></li>
372    /// <li>
373    /// <p>Compute optimized:</p>
374    /// <ul>
375    /// <li>
376    /// <p>Previous generation: (not recommended. Existing clusters are still supported but creation of new clusters is not supported for these types.)</p>
377    /// <p><b>C1 node types:</b> <code>cache.c1.xlarge</code></p></li>
378    /// </ul></li>
379    /// <li>
380    /// <p>Memory optimized:</p>
381    /// <ul>
382    /// <li>
383    /// <p>Current generation:</p>
384    /// <p><b>R7g node types</b>: <code>cache.r7g.large</code>, <code>cache.r7g.xlarge</code>, <code>cache.r7g.2xlarge</code>, <code>cache.r7g.4xlarge</code>, <code>cache.r7g.8xlarge</code>, <code>cache.r7g.12xlarge</code>, <code>cache.r7g.16xlarge</code></p><note>
385    /// <p>For region availability, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion">Supported Node Types</a></p>
386    /// </note>
387    /// <p><b>R6g node types</b> (available only for Redis OSS engine version 5.0.6 onward and for Memcached engine version 1.5.16 onward): <code>cache.r6g.large</code>, <code>cache.r6g.xlarge</code>, <code>cache.r6g.2xlarge</code>, <code>cache.r6g.4xlarge</code>, <code>cache.r6g.8xlarge</code>, <code>cache.r6g.12xlarge</code>, <code>cache.r6g.16xlarge</code></p>
388    /// <p><b>R5 node types:</b> <code>cache.r5.large</code>, <code>cache.r5.xlarge</code>, <code>cache.r5.2xlarge</code>, <code>cache.r5.4xlarge</code>, <code>cache.r5.12xlarge</code>, <code>cache.r5.24xlarge</code></p>
389    /// <p><b>R4 node types:</b> <code>cache.r4.large</code>, <code>cache.r4.xlarge</code>, <code>cache.r4.2xlarge</code>, <code>cache.r4.4xlarge</code>, <code>cache.r4.8xlarge</code>, <code>cache.r4.16xlarge</code></p></li>
390    /// <li>
391    /// <p>Previous generation: (not recommended. Existing clusters are still supported but creation of new clusters is not supported for these types.)</p>
392    /// <p><b>M2 node types:</b> <code>cache.m2.xlarge</code>, <code>cache.m2.2xlarge</code>, <code>cache.m2.4xlarge</code></p>
393    /// <p><b>R3 node types:</b> <code>cache.r3.large</code>, <code>cache.r3.xlarge</code>, <code>cache.r3.2xlarge</code>, <code>cache.r3.4xlarge</code>, <code>cache.r3.8xlarge</code></p></li>
394    /// </ul></li>
395    /// </ul>
396    /// <p><b>Additional node type info</b></p>
397    /// <ul>
398    /// <li>
399    /// <p>All current generation instance types are created in Amazon VPC by default.</p></li>
400    /// <li>
401    /// <p>Valkey or Redis OSS append-only files (AOF) are not supported for T1 or T2 instances.</p></li>
402    /// <li>
403    /// <p>Valkey or Redis OSS Multi-AZ with automatic failover is not supported on T1 instances.</p></li>
404    /// <li>
405    /// <p>The configuration variables <code>appendonly</code> and <code>appendfsync</code> are not supported on Valkey, or on Redis OSS version 2.8.22 and later.</p></li>
406    /// </ul>
407    pub fn cache_node_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
408        self.inner = self.inner.cache_node_type(input.into());
409        self
410    }
411    /// <p>The compute and memory capacity of the nodes in the node group (shard).</p>
412    /// <p>The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.</p>
413    /// <ul>
414    /// <li>
415    /// <p>General purpose:</p>
416    /// <ul>
417    /// <li>
418    /// <p>Current generation:</p>
419    /// <p><b>M7g node types</b>: <code>cache.m7g.large</code>, <code>cache.m7g.xlarge</code>, <code>cache.m7g.2xlarge</code>, <code>cache.m7g.4xlarge</code>, <code>cache.m7g.8xlarge</code>, <code>cache.m7g.12xlarge</code>, <code>cache.m7g.16xlarge</code></p><note>
420    /// <p>For region availability, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion">Supported Node Types</a></p>
421    /// </note>
422    /// <p><b>M6g node types</b> (available only for Redis OSS engine version 5.0.6 onward and for Memcached engine version 1.5.16 onward): <code>cache.m6g.large</code>, <code>cache.m6g.xlarge</code>, <code>cache.m6g.2xlarge</code>, <code>cache.m6g.4xlarge</code>, <code>cache.m6g.8xlarge</code>, <code>cache.m6g.12xlarge</code>, <code>cache.m6g.16xlarge</code></p>
423    /// <p><b>M5 node types:</b> <code>cache.m5.large</code>, <code>cache.m5.xlarge</code>, <code>cache.m5.2xlarge</code>, <code>cache.m5.4xlarge</code>, <code>cache.m5.12xlarge</code>, <code>cache.m5.24xlarge</code></p>
424    /// <p><b>M4 node types:</b> <code>cache.m4.large</code>, <code>cache.m4.xlarge</code>, <code>cache.m4.2xlarge</code>, <code>cache.m4.4xlarge</code>, <code>cache.m4.10xlarge</code></p>
425    /// <p><b>T4g node types</b> (available only for Redis OSS engine version 5.0.6 onward and Memcached engine version 1.5.16 onward): <code>cache.t4g.micro</code>, <code>cache.t4g.small</code>, <code>cache.t4g.medium</code></p>
426    /// <p><b>T3 node types:</b> <code>cache.t3.micro</code>, <code>cache.t3.small</code>, <code>cache.t3.medium</code></p>
427    /// <p><b>T2 node types:</b> <code>cache.t2.micro</code>, <code>cache.t2.small</code>, <code>cache.t2.medium</code></p></li>
428    /// <li>
429    /// <p>Previous generation: (not recommended. Existing clusters are still supported but creation of new clusters is not supported for these types.)</p>
430    /// <p><b>T1 node types:</b> <code>cache.t1.micro</code></p>
431    /// <p><b>M1 node types:</b> <code>cache.m1.small</code>, <code>cache.m1.medium</code>, <code>cache.m1.large</code>, <code>cache.m1.xlarge</code></p>
432    /// <p><b>M3 node types:</b> <code>cache.m3.medium</code>, <code>cache.m3.large</code>, <code>cache.m3.xlarge</code>, <code>cache.m3.2xlarge</code></p></li>
433    /// </ul></li>
434    /// <li>
435    /// <p>Compute optimized:</p>
436    /// <ul>
437    /// <li>
438    /// <p>Previous generation: (not recommended. Existing clusters are still supported but creation of new clusters is not supported for these types.)</p>
439    /// <p><b>C1 node types:</b> <code>cache.c1.xlarge</code></p></li>
440    /// </ul></li>
441    /// <li>
442    /// <p>Memory optimized:</p>
443    /// <ul>
444    /// <li>
445    /// <p>Current generation:</p>
446    /// <p><b>R7g node types</b>: <code>cache.r7g.large</code>, <code>cache.r7g.xlarge</code>, <code>cache.r7g.2xlarge</code>, <code>cache.r7g.4xlarge</code>, <code>cache.r7g.8xlarge</code>, <code>cache.r7g.12xlarge</code>, <code>cache.r7g.16xlarge</code></p><note>
447    /// <p>For region availability, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion">Supported Node Types</a></p>
448    /// </note>
449    /// <p><b>R6g node types</b> (available only for Redis OSS engine version 5.0.6 onward and for Memcached engine version 1.5.16 onward): <code>cache.r6g.large</code>, <code>cache.r6g.xlarge</code>, <code>cache.r6g.2xlarge</code>, <code>cache.r6g.4xlarge</code>, <code>cache.r6g.8xlarge</code>, <code>cache.r6g.12xlarge</code>, <code>cache.r6g.16xlarge</code></p>
450    /// <p><b>R5 node types:</b> <code>cache.r5.large</code>, <code>cache.r5.xlarge</code>, <code>cache.r5.2xlarge</code>, <code>cache.r5.4xlarge</code>, <code>cache.r5.12xlarge</code>, <code>cache.r5.24xlarge</code></p>
451    /// <p><b>R4 node types:</b> <code>cache.r4.large</code>, <code>cache.r4.xlarge</code>, <code>cache.r4.2xlarge</code>, <code>cache.r4.4xlarge</code>, <code>cache.r4.8xlarge</code>, <code>cache.r4.16xlarge</code></p></li>
452    /// <li>
453    /// <p>Previous generation: (not recommended. Existing clusters are still supported but creation of new clusters is not supported for these types.)</p>
454    /// <p><b>M2 node types:</b> <code>cache.m2.xlarge</code>, <code>cache.m2.2xlarge</code>, <code>cache.m2.4xlarge</code></p>
455    /// <p><b>R3 node types:</b> <code>cache.r3.large</code>, <code>cache.r3.xlarge</code>, <code>cache.r3.2xlarge</code>, <code>cache.r3.4xlarge</code>, <code>cache.r3.8xlarge</code></p></li>
456    /// </ul></li>
457    /// </ul>
458    /// <p><b>Additional node type info</b></p>
459    /// <ul>
460    /// <li>
461    /// <p>All current generation instance types are created in Amazon VPC by default.</p></li>
462    /// <li>
463    /// <p>Valkey or Redis OSS append-only files (AOF) are not supported for T1 or T2 instances.</p></li>
464    /// <li>
465    /// <p>Valkey or Redis OSS Multi-AZ with automatic failover is not supported on T1 instances.</p></li>
466    /// <li>
467    /// <p>The configuration variables <code>appendonly</code> and <code>appendfsync</code> are not supported on Valkey, or on Redis OSS version 2.8.22 and later.</p></li>
468    /// </ul>
469    pub fn set_cache_node_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
470        self.inner = self.inner.set_cache_node_type(input);
471        self
472    }
473    /// <p>The compute and memory capacity of the nodes in the node group (shard).</p>
474    /// <p>The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more memory and computational power at lower cost when compared to their equivalent previous generation counterparts.</p>
475    /// <ul>
476    /// <li>
477    /// <p>General purpose:</p>
478    /// <ul>
479    /// <li>
480    /// <p>Current generation:</p>
481    /// <p><b>M7g node types</b>: <code>cache.m7g.large</code>, <code>cache.m7g.xlarge</code>, <code>cache.m7g.2xlarge</code>, <code>cache.m7g.4xlarge</code>, <code>cache.m7g.8xlarge</code>, <code>cache.m7g.12xlarge</code>, <code>cache.m7g.16xlarge</code></p><note>
482    /// <p>For region availability, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion">Supported Node Types</a></p>
483    /// </note>
484    /// <p><b>M6g node types</b> (available only for Redis OSS engine version 5.0.6 onward and for Memcached engine version 1.5.16 onward): <code>cache.m6g.large</code>, <code>cache.m6g.xlarge</code>, <code>cache.m6g.2xlarge</code>, <code>cache.m6g.4xlarge</code>, <code>cache.m6g.8xlarge</code>, <code>cache.m6g.12xlarge</code>, <code>cache.m6g.16xlarge</code></p>
485    /// <p><b>M5 node types:</b> <code>cache.m5.large</code>, <code>cache.m5.xlarge</code>, <code>cache.m5.2xlarge</code>, <code>cache.m5.4xlarge</code>, <code>cache.m5.12xlarge</code>, <code>cache.m5.24xlarge</code></p>
486    /// <p><b>M4 node types:</b> <code>cache.m4.large</code>, <code>cache.m4.xlarge</code>, <code>cache.m4.2xlarge</code>, <code>cache.m4.4xlarge</code>, <code>cache.m4.10xlarge</code></p>
487    /// <p><b>T4g node types</b> (available only for Redis OSS engine version 5.0.6 onward and Memcached engine version 1.5.16 onward): <code>cache.t4g.micro</code>, <code>cache.t4g.small</code>, <code>cache.t4g.medium</code></p>
488    /// <p><b>T3 node types:</b> <code>cache.t3.micro</code>, <code>cache.t3.small</code>, <code>cache.t3.medium</code></p>
489    /// <p><b>T2 node types:</b> <code>cache.t2.micro</code>, <code>cache.t2.small</code>, <code>cache.t2.medium</code></p></li>
490    /// <li>
491    /// <p>Previous generation: (not recommended. Existing clusters are still supported but creation of new clusters is not supported for these types.)</p>
492    /// <p><b>T1 node types:</b> <code>cache.t1.micro</code></p>
493    /// <p><b>M1 node types:</b> <code>cache.m1.small</code>, <code>cache.m1.medium</code>, <code>cache.m1.large</code>, <code>cache.m1.xlarge</code></p>
494    /// <p><b>M3 node types:</b> <code>cache.m3.medium</code>, <code>cache.m3.large</code>, <code>cache.m3.xlarge</code>, <code>cache.m3.2xlarge</code></p></li>
495    /// </ul></li>
496    /// <li>
497    /// <p>Compute optimized:</p>
498    /// <ul>
499    /// <li>
500    /// <p>Previous generation: (not recommended. Existing clusters are still supported but creation of new clusters is not supported for these types.)</p>
501    /// <p><b>C1 node types:</b> <code>cache.c1.xlarge</code></p></li>
502    /// </ul></li>
503    /// <li>
504    /// <p>Memory optimized:</p>
505    /// <ul>
506    /// <li>
507    /// <p>Current generation:</p>
508    /// <p><b>R7g node types</b>: <code>cache.r7g.large</code>, <code>cache.r7g.xlarge</code>, <code>cache.r7g.2xlarge</code>, <code>cache.r7g.4xlarge</code>, <code>cache.r7g.8xlarge</code>, <code>cache.r7g.12xlarge</code>, <code>cache.r7g.16xlarge</code></p><note>
509    /// <p>For region availability, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion">Supported Node Types</a></p>
510    /// </note>
511    /// <p><b>R6g node types</b> (available only for Redis OSS engine version 5.0.6 onward and for Memcached engine version 1.5.16 onward): <code>cache.r6g.large</code>, <code>cache.r6g.xlarge</code>, <code>cache.r6g.2xlarge</code>, <code>cache.r6g.4xlarge</code>, <code>cache.r6g.8xlarge</code>, <code>cache.r6g.12xlarge</code>, <code>cache.r6g.16xlarge</code></p>
512    /// <p><b>R5 node types:</b> <code>cache.r5.large</code>, <code>cache.r5.xlarge</code>, <code>cache.r5.2xlarge</code>, <code>cache.r5.4xlarge</code>, <code>cache.r5.12xlarge</code>, <code>cache.r5.24xlarge</code></p>
513    /// <p><b>R4 node types:</b> <code>cache.r4.large</code>, <code>cache.r4.xlarge</code>, <code>cache.r4.2xlarge</code>, <code>cache.r4.4xlarge</code>, <code>cache.r4.8xlarge</code>, <code>cache.r4.16xlarge</code></p></li>
514    /// <li>
515    /// <p>Previous generation: (not recommended. Existing clusters are still supported but creation of new clusters is not supported for these types.)</p>
516    /// <p><b>M2 node types:</b> <code>cache.m2.xlarge</code>, <code>cache.m2.2xlarge</code>, <code>cache.m2.4xlarge</code></p>
517    /// <p><b>R3 node types:</b> <code>cache.r3.large</code>, <code>cache.r3.xlarge</code>, <code>cache.r3.2xlarge</code>, <code>cache.r3.4xlarge</code>, <code>cache.r3.8xlarge</code></p></li>
518    /// </ul></li>
519    /// </ul>
520    /// <p><b>Additional node type info</b></p>
521    /// <ul>
522    /// <li>
523    /// <p>All current generation instance types are created in Amazon VPC by default.</p></li>
524    /// <li>
525    /// <p>Valkey or Redis OSS append-only files (AOF) are not supported for T1 or T2 instances.</p></li>
526    /// <li>
527    /// <p>Valkey or Redis OSS Multi-AZ with automatic failover is not supported on T1 instances.</p></li>
528    /// <li>
529    /// <p>The configuration variables <code>appendonly</code> and <code>appendfsync</code> are not supported on Valkey, or on Redis OSS version 2.8.22 and later.</p></li>
530    /// </ul>
531    pub fn get_cache_node_type(&self) -> &::std::option::Option<::std::string::String> {
532        self.inner.get_cache_node_type()
533    }
534    /// <p>The name of the cache engine to be used for the clusters in this replication group. The value must be set to <code>valkey</code> or <code>redis</code>.</p>
535    pub fn engine(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
536        self.inner = self.inner.engine(input.into());
537        self
538    }
539    /// <p>The name of the cache engine to be used for the clusters in this replication group. The value must be set to <code>valkey</code> or <code>redis</code>.</p>
540    pub fn set_engine(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
541        self.inner = self.inner.set_engine(input);
542        self
543    }
544    /// <p>The name of the cache engine to be used for the clusters in this replication group. The value must be set to <code>valkey</code> or <code>redis</code>.</p>
545    pub fn get_engine(&self) -> &::std::option::Option<::std::string::String> {
546        self.inner.get_engine()
547    }
548    /// <p>The version number of the cache engine to be used for the clusters in this replication group. To view the supported cache engine versions, use the <code>DescribeCacheEngineVersions</code> operation.</p>
549    /// <p><b>Important:</b> You can upgrade to a newer engine version (see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/SelectEngine.html#VersionManagement">Selecting a Cache Engine and Version</a>) in the <i>ElastiCache User Guide</i>, but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cluster or replication group and create it anew with the earlier engine version.</p>
550    pub fn engine_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
551        self.inner = self.inner.engine_version(input.into());
552        self
553    }
554    /// <p>The version number of the cache engine to be used for the clusters in this replication group. To view the supported cache engine versions, use the <code>DescribeCacheEngineVersions</code> operation.</p>
555    /// <p><b>Important:</b> You can upgrade to a newer engine version (see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/SelectEngine.html#VersionManagement">Selecting a Cache Engine and Version</a>) in the <i>ElastiCache User Guide</i>, but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cluster or replication group and create it anew with the earlier engine version.</p>
556    pub fn set_engine_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
557        self.inner = self.inner.set_engine_version(input);
558        self
559    }
560    /// <p>The version number of the cache engine to be used for the clusters in this replication group. To view the supported cache engine versions, use the <code>DescribeCacheEngineVersions</code> operation.</p>
561    /// <p><b>Important:</b> You can upgrade to a newer engine version (see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/SelectEngine.html#VersionManagement">Selecting a Cache Engine and Version</a>) in the <i>ElastiCache User Guide</i>, but you cannot downgrade to an earlier engine version. If you want to use an earlier engine version, you must delete the existing cluster or replication group and create it anew with the earlier engine version.</p>
562    pub fn get_engine_version(&self) -> &::std::option::Option<::std::string::String> {
563        self.inner.get_engine_version()
564    }
565    /// <p>The name of the parameter group to associate with this replication group. If this argument is omitted, the default cache parameter group for the specified engine is used.</p>
566    /// <p>If you are running Valkey or Redis OSS version 3.2.4 or later, only one node group (shard), and want to use a default parameter group, we recommend that you specify the parameter group by name.</p>
567    /// <ul>
568    /// <li>
569    /// <p>To create a Valkey or Redis OSS (cluster mode disabled) replication group, use <code>CacheParameterGroupName=default.redis3.2</code>.</p></li>
570    /// <li>
571    /// <p>To create a Valkey or Redis OSS (cluster mode enabled) replication group, use <code>CacheParameterGroupName=default.redis3.2.cluster.on</code>.</p></li>
572    /// </ul>
573    pub fn cache_parameter_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
574        self.inner = self.inner.cache_parameter_group_name(input.into());
575        self
576    }
577    /// <p>The name of the parameter group to associate with this replication group. If this argument is omitted, the default cache parameter group for the specified engine is used.</p>
578    /// <p>If you are running Valkey or Redis OSS version 3.2.4 or later, only one node group (shard), and want to use a default parameter group, we recommend that you specify the parameter group by name.</p>
579    /// <ul>
580    /// <li>
581    /// <p>To create a Valkey or Redis OSS (cluster mode disabled) replication group, use <code>CacheParameterGroupName=default.redis3.2</code>.</p></li>
582    /// <li>
583    /// <p>To create a Valkey or Redis OSS (cluster mode enabled) replication group, use <code>CacheParameterGroupName=default.redis3.2.cluster.on</code>.</p></li>
584    /// </ul>
585    pub fn set_cache_parameter_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
586        self.inner = self.inner.set_cache_parameter_group_name(input);
587        self
588    }
589    /// <p>The name of the parameter group to associate with this replication group. If this argument is omitted, the default cache parameter group for the specified engine is used.</p>
590    /// <p>If you are running Valkey or Redis OSS version 3.2.4 or later, only one node group (shard), and want to use a default parameter group, we recommend that you specify the parameter group by name.</p>
591    /// <ul>
592    /// <li>
593    /// <p>To create a Valkey or Redis OSS (cluster mode disabled) replication group, use <code>CacheParameterGroupName=default.redis3.2</code>.</p></li>
594    /// <li>
595    /// <p>To create a Valkey or Redis OSS (cluster mode enabled) replication group, use <code>CacheParameterGroupName=default.redis3.2.cluster.on</code>.</p></li>
596    /// </ul>
597    pub fn get_cache_parameter_group_name(&self) -> &::std::option::Option<::std::string::String> {
598        self.inner.get_cache_parameter_group_name()
599    }
600    /// <p>The name of the cache subnet group to be used for the replication group.</p><important>
601    /// <p>If you're going to launch your cluster in an Amazon VPC, you need to create a subnet group before you start creating a cluster. For more information, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/SubnetGroups.html">Subnets and Subnet Groups</a>.</p>
602    /// </important>
603    pub fn cache_subnet_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
604        self.inner = self.inner.cache_subnet_group_name(input.into());
605        self
606    }
607    /// <p>The name of the cache subnet group to be used for the replication group.</p><important>
608    /// <p>If you're going to launch your cluster in an Amazon VPC, you need to create a subnet group before you start creating a cluster. For more information, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/SubnetGroups.html">Subnets and Subnet Groups</a>.</p>
609    /// </important>
610    pub fn set_cache_subnet_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
611        self.inner = self.inner.set_cache_subnet_group_name(input);
612        self
613    }
614    /// <p>The name of the cache subnet group to be used for the replication group.</p><important>
615    /// <p>If you're going to launch your cluster in an Amazon VPC, you need to create a subnet group before you start creating a cluster. For more information, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/SubnetGroups.html">Subnets and Subnet Groups</a>.</p>
616    /// </important>
617    pub fn get_cache_subnet_group_name(&self) -> &::std::option::Option<::std::string::String> {
618        self.inner.get_cache_subnet_group_name()
619    }
620    ///
621    /// Appends an item to `CacheSecurityGroupNames`.
622    ///
623    /// To override the contents of this collection use [`set_cache_security_group_names`](Self::set_cache_security_group_names).
624    ///
625    /// <p>A list of cache security group names to associate with this replication group.</p>
626    pub fn cache_security_group_names(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
627        self.inner = self.inner.cache_security_group_names(input.into());
628        self
629    }
630    /// <p>A list of cache security group names to associate with this replication group.</p>
631    pub fn set_cache_security_group_names(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
632        self.inner = self.inner.set_cache_security_group_names(input);
633        self
634    }
635    /// <p>A list of cache security group names to associate with this replication group.</p>
636    pub fn get_cache_security_group_names(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
637        self.inner.get_cache_security_group_names()
638    }
639    ///
640    /// Appends an item to `SecurityGroupIds`.
641    ///
642    /// To override the contents of this collection use [`set_security_group_ids`](Self::set_security_group_ids).
643    ///
644    /// <p>One or more Amazon VPC security groups associated with this replication group.</p>
645    /// <p>Use this parameter only when you are creating a replication group in an Amazon Virtual Private Cloud (Amazon VPC).</p>
646    pub fn security_group_ids(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
647        self.inner = self.inner.security_group_ids(input.into());
648        self
649    }
650    /// <p>One or more Amazon VPC security groups associated with this replication group.</p>
651    /// <p>Use this parameter only when you are creating a replication group in an Amazon Virtual Private Cloud (Amazon VPC).</p>
652    pub fn set_security_group_ids(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
653        self.inner = self.inner.set_security_group_ids(input);
654        self
655    }
656    /// <p>One or more Amazon VPC security groups associated with this replication group.</p>
657    /// <p>Use this parameter only when you are creating a replication group in an Amazon Virtual Private Cloud (Amazon VPC).</p>
658    pub fn get_security_group_ids(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
659        self.inner.get_security_group_ids()
660    }
661    ///
662    /// Appends an item to `Tags`.
663    ///
664    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
665    ///
666    /// <p>A list of tags to be added to this resource. Tags are comma-separated key,value pairs (e.g. Key=<code>myKey</code>, Value=<code>myKeyValue</code>. You can include multiple tags as shown following: Key=<code>myKey</code>, Value=<code>myKeyValue</code> Key=<code>mySecondKey</code>, Value=<code>mySecondKeyValue</code>. Tags on replication groups will be replicated to all nodes.</p>
667    pub fn tags(mut self, input: crate::types::Tag) -> Self {
668        self.inner = self.inner.tags(input);
669        self
670    }
671    /// <p>A list of tags to be added to this resource. Tags are comma-separated key,value pairs (e.g. Key=<code>myKey</code>, Value=<code>myKeyValue</code>. You can include multiple tags as shown following: Key=<code>myKey</code>, Value=<code>myKeyValue</code> Key=<code>mySecondKey</code>, Value=<code>mySecondKeyValue</code>. Tags on replication groups will be replicated to all nodes.</p>
672    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
673        self.inner = self.inner.set_tags(input);
674        self
675    }
676    /// <p>A list of tags to be added to this resource. Tags are comma-separated key,value pairs (e.g. Key=<code>myKey</code>, Value=<code>myKeyValue</code>. You can include multiple tags as shown following: Key=<code>myKey</code>, Value=<code>myKeyValue</code> Key=<code>mySecondKey</code>, Value=<code>mySecondKeyValue</code>. Tags on replication groups will be replicated to all nodes.</p>
677    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
678        self.inner.get_tags()
679    }
680    ///
681    /// Appends an item to `SnapshotArns`.
682    ///
683    /// To override the contents of this collection use [`set_snapshot_arns`](Self::set_snapshot_arns).
684    ///
685    /// <p>A list of Amazon Resource Names (ARN) that uniquely identify the Valkey or Redis OSS RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new replication group. The Amazon S3 object name in the ARN cannot contain any commas. The new replication group will have the number of node groups (console: shards) specified by the parameter <i>NumNodeGroups</i> or the number of node groups configured by <i>NodeGroupConfiguration</i> regardless of the number of ARNs specified here.</p>
686    /// <p>Example of an Amazon S3 ARN: <code>arn:aws:s3:::my_bucket/snapshot1.rdb</code></p>
687    pub fn snapshot_arns(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
688        self.inner = self.inner.snapshot_arns(input.into());
689        self
690    }
691    /// <p>A list of Amazon Resource Names (ARN) that uniquely identify the Valkey or Redis OSS RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new replication group. The Amazon S3 object name in the ARN cannot contain any commas. The new replication group will have the number of node groups (console: shards) specified by the parameter <i>NumNodeGroups</i> or the number of node groups configured by <i>NodeGroupConfiguration</i> regardless of the number of ARNs specified here.</p>
692    /// <p>Example of an Amazon S3 ARN: <code>arn:aws:s3:::my_bucket/snapshot1.rdb</code></p>
693    pub fn set_snapshot_arns(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
694        self.inner = self.inner.set_snapshot_arns(input);
695        self
696    }
697    /// <p>A list of Amazon Resource Names (ARN) that uniquely identify the Valkey or Redis OSS RDB snapshot files stored in Amazon S3. The snapshot files are used to populate the new replication group. The Amazon S3 object name in the ARN cannot contain any commas. The new replication group will have the number of node groups (console: shards) specified by the parameter <i>NumNodeGroups</i> or the number of node groups configured by <i>NodeGroupConfiguration</i> regardless of the number of ARNs specified here.</p>
698    /// <p>Example of an Amazon S3 ARN: <code>arn:aws:s3:::my_bucket/snapshot1.rdb</code></p>
699    pub fn get_snapshot_arns(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
700        self.inner.get_snapshot_arns()
701    }
702    /// <p>The name of a snapshot from which to restore data into the new replication group. The snapshot status changes to <code>restoring</code> while the new replication group is being created.</p>
703    pub fn snapshot_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
704        self.inner = self.inner.snapshot_name(input.into());
705        self
706    }
707    /// <p>The name of a snapshot from which to restore data into the new replication group. The snapshot status changes to <code>restoring</code> while the new replication group is being created.</p>
708    pub fn set_snapshot_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
709        self.inner = self.inner.set_snapshot_name(input);
710        self
711    }
712    /// <p>The name of a snapshot from which to restore data into the new replication group. The snapshot status changes to <code>restoring</code> while the new replication group is being created.</p>
713    pub fn get_snapshot_name(&self) -> &::std::option::Option<::std::string::String> {
714        self.inner.get_snapshot_name()
715    }
716    /// <p>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.</p>
717    /// <p>Valid values for <code>ddd</code> are:</p>
718    /// <ul>
719    /// <li>
720    /// <p><code>sun</code></p></li>
721    /// <li>
722    /// <p><code>mon</code></p></li>
723    /// <li>
724    /// <p><code>tue</code></p></li>
725    /// <li>
726    /// <p><code>wed</code></p></li>
727    /// <li>
728    /// <p><code>thu</code></p></li>
729    /// <li>
730    /// <p><code>fri</code></p></li>
731    /// <li>
732    /// <p><code>sat</code></p></li>
733    /// </ul>
734    /// <p>Example: <code>sun:23:00-mon:01:30</code></p>
735    pub fn preferred_maintenance_window(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
736        self.inner = self.inner.preferred_maintenance_window(input.into());
737        self
738    }
739    /// <p>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.</p>
740    /// <p>Valid values for <code>ddd</code> are:</p>
741    /// <ul>
742    /// <li>
743    /// <p><code>sun</code></p></li>
744    /// <li>
745    /// <p><code>mon</code></p></li>
746    /// <li>
747    /// <p><code>tue</code></p></li>
748    /// <li>
749    /// <p><code>wed</code></p></li>
750    /// <li>
751    /// <p><code>thu</code></p></li>
752    /// <li>
753    /// <p><code>fri</code></p></li>
754    /// <li>
755    /// <p><code>sat</code></p></li>
756    /// </ul>
757    /// <p>Example: <code>sun:23:00-mon:01:30</code></p>
758    pub fn set_preferred_maintenance_window(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
759        self.inner = self.inner.set_preferred_maintenance_window(input);
760        self
761    }
762    /// <p>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.</p>
763    /// <p>Valid values for <code>ddd</code> are:</p>
764    /// <ul>
765    /// <li>
766    /// <p><code>sun</code></p></li>
767    /// <li>
768    /// <p><code>mon</code></p></li>
769    /// <li>
770    /// <p><code>tue</code></p></li>
771    /// <li>
772    /// <p><code>wed</code></p></li>
773    /// <li>
774    /// <p><code>thu</code></p></li>
775    /// <li>
776    /// <p><code>fri</code></p></li>
777    /// <li>
778    /// <p><code>sat</code></p></li>
779    /// </ul>
780    /// <p>Example: <code>sun:23:00-mon:01:30</code></p>
781    pub fn get_preferred_maintenance_window(&self) -> &::std::option::Option<::std::string::String> {
782        self.inner.get_preferred_maintenance_window()
783    }
784    /// <p>The port number on which each member of the replication group accepts connections.</p>
785    pub fn port(mut self, input: i32) -> Self {
786        self.inner = self.inner.port(input);
787        self
788    }
789    /// <p>The port number on which each member of the replication group accepts connections.</p>
790    pub fn set_port(mut self, input: ::std::option::Option<i32>) -> Self {
791        self.inner = self.inner.set_port(input);
792        self
793    }
794    /// <p>The port number on which each member of the replication group accepts connections.</p>
795    pub fn get_port(&self) -> &::std::option::Option<i32> {
796        self.inner.get_port()
797    }
798    /// <p>The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.</p><note>
799    /// <p>The Amazon SNS topic owner must be the same as the cluster owner.</p>
800    /// </note>
801    pub fn notification_topic_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
802        self.inner = self.inner.notification_topic_arn(input.into());
803        self
804    }
805    /// <p>The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.</p><note>
806    /// <p>The Amazon SNS topic owner must be the same as the cluster owner.</p>
807    /// </note>
808    pub fn set_notification_topic_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
809        self.inner = self.inner.set_notification_topic_arn(input);
810        self
811    }
812    /// <p>The Amazon Resource Name (ARN) of the Amazon Simple Notification Service (SNS) topic to which notifications are sent.</p><note>
813    /// <p>The Amazon SNS topic owner must be the same as the cluster owner.</p>
814    /// </note>
815    pub fn get_notification_topic_arn(&self) -> &::std::option::Option<::std::string::String> {
816        self.inner.get_notification_topic_arn()
817    }
818    /// <p>&nbsp;If you are running Valkey 7.2 and above or Redis OSS engine version 6.0 and above, set this parameter to yes to opt-in to the next auto minor version upgrade campaign. This parameter is disabled for previous versions.&nbsp;</p>
819    pub fn auto_minor_version_upgrade(mut self, input: bool) -> Self {
820        self.inner = self.inner.auto_minor_version_upgrade(input);
821        self
822    }
823    /// <p>&nbsp;If you are running Valkey 7.2 and above or Redis OSS engine version 6.0 and above, set this parameter to yes to opt-in to the next auto minor version upgrade campaign. This parameter is disabled for previous versions.&nbsp;</p>
824    pub fn set_auto_minor_version_upgrade(mut self, input: ::std::option::Option<bool>) -> Self {
825        self.inner = self.inner.set_auto_minor_version_upgrade(input);
826        self
827    }
828    /// <p>&nbsp;If you are running Valkey 7.2 and above or Redis OSS engine version 6.0 and above, set this parameter to yes to opt-in to the next auto minor version upgrade campaign. This parameter is disabled for previous versions.&nbsp;</p>
829    pub fn get_auto_minor_version_upgrade(&self) -> &::std::option::Option<bool> {
830        self.inner.get_auto_minor_version_upgrade()
831    }
832    /// <p>The number of days for which ElastiCache retains automatic snapshots before deleting them. For example, if you set <code>SnapshotRetentionLimit</code> to 5, a snapshot that was taken today is retained for 5 days before being deleted.</p>
833    /// <p>Default: 0 (i.e., automatic backups are disabled for this cluster).</p>
834    pub fn snapshot_retention_limit(mut self, input: i32) -> Self {
835        self.inner = self.inner.snapshot_retention_limit(input);
836        self
837    }
838    /// <p>The number of days for which ElastiCache retains automatic snapshots before deleting them. For example, if you set <code>SnapshotRetentionLimit</code> to 5, a snapshot that was taken today is retained for 5 days before being deleted.</p>
839    /// <p>Default: 0 (i.e., automatic backups are disabled for this cluster).</p>
840    pub fn set_snapshot_retention_limit(mut self, input: ::std::option::Option<i32>) -> Self {
841        self.inner = self.inner.set_snapshot_retention_limit(input);
842        self
843    }
844    /// <p>The number of days for which ElastiCache retains automatic snapshots before deleting them. For example, if you set <code>SnapshotRetentionLimit</code> to 5, a snapshot that was taken today is retained for 5 days before being deleted.</p>
845    /// <p>Default: 0 (i.e., automatic backups are disabled for this cluster).</p>
846    pub fn get_snapshot_retention_limit(&self) -> &::std::option::Option<i32> {
847        self.inner.get_snapshot_retention_limit()
848    }
849    /// <p>The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard).</p>
850    /// <p>Example: <code>05:00-09:00</code></p>
851    /// <p>If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range.</p>
852    pub fn snapshot_window(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
853        self.inner = self.inner.snapshot_window(input.into());
854        self
855    }
856    /// <p>The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard).</p>
857    /// <p>Example: <code>05:00-09:00</code></p>
858    /// <p>If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range.</p>
859    pub fn set_snapshot_window(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
860        self.inner = self.inner.set_snapshot_window(input);
861        self
862    }
863    /// <p>The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot of your node group (shard).</p>
864    /// <p>Example: <code>05:00-09:00</code></p>
865    /// <p>If you do not specify this parameter, ElastiCache automatically chooses an appropriate time range.</p>
866    pub fn get_snapshot_window(&self) -> &::std::option::Option<::std::string::String> {
867        self.inner.get_snapshot_window()
868    }
869    /// <p><b>Reserved parameter.</b> The password used to access a password protected server.</p>
870    /// <p><code>AuthToken</code> can be specified only on replication groups where <code>TransitEncryptionEnabled</code> is <code>true</code>.</p><important>
871    /// <p>For HIPAA compliance, you must specify <code>TransitEncryptionEnabled</code> as <code>true</code>, an <code>AuthToken</code>, and a <code>CacheSubnetGroup</code>.</p>
872    /// </important>
873    /// <p>Password constraints:</p>
874    /// <ul>
875    /// <li>
876    /// <p>Must be only printable ASCII characters.</p></li>
877    /// <li>
878    /// <p>Must be at least 16 characters and no more than 128 characters in length.</p></li>
879    /// <li>
880    /// <p>The only permitted printable special characters are !, &amp;, #, $, ^, &lt;, &gt;, and -. Other printable special characters cannot be used in the AUTH token.</p></li>
881    /// </ul>
882    /// <p>For more information, see <a href="http://redis.io/commands/AUTH">AUTH password</a> at http://redis.io/commands/AUTH.</p>
883    pub fn auth_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
884        self.inner = self.inner.auth_token(input.into());
885        self
886    }
887    /// <p><b>Reserved parameter.</b> The password used to access a password protected server.</p>
888    /// <p><code>AuthToken</code> can be specified only on replication groups where <code>TransitEncryptionEnabled</code> is <code>true</code>.</p><important>
889    /// <p>For HIPAA compliance, you must specify <code>TransitEncryptionEnabled</code> as <code>true</code>, an <code>AuthToken</code>, and a <code>CacheSubnetGroup</code>.</p>
890    /// </important>
891    /// <p>Password constraints:</p>
892    /// <ul>
893    /// <li>
894    /// <p>Must be only printable ASCII characters.</p></li>
895    /// <li>
896    /// <p>Must be at least 16 characters and no more than 128 characters in length.</p></li>
897    /// <li>
898    /// <p>The only permitted printable special characters are !, &amp;, #, $, ^, &lt;, &gt;, and -. Other printable special characters cannot be used in the AUTH token.</p></li>
899    /// </ul>
900    /// <p>For more information, see <a href="http://redis.io/commands/AUTH">AUTH password</a> at http://redis.io/commands/AUTH.</p>
901    pub fn set_auth_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
902        self.inner = self.inner.set_auth_token(input);
903        self
904    }
905    /// <p><b>Reserved parameter.</b> The password used to access a password protected server.</p>
906    /// <p><code>AuthToken</code> can be specified only on replication groups where <code>TransitEncryptionEnabled</code> is <code>true</code>.</p><important>
907    /// <p>For HIPAA compliance, you must specify <code>TransitEncryptionEnabled</code> as <code>true</code>, an <code>AuthToken</code>, and a <code>CacheSubnetGroup</code>.</p>
908    /// </important>
909    /// <p>Password constraints:</p>
910    /// <ul>
911    /// <li>
912    /// <p>Must be only printable ASCII characters.</p></li>
913    /// <li>
914    /// <p>Must be at least 16 characters and no more than 128 characters in length.</p></li>
915    /// <li>
916    /// <p>The only permitted printable special characters are !, &amp;, #, $, ^, &lt;, &gt;, and -. Other printable special characters cannot be used in the AUTH token.</p></li>
917    /// </ul>
918    /// <p>For more information, see <a href="http://redis.io/commands/AUTH">AUTH password</a> at http://redis.io/commands/AUTH.</p>
919    pub fn get_auth_token(&self) -> &::std::option::Option<::std::string::String> {
920        self.inner.get_auth_token()
921    }
922    /// <p>A flag that enables in-transit encryption when set to <code>true</code>.</p>
923    /// <p>This parameter is valid only if the <code>Engine</code> parameter is <code>redis</code>, the <code>EngineVersion</code> parameter is <code>3.2.6</code>, <code>4.x</code> or later, and the cluster is being created in an Amazon VPC.</p>
924    /// <p>If you enable in-transit encryption, you must also specify a value for <code>CacheSubnetGroup</code>.</p>
925    /// <p><b>Required:</b> Only available when creating a replication group in an Amazon VPC using Redis OSS version <code>3.2.6</code>, <code>4.x</code> or later.</p>
926    /// <p>Default: <code>false</code></p><important>
927    /// <p>For HIPAA compliance, you must specify <code>TransitEncryptionEnabled</code> as <code>true</code>, an <code>AuthToken</code>, and a <code>CacheSubnetGroup</code>.</p>
928    /// </important>
929    pub fn transit_encryption_enabled(mut self, input: bool) -> Self {
930        self.inner = self.inner.transit_encryption_enabled(input);
931        self
932    }
933    /// <p>A flag that enables in-transit encryption when set to <code>true</code>.</p>
934    /// <p>This parameter is valid only if the <code>Engine</code> parameter is <code>redis</code>, the <code>EngineVersion</code> parameter is <code>3.2.6</code>, <code>4.x</code> or later, and the cluster is being created in an Amazon VPC.</p>
935    /// <p>If you enable in-transit encryption, you must also specify a value for <code>CacheSubnetGroup</code>.</p>
936    /// <p><b>Required:</b> Only available when creating a replication group in an Amazon VPC using Redis OSS version <code>3.2.6</code>, <code>4.x</code> or later.</p>
937    /// <p>Default: <code>false</code></p><important>
938    /// <p>For HIPAA compliance, you must specify <code>TransitEncryptionEnabled</code> as <code>true</code>, an <code>AuthToken</code>, and a <code>CacheSubnetGroup</code>.</p>
939    /// </important>
940    pub fn set_transit_encryption_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
941        self.inner = self.inner.set_transit_encryption_enabled(input);
942        self
943    }
944    /// <p>A flag that enables in-transit encryption when set to <code>true</code>.</p>
945    /// <p>This parameter is valid only if the <code>Engine</code> parameter is <code>redis</code>, the <code>EngineVersion</code> parameter is <code>3.2.6</code>, <code>4.x</code> or later, and the cluster is being created in an Amazon VPC.</p>
946    /// <p>If you enable in-transit encryption, you must also specify a value for <code>CacheSubnetGroup</code>.</p>
947    /// <p><b>Required:</b> Only available when creating a replication group in an Amazon VPC using Redis OSS version <code>3.2.6</code>, <code>4.x</code> or later.</p>
948    /// <p>Default: <code>false</code></p><important>
949    /// <p>For HIPAA compliance, you must specify <code>TransitEncryptionEnabled</code> as <code>true</code>, an <code>AuthToken</code>, and a <code>CacheSubnetGroup</code>.</p>
950    /// </important>
951    pub fn get_transit_encryption_enabled(&self) -> &::std::option::Option<bool> {
952        self.inner.get_transit_encryption_enabled()
953    }
954    /// <p>A flag that enables encryption at rest when set to <code>true</code>.</p>
955    /// <p>You cannot modify the value of <code>AtRestEncryptionEnabled</code> after the replication group is created. To enable encryption at rest on a replication group you must set <code>AtRestEncryptionEnabled</code> to <code>true</code> when you create the replication group.</p>
956    /// <p><b>Required:</b> Only available when creating a replication group in an Amazon VPC using Valkey 7.2 and later, Redis OSS version <code>3.2.6</code>, or Redis OSS <code>4.x</code> and later.</p>
957    /// <p>Default: <code>true</code> when using Valkey, <code>false</code> when using Redis OSS</p>
958    pub fn at_rest_encryption_enabled(mut self, input: bool) -> Self {
959        self.inner = self.inner.at_rest_encryption_enabled(input);
960        self
961    }
962    /// <p>A flag that enables encryption at rest when set to <code>true</code>.</p>
963    /// <p>You cannot modify the value of <code>AtRestEncryptionEnabled</code> after the replication group is created. To enable encryption at rest on a replication group you must set <code>AtRestEncryptionEnabled</code> to <code>true</code> when you create the replication group.</p>
964    /// <p><b>Required:</b> Only available when creating a replication group in an Amazon VPC using Valkey 7.2 and later, Redis OSS version <code>3.2.6</code>, or Redis OSS <code>4.x</code> and later.</p>
965    /// <p>Default: <code>true</code> when using Valkey, <code>false</code> when using Redis OSS</p>
966    pub fn set_at_rest_encryption_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
967        self.inner = self.inner.set_at_rest_encryption_enabled(input);
968        self
969    }
970    /// <p>A flag that enables encryption at rest when set to <code>true</code>.</p>
971    /// <p>You cannot modify the value of <code>AtRestEncryptionEnabled</code> after the replication group is created. To enable encryption at rest on a replication group you must set <code>AtRestEncryptionEnabled</code> to <code>true</code> when you create the replication group.</p>
972    /// <p><b>Required:</b> Only available when creating a replication group in an Amazon VPC using Valkey 7.2 and later, Redis OSS version <code>3.2.6</code>, or Redis OSS <code>4.x</code> and later.</p>
973    /// <p>Default: <code>true</code> when using Valkey, <code>false</code> when using Redis OSS</p>
974    pub fn get_at_rest_encryption_enabled(&self) -> &::std::option::Option<bool> {
975        self.inner.get_at_rest_encryption_enabled()
976    }
977    /// <p>The ID of the KMS key used to encrypt the disk in the cluster.</p>
978    pub fn kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
979        self.inner = self.inner.kms_key_id(input.into());
980        self
981    }
982    /// <p>The ID of the KMS key used to encrypt the disk in the cluster.</p>
983    pub fn set_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
984        self.inner = self.inner.set_kms_key_id(input);
985        self
986    }
987    /// <p>The ID of the KMS key used to encrypt the disk in the cluster.</p>
988    pub fn get_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
989        self.inner.get_kms_key_id()
990    }
991    ///
992    /// Appends an item to `UserGroupIds`.
993    ///
994    /// To override the contents of this collection use [`set_user_group_ids`](Self::set_user_group_ids).
995    ///
996    /// <p>The user group to associate with the replication group.</p>
997    pub fn user_group_ids(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
998        self.inner = self.inner.user_group_ids(input.into());
999        self
1000    }
1001    /// <p>The user group to associate with the replication group.</p>
1002    pub fn set_user_group_ids(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
1003        self.inner = self.inner.set_user_group_ids(input);
1004        self
1005    }
1006    /// <p>The user group to associate with the replication group.</p>
1007    pub fn get_user_group_ids(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
1008        self.inner.get_user_group_ids()
1009    }
1010    ///
1011    /// Appends an item to `LogDeliveryConfigurations`.
1012    ///
1013    /// To override the contents of this collection use [`set_log_delivery_configurations`](Self::set_log_delivery_configurations).
1014    ///
1015    /// <p>Specifies the destination, format and type of the logs.</p>
1016    pub fn log_delivery_configurations(mut self, input: crate::types::LogDeliveryConfigurationRequest) -> Self {
1017        self.inner = self.inner.log_delivery_configurations(input);
1018        self
1019    }
1020    /// <p>Specifies the destination, format and type of the logs.</p>
1021    pub fn set_log_delivery_configurations(
1022        mut self,
1023        input: ::std::option::Option<::std::vec::Vec<crate::types::LogDeliveryConfigurationRequest>>,
1024    ) -> Self {
1025        self.inner = self.inner.set_log_delivery_configurations(input);
1026        self
1027    }
1028    /// <p>Specifies the destination, format and type of the logs.</p>
1029    pub fn get_log_delivery_configurations(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::LogDeliveryConfigurationRequest>> {
1030        self.inner.get_log_delivery_configurations()
1031    }
1032    /// <p>Enables data tiering. Data tiering is only supported for replication groups using the r6gd node type. This parameter must be set to true when using r6gd nodes. For more information, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/data-tiering.html">Data tiering</a>.</p>
1033    pub fn data_tiering_enabled(mut self, input: bool) -> Self {
1034        self.inner = self.inner.data_tiering_enabled(input);
1035        self
1036    }
1037    /// <p>Enables data tiering. Data tiering is only supported for replication groups using the r6gd node type. This parameter must be set to true when using r6gd nodes. For more information, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/data-tiering.html">Data tiering</a>.</p>
1038    pub fn set_data_tiering_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
1039        self.inner = self.inner.set_data_tiering_enabled(input);
1040        self
1041    }
1042    /// <p>Enables data tiering. Data tiering is only supported for replication groups using the r6gd node type. This parameter must be set to true when using r6gd nodes. For more information, see <a href="https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/data-tiering.html">Data tiering</a>.</p>
1043    pub fn get_data_tiering_enabled(&self) -> &::std::option::Option<bool> {
1044        self.inner.get_data_tiering_enabled()
1045    }
1046    /// <p>Must be either <code>ipv4</code> | <code>ipv6</code> | <code>dual_stack</code>. 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 <a href="http://aws.amazon.com/ec2/nitro/">Nitro system</a>.</p>
1047    pub fn network_type(mut self, input: crate::types::NetworkType) -> Self {
1048        self.inner = self.inner.network_type(input);
1049        self
1050    }
1051    /// <p>Must be either <code>ipv4</code> | <code>ipv6</code> | <code>dual_stack</code>. 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 <a href="http://aws.amazon.com/ec2/nitro/">Nitro system</a>.</p>
1052    pub fn set_network_type(mut self, input: ::std::option::Option<crate::types::NetworkType>) -> Self {
1053        self.inner = self.inner.set_network_type(input);
1054        self
1055    }
1056    /// <p>Must be either <code>ipv4</code> | <code>ipv6</code> | <code>dual_stack</code>. 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 <a href="http://aws.amazon.com/ec2/nitro/">Nitro system</a>.</p>
1057    pub fn get_network_type(&self) -> &::std::option::Option<crate::types::NetworkType> {
1058        self.inner.get_network_type()
1059    }
1060    /// <p>The network type you choose when creating a replication group, either <code>ipv4</code> | <code>ipv6</code>. IPv6 is supported for workloads using Valkey 7.2 and above, Redis OSS engine version 6.2 to 7.1 or Memcached engine version 1.6.6 and above on all instances built on the <a href="http://aws.amazon.com/ec2/nitro/">Nitro system</a>.</p>
1061    pub fn ip_discovery(mut self, input: crate::types::IpDiscovery) -> Self {
1062        self.inner = self.inner.ip_discovery(input);
1063        self
1064    }
1065    /// <p>The network type you choose when creating a replication group, either <code>ipv4</code> | <code>ipv6</code>. IPv6 is supported for workloads using Valkey 7.2 and above, Redis OSS engine version 6.2 to 7.1 or Memcached engine version 1.6.6 and above on all instances built on the <a href="http://aws.amazon.com/ec2/nitro/">Nitro system</a>.</p>
1066    pub fn set_ip_discovery(mut self, input: ::std::option::Option<crate::types::IpDiscovery>) -> Self {
1067        self.inner = self.inner.set_ip_discovery(input);
1068        self
1069    }
1070    /// <p>The network type you choose when creating a replication group, either <code>ipv4</code> | <code>ipv6</code>. IPv6 is supported for workloads using Valkey 7.2 and above, Redis OSS engine version 6.2 to 7.1 or Memcached engine version 1.6.6 and above on all instances built on the <a href="http://aws.amazon.com/ec2/nitro/">Nitro system</a>.</p>
1071    pub fn get_ip_discovery(&self) -> &::std::option::Option<crate::types::IpDiscovery> {
1072        self.inner.get_ip_discovery()
1073    }
1074    /// <p>A setting that allows you to migrate your clients to use in-transit encryption, with no downtime.</p>
1075    /// <p>When setting <code>TransitEncryptionEnabled</code> to <code>true</code>, you can set your <code>TransitEncryptionMode</code> to <code>preferred</code> 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 modify the value to <code>required</code> to allow encrypted connections only.</p>
1076    /// <p>Setting <code>TransitEncryptionMode</code> to <code>required</code> is a two-step process that requires you to first set the <code>TransitEncryptionMode</code> to <code>preferred</code>, after that you can set <code>TransitEncryptionMode</code> to <code>required</code>.</p>
1077    /// <p>This process will not trigger the replacement of the replication group.</p>
1078    pub fn transit_encryption_mode(mut self, input: crate::types::TransitEncryptionMode) -> Self {
1079        self.inner = self.inner.transit_encryption_mode(input);
1080        self
1081    }
1082    /// <p>A setting that allows you to migrate your clients to use in-transit encryption, with no downtime.</p>
1083    /// <p>When setting <code>TransitEncryptionEnabled</code> to <code>true</code>, you can set your <code>TransitEncryptionMode</code> to <code>preferred</code> 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 modify the value to <code>required</code> to allow encrypted connections only.</p>
1084    /// <p>Setting <code>TransitEncryptionMode</code> to <code>required</code> is a two-step process that requires you to first set the <code>TransitEncryptionMode</code> to <code>preferred</code>, after that you can set <code>TransitEncryptionMode</code> to <code>required</code>.</p>
1085    /// <p>This process will not trigger the replacement of the replication group.</p>
1086    pub fn set_transit_encryption_mode(mut self, input: ::std::option::Option<crate::types::TransitEncryptionMode>) -> Self {
1087        self.inner = self.inner.set_transit_encryption_mode(input);
1088        self
1089    }
1090    /// <p>A setting that allows you to migrate your clients to use in-transit encryption, with no downtime.</p>
1091    /// <p>When setting <code>TransitEncryptionEnabled</code> to <code>true</code>, you can set your <code>TransitEncryptionMode</code> to <code>preferred</code> 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 modify the value to <code>required</code> to allow encrypted connections only.</p>
1092    /// <p>Setting <code>TransitEncryptionMode</code> to <code>required</code> is a two-step process that requires you to first set the <code>TransitEncryptionMode</code> to <code>preferred</code>, after that you can set <code>TransitEncryptionMode</code> to <code>required</code>.</p>
1093    /// <p>This process will not trigger the replacement of the replication group.</p>
1094    pub fn get_transit_encryption_mode(&self) -> &::std::option::Option<crate::types::TransitEncryptionMode> {
1095        self.inner.get_transit_encryption_mode()
1096    }
1097    /// <p>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.</p>
1098    pub fn cluster_mode(mut self, input: crate::types::ClusterMode) -> Self {
1099        self.inner = self.inner.cluster_mode(input);
1100        self
1101    }
1102    /// <p>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.</p>
1103    pub fn set_cluster_mode(mut self, input: ::std::option::Option<crate::types::ClusterMode>) -> Self {
1104        self.inner = self.inner.set_cluster_mode(input);
1105        self
1106    }
1107    /// <p>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.</p>
1108    pub fn get_cluster_mode(&self) -> &::std::option::Option<crate::types::ClusterMode> {
1109        self.inner.get_cluster_mode()
1110    }
1111    /// <p>The name of the snapshot used to create a replication group. Available for Valkey, Redis OSS only.</p>
1112    pub fn serverless_cache_snapshot_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1113        self.inner = self.inner.serverless_cache_snapshot_name(input.into());
1114        self
1115    }
1116    /// <p>The name of the snapshot used to create a replication group. Available for Valkey, Redis OSS only.</p>
1117    pub fn set_serverless_cache_snapshot_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1118        self.inner = self.inner.set_serverless_cache_snapshot_name(input);
1119        self
1120    }
1121    /// <p>The name of the snapshot used to create a replication group. Available for Valkey, Redis OSS only.</p>
1122    pub fn get_serverless_cache_snapshot_name(&self) -> &::std::option::Option<::std::string::String> {
1123        self.inner.get_serverless_cache_snapshot_name()
1124    }
1125}