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> 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. </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> 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. </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> 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. </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 !, &, #, $, ^, <, >, 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 !, &, #, $, ^, <, >, 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 !, &, #, $, ^, <, >, 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}