aws_sdk_redshift/operation/create_cluster/_create_cluster_input.rs
1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2
3/// <p></p>
4#[non_exhaustive]
5#[derive(::std::clone::Clone, ::std::cmp::PartialEq)]
6pub struct CreateClusterInput {
7 /// <p>The name of the first database to be created when the cluster is created.</p>
8 /// <p>To create additional databases after the cluster is created, connect to the cluster with a SQL client and use SQL commands to create a database. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/dg/t_creating_database.html">Create a Database</a> in the Amazon Redshift Database Developer Guide.</p>
9 /// <p>Default: <code>dev</code></p>
10 /// <p>Constraints:</p>
11 /// <ul>
12 /// <li>
13 /// <p>Must contain 1 to 64 alphanumeric characters.</p></li>
14 /// <li>
15 /// <p>Must contain only lowercase letters.</p></li>
16 /// <li>
17 /// <p>Cannot be a word that is reserved by the service. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
18 /// </ul>
19 pub db_name: ::std::option::Option<::std::string::String>,
20 /// <p>A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. The identifier also appears in the Amazon Redshift console.</p>
21 /// <p>Constraints:</p>
22 /// <ul>
23 /// <li>
24 /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
25 /// <li>
26 /// <p>Alphabetic characters must be lowercase.</p></li>
27 /// <li>
28 /// <p>First character must be a letter.</p></li>
29 /// <li>
30 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
31 /// <li>
32 /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
33 /// </ul>
34 /// <p>Example: <code>myexamplecluster</code></p>
35 pub cluster_identifier: ::std::option::Option<::std::string::String>,
36 /// <p>The type of the cluster. When cluster type is specified as</p>
37 /// <ul>
38 /// <li>
39 /// <p><code>single-node</code>, the <b>NumberOfNodes</b> parameter is not required.</p></li>
40 /// <li>
41 /// <p><code>multi-node</code>, the <b>NumberOfNodes</b> parameter is required.</p></li>
42 /// </ul>
43 /// <p>Valid Values: <code>multi-node</code> | <code>single-node</code></p>
44 /// <p>Default: <code>multi-node</code></p>
45 pub cluster_type: ::std::option::Option<::std::string::String>,
46 /// <p>The node type to be provisioned for the cluster. For information about node types, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
47 /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
48 pub node_type: ::std::option::Option<::std::string::String>,
49 /// <p>The user name associated with the admin user account for the cluster that is being created.</p>
50 /// <p>Constraints:</p>
51 /// <ul>
52 /// <li>
53 /// <p>Must be 1 - 128 alphanumeric characters or hyphens. The user name can't be <code>PUBLIC</code>.</p></li>
54 /// <li>
55 /// <p>Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p></li>
56 /// <li>
57 /// <p>The first character must be a letter.</p></li>
58 /// <li>
59 /// <p>Must not contain a colon (:) or a slash (/).</p></li>
60 /// <li>
61 /// <p>Cannot be a reserved word. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
62 /// </ul>
63 pub master_username: ::std::option::Option<::std::string::String>,
64 /// <p>The password associated with the admin user account for the cluster that is being created.</p>
65 /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
66 /// <p>Constraints:</p>
67 /// <ul>
68 /// <li>
69 /// <p>Must be between 8 and 64 characters in length.</p></li>
70 /// <li>
71 /// <p>Must contain at least one uppercase letter.</p></li>
72 /// <li>
73 /// <p>Must contain at least one lowercase letter.</p></li>
74 /// <li>
75 /// <p>Must contain one number.</p></li>
76 /// <li>
77 /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
78 /// </ul>
79 pub master_user_password: ::std::option::Option<::std::string::String>,
80 /// <p>A list of security groups to be associated with this cluster.</p>
81 /// <p>Default: The default cluster security group for Amazon Redshift.</p>
82 pub cluster_security_groups: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
83 /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
84 /// <p>Default: The default VPC security group is associated with the cluster.</p>
85 pub vpc_security_group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
86 /// <p>The name of a cluster subnet group to be associated with this cluster.</p>
87 /// <p>If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).</p>
88 pub cluster_subnet_group_name: ::std::option::Option<::std::string::String>,
89 /// <p>The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. For example, if you have several EC2 instances running in a specific Availability Zone, then you might want the cluster to be provisioned in the same zone in order to decrease network latency.</p>
90 /// <p>Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint.</p>
91 /// <p>Example: <code>us-east-2d</code></p>
92 /// <p>Constraint: The specified Availability Zone must be in the same region as the current endpoint.</p>
93 pub availability_zone: ::std::option::Option<::std::string::String>,
94 /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
95 /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
96 /// <p>Default: A 30-minute window selected at random from an 8-hour block of time per region, occurring on a random day of the week. For more information about the time blocks for each region, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-maintenance-windows">Maintenance Windows</a> in Amazon Redshift Cluster Management Guide.</p>
97 /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
98 /// <p>Constraints: Minimum 30-minute window.</p>
99 pub preferred_maintenance_window: ::std::option::Option<::std::string::String>,
100 /// <p>The name of the parameter group to be associated with this cluster.</p>
101 /// <p>Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Working with Amazon Redshift Parameter Groups</a></p>
102 /// <p>Constraints:</p>
103 /// <ul>
104 /// <li>
105 /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
106 /// <li>
107 /// <p>First character must be a letter.</p></li>
108 /// <li>
109 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
110 /// </ul>
111 pub cluster_parameter_group_name: ::std::option::Option<::std::string::String>,
112 /// <p>The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with <code>CreateClusterSnapshot</code>.</p>
113 /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
114 /// <p>Default: <code>1</code></p>
115 /// <p>Constraints: Must be a value from 0 to 35.</p>
116 pub automated_snapshot_retention_period: ::std::option::Option<i32>,
117 /// <p>The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots.</p>
118 /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
119 pub manual_snapshot_retention_period: ::std::option::Option<i32>,
120 /// <p>The port number on which the cluster accepts incoming connections.</p>
121 /// <p>The cluster is accessible only via the JDBC and ODBC connection strings. Part of the connection string requires the port on which the cluster will listen for incoming connections.</p>
122 /// <p>Default: <code>5439</code></p>
123 /// <p>Valid Values:</p>
124 /// <ul>
125 /// <li>
126 /// <p>For clusters with ra3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with ra3 nodes, it isn't required that you change the port to these ranges.)</p></li>
127 /// <li>
128 /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
129 /// </ul>
130 pub port: ::std::option::Option<i32>,
131 /// <p>The version of the Amazon Redshift engine software that you want to deploy on the cluster.</p>
132 /// <p>The version selected runs on all the nodes in the cluster.</p>
133 /// <p>Constraints: Only version 1.0 is currently available.</p>
134 /// <p>Example: <code>1.0</code></p>
135 pub cluster_version: ::std::option::Option<::std::string::String>,
136 /// <p>If <code>true</code>, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.</p>
137 /// <p>When a new major version of the Amazon Redshift engine is released, you can request that the service automatically apply upgrades during the maintenance window to the Amazon Redshift engine that is running on your cluster.</p>
138 /// <p>Default: <code>true</code></p>
139 pub allow_version_upgrade: ::std::option::Option<bool>,
140 /// <p>The number of compute nodes in the cluster. This parameter is required when the <b>ClusterType</b> parameter is specified as <code>multi-node</code>.</p>
141 /// <p>For information about determining how many nodes you need, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
142 /// <p>If you don't specify this parameter, you get a single-node cluster. When requesting a multi-node cluster, you must specify the number of nodes that you want in the cluster.</p>
143 /// <p>Default: <code>1</code></p>
144 /// <p>Constraints: Value must be at least 1 and no more than 100.</p>
145 pub number_of_nodes: ::std::option::Option<i32>,
146 /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
147 /// <p>Default: false</p>
148 pub publicly_accessible: ::std::option::Option<bool>,
149 /// <p>If <code>true</code>, the data in the cluster is encrypted at rest. If you set the value on this parameter to <code>false</code>, the request will fail.</p>
150 /// <p>Default: true</p>
151 pub encrypted: ::std::option::Option<bool>,
152 /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
153 pub hsm_client_certificate_identifier: ::std::option::Option<::std::string::String>,
154 /// <p>Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.</p>
155 pub hsm_configuration_identifier: ::std::option::Option<::std::string::String>,
156 /// <p>The Elastic IP (EIP) address for the cluster.</p>
157 /// <p>Constraints: The cluster must be provisioned in EC2-VPC and publicly-accessible through an Internet gateway. Don't specify the Elastic IP address for a publicly accessible cluster with availability zone relocation turned on. For more information about provisioning clusters in EC2-VPC, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
158 pub elastic_ip: ::std::option::Option<::std::string::String>,
159 /// <p>A list of tag instances.</p>
160 pub tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
161 /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
162 pub kms_key_id: ::std::option::Option<::std::string::String>,
163 /// <p>An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
164 /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
165 /// <p>Default: false</p>
166 pub enhanced_vpc_routing: ::std::option::Option<bool>,
167 /// <p>Reserved.</p>
168 pub additional_info: ::std::option::Option<::std::string::String>,
169 /// <p>A list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services. You must supply the IAM roles in their Amazon Resource Name (ARN) format.</p>
170 /// <p>The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html">Quotas and limits</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
171 pub iam_roles: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
172 /// <p>An optional parameter for the name of the maintenance track for the cluster. If you don't provide a maintenance track name, the cluster is assigned to the <code>current</code> track.</p>
173 pub maintenance_track_name: ::std::option::Option<::std::string::String>,
174 /// <p>A unique identifier for the snapshot schedule.</p>
175 pub snapshot_schedule_identifier: ::std::option::Option<::std::string::String>,
176 /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is created.</p>
177 pub availability_zone_relocation: ::std::option::Option<bool>,
178 /// <p>This parameter is retired. It does not set the AQUA configuration status. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).</p>
179 pub aqua_configuration_status: ::std::option::Option<crate::types::AquaConfigurationStatus>,
180 /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.</p>
181 pub default_iam_role_arn: ::std::option::Option<::std::string::String>,
182 /// <p>A flag that specifies whether to load sample data once the cluster is created.</p>
183 pub load_sample_data: ::std::option::Option<::std::string::String>,
184 /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
185 pub manage_master_password: ::std::option::Option<bool>,
186 /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
187 pub master_password_secret_kms_key_id: ::std::option::Option<::std::string::String>,
188 /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
189 pub ip_address_type: ::std::option::Option<::std::string::String>,
190 /// <p>If true, Amazon Redshift will deploy the cluster in two Availability Zones (AZ).</p>
191 pub multi_az: ::std::option::Option<bool>,
192 /// <p>The Amazon resource name (ARN) of the Amazon Redshift IAM Identity Center application.</p>
193 pub redshift_idc_application_arn: ::std::option::Option<::std::string::String>,
194 /// <p>The name of the Glue data catalog that will be associated with the cluster enabled with Amazon Redshift federated permissions.</p>
195 /// <p>Constraints:</p>
196 /// <ul>
197 /// <li>
198 /// <p>Must contain at least one lowercase letter.</p></li>
199 /// <li>
200 /// <p>Can only contain lowercase letters (a-z), numbers (0-9), underscores (_), and hyphens (-).</p></li>
201 /// </ul>
202 /// <p>Pattern: <code>^\[a-z0-9_-\]*\[a-z\]+\[a-z0-9_-\]*$</code></p>
203 /// <p>Example: <code>my-catalog_01</code></p>
204 pub catalog_name: ::std::option::Option<::std::string::String>,
205}
206impl CreateClusterInput {
207 /// <p>The name of the first database to be created when the cluster is created.</p>
208 /// <p>To create additional databases after the cluster is created, connect to the cluster with a SQL client and use SQL commands to create a database. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/dg/t_creating_database.html">Create a Database</a> in the Amazon Redshift Database Developer Guide.</p>
209 /// <p>Default: <code>dev</code></p>
210 /// <p>Constraints:</p>
211 /// <ul>
212 /// <li>
213 /// <p>Must contain 1 to 64 alphanumeric characters.</p></li>
214 /// <li>
215 /// <p>Must contain only lowercase letters.</p></li>
216 /// <li>
217 /// <p>Cannot be a word that is reserved by the service. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
218 /// </ul>
219 pub fn db_name(&self) -> ::std::option::Option<&str> {
220 self.db_name.as_deref()
221 }
222 /// <p>A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. The identifier also appears in the Amazon Redshift console.</p>
223 /// <p>Constraints:</p>
224 /// <ul>
225 /// <li>
226 /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
227 /// <li>
228 /// <p>Alphabetic characters must be lowercase.</p></li>
229 /// <li>
230 /// <p>First character must be a letter.</p></li>
231 /// <li>
232 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
233 /// <li>
234 /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
235 /// </ul>
236 /// <p>Example: <code>myexamplecluster</code></p>
237 pub fn cluster_identifier(&self) -> ::std::option::Option<&str> {
238 self.cluster_identifier.as_deref()
239 }
240 /// <p>The type of the cluster. When cluster type is specified as</p>
241 /// <ul>
242 /// <li>
243 /// <p><code>single-node</code>, the <b>NumberOfNodes</b> parameter is not required.</p></li>
244 /// <li>
245 /// <p><code>multi-node</code>, the <b>NumberOfNodes</b> parameter is required.</p></li>
246 /// </ul>
247 /// <p>Valid Values: <code>multi-node</code> | <code>single-node</code></p>
248 /// <p>Default: <code>multi-node</code></p>
249 pub fn cluster_type(&self) -> ::std::option::Option<&str> {
250 self.cluster_type.as_deref()
251 }
252 /// <p>The node type to be provisioned for the cluster. For information about node types, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
253 /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
254 pub fn node_type(&self) -> ::std::option::Option<&str> {
255 self.node_type.as_deref()
256 }
257 /// <p>The user name associated with the admin user account for the cluster that is being created.</p>
258 /// <p>Constraints:</p>
259 /// <ul>
260 /// <li>
261 /// <p>Must be 1 - 128 alphanumeric characters or hyphens. The user name can't be <code>PUBLIC</code>.</p></li>
262 /// <li>
263 /// <p>Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p></li>
264 /// <li>
265 /// <p>The first character must be a letter.</p></li>
266 /// <li>
267 /// <p>Must not contain a colon (:) or a slash (/).</p></li>
268 /// <li>
269 /// <p>Cannot be a reserved word. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
270 /// </ul>
271 pub fn master_username(&self) -> ::std::option::Option<&str> {
272 self.master_username.as_deref()
273 }
274 /// <p>The password associated with the admin user account for the cluster that is being created.</p>
275 /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
276 /// <p>Constraints:</p>
277 /// <ul>
278 /// <li>
279 /// <p>Must be between 8 and 64 characters in length.</p></li>
280 /// <li>
281 /// <p>Must contain at least one uppercase letter.</p></li>
282 /// <li>
283 /// <p>Must contain at least one lowercase letter.</p></li>
284 /// <li>
285 /// <p>Must contain one number.</p></li>
286 /// <li>
287 /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
288 /// </ul>
289 pub fn master_user_password(&self) -> ::std::option::Option<&str> {
290 self.master_user_password.as_deref()
291 }
292 /// <p>A list of security groups to be associated with this cluster.</p>
293 /// <p>Default: The default cluster security group for Amazon Redshift.</p>
294 ///
295 /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.cluster_security_groups.is_none()`.
296 pub fn cluster_security_groups(&self) -> &[::std::string::String] {
297 self.cluster_security_groups.as_deref().unwrap_or_default()
298 }
299 /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
300 /// <p>Default: The default VPC security group is associated with the cluster.</p>
301 ///
302 /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.vpc_security_group_ids.is_none()`.
303 pub fn vpc_security_group_ids(&self) -> &[::std::string::String] {
304 self.vpc_security_group_ids.as_deref().unwrap_or_default()
305 }
306 /// <p>The name of a cluster subnet group to be associated with this cluster.</p>
307 /// <p>If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).</p>
308 pub fn cluster_subnet_group_name(&self) -> ::std::option::Option<&str> {
309 self.cluster_subnet_group_name.as_deref()
310 }
311 /// <p>The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. For example, if you have several EC2 instances running in a specific Availability Zone, then you might want the cluster to be provisioned in the same zone in order to decrease network latency.</p>
312 /// <p>Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint.</p>
313 /// <p>Example: <code>us-east-2d</code></p>
314 /// <p>Constraint: The specified Availability Zone must be in the same region as the current endpoint.</p>
315 pub fn availability_zone(&self) -> ::std::option::Option<&str> {
316 self.availability_zone.as_deref()
317 }
318 /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
319 /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
320 /// <p>Default: A 30-minute window selected at random from an 8-hour block of time per region, occurring on a random day of the week. For more information about the time blocks for each region, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-maintenance-windows">Maintenance Windows</a> in Amazon Redshift Cluster Management Guide.</p>
321 /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
322 /// <p>Constraints: Minimum 30-minute window.</p>
323 pub fn preferred_maintenance_window(&self) -> ::std::option::Option<&str> {
324 self.preferred_maintenance_window.as_deref()
325 }
326 /// <p>The name of the parameter group to be associated with this cluster.</p>
327 /// <p>Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Working with Amazon Redshift Parameter Groups</a></p>
328 /// <p>Constraints:</p>
329 /// <ul>
330 /// <li>
331 /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
332 /// <li>
333 /// <p>First character must be a letter.</p></li>
334 /// <li>
335 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
336 /// </ul>
337 pub fn cluster_parameter_group_name(&self) -> ::std::option::Option<&str> {
338 self.cluster_parameter_group_name.as_deref()
339 }
340 /// <p>The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with <code>CreateClusterSnapshot</code>.</p>
341 /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
342 /// <p>Default: <code>1</code></p>
343 /// <p>Constraints: Must be a value from 0 to 35.</p>
344 pub fn automated_snapshot_retention_period(&self) -> ::std::option::Option<i32> {
345 self.automated_snapshot_retention_period
346 }
347 /// <p>The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots.</p>
348 /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
349 pub fn manual_snapshot_retention_period(&self) -> ::std::option::Option<i32> {
350 self.manual_snapshot_retention_period
351 }
352 /// <p>The port number on which the cluster accepts incoming connections.</p>
353 /// <p>The cluster is accessible only via the JDBC and ODBC connection strings. Part of the connection string requires the port on which the cluster will listen for incoming connections.</p>
354 /// <p>Default: <code>5439</code></p>
355 /// <p>Valid Values:</p>
356 /// <ul>
357 /// <li>
358 /// <p>For clusters with ra3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with ra3 nodes, it isn't required that you change the port to these ranges.)</p></li>
359 /// <li>
360 /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
361 /// </ul>
362 pub fn port(&self) -> ::std::option::Option<i32> {
363 self.port
364 }
365 /// <p>The version of the Amazon Redshift engine software that you want to deploy on the cluster.</p>
366 /// <p>The version selected runs on all the nodes in the cluster.</p>
367 /// <p>Constraints: Only version 1.0 is currently available.</p>
368 /// <p>Example: <code>1.0</code></p>
369 pub fn cluster_version(&self) -> ::std::option::Option<&str> {
370 self.cluster_version.as_deref()
371 }
372 /// <p>If <code>true</code>, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.</p>
373 /// <p>When a new major version of the Amazon Redshift engine is released, you can request that the service automatically apply upgrades during the maintenance window to the Amazon Redshift engine that is running on your cluster.</p>
374 /// <p>Default: <code>true</code></p>
375 pub fn allow_version_upgrade(&self) -> ::std::option::Option<bool> {
376 self.allow_version_upgrade
377 }
378 /// <p>The number of compute nodes in the cluster. This parameter is required when the <b>ClusterType</b> parameter is specified as <code>multi-node</code>.</p>
379 /// <p>For information about determining how many nodes you need, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
380 /// <p>If you don't specify this parameter, you get a single-node cluster. When requesting a multi-node cluster, you must specify the number of nodes that you want in the cluster.</p>
381 /// <p>Default: <code>1</code></p>
382 /// <p>Constraints: Value must be at least 1 and no more than 100.</p>
383 pub fn number_of_nodes(&self) -> ::std::option::Option<i32> {
384 self.number_of_nodes
385 }
386 /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
387 /// <p>Default: false</p>
388 pub fn publicly_accessible(&self) -> ::std::option::Option<bool> {
389 self.publicly_accessible
390 }
391 /// <p>If <code>true</code>, the data in the cluster is encrypted at rest. If you set the value on this parameter to <code>false</code>, the request will fail.</p>
392 /// <p>Default: true</p>
393 pub fn encrypted(&self) -> ::std::option::Option<bool> {
394 self.encrypted
395 }
396 /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
397 pub fn hsm_client_certificate_identifier(&self) -> ::std::option::Option<&str> {
398 self.hsm_client_certificate_identifier.as_deref()
399 }
400 /// <p>Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.</p>
401 pub fn hsm_configuration_identifier(&self) -> ::std::option::Option<&str> {
402 self.hsm_configuration_identifier.as_deref()
403 }
404 /// <p>The Elastic IP (EIP) address for the cluster.</p>
405 /// <p>Constraints: The cluster must be provisioned in EC2-VPC and publicly-accessible through an Internet gateway. Don't specify the Elastic IP address for a publicly accessible cluster with availability zone relocation turned on. For more information about provisioning clusters in EC2-VPC, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
406 pub fn elastic_ip(&self) -> ::std::option::Option<&str> {
407 self.elastic_ip.as_deref()
408 }
409 /// <p>A list of tag instances.</p>
410 ///
411 /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
412 pub fn tags(&self) -> &[crate::types::Tag] {
413 self.tags.as_deref().unwrap_or_default()
414 }
415 /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
416 pub fn kms_key_id(&self) -> ::std::option::Option<&str> {
417 self.kms_key_id.as_deref()
418 }
419 /// <p>An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
420 /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
421 /// <p>Default: false</p>
422 pub fn enhanced_vpc_routing(&self) -> ::std::option::Option<bool> {
423 self.enhanced_vpc_routing
424 }
425 /// <p>Reserved.</p>
426 pub fn additional_info(&self) -> ::std::option::Option<&str> {
427 self.additional_info.as_deref()
428 }
429 /// <p>A list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services. You must supply the IAM roles in their Amazon Resource Name (ARN) format.</p>
430 /// <p>The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html">Quotas and limits</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
431 ///
432 /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.iam_roles.is_none()`.
433 pub fn iam_roles(&self) -> &[::std::string::String] {
434 self.iam_roles.as_deref().unwrap_or_default()
435 }
436 /// <p>An optional parameter for the name of the maintenance track for the cluster. If you don't provide a maintenance track name, the cluster is assigned to the <code>current</code> track.</p>
437 pub fn maintenance_track_name(&self) -> ::std::option::Option<&str> {
438 self.maintenance_track_name.as_deref()
439 }
440 /// <p>A unique identifier for the snapshot schedule.</p>
441 pub fn snapshot_schedule_identifier(&self) -> ::std::option::Option<&str> {
442 self.snapshot_schedule_identifier.as_deref()
443 }
444 /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is created.</p>
445 pub fn availability_zone_relocation(&self) -> ::std::option::Option<bool> {
446 self.availability_zone_relocation
447 }
448 /// <p>This parameter is retired. It does not set the AQUA configuration status. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).</p>
449 pub fn aqua_configuration_status(&self) -> ::std::option::Option<&crate::types::AquaConfigurationStatus> {
450 self.aqua_configuration_status.as_ref()
451 }
452 /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.</p>
453 pub fn default_iam_role_arn(&self) -> ::std::option::Option<&str> {
454 self.default_iam_role_arn.as_deref()
455 }
456 /// <p>A flag that specifies whether to load sample data once the cluster is created.</p>
457 pub fn load_sample_data(&self) -> ::std::option::Option<&str> {
458 self.load_sample_data.as_deref()
459 }
460 /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
461 pub fn manage_master_password(&self) -> ::std::option::Option<bool> {
462 self.manage_master_password
463 }
464 /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
465 pub fn master_password_secret_kms_key_id(&self) -> ::std::option::Option<&str> {
466 self.master_password_secret_kms_key_id.as_deref()
467 }
468 /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
469 pub fn ip_address_type(&self) -> ::std::option::Option<&str> {
470 self.ip_address_type.as_deref()
471 }
472 /// <p>If true, Amazon Redshift will deploy the cluster in two Availability Zones (AZ).</p>
473 pub fn multi_az(&self) -> ::std::option::Option<bool> {
474 self.multi_az
475 }
476 /// <p>The Amazon resource name (ARN) of the Amazon Redshift IAM Identity Center application.</p>
477 pub fn redshift_idc_application_arn(&self) -> ::std::option::Option<&str> {
478 self.redshift_idc_application_arn.as_deref()
479 }
480 /// <p>The name of the Glue data catalog that will be associated with the cluster enabled with Amazon Redshift federated permissions.</p>
481 /// <p>Constraints:</p>
482 /// <ul>
483 /// <li>
484 /// <p>Must contain at least one lowercase letter.</p></li>
485 /// <li>
486 /// <p>Can only contain lowercase letters (a-z), numbers (0-9), underscores (_), and hyphens (-).</p></li>
487 /// </ul>
488 /// <p>Pattern: <code>^\[a-z0-9_-\]*\[a-z\]+\[a-z0-9_-\]*$</code></p>
489 /// <p>Example: <code>my-catalog_01</code></p>
490 pub fn catalog_name(&self) -> ::std::option::Option<&str> {
491 self.catalog_name.as_deref()
492 }
493}
494impl ::std::fmt::Debug for CreateClusterInput {
495 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
496 let mut formatter = f.debug_struct("CreateClusterInput");
497 formatter.field("db_name", &self.db_name);
498 formatter.field("cluster_identifier", &self.cluster_identifier);
499 formatter.field("cluster_type", &self.cluster_type);
500 formatter.field("node_type", &self.node_type);
501 formatter.field("master_username", &self.master_username);
502 formatter.field("master_user_password", &"*** Sensitive Data Redacted ***");
503 formatter.field("cluster_security_groups", &self.cluster_security_groups);
504 formatter.field("vpc_security_group_ids", &self.vpc_security_group_ids);
505 formatter.field("cluster_subnet_group_name", &self.cluster_subnet_group_name);
506 formatter.field("availability_zone", &self.availability_zone);
507 formatter.field("preferred_maintenance_window", &self.preferred_maintenance_window);
508 formatter.field("cluster_parameter_group_name", &self.cluster_parameter_group_name);
509 formatter.field("automated_snapshot_retention_period", &self.automated_snapshot_retention_period);
510 formatter.field("manual_snapshot_retention_period", &self.manual_snapshot_retention_period);
511 formatter.field("port", &self.port);
512 formatter.field("cluster_version", &self.cluster_version);
513 formatter.field("allow_version_upgrade", &self.allow_version_upgrade);
514 formatter.field("number_of_nodes", &self.number_of_nodes);
515 formatter.field("publicly_accessible", &self.publicly_accessible);
516 formatter.field("encrypted", &self.encrypted);
517 formatter.field("hsm_client_certificate_identifier", &self.hsm_client_certificate_identifier);
518 formatter.field("hsm_configuration_identifier", &self.hsm_configuration_identifier);
519 formatter.field("elastic_ip", &self.elastic_ip);
520 formatter.field("tags", &self.tags);
521 formatter.field("kms_key_id", &self.kms_key_id);
522 formatter.field("enhanced_vpc_routing", &self.enhanced_vpc_routing);
523 formatter.field("additional_info", &self.additional_info);
524 formatter.field("iam_roles", &self.iam_roles);
525 formatter.field("maintenance_track_name", &self.maintenance_track_name);
526 formatter.field("snapshot_schedule_identifier", &self.snapshot_schedule_identifier);
527 formatter.field("availability_zone_relocation", &self.availability_zone_relocation);
528 formatter.field("aqua_configuration_status", &self.aqua_configuration_status);
529 formatter.field("default_iam_role_arn", &self.default_iam_role_arn);
530 formatter.field("load_sample_data", &self.load_sample_data);
531 formatter.field("manage_master_password", &self.manage_master_password);
532 formatter.field("master_password_secret_kms_key_id", &self.master_password_secret_kms_key_id);
533 formatter.field("ip_address_type", &self.ip_address_type);
534 formatter.field("multi_az", &self.multi_az);
535 formatter.field("redshift_idc_application_arn", &self.redshift_idc_application_arn);
536 formatter.field("catalog_name", &self.catalog_name);
537 formatter.finish()
538 }
539}
540impl CreateClusterInput {
541 /// Creates a new builder-style object to manufacture [`CreateClusterInput`](crate::operation::create_cluster::CreateClusterInput).
542 pub fn builder() -> crate::operation::create_cluster::builders::CreateClusterInputBuilder {
543 crate::operation::create_cluster::builders::CreateClusterInputBuilder::default()
544 }
545}
546
547/// A builder for [`CreateClusterInput`](crate::operation::create_cluster::CreateClusterInput).
548#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
549#[non_exhaustive]
550pub struct CreateClusterInputBuilder {
551 pub(crate) db_name: ::std::option::Option<::std::string::String>,
552 pub(crate) cluster_identifier: ::std::option::Option<::std::string::String>,
553 pub(crate) cluster_type: ::std::option::Option<::std::string::String>,
554 pub(crate) node_type: ::std::option::Option<::std::string::String>,
555 pub(crate) master_username: ::std::option::Option<::std::string::String>,
556 pub(crate) master_user_password: ::std::option::Option<::std::string::String>,
557 pub(crate) cluster_security_groups: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
558 pub(crate) vpc_security_group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
559 pub(crate) cluster_subnet_group_name: ::std::option::Option<::std::string::String>,
560 pub(crate) availability_zone: ::std::option::Option<::std::string::String>,
561 pub(crate) preferred_maintenance_window: ::std::option::Option<::std::string::String>,
562 pub(crate) cluster_parameter_group_name: ::std::option::Option<::std::string::String>,
563 pub(crate) automated_snapshot_retention_period: ::std::option::Option<i32>,
564 pub(crate) manual_snapshot_retention_period: ::std::option::Option<i32>,
565 pub(crate) port: ::std::option::Option<i32>,
566 pub(crate) cluster_version: ::std::option::Option<::std::string::String>,
567 pub(crate) allow_version_upgrade: ::std::option::Option<bool>,
568 pub(crate) number_of_nodes: ::std::option::Option<i32>,
569 pub(crate) publicly_accessible: ::std::option::Option<bool>,
570 pub(crate) encrypted: ::std::option::Option<bool>,
571 pub(crate) hsm_client_certificate_identifier: ::std::option::Option<::std::string::String>,
572 pub(crate) hsm_configuration_identifier: ::std::option::Option<::std::string::String>,
573 pub(crate) elastic_ip: ::std::option::Option<::std::string::String>,
574 pub(crate) tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
575 pub(crate) kms_key_id: ::std::option::Option<::std::string::String>,
576 pub(crate) enhanced_vpc_routing: ::std::option::Option<bool>,
577 pub(crate) additional_info: ::std::option::Option<::std::string::String>,
578 pub(crate) iam_roles: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
579 pub(crate) maintenance_track_name: ::std::option::Option<::std::string::String>,
580 pub(crate) snapshot_schedule_identifier: ::std::option::Option<::std::string::String>,
581 pub(crate) availability_zone_relocation: ::std::option::Option<bool>,
582 pub(crate) aqua_configuration_status: ::std::option::Option<crate::types::AquaConfigurationStatus>,
583 pub(crate) default_iam_role_arn: ::std::option::Option<::std::string::String>,
584 pub(crate) load_sample_data: ::std::option::Option<::std::string::String>,
585 pub(crate) manage_master_password: ::std::option::Option<bool>,
586 pub(crate) master_password_secret_kms_key_id: ::std::option::Option<::std::string::String>,
587 pub(crate) ip_address_type: ::std::option::Option<::std::string::String>,
588 pub(crate) multi_az: ::std::option::Option<bool>,
589 pub(crate) redshift_idc_application_arn: ::std::option::Option<::std::string::String>,
590 pub(crate) catalog_name: ::std::option::Option<::std::string::String>,
591}
592impl CreateClusterInputBuilder {
593 /// <p>The name of the first database to be created when the cluster is created.</p>
594 /// <p>To create additional databases after the cluster is created, connect to the cluster with a SQL client and use SQL commands to create a database. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/dg/t_creating_database.html">Create a Database</a> in the Amazon Redshift Database Developer Guide.</p>
595 /// <p>Default: <code>dev</code></p>
596 /// <p>Constraints:</p>
597 /// <ul>
598 /// <li>
599 /// <p>Must contain 1 to 64 alphanumeric characters.</p></li>
600 /// <li>
601 /// <p>Must contain only lowercase letters.</p></li>
602 /// <li>
603 /// <p>Cannot be a word that is reserved by the service. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
604 /// </ul>
605 pub fn db_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
606 self.db_name = ::std::option::Option::Some(input.into());
607 self
608 }
609 /// <p>The name of the first database to be created when the cluster is created.</p>
610 /// <p>To create additional databases after the cluster is created, connect to the cluster with a SQL client and use SQL commands to create a database. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/dg/t_creating_database.html">Create a Database</a> in the Amazon Redshift Database Developer Guide.</p>
611 /// <p>Default: <code>dev</code></p>
612 /// <p>Constraints:</p>
613 /// <ul>
614 /// <li>
615 /// <p>Must contain 1 to 64 alphanumeric characters.</p></li>
616 /// <li>
617 /// <p>Must contain only lowercase letters.</p></li>
618 /// <li>
619 /// <p>Cannot be a word that is reserved by the service. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
620 /// </ul>
621 pub fn set_db_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
622 self.db_name = input;
623 self
624 }
625 /// <p>The name of the first database to be created when the cluster is created.</p>
626 /// <p>To create additional databases after the cluster is created, connect to the cluster with a SQL client and use SQL commands to create a database. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/dg/t_creating_database.html">Create a Database</a> in the Amazon Redshift Database Developer Guide.</p>
627 /// <p>Default: <code>dev</code></p>
628 /// <p>Constraints:</p>
629 /// <ul>
630 /// <li>
631 /// <p>Must contain 1 to 64 alphanumeric characters.</p></li>
632 /// <li>
633 /// <p>Must contain only lowercase letters.</p></li>
634 /// <li>
635 /// <p>Cannot be a word that is reserved by the service. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
636 /// </ul>
637 pub fn get_db_name(&self) -> &::std::option::Option<::std::string::String> {
638 &self.db_name
639 }
640 /// <p>A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. The identifier also appears in the Amazon Redshift console.</p>
641 /// <p>Constraints:</p>
642 /// <ul>
643 /// <li>
644 /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
645 /// <li>
646 /// <p>Alphabetic characters must be lowercase.</p></li>
647 /// <li>
648 /// <p>First character must be a letter.</p></li>
649 /// <li>
650 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
651 /// <li>
652 /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
653 /// </ul>
654 /// <p>Example: <code>myexamplecluster</code></p>
655 /// This field is required.
656 pub fn cluster_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
657 self.cluster_identifier = ::std::option::Option::Some(input.into());
658 self
659 }
660 /// <p>A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. The identifier also appears in the Amazon Redshift console.</p>
661 /// <p>Constraints:</p>
662 /// <ul>
663 /// <li>
664 /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
665 /// <li>
666 /// <p>Alphabetic characters must be lowercase.</p></li>
667 /// <li>
668 /// <p>First character must be a letter.</p></li>
669 /// <li>
670 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
671 /// <li>
672 /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
673 /// </ul>
674 /// <p>Example: <code>myexamplecluster</code></p>
675 pub fn set_cluster_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
676 self.cluster_identifier = input;
677 self
678 }
679 /// <p>A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. The identifier also appears in the Amazon Redshift console.</p>
680 /// <p>Constraints:</p>
681 /// <ul>
682 /// <li>
683 /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
684 /// <li>
685 /// <p>Alphabetic characters must be lowercase.</p></li>
686 /// <li>
687 /// <p>First character must be a letter.</p></li>
688 /// <li>
689 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
690 /// <li>
691 /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
692 /// </ul>
693 /// <p>Example: <code>myexamplecluster</code></p>
694 pub fn get_cluster_identifier(&self) -> &::std::option::Option<::std::string::String> {
695 &self.cluster_identifier
696 }
697 /// <p>The type of the cluster. When cluster type is specified as</p>
698 /// <ul>
699 /// <li>
700 /// <p><code>single-node</code>, the <b>NumberOfNodes</b> parameter is not required.</p></li>
701 /// <li>
702 /// <p><code>multi-node</code>, the <b>NumberOfNodes</b> parameter is required.</p></li>
703 /// </ul>
704 /// <p>Valid Values: <code>multi-node</code> | <code>single-node</code></p>
705 /// <p>Default: <code>multi-node</code></p>
706 pub fn cluster_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
707 self.cluster_type = ::std::option::Option::Some(input.into());
708 self
709 }
710 /// <p>The type of the cluster. When cluster type is specified as</p>
711 /// <ul>
712 /// <li>
713 /// <p><code>single-node</code>, the <b>NumberOfNodes</b> parameter is not required.</p></li>
714 /// <li>
715 /// <p><code>multi-node</code>, the <b>NumberOfNodes</b> parameter is required.</p></li>
716 /// </ul>
717 /// <p>Valid Values: <code>multi-node</code> | <code>single-node</code></p>
718 /// <p>Default: <code>multi-node</code></p>
719 pub fn set_cluster_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
720 self.cluster_type = input;
721 self
722 }
723 /// <p>The type of the cluster. When cluster type is specified as</p>
724 /// <ul>
725 /// <li>
726 /// <p><code>single-node</code>, the <b>NumberOfNodes</b> parameter is not required.</p></li>
727 /// <li>
728 /// <p><code>multi-node</code>, the <b>NumberOfNodes</b> parameter is required.</p></li>
729 /// </ul>
730 /// <p>Valid Values: <code>multi-node</code> | <code>single-node</code></p>
731 /// <p>Default: <code>multi-node</code></p>
732 pub fn get_cluster_type(&self) -> &::std::option::Option<::std::string::String> {
733 &self.cluster_type
734 }
735 /// <p>The node type to be provisioned for the cluster. For information about node types, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
736 /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
737 /// This field is required.
738 pub fn node_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
739 self.node_type = ::std::option::Option::Some(input.into());
740 self
741 }
742 /// <p>The node type to be provisioned for the cluster. For information about node types, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
743 /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
744 pub fn set_node_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
745 self.node_type = input;
746 self
747 }
748 /// <p>The node type to be provisioned for the cluster. For information about node types, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
749 /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
750 pub fn get_node_type(&self) -> &::std::option::Option<::std::string::String> {
751 &self.node_type
752 }
753 /// <p>The user name associated with the admin user account for the cluster that is being created.</p>
754 /// <p>Constraints:</p>
755 /// <ul>
756 /// <li>
757 /// <p>Must be 1 - 128 alphanumeric characters or hyphens. The user name can't be <code>PUBLIC</code>.</p></li>
758 /// <li>
759 /// <p>Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p></li>
760 /// <li>
761 /// <p>The first character must be a letter.</p></li>
762 /// <li>
763 /// <p>Must not contain a colon (:) or a slash (/).</p></li>
764 /// <li>
765 /// <p>Cannot be a reserved word. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
766 /// </ul>
767 /// This field is required.
768 pub fn master_username(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
769 self.master_username = ::std::option::Option::Some(input.into());
770 self
771 }
772 /// <p>The user name associated with the admin user account for the cluster that is being created.</p>
773 /// <p>Constraints:</p>
774 /// <ul>
775 /// <li>
776 /// <p>Must be 1 - 128 alphanumeric characters or hyphens. The user name can't be <code>PUBLIC</code>.</p></li>
777 /// <li>
778 /// <p>Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p></li>
779 /// <li>
780 /// <p>The first character must be a letter.</p></li>
781 /// <li>
782 /// <p>Must not contain a colon (:) or a slash (/).</p></li>
783 /// <li>
784 /// <p>Cannot be a reserved word. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
785 /// </ul>
786 pub fn set_master_username(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
787 self.master_username = input;
788 self
789 }
790 /// <p>The user name associated with the admin user account for the cluster that is being created.</p>
791 /// <p>Constraints:</p>
792 /// <ul>
793 /// <li>
794 /// <p>Must be 1 - 128 alphanumeric characters or hyphens. The user name can't be <code>PUBLIC</code>.</p></li>
795 /// <li>
796 /// <p>Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p></li>
797 /// <li>
798 /// <p>The first character must be a letter.</p></li>
799 /// <li>
800 /// <p>Must not contain a colon (:) or a slash (/).</p></li>
801 /// <li>
802 /// <p>Cannot be a reserved word. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
803 /// </ul>
804 pub fn get_master_username(&self) -> &::std::option::Option<::std::string::String> {
805 &self.master_username
806 }
807 /// <p>The password associated with the admin user account for the cluster that is being created.</p>
808 /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
809 /// <p>Constraints:</p>
810 /// <ul>
811 /// <li>
812 /// <p>Must be between 8 and 64 characters in length.</p></li>
813 /// <li>
814 /// <p>Must contain at least one uppercase letter.</p></li>
815 /// <li>
816 /// <p>Must contain at least one lowercase letter.</p></li>
817 /// <li>
818 /// <p>Must contain one number.</p></li>
819 /// <li>
820 /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
821 /// </ul>
822 pub fn master_user_password(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
823 self.master_user_password = ::std::option::Option::Some(input.into());
824 self
825 }
826 /// <p>The password associated with the admin user account for the cluster that is being created.</p>
827 /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
828 /// <p>Constraints:</p>
829 /// <ul>
830 /// <li>
831 /// <p>Must be between 8 and 64 characters in length.</p></li>
832 /// <li>
833 /// <p>Must contain at least one uppercase letter.</p></li>
834 /// <li>
835 /// <p>Must contain at least one lowercase letter.</p></li>
836 /// <li>
837 /// <p>Must contain one number.</p></li>
838 /// <li>
839 /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
840 /// </ul>
841 pub fn set_master_user_password(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
842 self.master_user_password = input;
843 self
844 }
845 /// <p>The password associated with the admin user account for the cluster that is being created.</p>
846 /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
847 /// <p>Constraints:</p>
848 /// <ul>
849 /// <li>
850 /// <p>Must be between 8 and 64 characters in length.</p></li>
851 /// <li>
852 /// <p>Must contain at least one uppercase letter.</p></li>
853 /// <li>
854 /// <p>Must contain at least one lowercase letter.</p></li>
855 /// <li>
856 /// <p>Must contain one number.</p></li>
857 /// <li>
858 /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
859 /// </ul>
860 pub fn get_master_user_password(&self) -> &::std::option::Option<::std::string::String> {
861 &self.master_user_password
862 }
863 /// Appends an item to `cluster_security_groups`.
864 ///
865 /// To override the contents of this collection use [`set_cluster_security_groups`](Self::set_cluster_security_groups).
866 ///
867 /// <p>A list of security groups to be associated with this cluster.</p>
868 /// <p>Default: The default cluster security group for Amazon Redshift.</p>
869 pub fn cluster_security_groups(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
870 let mut v = self.cluster_security_groups.unwrap_or_default();
871 v.push(input.into());
872 self.cluster_security_groups = ::std::option::Option::Some(v);
873 self
874 }
875 /// <p>A list of security groups to be associated with this cluster.</p>
876 /// <p>Default: The default cluster security group for Amazon Redshift.</p>
877 pub fn set_cluster_security_groups(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
878 self.cluster_security_groups = input;
879 self
880 }
881 /// <p>A list of security groups to be associated with this cluster.</p>
882 /// <p>Default: The default cluster security group for Amazon Redshift.</p>
883 pub fn get_cluster_security_groups(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
884 &self.cluster_security_groups
885 }
886 /// Appends an item to `vpc_security_group_ids`.
887 ///
888 /// To override the contents of this collection use [`set_vpc_security_group_ids`](Self::set_vpc_security_group_ids).
889 ///
890 /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
891 /// <p>Default: The default VPC security group is associated with the cluster.</p>
892 pub fn vpc_security_group_ids(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
893 let mut v = self.vpc_security_group_ids.unwrap_or_default();
894 v.push(input.into());
895 self.vpc_security_group_ids = ::std::option::Option::Some(v);
896 self
897 }
898 /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
899 /// <p>Default: The default VPC security group is associated with the cluster.</p>
900 pub fn set_vpc_security_group_ids(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
901 self.vpc_security_group_ids = input;
902 self
903 }
904 /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
905 /// <p>Default: The default VPC security group is associated with the cluster.</p>
906 pub fn get_vpc_security_group_ids(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
907 &self.vpc_security_group_ids
908 }
909 /// <p>The name of a cluster subnet group to be associated with this cluster.</p>
910 /// <p>If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).</p>
911 pub fn cluster_subnet_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
912 self.cluster_subnet_group_name = ::std::option::Option::Some(input.into());
913 self
914 }
915 /// <p>The name of a cluster subnet group to be associated with this cluster.</p>
916 /// <p>If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).</p>
917 pub fn set_cluster_subnet_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
918 self.cluster_subnet_group_name = input;
919 self
920 }
921 /// <p>The name of a cluster subnet group to be associated with this cluster.</p>
922 /// <p>If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).</p>
923 pub fn get_cluster_subnet_group_name(&self) -> &::std::option::Option<::std::string::String> {
924 &self.cluster_subnet_group_name
925 }
926 /// <p>The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. For example, if you have several EC2 instances running in a specific Availability Zone, then you might want the cluster to be provisioned in the same zone in order to decrease network latency.</p>
927 /// <p>Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint.</p>
928 /// <p>Example: <code>us-east-2d</code></p>
929 /// <p>Constraint: The specified Availability Zone must be in the same region as the current endpoint.</p>
930 pub fn availability_zone(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
931 self.availability_zone = ::std::option::Option::Some(input.into());
932 self
933 }
934 /// <p>The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. For example, if you have several EC2 instances running in a specific Availability Zone, then you might want the cluster to be provisioned in the same zone in order to decrease network latency.</p>
935 /// <p>Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint.</p>
936 /// <p>Example: <code>us-east-2d</code></p>
937 /// <p>Constraint: The specified Availability Zone must be in the same region as the current endpoint.</p>
938 pub fn set_availability_zone(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
939 self.availability_zone = input;
940 self
941 }
942 /// <p>The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. For example, if you have several EC2 instances running in a specific Availability Zone, then you might want the cluster to be provisioned in the same zone in order to decrease network latency.</p>
943 /// <p>Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint.</p>
944 /// <p>Example: <code>us-east-2d</code></p>
945 /// <p>Constraint: The specified Availability Zone must be in the same region as the current endpoint.</p>
946 pub fn get_availability_zone(&self) -> &::std::option::Option<::std::string::String> {
947 &self.availability_zone
948 }
949 /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
950 /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
951 /// <p>Default: A 30-minute window selected at random from an 8-hour block of time per region, occurring on a random day of the week. For more information about the time blocks for each region, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-maintenance-windows">Maintenance Windows</a> in Amazon Redshift Cluster Management Guide.</p>
952 /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
953 /// <p>Constraints: Minimum 30-minute window.</p>
954 pub fn preferred_maintenance_window(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
955 self.preferred_maintenance_window = ::std::option::Option::Some(input.into());
956 self
957 }
958 /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
959 /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
960 /// <p>Default: A 30-minute window selected at random from an 8-hour block of time per region, occurring on a random day of the week. For more information about the time blocks for each region, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-maintenance-windows">Maintenance Windows</a> in Amazon Redshift Cluster Management Guide.</p>
961 /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
962 /// <p>Constraints: Minimum 30-minute window.</p>
963 pub fn set_preferred_maintenance_window(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
964 self.preferred_maintenance_window = input;
965 self
966 }
967 /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
968 /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
969 /// <p>Default: A 30-minute window selected at random from an 8-hour block of time per region, occurring on a random day of the week. For more information about the time blocks for each region, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-maintenance-windows">Maintenance Windows</a> in Amazon Redshift Cluster Management Guide.</p>
970 /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
971 /// <p>Constraints: Minimum 30-minute window.</p>
972 pub fn get_preferred_maintenance_window(&self) -> &::std::option::Option<::std::string::String> {
973 &self.preferred_maintenance_window
974 }
975 /// <p>The name of the parameter group to be associated with this cluster.</p>
976 /// <p>Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Working with Amazon Redshift Parameter Groups</a></p>
977 /// <p>Constraints:</p>
978 /// <ul>
979 /// <li>
980 /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
981 /// <li>
982 /// <p>First character must be a letter.</p></li>
983 /// <li>
984 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
985 /// </ul>
986 pub fn cluster_parameter_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
987 self.cluster_parameter_group_name = ::std::option::Option::Some(input.into());
988 self
989 }
990 /// <p>The name of the parameter group to be associated with this cluster.</p>
991 /// <p>Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Working with Amazon Redshift Parameter Groups</a></p>
992 /// <p>Constraints:</p>
993 /// <ul>
994 /// <li>
995 /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
996 /// <li>
997 /// <p>First character must be a letter.</p></li>
998 /// <li>
999 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
1000 /// </ul>
1001 pub fn set_cluster_parameter_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1002 self.cluster_parameter_group_name = input;
1003 self
1004 }
1005 /// <p>The name of the parameter group to be associated with this cluster.</p>
1006 /// <p>Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Working with Amazon Redshift Parameter Groups</a></p>
1007 /// <p>Constraints:</p>
1008 /// <ul>
1009 /// <li>
1010 /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
1011 /// <li>
1012 /// <p>First character must be a letter.</p></li>
1013 /// <li>
1014 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
1015 /// </ul>
1016 pub fn get_cluster_parameter_group_name(&self) -> &::std::option::Option<::std::string::String> {
1017 &self.cluster_parameter_group_name
1018 }
1019 /// <p>The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with <code>CreateClusterSnapshot</code>.</p>
1020 /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
1021 /// <p>Default: <code>1</code></p>
1022 /// <p>Constraints: Must be a value from 0 to 35.</p>
1023 pub fn automated_snapshot_retention_period(mut self, input: i32) -> Self {
1024 self.automated_snapshot_retention_period = ::std::option::Option::Some(input);
1025 self
1026 }
1027 /// <p>The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with <code>CreateClusterSnapshot</code>.</p>
1028 /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
1029 /// <p>Default: <code>1</code></p>
1030 /// <p>Constraints: Must be a value from 0 to 35.</p>
1031 pub fn set_automated_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
1032 self.automated_snapshot_retention_period = input;
1033 self
1034 }
1035 /// <p>The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Even if automated snapshots are disabled, you can still create manual snapshots when you want with <code>CreateClusterSnapshot</code>.</p>
1036 /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
1037 /// <p>Default: <code>1</code></p>
1038 /// <p>Constraints: Must be a value from 0 to 35.</p>
1039 pub fn get_automated_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
1040 &self.automated_snapshot_retention_period
1041 }
1042 /// <p>The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots.</p>
1043 /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
1044 pub fn manual_snapshot_retention_period(mut self, input: i32) -> Self {
1045 self.manual_snapshot_retention_period = ::std::option::Option::Some(input);
1046 self
1047 }
1048 /// <p>The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots.</p>
1049 /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
1050 pub fn set_manual_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
1051 self.manual_snapshot_retention_period = input;
1052 self
1053 }
1054 /// <p>The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots.</p>
1055 /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
1056 pub fn get_manual_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
1057 &self.manual_snapshot_retention_period
1058 }
1059 /// <p>The port number on which the cluster accepts incoming connections.</p>
1060 /// <p>The cluster is accessible only via the JDBC and ODBC connection strings. Part of the connection string requires the port on which the cluster will listen for incoming connections.</p>
1061 /// <p>Default: <code>5439</code></p>
1062 /// <p>Valid Values:</p>
1063 /// <ul>
1064 /// <li>
1065 /// <p>For clusters with ra3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with ra3 nodes, it isn't required that you change the port to these ranges.)</p></li>
1066 /// <li>
1067 /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
1068 /// </ul>
1069 pub fn port(mut self, input: i32) -> Self {
1070 self.port = ::std::option::Option::Some(input);
1071 self
1072 }
1073 /// <p>The port number on which the cluster accepts incoming connections.</p>
1074 /// <p>The cluster is accessible only via the JDBC and ODBC connection strings. Part of the connection string requires the port on which the cluster will listen for incoming connections.</p>
1075 /// <p>Default: <code>5439</code></p>
1076 /// <p>Valid Values:</p>
1077 /// <ul>
1078 /// <li>
1079 /// <p>For clusters with ra3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with ra3 nodes, it isn't required that you change the port to these ranges.)</p></li>
1080 /// <li>
1081 /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
1082 /// </ul>
1083 pub fn set_port(mut self, input: ::std::option::Option<i32>) -> Self {
1084 self.port = input;
1085 self
1086 }
1087 /// <p>The port number on which the cluster accepts incoming connections.</p>
1088 /// <p>The cluster is accessible only via the JDBC and ODBC connection strings. Part of the connection string requires the port on which the cluster will listen for incoming connections.</p>
1089 /// <p>Default: <code>5439</code></p>
1090 /// <p>Valid Values:</p>
1091 /// <ul>
1092 /// <li>
1093 /// <p>For clusters with ra3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with ra3 nodes, it isn't required that you change the port to these ranges.)</p></li>
1094 /// <li>
1095 /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
1096 /// </ul>
1097 pub fn get_port(&self) -> &::std::option::Option<i32> {
1098 &self.port
1099 }
1100 /// <p>The version of the Amazon Redshift engine software that you want to deploy on the cluster.</p>
1101 /// <p>The version selected runs on all the nodes in the cluster.</p>
1102 /// <p>Constraints: Only version 1.0 is currently available.</p>
1103 /// <p>Example: <code>1.0</code></p>
1104 pub fn cluster_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1105 self.cluster_version = ::std::option::Option::Some(input.into());
1106 self
1107 }
1108 /// <p>The version of the Amazon Redshift engine software that you want to deploy on the cluster.</p>
1109 /// <p>The version selected runs on all the nodes in the cluster.</p>
1110 /// <p>Constraints: Only version 1.0 is currently available.</p>
1111 /// <p>Example: <code>1.0</code></p>
1112 pub fn set_cluster_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1113 self.cluster_version = input;
1114 self
1115 }
1116 /// <p>The version of the Amazon Redshift engine software that you want to deploy on the cluster.</p>
1117 /// <p>The version selected runs on all the nodes in the cluster.</p>
1118 /// <p>Constraints: Only version 1.0 is currently available.</p>
1119 /// <p>Example: <code>1.0</code></p>
1120 pub fn get_cluster_version(&self) -> &::std::option::Option<::std::string::String> {
1121 &self.cluster_version
1122 }
1123 /// <p>If <code>true</code>, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.</p>
1124 /// <p>When a new major version of the Amazon Redshift engine is released, you can request that the service automatically apply upgrades during the maintenance window to the Amazon Redshift engine that is running on your cluster.</p>
1125 /// <p>Default: <code>true</code></p>
1126 pub fn allow_version_upgrade(mut self, input: bool) -> Self {
1127 self.allow_version_upgrade = ::std::option::Option::Some(input);
1128 self
1129 }
1130 /// <p>If <code>true</code>, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.</p>
1131 /// <p>When a new major version of the Amazon Redshift engine is released, you can request that the service automatically apply upgrades during the maintenance window to the Amazon Redshift engine that is running on your cluster.</p>
1132 /// <p>Default: <code>true</code></p>
1133 pub fn set_allow_version_upgrade(mut self, input: ::std::option::Option<bool>) -> Self {
1134 self.allow_version_upgrade = input;
1135 self
1136 }
1137 /// <p>If <code>true</code>, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.</p>
1138 /// <p>When a new major version of the Amazon Redshift engine is released, you can request that the service automatically apply upgrades during the maintenance window to the Amazon Redshift engine that is running on your cluster.</p>
1139 /// <p>Default: <code>true</code></p>
1140 pub fn get_allow_version_upgrade(&self) -> &::std::option::Option<bool> {
1141 &self.allow_version_upgrade
1142 }
1143 /// <p>The number of compute nodes in the cluster. This parameter is required when the <b>ClusterType</b> parameter is specified as <code>multi-node</code>.</p>
1144 /// <p>For information about determining how many nodes you need, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
1145 /// <p>If you don't specify this parameter, you get a single-node cluster. When requesting a multi-node cluster, you must specify the number of nodes that you want in the cluster.</p>
1146 /// <p>Default: <code>1</code></p>
1147 /// <p>Constraints: Value must be at least 1 and no more than 100.</p>
1148 pub fn number_of_nodes(mut self, input: i32) -> Self {
1149 self.number_of_nodes = ::std::option::Option::Some(input);
1150 self
1151 }
1152 /// <p>The number of compute nodes in the cluster. This parameter is required when the <b>ClusterType</b> parameter is specified as <code>multi-node</code>.</p>
1153 /// <p>For information about determining how many nodes you need, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
1154 /// <p>If you don't specify this parameter, you get a single-node cluster. When requesting a multi-node cluster, you must specify the number of nodes that you want in the cluster.</p>
1155 /// <p>Default: <code>1</code></p>
1156 /// <p>Constraints: Value must be at least 1 and no more than 100.</p>
1157 pub fn set_number_of_nodes(mut self, input: ::std::option::Option<i32>) -> Self {
1158 self.number_of_nodes = input;
1159 self
1160 }
1161 /// <p>The number of compute nodes in the cluster. This parameter is required when the <b>ClusterType</b> parameter is specified as <code>multi-node</code>.</p>
1162 /// <p>For information about determining how many nodes you need, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
1163 /// <p>If you don't specify this parameter, you get a single-node cluster. When requesting a multi-node cluster, you must specify the number of nodes that you want in the cluster.</p>
1164 /// <p>Default: <code>1</code></p>
1165 /// <p>Constraints: Value must be at least 1 and no more than 100.</p>
1166 pub fn get_number_of_nodes(&self) -> &::std::option::Option<i32> {
1167 &self.number_of_nodes
1168 }
1169 /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
1170 /// <p>Default: false</p>
1171 pub fn publicly_accessible(mut self, input: bool) -> Self {
1172 self.publicly_accessible = ::std::option::Option::Some(input);
1173 self
1174 }
1175 /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
1176 /// <p>Default: false</p>
1177 pub fn set_publicly_accessible(mut self, input: ::std::option::Option<bool>) -> Self {
1178 self.publicly_accessible = input;
1179 self
1180 }
1181 /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
1182 /// <p>Default: false</p>
1183 pub fn get_publicly_accessible(&self) -> &::std::option::Option<bool> {
1184 &self.publicly_accessible
1185 }
1186 /// <p>If <code>true</code>, the data in the cluster is encrypted at rest. If you set the value on this parameter to <code>false</code>, the request will fail.</p>
1187 /// <p>Default: true</p>
1188 pub fn encrypted(mut self, input: bool) -> Self {
1189 self.encrypted = ::std::option::Option::Some(input);
1190 self
1191 }
1192 /// <p>If <code>true</code>, the data in the cluster is encrypted at rest. If you set the value on this parameter to <code>false</code>, the request will fail.</p>
1193 /// <p>Default: true</p>
1194 pub fn set_encrypted(mut self, input: ::std::option::Option<bool>) -> Self {
1195 self.encrypted = input;
1196 self
1197 }
1198 /// <p>If <code>true</code>, the data in the cluster is encrypted at rest. If you set the value on this parameter to <code>false</code>, the request will fail.</p>
1199 /// <p>Default: true</p>
1200 pub fn get_encrypted(&self) -> &::std::option::Option<bool> {
1201 &self.encrypted
1202 }
1203 /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
1204 pub fn hsm_client_certificate_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1205 self.hsm_client_certificate_identifier = ::std::option::Option::Some(input.into());
1206 self
1207 }
1208 /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
1209 pub fn set_hsm_client_certificate_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1210 self.hsm_client_certificate_identifier = input;
1211 self
1212 }
1213 /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
1214 pub fn get_hsm_client_certificate_identifier(&self) -> &::std::option::Option<::std::string::String> {
1215 &self.hsm_client_certificate_identifier
1216 }
1217 /// <p>Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.</p>
1218 pub fn hsm_configuration_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1219 self.hsm_configuration_identifier = ::std::option::Option::Some(input.into());
1220 self
1221 }
1222 /// <p>Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.</p>
1223 pub fn set_hsm_configuration_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1224 self.hsm_configuration_identifier = input;
1225 self
1226 }
1227 /// <p>Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.</p>
1228 pub fn get_hsm_configuration_identifier(&self) -> &::std::option::Option<::std::string::String> {
1229 &self.hsm_configuration_identifier
1230 }
1231 /// <p>The Elastic IP (EIP) address for the cluster.</p>
1232 /// <p>Constraints: The cluster must be provisioned in EC2-VPC and publicly-accessible through an Internet gateway. Don't specify the Elastic IP address for a publicly accessible cluster with availability zone relocation turned on. For more information about provisioning clusters in EC2-VPC, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
1233 pub fn elastic_ip(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1234 self.elastic_ip = ::std::option::Option::Some(input.into());
1235 self
1236 }
1237 /// <p>The Elastic IP (EIP) address for the cluster.</p>
1238 /// <p>Constraints: The cluster must be provisioned in EC2-VPC and publicly-accessible through an Internet gateway. Don't specify the Elastic IP address for a publicly accessible cluster with availability zone relocation turned on. For more information about provisioning clusters in EC2-VPC, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
1239 pub fn set_elastic_ip(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1240 self.elastic_ip = input;
1241 self
1242 }
1243 /// <p>The Elastic IP (EIP) address for the cluster.</p>
1244 /// <p>Constraints: The cluster must be provisioned in EC2-VPC and publicly-accessible through an Internet gateway. Don't specify the Elastic IP address for a publicly accessible cluster with availability zone relocation turned on. For more information about provisioning clusters in EC2-VPC, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
1245 pub fn get_elastic_ip(&self) -> &::std::option::Option<::std::string::String> {
1246 &self.elastic_ip
1247 }
1248 /// Appends an item to `tags`.
1249 ///
1250 /// To override the contents of this collection use [`set_tags`](Self::set_tags).
1251 ///
1252 /// <p>A list of tag instances.</p>
1253 pub fn tags(mut self, input: crate::types::Tag) -> Self {
1254 let mut v = self.tags.unwrap_or_default();
1255 v.push(input);
1256 self.tags = ::std::option::Option::Some(v);
1257 self
1258 }
1259 /// <p>A list of tag instances.</p>
1260 pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
1261 self.tags = input;
1262 self
1263 }
1264 /// <p>A list of tag instances.</p>
1265 pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
1266 &self.tags
1267 }
1268 /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
1269 pub fn kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1270 self.kms_key_id = ::std::option::Option::Some(input.into());
1271 self
1272 }
1273 /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
1274 pub fn set_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1275 self.kms_key_id = input;
1276 self
1277 }
1278 /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
1279 pub fn get_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
1280 &self.kms_key_id
1281 }
1282 /// <p>An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
1283 /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
1284 /// <p>Default: false</p>
1285 pub fn enhanced_vpc_routing(mut self, input: bool) -> Self {
1286 self.enhanced_vpc_routing = ::std::option::Option::Some(input);
1287 self
1288 }
1289 /// <p>An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
1290 /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
1291 /// <p>Default: false</p>
1292 pub fn set_enhanced_vpc_routing(mut self, input: ::std::option::Option<bool>) -> Self {
1293 self.enhanced_vpc_routing = input;
1294 self
1295 }
1296 /// <p>An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
1297 /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
1298 /// <p>Default: false</p>
1299 pub fn get_enhanced_vpc_routing(&self) -> &::std::option::Option<bool> {
1300 &self.enhanced_vpc_routing
1301 }
1302 /// <p>Reserved.</p>
1303 pub fn additional_info(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1304 self.additional_info = ::std::option::Option::Some(input.into());
1305 self
1306 }
1307 /// <p>Reserved.</p>
1308 pub fn set_additional_info(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1309 self.additional_info = input;
1310 self
1311 }
1312 /// <p>Reserved.</p>
1313 pub fn get_additional_info(&self) -> &::std::option::Option<::std::string::String> {
1314 &self.additional_info
1315 }
1316 /// Appends an item to `iam_roles`.
1317 ///
1318 /// To override the contents of this collection use [`set_iam_roles`](Self::set_iam_roles).
1319 ///
1320 /// <p>A list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services. You must supply the IAM roles in their Amazon Resource Name (ARN) format.</p>
1321 /// <p>The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html">Quotas and limits</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
1322 pub fn iam_roles(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1323 let mut v = self.iam_roles.unwrap_or_default();
1324 v.push(input.into());
1325 self.iam_roles = ::std::option::Option::Some(v);
1326 self
1327 }
1328 /// <p>A list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services. You must supply the IAM roles in their Amazon Resource Name (ARN) format.</p>
1329 /// <p>The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html">Quotas and limits</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
1330 pub fn set_iam_roles(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
1331 self.iam_roles = input;
1332 self
1333 }
1334 /// <p>A list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services. You must supply the IAM roles in their Amazon Resource Name (ARN) format.</p>
1335 /// <p>The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html">Quotas and limits</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
1336 pub fn get_iam_roles(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
1337 &self.iam_roles
1338 }
1339 /// <p>An optional parameter for the name of the maintenance track for the cluster. If you don't provide a maintenance track name, the cluster is assigned to the <code>current</code> track.</p>
1340 pub fn maintenance_track_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1341 self.maintenance_track_name = ::std::option::Option::Some(input.into());
1342 self
1343 }
1344 /// <p>An optional parameter for the name of the maintenance track for the cluster. If you don't provide a maintenance track name, the cluster is assigned to the <code>current</code> track.</p>
1345 pub fn set_maintenance_track_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1346 self.maintenance_track_name = input;
1347 self
1348 }
1349 /// <p>An optional parameter for the name of the maintenance track for the cluster. If you don't provide a maintenance track name, the cluster is assigned to the <code>current</code> track.</p>
1350 pub fn get_maintenance_track_name(&self) -> &::std::option::Option<::std::string::String> {
1351 &self.maintenance_track_name
1352 }
1353 /// <p>A unique identifier for the snapshot schedule.</p>
1354 pub fn snapshot_schedule_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1355 self.snapshot_schedule_identifier = ::std::option::Option::Some(input.into());
1356 self
1357 }
1358 /// <p>A unique identifier for the snapshot schedule.</p>
1359 pub fn set_snapshot_schedule_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1360 self.snapshot_schedule_identifier = input;
1361 self
1362 }
1363 /// <p>A unique identifier for the snapshot schedule.</p>
1364 pub fn get_snapshot_schedule_identifier(&self) -> &::std::option::Option<::std::string::String> {
1365 &self.snapshot_schedule_identifier
1366 }
1367 /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is created.</p>
1368 pub fn availability_zone_relocation(mut self, input: bool) -> Self {
1369 self.availability_zone_relocation = ::std::option::Option::Some(input);
1370 self
1371 }
1372 /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is created.</p>
1373 pub fn set_availability_zone_relocation(mut self, input: ::std::option::Option<bool>) -> Self {
1374 self.availability_zone_relocation = input;
1375 self
1376 }
1377 /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is created.</p>
1378 pub fn get_availability_zone_relocation(&self) -> &::std::option::Option<bool> {
1379 &self.availability_zone_relocation
1380 }
1381 /// <p>This parameter is retired. It does not set the AQUA configuration status. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).</p>
1382 pub fn aqua_configuration_status(mut self, input: crate::types::AquaConfigurationStatus) -> Self {
1383 self.aqua_configuration_status = ::std::option::Option::Some(input);
1384 self
1385 }
1386 /// <p>This parameter is retired. It does not set the AQUA configuration status. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).</p>
1387 pub fn set_aqua_configuration_status(mut self, input: ::std::option::Option<crate::types::AquaConfigurationStatus>) -> Self {
1388 self.aqua_configuration_status = input;
1389 self
1390 }
1391 /// <p>This parameter is retired. It does not set the AQUA configuration status. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).</p>
1392 pub fn get_aqua_configuration_status(&self) -> &::std::option::Option<crate::types::AquaConfigurationStatus> {
1393 &self.aqua_configuration_status
1394 }
1395 /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.</p>
1396 pub fn default_iam_role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1397 self.default_iam_role_arn = ::std::option::Option::Some(input.into());
1398 self
1399 }
1400 /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.</p>
1401 pub fn set_default_iam_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1402 self.default_iam_role_arn = input;
1403 self
1404 }
1405 /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.</p>
1406 pub fn get_default_iam_role_arn(&self) -> &::std::option::Option<::std::string::String> {
1407 &self.default_iam_role_arn
1408 }
1409 /// <p>A flag that specifies whether to load sample data once the cluster is created.</p>
1410 pub fn load_sample_data(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1411 self.load_sample_data = ::std::option::Option::Some(input.into());
1412 self
1413 }
1414 /// <p>A flag that specifies whether to load sample data once the cluster is created.</p>
1415 pub fn set_load_sample_data(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1416 self.load_sample_data = input;
1417 self
1418 }
1419 /// <p>A flag that specifies whether to load sample data once the cluster is created.</p>
1420 pub fn get_load_sample_data(&self) -> &::std::option::Option<::std::string::String> {
1421 &self.load_sample_data
1422 }
1423 /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
1424 pub fn manage_master_password(mut self, input: bool) -> Self {
1425 self.manage_master_password = ::std::option::Option::Some(input);
1426 self
1427 }
1428 /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
1429 pub fn set_manage_master_password(mut self, input: ::std::option::Option<bool>) -> Self {
1430 self.manage_master_password = input;
1431 self
1432 }
1433 /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
1434 pub fn get_manage_master_password(&self) -> &::std::option::Option<bool> {
1435 &self.manage_master_password
1436 }
1437 /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
1438 pub fn master_password_secret_kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1439 self.master_password_secret_kms_key_id = ::std::option::Option::Some(input.into());
1440 self
1441 }
1442 /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
1443 pub fn set_master_password_secret_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1444 self.master_password_secret_kms_key_id = input;
1445 self
1446 }
1447 /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
1448 pub fn get_master_password_secret_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
1449 &self.master_password_secret_kms_key_id
1450 }
1451 /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
1452 pub fn ip_address_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1453 self.ip_address_type = ::std::option::Option::Some(input.into());
1454 self
1455 }
1456 /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
1457 pub fn set_ip_address_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1458 self.ip_address_type = input;
1459 self
1460 }
1461 /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
1462 pub fn get_ip_address_type(&self) -> &::std::option::Option<::std::string::String> {
1463 &self.ip_address_type
1464 }
1465 /// <p>If true, Amazon Redshift will deploy the cluster in two Availability Zones (AZ).</p>
1466 pub fn multi_az(mut self, input: bool) -> Self {
1467 self.multi_az = ::std::option::Option::Some(input);
1468 self
1469 }
1470 /// <p>If true, Amazon Redshift will deploy the cluster in two Availability Zones (AZ).</p>
1471 pub fn set_multi_az(mut self, input: ::std::option::Option<bool>) -> Self {
1472 self.multi_az = input;
1473 self
1474 }
1475 /// <p>If true, Amazon Redshift will deploy the cluster in two Availability Zones (AZ).</p>
1476 pub fn get_multi_az(&self) -> &::std::option::Option<bool> {
1477 &self.multi_az
1478 }
1479 /// <p>The Amazon resource name (ARN) of the Amazon Redshift IAM Identity Center application.</p>
1480 pub fn redshift_idc_application_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1481 self.redshift_idc_application_arn = ::std::option::Option::Some(input.into());
1482 self
1483 }
1484 /// <p>The Amazon resource name (ARN) of the Amazon Redshift IAM Identity Center application.</p>
1485 pub fn set_redshift_idc_application_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1486 self.redshift_idc_application_arn = input;
1487 self
1488 }
1489 /// <p>The Amazon resource name (ARN) of the Amazon Redshift IAM Identity Center application.</p>
1490 pub fn get_redshift_idc_application_arn(&self) -> &::std::option::Option<::std::string::String> {
1491 &self.redshift_idc_application_arn
1492 }
1493 /// <p>The name of the Glue data catalog that will be associated with the cluster enabled with Amazon Redshift federated permissions.</p>
1494 /// <p>Constraints:</p>
1495 /// <ul>
1496 /// <li>
1497 /// <p>Must contain at least one lowercase letter.</p></li>
1498 /// <li>
1499 /// <p>Can only contain lowercase letters (a-z), numbers (0-9), underscores (_), and hyphens (-).</p></li>
1500 /// </ul>
1501 /// <p>Pattern: <code>^\[a-z0-9_-\]*\[a-z\]+\[a-z0-9_-\]*$</code></p>
1502 /// <p>Example: <code>my-catalog_01</code></p>
1503 pub fn catalog_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1504 self.catalog_name = ::std::option::Option::Some(input.into());
1505 self
1506 }
1507 /// <p>The name of the Glue data catalog that will be associated with the cluster enabled with Amazon Redshift federated permissions.</p>
1508 /// <p>Constraints:</p>
1509 /// <ul>
1510 /// <li>
1511 /// <p>Must contain at least one lowercase letter.</p></li>
1512 /// <li>
1513 /// <p>Can only contain lowercase letters (a-z), numbers (0-9), underscores (_), and hyphens (-).</p></li>
1514 /// </ul>
1515 /// <p>Pattern: <code>^\[a-z0-9_-\]*\[a-z\]+\[a-z0-9_-\]*$</code></p>
1516 /// <p>Example: <code>my-catalog_01</code></p>
1517 pub fn set_catalog_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1518 self.catalog_name = input;
1519 self
1520 }
1521 /// <p>The name of the Glue data catalog that will be associated with the cluster enabled with Amazon Redshift federated permissions.</p>
1522 /// <p>Constraints:</p>
1523 /// <ul>
1524 /// <li>
1525 /// <p>Must contain at least one lowercase letter.</p></li>
1526 /// <li>
1527 /// <p>Can only contain lowercase letters (a-z), numbers (0-9), underscores (_), and hyphens (-).</p></li>
1528 /// </ul>
1529 /// <p>Pattern: <code>^\[a-z0-9_-\]*\[a-z\]+\[a-z0-9_-\]*$</code></p>
1530 /// <p>Example: <code>my-catalog_01</code></p>
1531 pub fn get_catalog_name(&self) -> &::std::option::Option<::std::string::String> {
1532 &self.catalog_name
1533 }
1534 /// Consumes the builder and constructs a [`CreateClusterInput`](crate::operation::create_cluster::CreateClusterInput).
1535 pub fn build(
1536 self,
1537 ) -> ::std::result::Result<crate::operation::create_cluster::CreateClusterInput, ::aws_smithy_types::error::operation::BuildError> {
1538 ::std::result::Result::Ok(crate::operation::create_cluster::CreateClusterInput {
1539 db_name: self.db_name,
1540 cluster_identifier: self.cluster_identifier,
1541 cluster_type: self.cluster_type,
1542 node_type: self.node_type,
1543 master_username: self.master_username,
1544 master_user_password: self.master_user_password,
1545 cluster_security_groups: self.cluster_security_groups,
1546 vpc_security_group_ids: self.vpc_security_group_ids,
1547 cluster_subnet_group_name: self.cluster_subnet_group_name,
1548 availability_zone: self.availability_zone,
1549 preferred_maintenance_window: self.preferred_maintenance_window,
1550 cluster_parameter_group_name: self.cluster_parameter_group_name,
1551 automated_snapshot_retention_period: self.automated_snapshot_retention_period,
1552 manual_snapshot_retention_period: self.manual_snapshot_retention_period,
1553 port: self.port,
1554 cluster_version: self.cluster_version,
1555 allow_version_upgrade: self.allow_version_upgrade,
1556 number_of_nodes: self.number_of_nodes,
1557 publicly_accessible: self.publicly_accessible,
1558 encrypted: self.encrypted,
1559 hsm_client_certificate_identifier: self.hsm_client_certificate_identifier,
1560 hsm_configuration_identifier: self.hsm_configuration_identifier,
1561 elastic_ip: self.elastic_ip,
1562 tags: self.tags,
1563 kms_key_id: self.kms_key_id,
1564 enhanced_vpc_routing: self.enhanced_vpc_routing,
1565 additional_info: self.additional_info,
1566 iam_roles: self.iam_roles,
1567 maintenance_track_name: self.maintenance_track_name,
1568 snapshot_schedule_identifier: self.snapshot_schedule_identifier,
1569 availability_zone_relocation: self.availability_zone_relocation,
1570 aqua_configuration_status: self.aqua_configuration_status,
1571 default_iam_role_arn: self.default_iam_role_arn,
1572 load_sample_data: self.load_sample_data,
1573 manage_master_password: self.manage_master_password,
1574 master_password_secret_kms_key_id: self.master_password_secret_kms_key_id,
1575 ip_address_type: self.ip_address_type,
1576 multi_az: self.multi_az,
1577 redshift_idc_application_arn: self.redshift_idc_application_arn,
1578 catalog_name: self.catalog_name,
1579 })
1580 }
1581}
1582impl ::std::fmt::Debug for CreateClusterInputBuilder {
1583 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1584 let mut formatter = f.debug_struct("CreateClusterInputBuilder");
1585 formatter.field("db_name", &self.db_name);
1586 formatter.field("cluster_identifier", &self.cluster_identifier);
1587 formatter.field("cluster_type", &self.cluster_type);
1588 formatter.field("node_type", &self.node_type);
1589 formatter.field("master_username", &self.master_username);
1590 formatter.field("master_user_password", &"*** Sensitive Data Redacted ***");
1591 formatter.field("cluster_security_groups", &self.cluster_security_groups);
1592 formatter.field("vpc_security_group_ids", &self.vpc_security_group_ids);
1593 formatter.field("cluster_subnet_group_name", &self.cluster_subnet_group_name);
1594 formatter.field("availability_zone", &self.availability_zone);
1595 formatter.field("preferred_maintenance_window", &self.preferred_maintenance_window);
1596 formatter.field("cluster_parameter_group_name", &self.cluster_parameter_group_name);
1597 formatter.field("automated_snapshot_retention_period", &self.automated_snapshot_retention_period);
1598 formatter.field("manual_snapshot_retention_period", &self.manual_snapshot_retention_period);
1599 formatter.field("port", &self.port);
1600 formatter.field("cluster_version", &self.cluster_version);
1601 formatter.field("allow_version_upgrade", &self.allow_version_upgrade);
1602 formatter.field("number_of_nodes", &self.number_of_nodes);
1603 formatter.field("publicly_accessible", &self.publicly_accessible);
1604 formatter.field("encrypted", &self.encrypted);
1605 formatter.field("hsm_client_certificate_identifier", &self.hsm_client_certificate_identifier);
1606 formatter.field("hsm_configuration_identifier", &self.hsm_configuration_identifier);
1607 formatter.field("elastic_ip", &self.elastic_ip);
1608 formatter.field("tags", &self.tags);
1609 formatter.field("kms_key_id", &self.kms_key_id);
1610 formatter.field("enhanced_vpc_routing", &self.enhanced_vpc_routing);
1611 formatter.field("additional_info", &self.additional_info);
1612 formatter.field("iam_roles", &self.iam_roles);
1613 formatter.field("maintenance_track_name", &self.maintenance_track_name);
1614 formatter.field("snapshot_schedule_identifier", &self.snapshot_schedule_identifier);
1615 formatter.field("availability_zone_relocation", &self.availability_zone_relocation);
1616 formatter.field("aqua_configuration_status", &self.aqua_configuration_status);
1617 formatter.field("default_iam_role_arn", &self.default_iam_role_arn);
1618 formatter.field("load_sample_data", &self.load_sample_data);
1619 formatter.field("manage_master_password", &self.manage_master_password);
1620 formatter.field("master_password_secret_kms_key_id", &self.master_password_secret_kms_key_id);
1621 formatter.field("ip_address_type", &self.ip_address_type);
1622 formatter.field("multi_az", &self.multi_az);
1623 formatter.field("redshift_idc_application_arn", &self.redshift_idc_application_arn);
1624 formatter.field("catalog_name", &self.catalog_name);
1625 formatter.finish()
1626 }
1627}