aws_sdk_emr/operation/create_studio/
_create_studio_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
5pub struct CreateStudioInput {
6    /// <p>A descriptive name for the Amazon EMR Studio.</p>
7    pub name: ::std::option::Option<::std::string::String>,
8    /// <p>A detailed description of the Amazon EMR Studio.</p>
9    pub description: ::std::option::Option<::std::string::String>,
10    /// <p>Specifies whether the Studio authenticates users using IAM or IAM Identity Center.</p>
11    pub auth_mode: ::std::option::Option<crate::types::AuthMode>,
12    /// <p>The ID of the Amazon Virtual Private Cloud (Amazon VPC) to associate with the Studio.</p>
13    pub vpc_id: ::std::option::Option<::std::string::String>,
14    /// <p>A list of subnet IDs to associate with the Amazon EMR Studio. A Studio can have a maximum of 5 subnets. The subnets must belong to the VPC specified by <code>VpcId</code>. Studio users can create a Workspace in any of the specified subnets.</p>
15    pub subnet_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
16    /// <p>The IAM role that the Amazon EMR Studio assumes. The service role provides a way for Amazon EMR Studio to interoperate with other Amazon Web Services services.</p>
17    pub service_role: ::std::option::Option<::std::string::String>,
18    /// <p>The IAM user role that users and groups assume when logged in to an Amazon EMR Studio. Only specify a <code>UserRole</code> when you use IAM Identity Center authentication. The permissions attached to the <code>UserRole</code> can be scoped down for each user or group using session policies.</p>
19    pub user_role: ::std::option::Option<::std::string::String>,
20    /// <p>The ID of the Amazon EMR Studio Workspace security group. The Workspace security group allows outbound network traffic to resources in the Engine security group, and it must be in the same VPC specified by <code>VpcId</code>.</p>
21    pub workspace_security_group_id: ::std::option::Option<::std::string::String>,
22    /// <p>The ID of the Amazon EMR Studio Engine security group. The Engine security group allows inbound network traffic from the Workspace security group, and it must be in the same VPC specified by <code>VpcId</code>.</p>
23    pub engine_security_group_id: ::std::option::Option<::std::string::String>,
24    /// <p>The Amazon S3 location to back up Amazon EMR Studio Workspaces and notebook files.</p>
25    pub default_s3_location: ::std::option::Option<::std::string::String>,
26    /// <p>The authentication endpoint of your identity provider (IdP). Specify this value when you use IAM authentication and want to let federated users log in to a Studio with the Studio URL and credentials from your IdP. Amazon EMR Studio redirects users to this endpoint to enter credentials.</p>
27    pub idp_auth_url: ::std::option::Option<::std::string::String>,
28    /// <p>The name that your identity provider (IdP) uses for its <code>RelayState</code> parameter. For example, <code>RelayState</code> or <code>TargetSource</code>. Specify this value when you use IAM authentication and want to let federated users log in to a Studio using the Studio URL. The <code>RelayState</code> parameter differs by IdP.</p>
29    pub idp_relay_state_parameter_name: ::std::option::Option<::std::string::String>,
30    /// <p>A list of tags to associate with the Amazon EMR Studio. Tags are user-defined key-value pairs that consist of a required key string with a maximum of 128 characters, and an optional value string with a maximum of 256 characters.</p>
31    pub tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
32    /// <p>A Boolean indicating whether to enable Trusted identity propagation for the Studio. The default value is <code>false</code>.</p>
33    pub trusted_identity_propagation_enabled: ::std::option::Option<bool>,
34    /// <p>Specifies whether IAM Identity Center user assignment is <code>REQUIRED</code> or <code>OPTIONAL</code>. If the value is set to <code>REQUIRED</code>, users must be explicitly assigned to the Studio application to access the Studio.</p>
35    pub idc_user_assignment: ::std::option::Option<crate::types::IdcUserAssignment>,
36    /// <p>The ARN of the IAM Identity Center instance to create the Studio application.</p>
37    pub idc_instance_arn: ::std::option::Option<::std::string::String>,
38    /// <p>The KMS key identifier (ARN) used to encrypt Amazon EMR Studio workspace and notebook files when backed up to Amazon S3.</p>
39    pub encryption_key_arn: ::std::option::Option<::std::string::String>,
40}
41impl CreateStudioInput {
42    /// <p>A descriptive name for the Amazon EMR Studio.</p>
43    pub fn name(&self) -> ::std::option::Option<&str> {
44        self.name.as_deref()
45    }
46    /// <p>A detailed description of the Amazon EMR Studio.</p>
47    pub fn description(&self) -> ::std::option::Option<&str> {
48        self.description.as_deref()
49    }
50    /// <p>Specifies whether the Studio authenticates users using IAM or IAM Identity Center.</p>
51    pub fn auth_mode(&self) -> ::std::option::Option<&crate::types::AuthMode> {
52        self.auth_mode.as_ref()
53    }
54    /// <p>The ID of the Amazon Virtual Private Cloud (Amazon VPC) to associate with the Studio.</p>
55    pub fn vpc_id(&self) -> ::std::option::Option<&str> {
56        self.vpc_id.as_deref()
57    }
58    /// <p>A list of subnet IDs to associate with the Amazon EMR Studio. A Studio can have a maximum of 5 subnets. The subnets must belong to the VPC specified by <code>VpcId</code>. Studio users can create a Workspace in any of the specified subnets.</p>
59    ///
60    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.subnet_ids.is_none()`.
61    pub fn subnet_ids(&self) -> &[::std::string::String] {
62        self.subnet_ids.as_deref().unwrap_or_default()
63    }
64    /// <p>The IAM role that the Amazon EMR Studio assumes. The service role provides a way for Amazon EMR Studio to interoperate with other Amazon Web Services services.</p>
65    pub fn service_role(&self) -> ::std::option::Option<&str> {
66        self.service_role.as_deref()
67    }
68    /// <p>The IAM user role that users and groups assume when logged in to an Amazon EMR Studio. Only specify a <code>UserRole</code> when you use IAM Identity Center authentication. The permissions attached to the <code>UserRole</code> can be scoped down for each user or group using session policies.</p>
69    pub fn user_role(&self) -> ::std::option::Option<&str> {
70        self.user_role.as_deref()
71    }
72    /// <p>The ID of the Amazon EMR Studio Workspace security group. The Workspace security group allows outbound network traffic to resources in the Engine security group, and it must be in the same VPC specified by <code>VpcId</code>.</p>
73    pub fn workspace_security_group_id(&self) -> ::std::option::Option<&str> {
74        self.workspace_security_group_id.as_deref()
75    }
76    /// <p>The ID of the Amazon EMR Studio Engine security group. The Engine security group allows inbound network traffic from the Workspace security group, and it must be in the same VPC specified by <code>VpcId</code>.</p>
77    pub fn engine_security_group_id(&self) -> ::std::option::Option<&str> {
78        self.engine_security_group_id.as_deref()
79    }
80    /// <p>The Amazon S3 location to back up Amazon EMR Studio Workspaces and notebook files.</p>
81    pub fn default_s3_location(&self) -> ::std::option::Option<&str> {
82        self.default_s3_location.as_deref()
83    }
84    /// <p>The authentication endpoint of your identity provider (IdP). Specify this value when you use IAM authentication and want to let federated users log in to a Studio with the Studio URL and credentials from your IdP. Amazon EMR Studio redirects users to this endpoint to enter credentials.</p>
85    pub fn idp_auth_url(&self) -> ::std::option::Option<&str> {
86        self.idp_auth_url.as_deref()
87    }
88    /// <p>The name that your identity provider (IdP) uses for its <code>RelayState</code> parameter. For example, <code>RelayState</code> or <code>TargetSource</code>. Specify this value when you use IAM authentication and want to let federated users log in to a Studio using the Studio URL. The <code>RelayState</code> parameter differs by IdP.</p>
89    pub fn idp_relay_state_parameter_name(&self) -> ::std::option::Option<&str> {
90        self.idp_relay_state_parameter_name.as_deref()
91    }
92    /// <p>A list of tags to associate with the Amazon EMR Studio. Tags are user-defined key-value pairs that consist of a required key string with a maximum of 128 characters, and an optional value string with a maximum of 256 characters.</p>
93    ///
94    /// 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()`.
95    pub fn tags(&self) -> &[crate::types::Tag] {
96        self.tags.as_deref().unwrap_or_default()
97    }
98    /// <p>A Boolean indicating whether to enable Trusted identity propagation for the Studio. The default value is <code>false</code>.</p>
99    pub fn trusted_identity_propagation_enabled(&self) -> ::std::option::Option<bool> {
100        self.trusted_identity_propagation_enabled
101    }
102    /// <p>Specifies whether IAM Identity Center user assignment is <code>REQUIRED</code> or <code>OPTIONAL</code>. If the value is set to <code>REQUIRED</code>, users must be explicitly assigned to the Studio application to access the Studio.</p>
103    pub fn idc_user_assignment(&self) -> ::std::option::Option<&crate::types::IdcUserAssignment> {
104        self.idc_user_assignment.as_ref()
105    }
106    /// <p>The ARN of the IAM Identity Center instance to create the Studio application.</p>
107    pub fn idc_instance_arn(&self) -> ::std::option::Option<&str> {
108        self.idc_instance_arn.as_deref()
109    }
110    /// <p>The KMS key identifier (ARN) used to encrypt Amazon EMR Studio workspace and notebook files when backed up to Amazon S3.</p>
111    pub fn encryption_key_arn(&self) -> ::std::option::Option<&str> {
112        self.encryption_key_arn.as_deref()
113    }
114}
115impl CreateStudioInput {
116    /// Creates a new builder-style object to manufacture [`CreateStudioInput`](crate::operation::create_studio::CreateStudioInput).
117    pub fn builder() -> crate::operation::create_studio::builders::CreateStudioInputBuilder {
118        crate::operation::create_studio::builders::CreateStudioInputBuilder::default()
119    }
120}
121
122/// A builder for [`CreateStudioInput`](crate::operation::create_studio::CreateStudioInput).
123#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
124#[non_exhaustive]
125pub struct CreateStudioInputBuilder {
126    pub(crate) name: ::std::option::Option<::std::string::String>,
127    pub(crate) description: ::std::option::Option<::std::string::String>,
128    pub(crate) auth_mode: ::std::option::Option<crate::types::AuthMode>,
129    pub(crate) vpc_id: ::std::option::Option<::std::string::String>,
130    pub(crate) subnet_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
131    pub(crate) service_role: ::std::option::Option<::std::string::String>,
132    pub(crate) user_role: ::std::option::Option<::std::string::String>,
133    pub(crate) workspace_security_group_id: ::std::option::Option<::std::string::String>,
134    pub(crate) engine_security_group_id: ::std::option::Option<::std::string::String>,
135    pub(crate) default_s3_location: ::std::option::Option<::std::string::String>,
136    pub(crate) idp_auth_url: ::std::option::Option<::std::string::String>,
137    pub(crate) idp_relay_state_parameter_name: ::std::option::Option<::std::string::String>,
138    pub(crate) tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
139    pub(crate) trusted_identity_propagation_enabled: ::std::option::Option<bool>,
140    pub(crate) idc_user_assignment: ::std::option::Option<crate::types::IdcUserAssignment>,
141    pub(crate) idc_instance_arn: ::std::option::Option<::std::string::String>,
142    pub(crate) encryption_key_arn: ::std::option::Option<::std::string::String>,
143}
144impl CreateStudioInputBuilder {
145    /// <p>A descriptive name for the Amazon EMR Studio.</p>
146    /// This field is required.
147    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
148        self.name = ::std::option::Option::Some(input.into());
149        self
150    }
151    /// <p>A descriptive name for the Amazon EMR Studio.</p>
152    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
153        self.name = input;
154        self
155    }
156    /// <p>A descriptive name for the Amazon EMR Studio.</p>
157    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
158        &self.name
159    }
160    /// <p>A detailed description of the Amazon EMR Studio.</p>
161    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
162        self.description = ::std::option::Option::Some(input.into());
163        self
164    }
165    /// <p>A detailed description of the Amazon EMR Studio.</p>
166    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
167        self.description = input;
168        self
169    }
170    /// <p>A detailed description of the Amazon EMR Studio.</p>
171    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
172        &self.description
173    }
174    /// <p>Specifies whether the Studio authenticates users using IAM or IAM Identity Center.</p>
175    /// This field is required.
176    pub fn auth_mode(mut self, input: crate::types::AuthMode) -> Self {
177        self.auth_mode = ::std::option::Option::Some(input);
178        self
179    }
180    /// <p>Specifies whether the Studio authenticates users using IAM or IAM Identity Center.</p>
181    pub fn set_auth_mode(mut self, input: ::std::option::Option<crate::types::AuthMode>) -> Self {
182        self.auth_mode = input;
183        self
184    }
185    /// <p>Specifies whether the Studio authenticates users using IAM or IAM Identity Center.</p>
186    pub fn get_auth_mode(&self) -> &::std::option::Option<crate::types::AuthMode> {
187        &self.auth_mode
188    }
189    /// <p>The ID of the Amazon Virtual Private Cloud (Amazon VPC) to associate with the Studio.</p>
190    /// This field is required.
191    pub fn vpc_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
192        self.vpc_id = ::std::option::Option::Some(input.into());
193        self
194    }
195    /// <p>The ID of the Amazon Virtual Private Cloud (Amazon VPC) to associate with the Studio.</p>
196    pub fn set_vpc_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
197        self.vpc_id = input;
198        self
199    }
200    /// <p>The ID of the Amazon Virtual Private Cloud (Amazon VPC) to associate with the Studio.</p>
201    pub fn get_vpc_id(&self) -> &::std::option::Option<::std::string::String> {
202        &self.vpc_id
203    }
204    /// Appends an item to `subnet_ids`.
205    ///
206    /// To override the contents of this collection use [`set_subnet_ids`](Self::set_subnet_ids).
207    ///
208    /// <p>A list of subnet IDs to associate with the Amazon EMR Studio. A Studio can have a maximum of 5 subnets. The subnets must belong to the VPC specified by <code>VpcId</code>. Studio users can create a Workspace in any of the specified subnets.</p>
209    pub fn subnet_ids(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
210        let mut v = self.subnet_ids.unwrap_or_default();
211        v.push(input.into());
212        self.subnet_ids = ::std::option::Option::Some(v);
213        self
214    }
215    /// <p>A list of subnet IDs to associate with the Amazon EMR Studio. A Studio can have a maximum of 5 subnets. The subnets must belong to the VPC specified by <code>VpcId</code>. Studio users can create a Workspace in any of the specified subnets.</p>
216    pub fn set_subnet_ids(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
217        self.subnet_ids = input;
218        self
219    }
220    /// <p>A list of subnet IDs to associate with the Amazon EMR Studio. A Studio can have a maximum of 5 subnets. The subnets must belong to the VPC specified by <code>VpcId</code>. Studio users can create a Workspace in any of the specified subnets.</p>
221    pub fn get_subnet_ids(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
222        &self.subnet_ids
223    }
224    /// <p>The IAM role that the Amazon EMR Studio assumes. The service role provides a way for Amazon EMR Studio to interoperate with other Amazon Web Services services.</p>
225    /// This field is required.
226    pub fn service_role(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
227        self.service_role = ::std::option::Option::Some(input.into());
228        self
229    }
230    /// <p>The IAM role that the Amazon EMR Studio assumes. The service role provides a way for Amazon EMR Studio to interoperate with other Amazon Web Services services.</p>
231    pub fn set_service_role(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
232        self.service_role = input;
233        self
234    }
235    /// <p>The IAM role that the Amazon EMR Studio assumes. The service role provides a way for Amazon EMR Studio to interoperate with other Amazon Web Services services.</p>
236    pub fn get_service_role(&self) -> &::std::option::Option<::std::string::String> {
237        &self.service_role
238    }
239    /// <p>The IAM user role that users and groups assume when logged in to an Amazon EMR Studio. Only specify a <code>UserRole</code> when you use IAM Identity Center authentication. The permissions attached to the <code>UserRole</code> can be scoped down for each user or group using session policies.</p>
240    pub fn user_role(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
241        self.user_role = ::std::option::Option::Some(input.into());
242        self
243    }
244    /// <p>The IAM user role that users and groups assume when logged in to an Amazon EMR Studio. Only specify a <code>UserRole</code> when you use IAM Identity Center authentication. The permissions attached to the <code>UserRole</code> can be scoped down for each user or group using session policies.</p>
245    pub fn set_user_role(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
246        self.user_role = input;
247        self
248    }
249    /// <p>The IAM user role that users and groups assume when logged in to an Amazon EMR Studio. Only specify a <code>UserRole</code> when you use IAM Identity Center authentication. The permissions attached to the <code>UserRole</code> can be scoped down for each user or group using session policies.</p>
250    pub fn get_user_role(&self) -> &::std::option::Option<::std::string::String> {
251        &self.user_role
252    }
253    /// <p>The ID of the Amazon EMR Studio Workspace security group. The Workspace security group allows outbound network traffic to resources in the Engine security group, and it must be in the same VPC specified by <code>VpcId</code>.</p>
254    /// This field is required.
255    pub fn workspace_security_group_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
256        self.workspace_security_group_id = ::std::option::Option::Some(input.into());
257        self
258    }
259    /// <p>The ID of the Amazon EMR Studio Workspace security group. The Workspace security group allows outbound network traffic to resources in the Engine security group, and it must be in the same VPC specified by <code>VpcId</code>.</p>
260    pub fn set_workspace_security_group_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
261        self.workspace_security_group_id = input;
262        self
263    }
264    /// <p>The ID of the Amazon EMR Studio Workspace security group. The Workspace security group allows outbound network traffic to resources in the Engine security group, and it must be in the same VPC specified by <code>VpcId</code>.</p>
265    pub fn get_workspace_security_group_id(&self) -> &::std::option::Option<::std::string::String> {
266        &self.workspace_security_group_id
267    }
268    /// <p>The ID of the Amazon EMR Studio Engine security group. The Engine security group allows inbound network traffic from the Workspace security group, and it must be in the same VPC specified by <code>VpcId</code>.</p>
269    /// This field is required.
270    pub fn engine_security_group_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
271        self.engine_security_group_id = ::std::option::Option::Some(input.into());
272        self
273    }
274    /// <p>The ID of the Amazon EMR Studio Engine security group. The Engine security group allows inbound network traffic from the Workspace security group, and it must be in the same VPC specified by <code>VpcId</code>.</p>
275    pub fn set_engine_security_group_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
276        self.engine_security_group_id = input;
277        self
278    }
279    /// <p>The ID of the Amazon EMR Studio Engine security group. The Engine security group allows inbound network traffic from the Workspace security group, and it must be in the same VPC specified by <code>VpcId</code>.</p>
280    pub fn get_engine_security_group_id(&self) -> &::std::option::Option<::std::string::String> {
281        &self.engine_security_group_id
282    }
283    /// <p>The Amazon S3 location to back up Amazon EMR Studio Workspaces and notebook files.</p>
284    /// This field is required.
285    pub fn default_s3_location(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
286        self.default_s3_location = ::std::option::Option::Some(input.into());
287        self
288    }
289    /// <p>The Amazon S3 location to back up Amazon EMR Studio Workspaces and notebook files.</p>
290    pub fn set_default_s3_location(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
291        self.default_s3_location = input;
292        self
293    }
294    /// <p>The Amazon S3 location to back up Amazon EMR Studio Workspaces and notebook files.</p>
295    pub fn get_default_s3_location(&self) -> &::std::option::Option<::std::string::String> {
296        &self.default_s3_location
297    }
298    /// <p>The authentication endpoint of your identity provider (IdP). Specify this value when you use IAM authentication and want to let federated users log in to a Studio with the Studio URL and credentials from your IdP. Amazon EMR Studio redirects users to this endpoint to enter credentials.</p>
299    pub fn idp_auth_url(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
300        self.idp_auth_url = ::std::option::Option::Some(input.into());
301        self
302    }
303    /// <p>The authentication endpoint of your identity provider (IdP). Specify this value when you use IAM authentication and want to let federated users log in to a Studio with the Studio URL and credentials from your IdP. Amazon EMR Studio redirects users to this endpoint to enter credentials.</p>
304    pub fn set_idp_auth_url(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
305        self.idp_auth_url = input;
306        self
307    }
308    /// <p>The authentication endpoint of your identity provider (IdP). Specify this value when you use IAM authentication and want to let federated users log in to a Studio with the Studio URL and credentials from your IdP. Amazon EMR Studio redirects users to this endpoint to enter credentials.</p>
309    pub fn get_idp_auth_url(&self) -> &::std::option::Option<::std::string::String> {
310        &self.idp_auth_url
311    }
312    /// <p>The name that your identity provider (IdP) uses for its <code>RelayState</code> parameter. For example, <code>RelayState</code> or <code>TargetSource</code>. Specify this value when you use IAM authentication and want to let federated users log in to a Studio using the Studio URL. The <code>RelayState</code> parameter differs by IdP.</p>
313    pub fn idp_relay_state_parameter_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
314        self.idp_relay_state_parameter_name = ::std::option::Option::Some(input.into());
315        self
316    }
317    /// <p>The name that your identity provider (IdP) uses for its <code>RelayState</code> parameter. For example, <code>RelayState</code> or <code>TargetSource</code>. Specify this value when you use IAM authentication and want to let federated users log in to a Studio using the Studio URL. The <code>RelayState</code> parameter differs by IdP.</p>
318    pub fn set_idp_relay_state_parameter_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
319        self.idp_relay_state_parameter_name = input;
320        self
321    }
322    /// <p>The name that your identity provider (IdP) uses for its <code>RelayState</code> parameter. For example, <code>RelayState</code> or <code>TargetSource</code>. Specify this value when you use IAM authentication and want to let federated users log in to a Studio using the Studio URL. The <code>RelayState</code> parameter differs by IdP.</p>
323    pub fn get_idp_relay_state_parameter_name(&self) -> &::std::option::Option<::std::string::String> {
324        &self.idp_relay_state_parameter_name
325    }
326    /// Appends an item to `tags`.
327    ///
328    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
329    ///
330    /// <p>A list of tags to associate with the Amazon EMR Studio. Tags are user-defined key-value pairs that consist of a required key string with a maximum of 128 characters, and an optional value string with a maximum of 256 characters.</p>
331    pub fn tags(mut self, input: crate::types::Tag) -> Self {
332        let mut v = self.tags.unwrap_or_default();
333        v.push(input);
334        self.tags = ::std::option::Option::Some(v);
335        self
336    }
337    /// <p>A list of tags to associate with the Amazon EMR Studio. Tags are user-defined key-value pairs that consist of a required key string with a maximum of 128 characters, and an optional value string with a maximum of 256 characters.</p>
338    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
339        self.tags = input;
340        self
341    }
342    /// <p>A list of tags to associate with the Amazon EMR Studio. Tags are user-defined key-value pairs that consist of a required key string with a maximum of 128 characters, and an optional value string with a maximum of 256 characters.</p>
343    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
344        &self.tags
345    }
346    /// <p>A Boolean indicating whether to enable Trusted identity propagation for the Studio. The default value is <code>false</code>.</p>
347    pub fn trusted_identity_propagation_enabled(mut self, input: bool) -> Self {
348        self.trusted_identity_propagation_enabled = ::std::option::Option::Some(input);
349        self
350    }
351    /// <p>A Boolean indicating whether to enable Trusted identity propagation for the Studio. The default value is <code>false</code>.</p>
352    pub fn set_trusted_identity_propagation_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
353        self.trusted_identity_propagation_enabled = input;
354        self
355    }
356    /// <p>A Boolean indicating whether to enable Trusted identity propagation for the Studio. The default value is <code>false</code>.</p>
357    pub fn get_trusted_identity_propagation_enabled(&self) -> &::std::option::Option<bool> {
358        &self.trusted_identity_propagation_enabled
359    }
360    /// <p>Specifies whether IAM Identity Center user assignment is <code>REQUIRED</code> or <code>OPTIONAL</code>. If the value is set to <code>REQUIRED</code>, users must be explicitly assigned to the Studio application to access the Studio.</p>
361    pub fn idc_user_assignment(mut self, input: crate::types::IdcUserAssignment) -> Self {
362        self.idc_user_assignment = ::std::option::Option::Some(input);
363        self
364    }
365    /// <p>Specifies whether IAM Identity Center user assignment is <code>REQUIRED</code> or <code>OPTIONAL</code>. If the value is set to <code>REQUIRED</code>, users must be explicitly assigned to the Studio application to access the Studio.</p>
366    pub fn set_idc_user_assignment(mut self, input: ::std::option::Option<crate::types::IdcUserAssignment>) -> Self {
367        self.idc_user_assignment = input;
368        self
369    }
370    /// <p>Specifies whether IAM Identity Center user assignment is <code>REQUIRED</code> or <code>OPTIONAL</code>. If the value is set to <code>REQUIRED</code>, users must be explicitly assigned to the Studio application to access the Studio.</p>
371    pub fn get_idc_user_assignment(&self) -> &::std::option::Option<crate::types::IdcUserAssignment> {
372        &self.idc_user_assignment
373    }
374    /// <p>The ARN of the IAM Identity Center instance to create the Studio application.</p>
375    pub fn idc_instance_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
376        self.idc_instance_arn = ::std::option::Option::Some(input.into());
377        self
378    }
379    /// <p>The ARN of the IAM Identity Center instance to create the Studio application.</p>
380    pub fn set_idc_instance_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
381        self.idc_instance_arn = input;
382        self
383    }
384    /// <p>The ARN of the IAM Identity Center instance to create the Studio application.</p>
385    pub fn get_idc_instance_arn(&self) -> &::std::option::Option<::std::string::String> {
386        &self.idc_instance_arn
387    }
388    /// <p>The KMS key identifier (ARN) used to encrypt Amazon EMR Studio workspace and notebook files when backed up to Amazon S3.</p>
389    pub fn encryption_key_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
390        self.encryption_key_arn = ::std::option::Option::Some(input.into());
391        self
392    }
393    /// <p>The KMS key identifier (ARN) used to encrypt Amazon EMR Studio workspace and notebook files when backed up to Amazon S3.</p>
394    pub fn set_encryption_key_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
395        self.encryption_key_arn = input;
396        self
397    }
398    /// <p>The KMS key identifier (ARN) used to encrypt Amazon EMR Studio workspace and notebook files when backed up to Amazon S3.</p>
399    pub fn get_encryption_key_arn(&self) -> &::std::option::Option<::std::string::String> {
400        &self.encryption_key_arn
401    }
402    /// Consumes the builder and constructs a [`CreateStudioInput`](crate::operation::create_studio::CreateStudioInput).
403    pub fn build(
404        self,
405    ) -> ::std::result::Result<crate::operation::create_studio::CreateStudioInput, ::aws_smithy_types::error::operation::BuildError> {
406        ::std::result::Result::Ok(crate::operation::create_studio::CreateStudioInput {
407            name: self.name,
408            description: self.description,
409            auth_mode: self.auth_mode,
410            vpc_id: self.vpc_id,
411            subnet_ids: self.subnet_ids,
412            service_role: self.service_role,
413            user_role: self.user_role,
414            workspace_security_group_id: self.workspace_security_group_id,
415            engine_security_group_id: self.engine_security_group_id,
416            default_s3_location: self.default_s3_location,
417            idp_auth_url: self.idp_auth_url,
418            idp_relay_state_parameter_name: self.idp_relay_state_parameter_name,
419            tags: self.tags,
420            trusted_identity_propagation_enabled: self.trusted_identity_propagation_enabled,
421            idc_user_assignment: self.idc_user_assignment,
422            idc_instance_arn: self.idc_instance_arn,
423            encryption_key_arn: self.encryption_key_arn,
424        })
425    }
426}