aws_sdk_appstream/operation/create_fleet/
_create_fleet_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 CreateFleetInput {
6    /// <p>A unique name for the fleet.</p>
7    pub name: ::std::option::Option<::std::string::String>,
8    /// <p>The name of the image used to create the fleet.</p>
9    pub image_name: ::std::option::Option<::std::string::String>,
10    /// <p>The ARN of the public, private, or shared image to use.</p>
11    pub image_arn: ::std::option::Option<::std::string::String>,
12    /// <p>The instance type to use when launching fleet instances. The following instance types are available:</p>
13    /// <ul>
14    /// <li>
15    /// <p>stream.standard.small</p></li>
16    /// <li>
17    /// <p>stream.standard.medium</p></li>
18    /// <li>
19    /// <p>stream.standard.large</p></li>
20    /// <li>
21    /// <p>stream.standard.xlarge</p></li>
22    /// <li>
23    /// <p>stream.standard.2xlarge</p></li>
24    /// <li>
25    /// <p>stream.compute.large</p></li>
26    /// <li>
27    /// <p>stream.compute.xlarge</p></li>
28    /// <li>
29    /// <p>stream.compute.2xlarge</p></li>
30    /// <li>
31    /// <p>stream.compute.4xlarge</p></li>
32    /// <li>
33    /// <p>stream.compute.8xlarge</p></li>
34    /// <li>
35    /// <p>stream.memory.large</p></li>
36    /// <li>
37    /// <p>stream.memory.xlarge</p></li>
38    /// <li>
39    /// <p>stream.memory.2xlarge</p></li>
40    /// <li>
41    /// <p>stream.memory.4xlarge</p></li>
42    /// <li>
43    /// <p>stream.memory.8xlarge</p></li>
44    /// <li>
45    /// <p>stream.memory.z1d.large</p></li>
46    /// <li>
47    /// <p>stream.memory.z1d.xlarge</p></li>
48    /// <li>
49    /// <p>stream.memory.z1d.2xlarge</p></li>
50    /// <li>
51    /// <p>stream.memory.z1d.3xlarge</p></li>
52    /// <li>
53    /// <p>stream.memory.z1d.6xlarge</p></li>
54    /// <li>
55    /// <p>stream.memory.z1d.12xlarge</p></li>
56    /// <li>
57    /// <p>stream.graphics-design.large</p></li>
58    /// <li>
59    /// <p>stream.graphics-design.xlarge</p></li>
60    /// <li>
61    /// <p>stream.graphics-design.2xlarge</p></li>
62    /// <li>
63    /// <p>stream.graphics-design.4xlarge</p></li>
64    /// <li>
65    /// <p>stream.graphics-desktop.2xlarge</p></li>
66    /// <li>
67    /// <p>stream.graphics.g4dn.xlarge</p></li>
68    /// <li>
69    /// <p>stream.graphics.g4dn.2xlarge</p></li>
70    /// <li>
71    /// <p>stream.graphics.g4dn.4xlarge</p></li>
72    /// <li>
73    /// <p>stream.graphics.g4dn.8xlarge</p></li>
74    /// <li>
75    /// <p>stream.graphics.g4dn.12xlarge</p></li>
76    /// <li>
77    /// <p>stream.graphics.g4dn.16xlarge</p></li>
78    /// <li>
79    /// <p>stream.graphics.g5.xlarge</p></li>
80    /// <li>
81    /// <p>stream.graphics.g5.2xlarge</p></li>
82    /// <li>
83    /// <p>stream.graphics.g5.4xlarge</p></li>
84    /// <li>
85    /// <p>stream.graphics.g5.8xlarge</p></li>
86    /// <li>
87    /// <p>stream.graphics.g5.12xlarge</p></li>
88    /// <li>
89    /// <p>stream.graphics.g5.16xlarge</p></li>
90    /// <li>
91    /// <p>stream.graphics.g5.24xlarge</p></li>
92    /// <li>
93    /// <p>stream.graphics-pro.4xlarge</p></li>
94    /// <li>
95    /// <p>stream.graphics-pro.8xlarge</p></li>
96    /// <li>
97    /// <p>stream.graphics-pro.16xlarge</p></li>
98    /// </ul>
99    /// <p>The following instance types are available for Elastic fleets:</p>
100    /// <ul>
101    /// <li>
102    /// <p>stream.standard.small</p></li>
103    /// <li>
104    /// <p>stream.standard.medium</p></li>
105    /// <li>
106    /// <p>stream.standard.large</p></li>
107    /// <li>
108    /// <p>stream.standard.xlarge</p></li>
109    /// <li>
110    /// <p>stream.standard.2xlarge</p></li>
111    /// </ul>
112    pub instance_type: ::std::option::Option<::std::string::String>,
113    /// <p>The fleet type.</p>
114    /// <dl>
115    /// <dt>
116    /// ALWAYS_ON
117    /// </dt>
118    /// <dd>
119    /// <p>Provides users with instant-on access to their apps. You are charged for all running instances in your fleet, even if no users are streaming apps.</p>
120    /// </dd>
121    /// <dt>
122    /// ON_DEMAND
123    /// </dt>
124    /// <dd>
125    /// <p>Provide users with access to applications after they connect, which takes one to two minutes. You are charged for instance streaming when users are connected and a small hourly fee for instances that are not streaming apps.</p>
126    /// </dd>
127    /// </dl>
128    pub fleet_type: ::std::option::Option<crate::types::FleetType>,
129    /// <p>The desired capacity for the fleet. This is not allowed for Elastic fleets. For Elastic fleets, specify MaxConcurrentSessions instead.</p>
130    pub compute_capacity: ::std::option::Option<crate::types::ComputeCapacity>,
131    /// <p>The VPC configuration for the fleet. This is required for Elastic fleets, but not required for other fleet types. Elastic fleets require that you specify at least two subnets in different availability zones.</p>
132    pub vpc_config: ::std::option::Option<crate::types::VpcConfig>,
133    /// <p>The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance.</p>
134    /// <p>Specify a value between 600 and 432000.</p>
135    pub max_user_duration_in_seconds: ::std::option::Option<i32>,
136    /// <p>The amount of time that a streaming session remains active after users disconnect. If users try to reconnect to the streaming session after a disconnection or network interruption within this time interval, they are connected to their previous session. Otherwise, they are connected to a new session with a new streaming instance.</p>
137    /// <p>Specify a value between 60 and 36000.</p>
138    pub disconnect_timeout_in_seconds: ::std::option::Option<i32>,
139    /// <p>The description to display.</p>
140    pub description: ::std::option::Option<::std::string::String>,
141    /// <p>The fleet name to display.</p>
142    pub display_name: ::std::option::Option<::std::string::String>,
143    /// <p>Enables or disables default internet access for the fleet.</p>
144    pub enable_default_internet_access: ::std::option::Option<bool>,
145    /// <p>The name of the directory and organizational unit (OU) to use to join the fleet to a Microsoft Active Directory domain. This is not allowed for Elastic fleets.</p>
146    pub domain_join_info: ::std::option::Option<crate::types::DomainJoinInfo>,
147    /// <p>The tags to associate with the fleet. A tag is a key-value pair, and the value is optional. For example, Environment=Test. If you do not specify a value, Environment=.</p>
148    /// <p>If you do not specify a value, the value is set to an empty string.</p>
149    /// <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters:</p>
150    /// <p>_ . : / = + \ - @</p>
151    /// <p>For more information, see <a href="https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html">Tagging Your Resources</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>
152    pub tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
153    /// <p>The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the <code>DisconnectTimeoutInSeconds</code> time interval begins. Users are notified before they are disconnected due to inactivity. If they try to reconnect to the streaming session before the time interval specified in <code>DisconnectTimeoutInSeconds</code> elapses, they are connected to their previous session. Users are considered idle when they stop providing keyboard or mouse input during their streaming session. File uploads and downloads, audio in, audio out, and pixels changing do not qualify as user activity. If users continue to be idle after the time interval in <code>IdleDisconnectTimeoutInSeconds</code> elapses, they are disconnected.</p>
154    /// <p>To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise, specify a value between 60 and 36000. The default value is 0.</p><note>
155    /// <p>If you enable this feature, we recommend that you specify a value that corresponds exactly to a whole number of minutes (for example, 60, 120, and 180). If you don't do this, the value is rounded to the nearest minute. For example, if you specify a value of 70, users are disconnected after 1 minute of inactivity. If you specify a value that is at the midpoint between two different minutes, the value is rounded up. For example, if you specify a value of 90, users are disconnected after 2 minutes of inactivity.</p>
156    /// </note>
157    pub idle_disconnect_timeout_in_seconds: ::std::option::Option<i32>,
158    /// <p>The Amazon Resource Name (ARN) of the IAM role to apply to the fleet. To assume a role, a fleet instance calls the AWS Security Token Service (STS) <code>AssumeRole</code> API operation and passes the ARN of the role to use. The operation creates a new session with temporary credentials. AppStream 2.0 retrieves the temporary credentials and creates the <b>appstream_machine_role</b> credential profile on the instance.</p>
159    /// <p>For more information, see <a href="https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html">Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>
160    pub iam_role_arn: ::std::option::Option<::std::string::String>,
161    /// <p>The AppStream 2.0 view that is displayed to your users when they stream from the fleet. When <code>APP</code> is specified, only the windows of applications opened by users display. When <code>DESKTOP</code> is specified, the standard desktop that is provided by the operating system displays.</p>
162    /// <p>The default value is <code>APP</code>.</p>
163    pub stream_view: ::std::option::Option<crate::types::StreamView>,
164    /// <p>The fleet platform. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported for Elastic fleets.</p>
165    pub platform: ::std::option::Option<crate::types::PlatformType>,
166    /// <p>The maximum concurrent sessions of the Elastic fleet. This is required for Elastic fleets, and not allowed for other fleet types.</p>
167    pub max_concurrent_sessions: ::std::option::Option<i32>,
168    /// <p>The USB device filter strings that specify which USB devices a user can redirect to the fleet streaming session, when using the Windows native client. This is allowed but not required for Elastic fleets.</p>
169    pub usb_device_filter_strings: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
170    /// <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
171    pub session_script_s3_location: ::std::option::Option<crate::types::S3Location>,
172    /// <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
173    pub max_sessions_per_instance: ::std::option::Option<i32>,
174}
175impl CreateFleetInput {
176    /// <p>A unique name for the fleet.</p>
177    pub fn name(&self) -> ::std::option::Option<&str> {
178        self.name.as_deref()
179    }
180    /// <p>The name of the image used to create the fleet.</p>
181    pub fn image_name(&self) -> ::std::option::Option<&str> {
182        self.image_name.as_deref()
183    }
184    /// <p>The ARN of the public, private, or shared image to use.</p>
185    pub fn image_arn(&self) -> ::std::option::Option<&str> {
186        self.image_arn.as_deref()
187    }
188    /// <p>The instance type to use when launching fleet instances. The following instance types are available:</p>
189    /// <ul>
190    /// <li>
191    /// <p>stream.standard.small</p></li>
192    /// <li>
193    /// <p>stream.standard.medium</p></li>
194    /// <li>
195    /// <p>stream.standard.large</p></li>
196    /// <li>
197    /// <p>stream.standard.xlarge</p></li>
198    /// <li>
199    /// <p>stream.standard.2xlarge</p></li>
200    /// <li>
201    /// <p>stream.compute.large</p></li>
202    /// <li>
203    /// <p>stream.compute.xlarge</p></li>
204    /// <li>
205    /// <p>stream.compute.2xlarge</p></li>
206    /// <li>
207    /// <p>stream.compute.4xlarge</p></li>
208    /// <li>
209    /// <p>stream.compute.8xlarge</p></li>
210    /// <li>
211    /// <p>stream.memory.large</p></li>
212    /// <li>
213    /// <p>stream.memory.xlarge</p></li>
214    /// <li>
215    /// <p>stream.memory.2xlarge</p></li>
216    /// <li>
217    /// <p>stream.memory.4xlarge</p></li>
218    /// <li>
219    /// <p>stream.memory.8xlarge</p></li>
220    /// <li>
221    /// <p>stream.memory.z1d.large</p></li>
222    /// <li>
223    /// <p>stream.memory.z1d.xlarge</p></li>
224    /// <li>
225    /// <p>stream.memory.z1d.2xlarge</p></li>
226    /// <li>
227    /// <p>stream.memory.z1d.3xlarge</p></li>
228    /// <li>
229    /// <p>stream.memory.z1d.6xlarge</p></li>
230    /// <li>
231    /// <p>stream.memory.z1d.12xlarge</p></li>
232    /// <li>
233    /// <p>stream.graphics-design.large</p></li>
234    /// <li>
235    /// <p>stream.graphics-design.xlarge</p></li>
236    /// <li>
237    /// <p>stream.graphics-design.2xlarge</p></li>
238    /// <li>
239    /// <p>stream.graphics-design.4xlarge</p></li>
240    /// <li>
241    /// <p>stream.graphics-desktop.2xlarge</p></li>
242    /// <li>
243    /// <p>stream.graphics.g4dn.xlarge</p></li>
244    /// <li>
245    /// <p>stream.graphics.g4dn.2xlarge</p></li>
246    /// <li>
247    /// <p>stream.graphics.g4dn.4xlarge</p></li>
248    /// <li>
249    /// <p>stream.graphics.g4dn.8xlarge</p></li>
250    /// <li>
251    /// <p>stream.graphics.g4dn.12xlarge</p></li>
252    /// <li>
253    /// <p>stream.graphics.g4dn.16xlarge</p></li>
254    /// <li>
255    /// <p>stream.graphics.g5.xlarge</p></li>
256    /// <li>
257    /// <p>stream.graphics.g5.2xlarge</p></li>
258    /// <li>
259    /// <p>stream.graphics.g5.4xlarge</p></li>
260    /// <li>
261    /// <p>stream.graphics.g5.8xlarge</p></li>
262    /// <li>
263    /// <p>stream.graphics.g5.12xlarge</p></li>
264    /// <li>
265    /// <p>stream.graphics.g5.16xlarge</p></li>
266    /// <li>
267    /// <p>stream.graphics.g5.24xlarge</p></li>
268    /// <li>
269    /// <p>stream.graphics-pro.4xlarge</p></li>
270    /// <li>
271    /// <p>stream.graphics-pro.8xlarge</p></li>
272    /// <li>
273    /// <p>stream.graphics-pro.16xlarge</p></li>
274    /// </ul>
275    /// <p>The following instance types are available for Elastic fleets:</p>
276    /// <ul>
277    /// <li>
278    /// <p>stream.standard.small</p></li>
279    /// <li>
280    /// <p>stream.standard.medium</p></li>
281    /// <li>
282    /// <p>stream.standard.large</p></li>
283    /// <li>
284    /// <p>stream.standard.xlarge</p></li>
285    /// <li>
286    /// <p>stream.standard.2xlarge</p></li>
287    /// </ul>
288    pub fn instance_type(&self) -> ::std::option::Option<&str> {
289        self.instance_type.as_deref()
290    }
291    /// <p>The fleet type.</p>
292    /// <dl>
293    /// <dt>
294    /// ALWAYS_ON
295    /// </dt>
296    /// <dd>
297    /// <p>Provides users with instant-on access to their apps. You are charged for all running instances in your fleet, even if no users are streaming apps.</p>
298    /// </dd>
299    /// <dt>
300    /// ON_DEMAND
301    /// </dt>
302    /// <dd>
303    /// <p>Provide users with access to applications after they connect, which takes one to two minutes. You are charged for instance streaming when users are connected and a small hourly fee for instances that are not streaming apps.</p>
304    /// </dd>
305    /// </dl>
306    pub fn fleet_type(&self) -> ::std::option::Option<&crate::types::FleetType> {
307        self.fleet_type.as_ref()
308    }
309    /// <p>The desired capacity for the fleet. This is not allowed for Elastic fleets. For Elastic fleets, specify MaxConcurrentSessions instead.</p>
310    pub fn compute_capacity(&self) -> ::std::option::Option<&crate::types::ComputeCapacity> {
311        self.compute_capacity.as_ref()
312    }
313    /// <p>The VPC configuration for the fleet. This is required for Elastic fleets, but not required for other fleet types. Elastic fleets require that you specify at least two subnets in different availability zones.</p>
314    pub fn vpc_config(&self) -> ::std::option::Option<&crate::types::VpcConfig> {
315        self.vpc_config.as_ref()
316    }
317    /// <p>The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance.</p>
318    /// <p>Specify a value between 600 and 432000.</p>
319    pub fn max_user_duration_in_seconds(&self) -> ::std::option::Option<i32> {
320        self.max_user_duration_in_seconds
321    }
322    /// <p>The amount of time that a streaming session remains active after users disconnect. If users try to reconnect to the streaming session after a disconnection or network interruption within this time interval, they are connected to their previous session. Otherwise, they are connected to a new session with a new streaming instance.</p>
323    /// <p>Specify a value between 60 and 36000.</p>
324    pub fn disconnect_timeout_in_seconds(&self) -> ::std::option::Option<i32> {
325        self.disconnect_timeout_in_seconds
326    }
327    /// <p>The description to display.</p>
328    pub fn description(&self) -> ::std::option::Option<&str> {
329        self.description.as_deref()
330    }
331    /// <p>The fleet name to display.</p>
332    pub fn display_name(&self) -> ::std::option::Option<&str> {
333        self.display_name.as_deref()
334    }
335    /// <p>Enables or disables default internet access for the fleet.</p>
336    pub fn enable_default_internet_access(&self) -> ::std::option::Option<bool> {
337        self.enable_default_internet_access
338    }
339    /// <p>The name of the directory and organizational unit (OU) to use to join the fleet to a Microsoft Active Directory domain. This is not allowed for Elastic fleets.</p>
340    pub fn domain_join_info(&self) -> ::std::option::Option<&crate::types::DomainJoinInfo> {
341        self.domain_join_info.as_ref()
342    }
343    /// <p>The tags to associate with the fleet. A tag is a key-value pair, and the value is optional. For example, Environment=Test. If you do not specify a value, Environment=.</p>
344    /// <p>If you do not specify a value, the value is set to an empty string.</p>
345    /// <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters:</p>
346    /// <p>_ . : / = + \ - @</p>
347    /// <p>For more information, see <a href="https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html">Tagging Your Resources</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>
348    pub fn tags(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
349        self.tags.as_ref()
350    }
351    /// <p>The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the <code>DisconnectTimeoutInSeconds</code> time interval begins. Users are notified before they are disconnected due to inactivity. If they try to reconnect to the streaming session before the time interval specified in <code>DisconnectTimeoutInSeconds</code> elapses, they are connected to their previous session. Users are considered idle when they stop providing keyboard or mouse input during their streaming session. File uploads and downloads, audio in, audio out, and pixels changing do not qualify as user activity. If users continue to be idle after the time interval in <code>IdleDisconnectTimeoutInSeconds</code> elapses, they are disconnected.</p>
352    /// <p>To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise, specify a value between 60 and 36000. The default value is 0.</p><note>
353    /// <p>If you enable this feature, we recommend that you specify a value that corresponds exactly to a whole number of minutes (for example, 60, 120, and 180). If you don't do this, the value is rounded to the nearest minute. For example, if you specify a value of 70, users are disconnected after 1 minute of inactivity. If you specify a value that is at the midpoint between two different minutes, the value is rounded up. For example, if you specify a value of 90, users are disconnected after 2 minutes of inactivity.</p>
354    /// </note>
355    pub fn idle_disconnect_timeout_in_seconds(&self) -> ::std::option::Option<i32> {
356        self.idle_disconnect_timeout_in_seconds
357    }
358    /// <p>The Amazon Resource Name (ARN) of the IAM role to apply to the fleet. To assume a role, a fleet instance calls the AWS Security Token Service (STS) <code>AssumeRole</code> API operation and passes the ARN of the role to use. The operation creates a new session with temporary credentials. AppStream 2.0 retrieves the temporary credentials and creates the <b>appstream_machine_role</b> credential profile on the instance.</p>
359    /// <p>For more information, see <a href="https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html">Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>
360    pub fn iam_role_arn(&self) -> ::std::option::Option<&str> {
361        self.iam_role_arn.as_deref()
362    }
363    /// <p>The AppStream 2.0 view that is displayed to your users when they stream from the fleet. When <code>APP</code> is specified, only the windows of applications opened by users display. When <code>DESKTOP</code> is specified, the standard desktop that is provided by the operating system displays.</p>
364    /// <p>The default value is <code>APP</code>.</p>
365    pub fn stream_view(&self) -> ::std::option::Option<&crate::types::StreamView> {
366        self.stream_view.as_ref()
367    }
368    /// <p>The fleet platform. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported for Elastic fleets.</p>
369    pub fn platform(&self) -> ::std::option::Option<&crate::types::PlatformType> {
370        self.platform.as_ref()
371    }
372    /// <p>The maximum concurrent sessions of the Elastic fleet. This is required for Elastic fleets, and not allowed for other fleet types.</p>
373    pub fn max_concurrent_sessions(&self) -> ::std::option::Option<i32> {
374        self.max_concurrent_sessions
375    }
376    /// <p>The USB device filter strings that specify which USB devices a user can redirect to the fleet streaming session, when using the Windows native client. This is allowed but not required for Elastic fleets.</p>
377    ///
378    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.usb_device_filter_strings.is_none()`.
379    pub fn usb_device_filter_strings(&self) -> &[::std::string::String] {
380        self.usb_device_filter_strings.as_deref().unwrap_or_default()
381    }
382    /// <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
383    pub fn session_script_s3_location(&self) -> ::std::option::Option<&crate::types::S3Location> {
384        self.session_script_s3_location.as_ref()
385    }
386    /// <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
387    pub fn max_sessions_per_instance(&self) -> ::std::option::Option<i32> {
388        self.max_sessions_per_instance
389    }
390}
391impl CreateFleetInput {
392    /// Creates a new builder-style object to manufacture [`CreateFleetInput`](crate::operation::create_fleet::CreateFleetInput).
393    pub fn builder() -> crate::operation::create_fleet::builders::CreateFleetInputBuilder {
394        crate::operation::create_fleet::builders::CreateFleetInputBuilder::default()
395    }
396}
397
398/// A builder for [`CreateFleetInput`](crate::operation::create_fleet::CreateFleetInput).
399#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
400#[non_exhaustive]
401pub struct CreateFleetInputBuilder {
402    pub(crate) name: ::std::option::Option<::std::string::String>,
403    pub(crate) image_name: ::std::option::Option<::std::string::String>,
404    pub(crate) image_arn: ::std::option::Option<::std::string::String>,
405    pub(crate) instance_type: ::std::option::Option<::std::string::String>,
406    pub(crate) fleet_type: ::std::option::Option<crate::types::FleetType>,
407    pub(crate) compute_capacity: ::std::option::Option<crate::types::ComputeCapacity>,
408    pub(crate) vpc_config: ::std::option::Option<crate::types::VpcConfig>,
409    pub(crate) max_user_duration_in_seconds: ::std::option::Option<i32>,
410    pub(crate) disconnect_timeout_in_seconds: ::std::option::Option<i32>,
411    pub(crate) description: ::std::option::Option<::std::string::String>,
412    pub(crate) display_name: ::std::option::Option<::std::string::String>,
413    pub(crate) enable_default_internet_access: ::std::option::Option<bool>,
414    pub(crate) domain_join_info: ::std::option::Option<crate::types::DomainJoinInfo>,
415    pub(crate) tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
416    pub(crate) idle_disconnect_timeout_in_seconds: ::std::option::Option<i32>,
417    pub(crate) iam_role_arn: ::std::option::Option<::std::string::String>,
418    pub(crate) stream_view: ::std::option::Option<crate::types::StreamView>,
419    pub(crate) platform: ::std::option::Option<crate::types::PlatformType>,
420    pub(crate) max_concurrent_sessions: ::std::option::Option<i32>,
421    pub(crate) usb_device_filter_strings: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
422    pub(crate) session_script_s3_location: ::std::option::Option<crate::types::S3Location>,
423    pub(crate) max_sessions_per_instance: ::std::option::Option<i32>,
424}
425impl CreateFleetInputBuilder {
426    /// <p>A unique name for the fleet.</p>
427    /// This field is required.
428    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
429        self.name = ::std::option::Option::Some(input.into());
430        self
431    }
432    /// <p>A unique name for the fleet.</p>
433    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
434        self.name = input;
435        self
436    }
437    /// <p>A unique name for the fleet.</p>
438    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
439        &self.name
440    }
441    /// <p>The name of the image used to create the fleet.</p>
442    pub fn image_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
443        self.image_name = ::std::option::Option::Some(input.into());
444        self
445    }
446    /// <p>The name of the image used to create the fleet.</p>
447    pub fn set_image_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
448        self.image_name = input;
449        self
450    }
451    /// <p>The name of the image used to create the fleet.</p>
452    pub fn get_image_name(&self) -> &::std::option::Option<::std::string::String> {
453        &self.image_name
454    }
455    /// <p>The ARN of the public, private, or shared image to use.</p>
456    pub fn image_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
457        self.image_arn = ::std::option::Option::Some(input.into());
458        self
459    }
460    /// <p>The ARN of the public, private, or shared image to use.</p>
461    pub fn set_image_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
462        self.image_arn = input;
463        self
464    }
465    /// <p>The ARN of the public, private, or shared image to use.</p>
466    pub fn get_image_arn(&self) -> &::std::option::Option<::std::string::String> {
467        &self.image_arn
468    }
469    /// <p>The instance type to use when launching fleet instances. The following instance types are available:</p>
470    /// <ul>
471    /// <li>
472    /// <p>stream.standard.small</p></li>
473    /// <li>
474    /// <p>stream.standard.medium</p></li>
475    /// <li>
476    /// <p>stream.standard.large</p></li>
477    /// <li>
478    /// <p>stream.standard.xlarge</p></li>
479    /// <li>
480    /// <p>stream.standard.2xlarge</p></li>
481    /// <li>
482    /// <p>stream.compute.large</p></li>
483    /// <li>
484    /// <p>stream.compute.xlarge</p></li>
485    /// <li>
486    /// <p>stream.compute.2xlarge</p></li>
487    /// <li>
488    /// <p>stream.compute.4xlarge</p></li>
489    /// <li>
490    /// <p>stream.compute.8xlarge</p></li>
491    /// <li>
492    /// <p>stream.memory.large</p></li>
493    /// <li>
494    /// <p>stream.memory.xlarge</p></li>
495    /// <li>
496    /// <p>stream.memory.2xlarge</p></li>
497    /// <li>
498    /// <p>stream.memory.4xlarge</p></li>
499    /// <li>
500    /// <p>stream.memory.8xlarge</p></li>
501    /// <li>
502    /// <p>stream.memory.z1d.large</p></li>
503    /// <li>
504    /// <p>stream.memory.z1d.xlarge</p></li>
505    /// <li>
506    /// <p>stream.memory.z1d.2xlarge</p></li>
507    /// <li>
508    /// <p>stream.memory.z1d.3xlarge</p></li>
509    /// <li>
510    /// <p>stream.memory.z1d.6xlarge</p></li>
511    /// <li>
512    /// <p>stream.memory.z1d.12xlarge</p></li>
513    /// <li>
514    /// <p>stream.graphics-design.large</p></li>
515    /// <li>
516    /// <p>stream.graphics-design.xlarge</p></li>
517    /// <li>
518    /// <p>stream.graphics-design.2xlarge</p></li>
519    /// <li>
520    /// <p>stream.graphics-design.4xlarge</p></li>
521    /// <li>
522    /// <p>stream.graphics-desktop.2xlarge</p></li>
523    /// <li>
524    /// <p>stream.graphics.g4dn.xlarge</p></li>
525    /// <li>
526    /// <p>stream.graphics.g4dn.2xlarge</p></li>
527    /// <li>
528    /// <p>stream.graphics.g4dn.4xlarge</p></li>
529    /// <li>
530    /// <p>stream.graphics.g4dn.8xlarge</p></li>
531    /// <li>
532    /// <p>stream.graphics.g4dn.12xlarge</p></li>
533    /// <li>
534    /// <p>stream.graphics.g4dn.16xlarge</p></li>
535    /// <li>
536    /// <p>stream.graphics.g5.xlarge</p></li>
537    /// <li>
538    /// <p>stream.graphics.g5.2xlarge</p></li>
539    /// <li>
540    /// <p>stream.graphics.g5.4xlarge</p></li>
541    /// <li>
542    /// <p>stream.graphics.g5.8xlarge</p></li>
543    /// <li>
544    /// <p>stream.graphics.g5.12xlarge</p></li>
545    /// <li>
546    /// <p>stream.graphics.g5.16xlarge</p></li>
547    /// <li>
548    /// <p>stream.graphics.g5.24xlarge</p></li>
549    /// <li>
550    /// <p>stream.graphics-pro.4xlarge</p></li>
551    /// <li>
552    /// <p>stream.graphics-pro.8xlarge</p></li>
553    /// <li>
554    /// <p>stream.graphics-pro.16xlarge</p></li>
555    /// </ul>
556    /// <p>The following instance types are available for Elastic fleets:</p>
557    /// <ul>
558    /// <li>
559    /// <p>stream.standard.small</p></li>
560    /// <li>
561    /// <p>stream.standard.medium</p></li>
562    /// <li>
563    /// <p>stream.standard.large</p></li>
564    /// <li>
565    /// <p>stream.standard.xlarge</p></li>
566    /// <li>
567    /// <p>stream.standard.2xlarge</p></li>
568    /// </ul>
569    /// This field is required.
570    pub fn instance_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
571        self.instance_type = ::std::option::Option::Some(input.into());
572        self
573    }
574    /// <p>The instance type to use when launching fleet instances. The following instance types are available:</p>
575    /// <ul>
576    /// <li>
577    /// <p>stream.standard.small</p></li>
578    /// <li>
579    /// <p>stream.standard.medium</p></li>
580    /// <li>
581    /// <p>stream.standard.large</p></li>
582    /// <li>
583    /// <p>stream.standard.xlarge</p></li>
584    /// <li>
585    /// <p>stream.standard.2xlarge</p></li>
586    /// <li>
587    /// <p>stream.compute.large</p></li>
588    /// <li>
589    /// <p>stream.compute.xlarge</p></li>
590    /// <li>
591    /// <p>stream.compute.2xlarge</p></li>
592    /// <li>
593    /// <p>stream.compute.4xlarge</p></li>
594    /// <li>
595    /// <p>stream.compute.8xlarge</p></li>
596    /// <li>
597    /// <p>stream.memory.large</p></li>
598    /// <li>
599    /// <p>stream.memory.xlarge</p></li>
600    /// <li>
601    /// <p>stream.memory.2xlarge</p></li>
602    /// <li>
603    /// <p>stream.memory.4xlarge</p></li>
604    /// <li>
605    /// <p>stream.memory.8xlarge</p></li>
606    /// <li>
607    /// <p>stream.memory.z1d.large</p></li>
608    /// <li>
609    /// <p>stream.memory.z1d.xlarge</p></li>
610    /// <li>
611    /// <p>stream.memory.z1d.2xlarge</p></li>
612    /// <li>
613    /// <p>stream.memory.z1d.3xlarge</p></li>
614    /// <li>
615    /// <p>stream.memory.z1d.6xlarge</p></li>
616    /// <li>
617    /// <p>stream.memory.z1d.12xlarge</p></li>
618    /// <li>
619    /// <p>stream.graphics-design.large</p></li>
620    /// <li>
621    /// <p>stream.graphics-design.xlarge</p></li>
622    /// <li>
623    /// <p>stream.graphics-design.2xlarge</p></li>
624    /// <li>
625    /// <p>stream.graphics-design.4xlarge</p></li>
626    /// <li>
627    /// <p>stream.graphics-desktop.2xlarge</p></li>
628    /// <li>
629    /// <p>stream.graphics.g4dn.xlarge</p></li>
630    /// <li>
631    /// <p>stream.graphics.g4dn.2xlarge</p></li>
632    /// <li>
633    /// <p>stream.graphics.g4dn.4xlarge</p></li>
634    /// <li>
635    /// <p>stream.graphics.g4dn.8xlarge</p></li>
636    /// <li>
637    /// <p>stream.graphics.g4dn.12xlarge</p></li>
638    /// <li>
639    /// <p>stream.graphics.g4dn.16xlarge</p></li>
640    /// <li>
641    /// <p>stream.graphics.g5.xlarge</p></li>
642    /// <li>
643    /// <p>stream.graphics.g5.2xlarge</p></li>
644    /// <li>
645    /// <p>stream.graphics.g5.4xlarge</p></li>
646    /// <li>
647    /// <p>stream.graphics.g5.8xlarge</p></li>
648    /// <li>
649    /// <p>stream.graphics.g5.12xlarge</p></li>
650    /// <li>
651    /// <p>stream.graphics.g5.16xlarge</p></li>
652    /// <li>
653    /// <p>stream.graphics.g5.24xlarge</p></li>
654    /// <li>
655    /// <p>stream.graphics-pro.4xlarge</p></li>
656    /// <li>
657    /// <p>stream.graphics-pro.8xlarge</p></li>
658    /// <li>
659    /// <p>stream.graphics-pro.16xlarge</p></li>
660    /// </ul>
661    /// <p>The following instance types are available for Elastic fleets:</p>
662    /// <ul>
663    /// <li>
664    /// <p>stream.standard.small</p></li>
665    /// <li>
666    /// <p>stream.standard.medium</p></li>
667    /// <li>
668    /// <p>stream.standard.large</p></li>
669    /// <li>
670    /// <p>stream.standard.xlarge</p></li>
671    /// <li>
672    /// <p>stream.standard.2xlarge</p></li>
673    /// </ul>
674    pub fn set_instance_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
675        self.instance_type = input;
676        self
677    }
678    /// <p>The instance type to use when launching fleet instances. The following instance types are available:</p>
679    /// <ul>
680    /// <li>
681    /// <p>stream.standard.small</p></li>
682    /// <li>
683    /// <p>stream.standard.medium</p></li>
684    /// <li>
685    /// <p>stream.standard.large</p></li>
686    /// <li>
687    /// <p>stream.standard.xlarge</p></li>
688    /// <li>
689    /// <p>stream.standard.2xlarge</p></li>
690    /// <li>
691    /// <p>stream.compute.large</p></li>
692    /// <li>
693    /// <p>stream.compute.xlarge</p></li>
694    /// <li>
695    /// <p>stream.compute.2xlarge</p></li>
696    /// <li>
697    /// <p>stream.compute.4xlarge</p></li>
698    /// <li>
699    /// <p>stream.compute.8xlarge</p></li>
700    /// <li>
701    /// <p>stream.memory.large</p></li>
702    /// <li>
703    /// <p>stream.memory.xlarge</p></li>
704    /// <li>
705    /// <p>stream.memory.2xlarge</p></li>
706    /// <li>
707    /// <p>stream.memory.4xlarge</p></li>
708    /// <li>
709    /// <p>stream.memory.8xlarge</p></li>
710    /// <li>
711    /// <p>stream.memory.z1d.large</p></li>
712    /// <li>
713    /// <p>stream.memory.z1d.xlarge</p></li>
714    /// <li>
715    /// <p>stream.memory.z1d.2xlarge</p></li>
716    /// <li>
717    /// <p>stream.memory.z1d.3xlarge</p></li>
718    /// <li>
719    /// <p>stream.memory.z1d.6xlarge</p></li>
720    /// <li>
721    /// <p>stream.memory.z1d.12xlarge</p></li>
722    /// <li>
723    /// <p>stream.graphics-design.large</p></li>
724    /// <li>
725    /// <p>stream.graphics-design.xlarge</p></li>
726    /// <li>
727    /// <p>stream.graphics-design.2xlarge</p></li>
728    /// <li>
729    /// <p>stream.graphics-design.4xlarge</p></li>
730    /// <li>
731    /// <p>stream.graphics-desktop.2xlarge</p></li>
732    /// <li>
733    /// <p>stream.graphics.g4dn.xlarge</p></li>
734    /// <li>
735    /// <p>stream.graphics.g4dn.2xlarge</p></li>
736    /// <li>
737    /// <p>stream.graphics.g4dn.4xlarge</p></li>
738    /// <li>
739    /// <p>stream.graphics.g4dn.8xlarge</p></li>
740    /// <li>
741    /// <p>stream.graphics.g4dn.12xlarge</p></li>
742    /// <li>
743    /// <p>stream.graphics.g4dn.16xlarge</p></li>
744    /// <li>
745    /// <p>stream.graphics.g5.xlarge</p></li>
746    /// <li>
747    /// <p>stream.graphics.g5.2xlarge</p></li>
748    /// <li>
749    /// <p>stream.graphics.g5.4xlarge</p></li>
750    /// <li>
751    /// <p>stream.graphics.g5.8xlarge</p></li>
752    /// <li>
753    /// <p>stream.graphics.g5.12xlarge</p></li>
754    /// <li>
755    /// <p>stream.graphics.g5.16xlarge</p></li>
756    /// <li>
757    /// <p>stream.graphics.g5.24xlarge</p></li>
758    /// <li>
759    /// <p>stream.graphics-pro.4xlarge</p></li>
760    /// <li>
761    /// <p>stream.graphics-pro.8xlarge</p></li>
762    /// <li>
763    /// <p>stream.graphics-pro.16xlarge</p></li>
764    /// </ul>
765    /// <p>The following instance types are available for Elastic fleets:</p>
766    /// <ul>
767    /// <li>
768    /// <p>stream.standard.small</p></li>
769    /// <li>
770    /// <p>stream.standard.medium</p></li>
771    /// <li>
772    /// <p>stream.standard.large</p></li>
773    /// <li>
774    /// <p>stream.standard.xlarge</p></li>
775    /// <li>
776    /// <p>stream.standard.2xlarge</p></li>
777    /// </ul>
778    pub fn get_instance_type(&self) -> &::std::option::Option<::std::string::String> {
779        &self.instance_type
780    }
781    /// <p>The fleet type.</p>
782    /// <dl>
783    /// <dt>
784    /// ALWAYS_ON
785    /// </dt>
786    /// <dd>
787    /// <p>Provides users with instant-on access to their apps. You are charged for all running instances in your fleet, even if no users are streaming apps.</p>
788    /// </dd>
789    /// <dt>
790    /// ON_DEMAND
791    /// </dt>
792    /// <dd>
793    /// <p>Provide users with access to applications after they connect, which takes one to two minutes. You are charged for instance streaming when users are connected and a small hourly fee for instances that are not streaming apps.</p>
794    /// </dd>
795    /// </dl>
796    pub fn fleet_type(mut self, input: crate::types::FleetType) -> Self {
797        self.fleet_type = ::std::option::Option::Some(input);
798        self
799    }
800    /// <p>The fleet type.</p>
801    /// <dl>
802    /// <dt>
803    /// ALWAYS_ON
804    /// </dt>
805    /// <dd>
806    /// <p>Provides users with instant-on access to their apps. You are charged for all running instances in your fleet, even if no users are streaming apps.</p>
807    /// </dd>
808    /// <dt>
809    /// ON_DEMAND
810    /// </dt>
811    /// <dd>
812    /// <p>Provide users with access to applications after they connect, which takes one to two minutes. You are charged for instance streaming when users are connected and a small hourly fee for instances that are not streaming apps.</p>
813    /// </dd>
814    /// </dl>
815    pub fn set_fleet_type(mut self, input: ::std::option::Option<crate::types::FleetType>) -> Self {
816        self.fleet_type = input;
817        self
818    }
819    /// <p>The fleet type.</p>
820    /// <dl>
821    /// <dt>
822    /// ALWAYS_ON
823    /// </dt>
824    /// <dd>
825    /// <p>Provides users with instant-on access to their apps. You are charged for all running instances in your fleet, even if no users are streaming apps.</p>
826    /// </dd>
827    /// <dt>
828    /// ON_DEMAND
829    /// </dt>
830    /// <dd>
831    /// <p>Provide users with access to applications after they connect, which takes one to two minutes. You are charged for instance streaming when users are connected and a small hourly fee for instances that are not streaming apps.</p>
832    /// </dd>
833    /// </dl>
834    pub fn get_fleet_type(&self) -> &::std::option::Option<crate::types::FleetType> {
835        &self.fleet_type
836    }
837    /// <p>The desired capacity for the fleet. This is not allowed for Elastic fleets. For Elastic fleets, specify MaxConcurrentSessions instead.</p>
838    pub fn compute_capacity(mut self, input: crate::types::ComputeCapacity) -> Self {
839        self.compute_capacity = ::std::option::Option::Some(input);
840        self
841    }
842    /// <p>The desired capacity for the fleet. This is not allowed for Elastic fleets. For Elastic fleets, specify MaxConcurrentSessions instead.</p>
843    pub fn set_compute_capacity(mut self, input: ::std::option::Option<crate::types::ComputeCapacity>) -> Self {
844        self.compute_capacity = input;
845        self
846    }
847    /// <p>The desired capacity for the fleet. This is not allowed for Elastic fleets. For Elastic fleets, specify MaxConcurrentSessions instead.</p>
848    pub fn get_compute_capacity(&self) -> &::std::option::Option<crate::types::ComputeCapacity> {
849        &self.compute_capacity
850    }
851    /// <p>The VPC configuration for the fleet. This is required for Elastic fleets, but not required for other fleet types. Elastic fleets require that you specify at least two subnets in different availability zones.</p>
852    pub fn vpc_config(mut self, input: crate::types::VpcConfig) -> Self {
853        self.vpc_config = ::std::option::Option::Some(input);
854        self
855    }
856    /// <p>The VPC configuration for the fleet. This is required for Elastic fleets, but not required for other fleet types. Elastic fleets require that you specify at least two subnets in different availability zones.</p>
857    pub fn set_vpc_config(mut self, input: ::std::option::Option<crate::types::VpcConfig>) -> Self {
858        self.vpc_config = input;
859        self
860    }
861    /// <p>The VPC configuration for the fleet. This is required for Elastic fleets, but not required for other fleet types. Elastic fleets require that you specify at least two subnets in different availability zones.</p>
862    pub fn get_vpc_config(&self) -> &::std::option::Option<crate::types::VpcConfig> {
863        &self.vpc_config
864    }
865    /// <p>The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance.</p>
866    /// <p>Specify a value between 600 and 432000.</p>
867    pub fn max_user_duration_in_seconds(mut self, input: i32) -> Self {
868        self.max_user_duration_in_seconds = ::std::option::Option::Some(input);
869        self
870    }
871    /// <p>The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance.</p>
872    /// <p>Specify a value between 600 and 432000.</p>
873    pub fn set_max_user_duration_in_seconds(mut self, input: ::std::option::Option<i32>) -> Self {
874        self.max_user_duration_in_seconds = input;
875        self
876    }
877    /// <p>The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance.</p>
878    /// <p>Specify a value between 600 and 432000.</p>
879    pub fn get_max_user_duration_in_seconds(&self) -> &::std::option::Option<i32> {
880        &self.max_user_duration_in_seconds
881    }
882    /// <p>The amount of time that a streaming session remains active after users disconnect. If users try to reconnect to the streaming session after a disconnection or network interruption within this time interval, they are connected to their previous session. Otherwise, they are connected to a new session with a new streaming instance.</p>
883    /// <p>Specify a value between 60 and 36000.</p>
884    pub fn disconnect_timeout_in_seconds(mut self, input: i32) -> Self {
885        self.disconnect_timeout_in_seconds = ::std::option::Option::Some(input);
886        self
887    }
888    /// <p>The amount of time that a streaming session remains active after users disconnect. If users try to reconnect to the streaming session after a disconnection or network interruption within this time interval, they are connected to their previous session. Otherwise, they are connected to a new session with a new streaming instance.</p>
889    /// <p>Specify a value between 60 and 36000.</p>
890    pub fn set_disconnect_timeout_in_seconds(mut self, input: ::std::option::Option<i32>) -> Self {
891        self.disconnect_timeout_in_seconds = input;
892        self
893    }
894    /// <p>The amount of time that a streaming session remains active after users disconnect. If users try to reconnect to the streaming session after a disconnection or network interruption within this time interval, they are connected to their previous session. Otherwise, they are connected to a new session with a new streaming instance.</p>
895    /// <p>Specify a value between 60 and 36000.</p>
896    pub fn get_disconnect_timeout_in_seconds(&self) -> &::std::option::Option<i32> {
897        &self.disconnect_timeout_in_seconds
898    }
899    /// <p>The description to display.</p>
900    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
901        self.description = ::std::option::Option::Some(input.into());
902        self
903    }
904    /// <p>The description to display.</p>
905    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
906        self.description = input;
907        self
908    }
909    /// <p>The description to display.</p>
910    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
911        &self.description
912    }
913    /// <p>The fleet name to display.</p>
914    pub fn display_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
915        self.display_name = ::std::option::Option::Some(input.into());
916        self
917    }
918    /// <p>The fleet name to display.</p>
919    pub fn set_display_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
920        self.display_name = input;
921        self
922    }
923    /// <p>The fleet name to display.</p>
924    pub fn get_display_name(&self) -> &::std::option::Option<::std::string::String> {
925        &self.display_name
926    }
927    /// <p>Enables or disables default internet access for the fleet.</p>
928    pub fn enable_default_internet_access(mut self, input: bool) -> Self {
929        self.enable_default_internet_access = ::std::option::Option::Some(input);
930        self
931    }
932    /// <p>Enables or disables default internet access for the fleet.</p>
933    pub fn set_enable_default_internet_access(mut self, input: ::std::option::Option<bool>) -> Self {
934        self.enable_default_internet_access = input;
935        self
936    }
937    /// <p>Enables or disables default internet access for the fleet.</p>
938    pub fn get_enable_default_internet_access(&self) -> &::std::option::Option<bool> {
939        &self.enable_default_internet_access
940    }
941    /// <p>The name of the directory and organizational unit (OU) to use to join the fleet to a Microsoft Active Directory domain. This is not allowed for Elastic fleets.</p>
942    pub fn domain_join_info(mut self, input: crate::types::DomainJoinInfo) -> Self {
943        self.domain_join_info = ::std::option::Option::Some(input);
944        self
945    }
946    /// <p>The name of the directory and organizational unit (OU) to use to join the fleet to a Microsoft Active Directory domain. This is not allowed for Elastic fleets.</p>
947    pub fn set_domain_join_info(mut self, input: ::std::option::Option<crate::types::DomainJoinInfo>) -> Self {
948        self.domain_join_info = input;
949        self
950    }
951    /// <p>The name of the directory and organizational unit (OU) to use to join the fleet to a Microsoft Active Directory domain. This is not allowed for Elastic fleets.</p>
952    pub fn get_domain_join_info(&self) -> &::std::option::Option<crate::types::DomainJoinInfo> {
953        &self.domain_join_info
954    }
955    /// Adds a key-value pair to `tags`.
956    ///
957    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
958    ///
959    /// <p>The tags to associate with the fleet. A tag is a key-value pair, and the value is optional. For example, Environment=Test. If you do not specify a value, Environment=.</p>
960    /// <p>If you do not specify a value, the value is set to an empty string.</p>
961    /// <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters:</p>
962    /// <p>_ . : / = + \ - @</p>
963    /// <p>For more information, see <a href="https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html">Tagging Your Resources</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>
964    pub fn tags(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
965        let mut hash_map = self.tags.unwrap_or_default();
966        hash_map.insert(k.into(), v.into());
967        self.tags = ::std::option::Option::Some(hash_map);
968        self
969    }
970    /// <p>The tags to associate with the fleet. A tag is a key-value pair, and the value is optional. For example, Environment=Test. If you do not specify a value, Environment=.</p>
971    /// <p>If you do not specify a value, the value is set to an empty string.</p>
972    /// <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters:</p>
973    /// <p>_ . : / = + \ - @</p>
974    /// <p>For more information, see <a href="https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html">Tagging Your Resources</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>
975    pub fn set_tags(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
976        self.tags = input;
977        self
978    }
979    /// <p>The tags to associate with the fleet. A tag is a key-value pair, and the value is optional. For example, Environment=Test. If you do not specify a value, Environment=.</p>
980    /// <p>If you do not specify a value, the value is set to an empty string.</p>
981    /// <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters:</p>
982    /// <p>_ . : / = + \ - @</p>
983    /// <p>For more information, see <a href="https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html">Tagging Your Resources</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>
984    pub fn get_tags(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
985        &self.tags
986    }
987    /// <p>The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the <code>DisconnectTimeoutInSeconds</code> time interval begins. Users are notified before they are disconnected due to inactivity. If they try to reconnect to the streaming session before the time interval specified in <code>DisconnectTimeoutInSeconds</code> elapses, they are connected to their previous session. Users are considered idle when they stop providing keyboard or mouse input during their streaming session. File uploads and downloads, audio in, audio out, and pixels changing do not qualify as user activity. If users continue to be idle after the time interval in <code>IdleDisconnectTimeoutInSeconds</code> elapses, they are disconnected.</p>
988    /// <p>To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise, specify a value between 60 and 36000. The default value is 0.</p><note>
989    /// <p>If you enable this feature, we recommend that you specify a value that corresponds exactly to a whole number of minutes (for example, 60, 120, and 180). If you don't do this, the value is rounded to the nearest minute. For example, if you specify a value of 70, users are disconnected after 1 minute of inactivity. If you specify a value that is at the midpoint between two different minutes, the value is rounded up. For example, if you specify a value of 90, users are disconnected after 2 minutes of inactivity.</p>
990    /// </note>
991    pub fn idle_disconnect_timeout_in_seconds(mut self, input: i32) -> Self {
992        self.idle_disconnect_timeout_in_seconds = ::std::option::Option::Some(input);
993        self
994    }
995    /// <p>The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the <code>DisconnectTimeoutInSeconds</code> time interval begins. Users are notified before they are disconnected due to inactivity. If they try to reconnect to the streaming session before the time interval specified in <code>DisconnectTimeoutInSeconds</code> elapses, they are connected to their previous session. Users are considered idle when they stop providing keyboard or mouse input during their streaming session. File uploads and downloads, audio in, audio out, and pixels changing do not qualify as user activity. If users continue to be idle after the time interval in <code>IdleDisconnectTimeoutInSeconds</code> elapses, they are disconnected.</p>
996    /// <p>To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise, specify a value between 60 and 36000. The default value is 0.</p><note>
997    /// <p>If you enable this feature, we recommend that you specify a value that corresponds exactly to a whole number of minutes (for example, 60, 120, and 180). If you don't do this, the value is rounded to the nearest minute. For example, if you specify a value of 70, users are disconnected after 1 minute of inactivity. If you specify a value that is at the midpoint between two different minutes, the value is rounded up. For example, if you specify a value of 90, users are disconnected after 2 minutes of inactivity.</p>
998    /// </note>
999    pub fn set_idle_disconnect_timeout_in_seconds(mut self, input: ::std::option::Option<i32>) -> Self {
1000        self.idle_disconnect_timeout_in_seconds = input;
1001        self
1002    }
1003    /// <p>The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the <code>DisconnectTimeoutInSeconds</code> time interval begins. Users are notified before they are disconnected due to inactivity. If they try to reconnect to the streaming session before the time interval specified in <code>DisconnectTimeoutInSeconds</code> elapses, they are connected to their previous session. Users are considered idle when they stop providing keyboard or mouse input during their streaming session. File uploads and downloads, audio in, audio out, and pixels changing do not qualify as user activity. If users continue to be idle after the time interval in <code>IdleDisconnectTimeoutInSeconds</code> elapses, they are disconnected.</p>
1004    /// <p>To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise, specify a value between 60 and 36000. The default value is 0.</p><note>
1005    /// <p>If you enable this feature, we recommend that you specify a value that corresponds exactly to a whole number of minutes (for example, 60, 120, and 180). If you don't do this, the value is rounded to the nearest minute. For example, if you specify a value of 70, users are disconnected after 1 minute of inactivity. If you specify a value that is at the midpoint between two different minutes, the value is rounded up. For example, if you specify a value of 90, users are disconnected after 2 minutes of inactivity.</p>
1006    /// </note>
1007    pub fn get_idle_disconnect_timeout_in_seconds(&self) -> &::std::option::Option<i32> {
1008        &self.idle_disconnect_timeout_in_seconds
1009    }
1010    /// <p>The Amazon Resource Name (ARN) of the IAM role to apply to the fleet. To assume a role, a fleet instance calls the AWS Security Token Service (STS) <code>AssumeRole</code> API operation and passes the ARN of the role to use. The operation creates a new session with temporary credentials. AppStream 2.0 retrieves the temporary credentials and creates the <b>appstream_machine_role</b> credential profile on the instance.</p>
1011    /// <p>For more information, see <a href="https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html">Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>
1012    pub fn iam_role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1013        self.iam_role_arn = ::std::option::Option::Some(input.into());
1014        self
1015    }
1016    /// <p>The Amazon Resource Name (ARN) of the IAM role to apply to the fleet. To assume a role, a fleet instance calls the AWS Security Token Service (STS) <code>AssumeRole</code> API operation and passes the ARN of the role to use. The operation creates a new session with temporary credentials. AppStream 2.0 retrieves the temporary credentials and creates the <b>appstream_machine_role</b> credential profile on the instance.</p>
1017    /// <p>For more information, see <a href="https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html">Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>
1018    pub fn set_iam_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1019        self.iam_role_arn = input;
1020        self
1021    }
1022    /// <p>The Amazon Resource Name (ARN) of the IAM role to apply to the fleet. To assume a role, a fleet instance calls the AWS Security Token Service (STS) <code>AssumeRole</code> API operation and passes the ARN of the role to use. The operation creates a new session with temporary credentials. AppStream 2.0 retrieves the temporary credentials and creates the <b>appstream_machine_role</b> credential profile on the instance.</p>
1023    /// <p>For more information, see <a href="https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html">Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>
1024    pub fn get_iam_role_arn(&self) -> &::std::option::Option<::std::string::String> {
1025        &self.iam_role_arn
1026    }
1027    /// <p>The AppStream 2.0 view that is displayed to your users when they stream from the fleet. When <code>APP</code> is specified, only the windows of applications opened by users display. When <code>DESKTOP</code> is specified, the standard desktop that is provided by the operating system displays.</p>
1028    /// <p>The default value is <code>APP</code>.</p>
1029    pub fn stream_view(mut self, input: crate::types::StreamView) -> Self {
1030        self.stream_view = ::std::option::Option::Some(input);
1031        self
1032    }
1033    /// <p>The AppStream 2.0 view that is displayed to your users when they stream from the fleet. When <code>APP</code> is specified, only the windows of applications opened by users display. When <code>DESKTOP</code> is specified, the standard desktop that is provided by the operating system displays.</p>
1034    /// <p>The default value is <code>APP</code>.</p>
1035    pub fn set_stream_view(mut self, input: ::std::option::Option<crate::types::StreamView>) -> Self {
1036        self.stream_view = input;
1037        self
1038    }
1039    /// <p>The AppStream 2.0 view that is displayed to your users when they stream from the fleet. When <code>APP</code> is specified, only the windows of applications opened by users display. When <code>DESKTOP</code> is specified, the standard desktop that is provided by the operating system displays.</p>
1040    /// <p>The default value is <code>APP</code>.</p>
1041    pub fn get_stream_view(&self) -> &::std::option::Option<crate::types::StreamView> {
1042        &self.stream_view
1043    }
1044    /// <p>The fleet platform. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported for Elastic fleets.</p>
1045    pub fn platform(mut self, input: crate::types::PlatformType) -> Self {
1046        self.platform = ::std::option::Option::Some(input);
1047        self
1048    }
1049    /// <p>The fleet platform. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported for Elastic fleets.</p>
1050    pub fn set_platform(mut self, input: ::std::option::Option<crate::types::PlatformType>) -> Self {
1051        self.platform = input;
1052        self
1053    }
1054    /// <p>The fleet platform. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported for Elastic fleets.</p>
1055    pub fn get_platform(&self) -> &::std::option::Option<crate::types::PlatformType> {
1056        &self.platform
1057    }
1058    /// <p>The maximum concurrent sessions of the Elastic fleet. This is required for Elastic fleets, and not allowed for other fleet types.</p>
1059    pub fn max_concurrent_sessions(mut self, input: i32) -> Self {
1060        self.max_concurrent_sessions = ::std::option::Option::Some(input);
1061        self
1062    }
1063    /// <p>The maximum concurrent sessions of the Elastic fleet. This is required for Elastic fleets, and not allowed for other fleet types.</p>
1064    pub fn set_max_concurrent_sessions(mut self, input: ::std::option::Option<i32>) -> Self {
1065        self.max_concurrent_sessions = input;
1066        self
1067    }
1068    /// <p>The maximum concurrent sessions of the Elastic fleet. This is required for Elastic fleets, and not allowed for other fleet types.</p>
1069    pub fn get_max_concurrent_sessions(&self) -> &::std::option::Option<i32> {
1070        &self.max_concurrent_sessions
1071    }
1072    /// Appends an item to `usb_device_filter_strings`.
1073    ///
1074    /// To override the contents of this collection use [`set_usb_device_filter_strings`](Self::set_usb_device_filter_strings).
1075    ///
1076    /// <p>The USB device filter strings that specify which USB devices a user can redirect to the fleet streaming session, when using the Windows native client. This is allowed but not required for Elastic fleets.</p>
1077    pub fn usb_device_filter_strings(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1078        let mut v = self.usb_device_filter_strings.unwrap_or_default();
1079        v.push(input.into());
1080        self.usb_device_filter_strings = ::std::option::Option::Some(v);
1081        self
1082    }
1083    /// <p>The USB device filter strings that specify which USB devices a user can redirect to the fleet streaming session, when using the Windows native client. This is allowed but not required for Elastic fleets.</p>
1084    pub fn set_usb_device_filter_strings(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
1085        self.usb_device_filter_strings = input;
1086        self
1087    }
1088    /// <p>The USB device filter strings that specify which USB devices a user can redirect to the fleet streaming session, when using the Windows native client. This is allowed but not required for Elastic fleets.</p>
1089    pub fn get_usb_device_filter_strings(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
1090        &self.usb_device_filter_strings
1091    }
1092    /// <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
1093    pub fn session_script_s3_location(mut self, input: crate::types::S3Location) -> Self {
1094        self.session_script_s3_location = ::std::option::Option::Some(input);
1095        self
1096    }
1097    /// <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
1098    pub fn set_session_script_s3_location(mut self, input: ::std::option::Option<crate::types::S3Location>) -> Self {
1099        self.session_script_s3_location = input;
1100        self
1101    }
1102    /// <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
1103    pub fn get_session_script_s3_location(&self) -> &::std::option::Option<crate::types::S3Location> {
1104        &self.session_script_s3_location
1105    }
1106    /// <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
1107    pub fn max_sessions_per_instance(mut self, input: i32) -> Self {
1108        self.max_sessions_per_instance = ::std::option::Option::Some(input);
1109        self
1110    }
1111    /// <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
1112    pub fn set_max_sessions_per_instance(mut self, input: ::std::option::Option<i32>) -> Self {
1113        self.max_sessions_per_instance = input;
1114        self
1115    }
1116    /// <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
1117    pub fn get_max_sessions_per_instance(&self) -> &::std::option::Option<i32> {
1118        &self.max_sessions_per_instance
1119    }
1120    /// Consumes the builder and constructs a [`CreateFleetInput`](crate::operation::create_fleet::CreateFleetInput).
1121    pub fn build(self) -> ::std::result::Result<crate::operation::create_fleet::CreateFleetInput, ::aws_smithy_types::error::operation::BuildError> {
1122        ::std::result::Result::Ok(crate::operation::create_fleet::CreateFleetInput {
1123            name: self.name,
1124            image_name: self.image_name,
1125            image_arn: self.image_arn,
1126            instance_type: self.instance_type,
1127            fleet_type: self.fleet_type,
1128            compute_capacity: self.compute_capacity,
1129            vpc_config: self.vpc_config,
1130            max_user_duration_in_seconds: self.max_user_duration_in_seconds,
1131            disconnect_timeout_in_seconds: self.disconnect_timeout_in_seconds,
1132            description: self.description,
1133            display_name: self.display_name,
1134            enable_default_internet_access: self.enable_default_internet_access,
1135            domain_join_info: self.domain_join_info,
1136            tags: self.tags,
1137            idle_disconnect_timeout_in_seconds: self.idle_disconnect_timeout_in_seconds,
1138            iam_role_arn: self.iam_role_arn,
1139            stream_view: self.stream_view,
1140            platform: self.platform,
1141            max_concurrent_sessions: self.max_concurrent_sessions,
1142            usb_device_filter_strings: self.usb_device_filter_strings,
1143            session_script_s3_location: self.session_script_s3_location,
1144            max_sessions_per_instance: self.max_sessions_per_instance,
1145        })
1146    }
1147}