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