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