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 /// <li>
99 /// <p>stream.graphics.g6.xlarge</p></li>
100 /// <li>
101 /// <p>stream.graphics.g6.2xlarge</p></li>
102 /// <li>
103 /// <p>stream.graphics.g6.4xlarge</p></li>
104 /// <li>
105 /// <p>stream.graphics.g6.8xlarge</p></li>
106 /// <li>
107 /// <p>stream.graphics.g6.16xlarge</p></li>
108 /// <li>
109 /// <p>stream.graphics.g6.12xlarge</p></li>
110 /// <li>
111 /// <p>stream.graphics.g6.24xlarge</p></li>
112 /// <li>
113 /// <p>stream.graphics.gr6.4xlarge</p></li>
114 /// <li>
115 /// <p>stream.graphics.gr6.8xlarge</p></li>
116 /// </ul>
117 /// <p>The following instance types are available for Elastic fleets:</p>
118 /// <ul>
119 /// <li>
120 /// <p>stream.standard.small</p></li>
121 /// <li>
122 /// <p>stream.standard.medium</p></li>
123 /// <li>
124 /// <p>stream.standard.large</p></li>
125 /// <li>
126 /// <p>stream.standard.xlarge</p></li>
127 /// <li>
128 /// <p>stream.standard.2xlarge</p></li>
129 /// </ul>
130 pub instance_type: ::std::option::Option<::std::string::String>,
131 /// <p>The fleet type.</p>
132 /// <dl>
133 /// <dt>
134 /// ALWAYS_ON
135 /// </dt>
136 /// <dd>
137 /// <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>
138 /// </dd>
139 /// <dt>
140 /// ON_DEMAND
141 /// </dt>
142 /// <dd>
143 /// <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>
144 /// </dd>
145 /// </dl>
146 pub fleet_type: ::std::option::Option<crate::types::FleetType>,
147 /// <p>The desired capacity for the fleet. This is not allowed for Elastic fleets. For Elastic fleets, specify MaxConcurrentSessions instead.</p>
148 pub compute_capacity: ::std::option::Option<crate::types::ComputeCapacity>,
149 /// <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>
150 pub vpc_config: ::std::option::Option<crate::types::VpcConfig>,
151 /// <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>
152 /// <p>Specify a value between 600 and 432000.</p>
153 pub max_user_duration_in_seconds: ::std::option::Option<i32>,
154 /// <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>
155 /// <p>Specify a value between 60 and 36000.</p>
156 pub disconnect_timeout_in_seconds: ::std::option::Option<i32>,
157 /// <p>The description to display.</p>
158 pub description: ::std::option::Option<::std::string::String>,
159 /// <p>The fleet name to display.</p>
160 pub display_name: ::std::option::Option<::std::string::String>,
161 /// <p>Enables or disables default internet access for the fleet.</p>
162 pub enable_default_internet_access: ::std::option::Option<bool>,
163 /// <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>
164 pub domain_join_info: ::std::option::Option<crate::types::DomainJoinInfo>,
165 /// <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>
166 /// <p>If you do not specify a value, the value is set to an empty string.</p>
167 /// <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters:</p>
168 /// <p>_ . : / = + \ - @</p>
169 /// <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>
170 pub tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
171 /// <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>
172 /// <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>
173 /// <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>
174 /// </note>
175 pub idle_disconnect_timeout_in_seconds: ::std::option::Option<i32>,
176 /// <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>
177 /// <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>
178 pub iam_role_arn: ::std::option::Option<::std::string::String>,
179 /// <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>
180 /// <p>The default value is <code>APP</code>.</p>
181 pub stream_view: ::std::option::Option<crate::types::StreamView>,
182 /// <p>The fleet platform. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported for Elastic fleets.</p>
183 pub platform: ::std::option::Option<crate::types::PlatformType>,
184 /// <p>The maximum concurrent sessions of the Elastic fleet. This is required for Elastic fleets, and not allowed for other fleet types.</p>
185 pub max_concurrent_sessions: ::std::option::Option<i32>,
186 /// <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>
187 pub usb_device_filter_strings: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
188 /// <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
189 pub session_script_s3_location: ::std::option::Option<crate::types::S3Location>,
190 /// <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
191 pub max_sessions_per_instance: ::std::option::Option<i32>,
192}
193impl CreateFleetInput {
194 /// <p>A unique name for the fleet.</p>
195 pub fn name(&self) -> ::std::option::Option<&str> {
196 self.name.as_deref()
197 }
198 /// <p>The name of the image used to create the fleet.</p>
199 pub fn image_name(&self) -> ::std::option::Option<&str> {
200 self.image_name.as_deref()
201 }
202 /// <p>The ARN of the public, private, or shared image to use.</p>
203 pub fn image_arn(&self) -> ::std::option::Option<&str> {
204 self.image_arn.as_deref()
205 }
206 /// <p>The instance type to use when launching fleet instances. The following instance types are available:</p>
207 /// <ul>
208 /// <li>
209 /// <p>stream.standard.small</p></li>
210 /// <li>
211 /// <p>stream.standard.medium</p></li>
212 /// <li>
213 /// <p>stream.standard.large</p></li>
214 /// <li>
215 /// <p>stream.standard.xlarge</p></li>
216 /// <li>
217 /// <p>stream.standard.2xlarge</p></li>
218 /// <li>
219 /// <p>stream.compute.large</p></li>
220 /// <li>
221 /// <p>stream.compute.xlarge</p></li>
222 /// <li>
223 /// <p>stream.compute.2xlarge</p></li>
224 /// <li>
225 /// <p>stream.compute.4xlarge</p></li>
226 /// <li>
227 /// <p>stream.compute.8xlarge</p></li>
228 /// <li>
229 /// <p>stream.memory.large</p></li>
230 /// <li>
231 /// <p>stream.memory.xlarge</p></li>
232 /// <li>
233 /// <p>stream.memory.2xlarge</p></li>
234 /// <li>
235 /// <p>stream.memory.4xlarge</p></li>
236 /// <li>
237 /// <p>stream.memory.8xlarge</p></li>
238 /// <li>
239 /// <p>stream.memory.z1d.large</p></li>
240 /// <li>
241 /// <p>stream.memory.z1d.xlarge</p></li>
242 /// <li>
243 /// <p>stream.memory.z1d.2xlarge</p></li>
244 /// <li>
245 /// <p>stream.memory.z1d.3xlarge</p></li>
246 /// <li>
247 /// <p>stream.memory.z1d.6xlarge</p></li>
248 /// <li>
249 /// <p>stream.memory.z1d.12xlarge</p></li>
250 /// <li>
251 /// <p>stream.graphics-design.large</p></li>
252 /// <li>
253 /// <p>stream.graphics-design.xlarge</p></li>
254 /// <li>
255 /// <p>stream.graphics-design.2xlarge</p></li>
256 /// <li>
257 /// <p>stream.graphics-design.4xlarge</p></li>
258 /// <li>
259 /// <p>stream.graphics-desktop.2xlarge</p></li>
260 /// <li>
261 /// <p>stream.graphics.g4dn.xlarge</p></li>
262 /// <li>
263 /// <p>stream.graphics.g4dn.2xlarge</p></li>
264 /// <li>
265 /// <p>stream.graphics.g4dn.4xlarge</p></li>
266 /// <li>
267 /// <p>stream.graphics.g4dn.8xlarge</p></li>
268 /// <li>
269 /// <p>stream.graphics.g4dn.12xlarge</p></li>
270 /// <li>
271 /// <p>stream.graphics.g4dn.16xlarge</p></li>
272 /// <li>
273 /// <p>stream.graphics.g5.xlarge</p></li>
274 /// <li>
275 /// <p>stream.graphics.g5.2xlarge</p></li>
276 /// <li>
277 /// <p>stream.graphics.g5.4xlarge</p></li>
278 /// <li>
279 /// <p>stream.graphics.g5.8xlarge</p></li>
280 /// <li>
281 /// <p>stream.graphics.g5.12xlarge</p></li>
282 /// <li>
283 /// <p>stream.graphics.g5.16xlarge</p></li>
284 /// <li>
285 /// <p>stream.graphics.g5.24xlarge</p></li>
286 /// <li>
287 /// <p>stream.graphics-pro.4xlarge</p></li>
288 /// <li>
289 /// <p>stream.graphics-pro.8xlarge</p></li>
290 /// <li>
291 /// <p>stream.graphics-pro.16xlarge</p></li>
292 /// <li>
293 /// <p>stream.graphics.g6.xlarge</p></li>
294 /// <li>
295 /// <p>stream.graphics.g6.2xlarge</p></li>
296 /// <li>
297 /// <p>stream.graphics.g6.4xlarge</p></li>
298 /// <li>
299 /// <p>stream.graphics.g6.8xlarge</p></li>
300 /// <li>
301 /// <p>stream.graphics.g6.16xlarge</p></li>
302 /// <li>
303 /// <p>stream.graphics.g6.12xlarge</p></li>
304 /// <li>
305 /// <p>stream.graphics.g6.24xlarge</p></li>
306 /// <li>
307 /// <p>stream.graphics.gr6.4xlarge</p></li>
308 /// <li>
309 /// <p>stream.graphics.gr6.8xlarge</p></li>
310 /// </ul>
311 /// <p>The following instance types are available for Elastic fleets:</p>
312 /// <ul>
313 /// <li>
314 /// <p>stream.standard.small</p></li>
315 /// <li>
316 /// <p>stream.standard.medium</p></li>
317 /// <li>
318 /// <p>stream.standard.large</p></li>
319 /// <li>
320 /// <p>stream.standard.xlarge</p></li>
321 /// <li>
322 /// <p>stream.standard.2xlarge</p></li>
323 /// </ul>
324 pub fn instance_type(&self) -> ::std::option::Option<&str> {
325 self.instance_type.as_deref()
326 }
327 /// <p>The fleet type.</p>
328 /// <dl>
329 /// <dt>
330 /// ALWAYS_ON
331 /// </dt>
332 /// <dd>
333 /// <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>
334 /// </dd>
335 /// <dt>
336 /// ON_DEMAND
337 /// </dt>
338 /// <dd>
339 /// <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>
340 /// </dd>
341 /// </dl>
342 pub fn fleet_type(&self) -> ::std::option::Option<&crate::types::FleetType> {
343 self.fleet_type.as_ref()
344 }
345 /// <p>The desired capacity for the fleet. This is not allowed for Elastic fleets. For Elastic fleets, specify MaxConcurrentSessions instead.</p>
346 pub fn compute_capacity(&self) -> ::std::option::Option<&crate::types::ComputeCapacity> {
347 self.compute_capacity.as_ref()
348 }
349 /// <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>
350 pub fn vpc_config(&self) -> ::std::option::Option<&crate::types::VpcConfig> {
351 self.vpc_config.as_ref()
352 }
353 /// <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>
354 /// <p>Specify a value between 600 and 432000.</p>
355 pub fn max_user_duration_in_seconds(&self) -> ::std::option::Option<i32> {
356 self.max_user_duration_in_seconds
357 }
358 /// <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>
359 /// <p>Specify a value between 60 and 36000.</p>
360 pub fn disconnect_timeout_in_seconds(&self) -> ::std::option::Option<i32> {
361 self.disconnect_timeout_in_seconds
362 }
363 /// <p>The description to display.</p>
364 pub fn description(&self) -> ::std::option::Option<&str> {
365 self.description.as_deref()
366 }
367 /// <p>The fleet name to display.</p>
368 pub fn display_name(&self) -> ::std::option::Option<&str> {
369 self.display_name.as_deref()
370 }
371 /// <p>Enables or disables default internet access for the fleet.</p>
372 pub fn enable_default_internet_access(&self) -> ::std::option::Option<bool> {
373 self.enable_default_internet_access
374 }
375 /// <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>
376 pub fn domain_join_info(&self) -> ::std::option::Option<&crate::types::DomainJoinInfo> {
377 self.domain_join_info.as_ref()
378 }
379 /// <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>
380 /// <p>If you do not specify a value, the value is set to an empty string.</p>
381 /// <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters:</p>
382 /// <p>_ . : / = + \ - @</p>
383 /// <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>
384 pub fn tags(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
385 self.tags.as_ref()
386 }
387 /// <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>
388 /// <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>
389 /// <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>
390 /// </note>
391 pub fn idle_disconnect_timeout_in_seconds(&self) -> ::std::option::Option<i32> {
392 self.idle_disconnect_timeout_in_seconds
393 }
394 /// <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>
395 /// <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>
396 pub fn iam_role_arn(&self) -> ::std::option::Option<&str> {
397 self.iam_role_arn.as_deref()
398 }
399 /// <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>
400 /// <p>The default value is <code>APP</code>.</p>
401 pub fn stream_view(&self) -> ::std::option::Option<&crate::types::StreamView> {
402 self.stream_view.as_ref()
403 }
404 /// <p>The fleet platform. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported for Elastic fleets.</p>
405 pub fn platform(&self) -> ::std::option::Option<&crate::types::PlatformType> {
406 self.platform.as_ref()
407 }
408 /// <p>The maximum concurrent sessions of the Elastic fleet. This is required for Elastic fleets, and not allowed for other fleet types.</p>
409 pub fn max_concurrent_sessions(&self) -> ::std::option::Option<i32> {
410 self.max_concurrent_sessions
411 }
412 /// <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>
413 ///
414 /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.usb_device_filter_strings.is_none()`.
415 pub fn usb_device_filter_strings(&self) -> &[::std::string::String] {
416 self.usb_device_filter_strings.as_deref().unwrap_or_default()
417 }
418 /// <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
419 pub fn session_script_s3_location(&self) -> ::std::option::Option<&crate::types::S3Location> {
420 self.session_script_s3_location.as_ref()
421 }
422 /// <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
423 pub fn max_sessions_per_instance(&self) -> ::std::option::Option<i32> {
424 self.max_sessions_per_instance
425 }
426}
427impl CreateFleetInput {
428 /// Creates a new builder-style object to manufacture [`CreateFleetInput`](crate::operation::create_fleet::CreateFleetInput).
429 pub fn builder() -> crate::operation::create_fleet::builders::CreateFleetInputBuilder {
430 crate::operation::create_fleet::builders::CreateFleetInputBuilder::default()
431 }
432}
433
434/// A builder for [`CreateFleetInput`](crate::operation::create_fleet::CreateFleetInput).
435#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
436#[non_exhaustive]
437pub struct CreateFleetInputBuilder {
438 pub(crate) name: ::std::option::Option<::std::string::String>,
439 pub(crate) image_name: ::std::option::Option<::std::string::String>,
440 pub(crate) image_arn: ::std::option::Option<::std::string::String>,
441 pub(crate) instance_type: ::std::option::Option<::std::string::String>,
442 pub(crate) fleet_type: ::std::option::Option<crate::types::FleetType>,
443 pub(crate) compute_capacity: ::std::option::Option<crate::types::ComputeCapacity>,
444 pub(crate) vpc_config: ::std::option::Option<crate::types::VpcConfig>,
445 pub(crate) max_user_duration_in_seconds: ::std::option::Option<i32>,
446 pub(crate) disconnect_timeout_in_seconds: ::std::option::Option<i32>,
447 pub(crate) description: ::std::option::Option<::std::string::String>,
448 pub(crate) display_name: ::std::option::Option<::std::string::String>,
449 pub(crate) enable_default_internet_access: ::std::option::Option<bool>,
450 pub(crate) domain_join_info: ::std::option::Option<crate::types::DomainJoinInfo>,
451 pub(crate) tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
452 pub(crate) idle_disconnect_timeout_in_seconds: ::std::option::Option<i32>,
453 pub(crate) iam_role_arn: ::std::option::Option<::std::string::String>,
454 pub(crate) stream_view: ::std::option::Option<crate::types::StreamView>,
455 pub(crate) platform: ::std::option::Option<crate::types::PlatformType>,
456 pub(crate) max_concurrent_sessions: ::std::option::Option<i32>,
457 pub(crate) usb_device_filter_strings: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
458 pub(crate) session_script_s3_location: ::std::option::Option<crate::types::S3Location>,
459 pub(crate) max_sessions_per_instance: ::std::option::Option<i32>,
460}
461impl CreateFleetInputBuilder {
462 /// <p>A unique name for the fleet.</p>
463 /// This field is required.
464 pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
465 self.name = ::std::option::Option::Some(input.into());
466 self
467 }
468 /// <p>A unique name for the fleet.</p>
469 pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
470 self.name = input;
471 self
472 }
473 /// <p>A unique name for the fleet.</p>
474 pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
475 &self.name
476 }
477 /// <p>The name of the image used to create the fleet.</p>
478 pub fn image_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
479 self.image_name = ::std::option::Option::Some(input.into());
480 self
481 }
482 /// <p>The name of the image used to create the fleet.</p>
483 pub fn set_image_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
484 self.image_name = input;
485 self
486 }
487 /// <p>The name of the image used to create the fleet.</p>
488 pub fn get_image_name(&self) -> &::std::option::Option<::std::string::String> {
489 &self.image_name
490 }
491 /// <p>The ARN of the public, private, or shared image to use.</p>
492 pub fn image_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
493 self.image_arn = ::std::option::Option::Some(input.into());
494 self
495 }
496 /// <p>The ARN of the public, private, or shared image to use.</p>
497 pub fn set_image_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
498 self.image_arn = input;
499 self
500 }
501 /// <p>The ARN of the public, private, or shared image to use.</p>
502 pub fn get_image_arn(&self) -> &::std::option::Option<::std::string::String> {
503 &self.image_arn
504 }
505 /// <p>The instance type to use when launching fleet instances. The following instance types are available:</p>
506 /// <ul>
507 /// <li>
508 /// <p>stream.standard.small</p></li>
509 /// <li>
510 /// <p>stream.standard.medium</p></li>
511 /// <li>
512 /// <p>stream.standard.large</p></li>
513 /// <li>
514 /// <p>stream.standard.xlarge</p></li>
515 /// <li>
516 /// <p>stream.standard.2xlarge</p></li>
517 /// <li>
518 /// <p>stream.compute.large</p></li>
519 /// <li>
520 /// <p>stream.compute.xlarge</p></li>
521 /// <li>
522 /// <p>stream.compute.2xlarge</p></li>
523 /// <li>
524 /// <p>stream.compute.4xlarge</p></li>
525 /// <li>
526 /// <p>stream.compute.8xlarge</p></li>
527 /// <li>
528 /// <p>stream.memory.large</p></li>
529 /// <li>
530 /// <p>stream.memory.xlarge</p></li>
531 /// <li>
532 /// <p>stream.memory.2xlarge</p></li>
533 /// <li>
534 /// <p>stream.memory.4xlarge</p></li>
535 /// <li>
536 /// <p>stream.memory.8xlarge</p></li>
537 /// <li>
538 /// <p>stream.memory.z1d.large</p></li>
539 /// <li>
540 /// <p>stream.memory.z1d.xlarge</p></li>
541 /// <li>
542 /// <p>stream.memory.z1d.2xlarge</p></li>
543 /// <li>
544 /// <p>stream.memory.z1d.3xlarge</p></li>
545 /// <li>
546 /// <p>stream.memory.z1d.6xlarge</p></li>
547 /// <li>
548 /// <p>stream.memory.z1d.12xlarge</p></li>
549 /// <li>
550 /// <p>stream.graphics-design.large</p></li>
551 /// <li>
552 /// <p>stream.graphics-design.xlarge</p></li>
553 /// <li>
554 /// <p>stream.graphics-design.2xlarge</p></li>
555 /// <li>
556 /// <p>stream.graphics-design.4xlarge</p></li>
557 /// <li>
558 /// <p>stream.graphics-desktop.2xlarge</p></li>
559 /// <li>
560 /// <p>stream.graphics.g4dn.xlarge</p></li>
561 /// <li>
562 /// <p>stream.graphics.g4dn.2xlarge</p></li>
563 /// <li>
564 /// <p>stream.graphics.g4dn.4xlarge</p></li>
565 /// <li>
566 /// <p>stream.graphics.g4dn.8xlarge</p></li>
567 /// <li>
568 /// <p>stream.graphics.g4dn.12xlarge</p></li>
569 /// <li>
570 /// <p>stream.graphics.g4dn.16xlarge</p></li>
571 /// <li>
572 /// <p>stream.graphics.g5.xlarge</p></li>
573 /// <li>
574 /// <p>stream.graphics.g5.2xlarge</p></li>
575 /// <li>
576 /// <p>stream.graphics.g5.4xlarge</p></li>
577 /// <li>
578 /// <p>stream.graphics.g5.8xlarge</p></li>
579 /// <li>
580 /// <p>stream.graphics.g5.12xlarge</p></li>
581 /// <li>
582 /// <p>stream.graphics.g5.16xlarge</p></li>
583 /// <li>
584 /// <p>stream.graphics.g5.24xlarge</p></li>
585 /// <li>
586 /// <p>stream.graphics-pro.4xlarge</p></li>
587 /// <li>
588 /// <p>stream.graphics-pro.8xlarge</p></li>
589 /// <li>
590 /// <p>stream.graphics-pro.16xlarge</p></li>
591 /// <li>
592 /// <p>stream.graphics.g6.xlarge</p></li>
593 /// <li>
594 /// <p>stream.graphics.g6.2xlarge</p></li>
595 /// <li>
596 /// <p>stream.graphics.g6.4xlarge</p></li>
597 /// <li>
598 /// <p>stream.graphics.g6.8xlarge</p></li>
599 /// <li>
600 /// <p>stream.graphics.g6.16xlarge</p></li>
601 /// <li>
602 /// <p>stream.graphics.g6.12xlarge</p></li>
603 /// <li>
604 /// <p>stream.graphics.g6.24xlarge</p></li>
605 /// <li>
606 /// <p>stream.graphics.gr6.4xlarge</p></li>
607 /// <li>
608 /// <p>stream.graphics.gr6.8xlarge</p></li>
609 /// </ul>
610 /// <p>The following instance types are available for Elastic fleets:</p>
611 /// <ul>
612 /// <li>
613 /// <p>stream.standard.small</p></li>
614 /// <li>
615 /// <p>stream.standard.medium</p></li>
616 /// <li>
617 /// <p>stream.standard.large</p></li>
618 /// <li>
619 /// <p>stream.standard.xlarge</p></li>
620 /// <li>
621 /// <p>stream.standard.2xlarge</p></li>
622 /// </ul>
623 /// This field is required.
624 pub fn instance_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
625 self.instance_type = ::std::option::Option::Some(input.into());
626 self
627 }
628 /// <p>The instance type to use when launching fleet instances. The following instance types are available:</p>
629 /// <ul>
630 /// <li>
631 /// <p>stream.standard.small</p></li>
632 /// <li>
633 /// <p>stream.standard.medium</p></li>
634 /// <li>
635 /// <p>stream.standard.large</p></li>
636 /// <li>
637 /// <p>stream.standard.xlarge</p></li>
638 /// <li>
639 /// <p>stream.standard.2xlarge</p></li>
640 /// <li>
641 /// <p>stream.compute.large</p></li>
642 /// <li>
643 /// <p>stream.compute.xlarge</p></li>
644 /// <li>
645 /// <p>stream.compute.2xlarge</p></li>
646 /// <li>
647 /// <p>stream.compute.4xlarge</p></li>
648 /// <li>
649 /// <p>stream.compute.8xlarge</p></li>
650 /// <li>
651 /// <p>stream.memory.large</p></li>
652 /// <li>
653 /// <p>stream.memory.xlarge</p></li>
654 /// <li>
655 /// <p>stream.memory.2xlarge</p></li>
656 /// <li>
657 /// <p>stream.memory.4xlarge</p></li>
658 /// <li>
659 /// <p>stream.memory.8xlarge</p></li>
660 /// <li>
661 /// <p>stream.memory.z1d.large</p></li>
662 /// <li>
663 /// <p>stream.memory.z1d.xlarge</p></li>
664 /// <li>
665 /// <p>stream.memory.z1d.2xlarge</p></li>
666 /// <li>
667 /// <p>stream.memory.z1d.3xlarge</p></li>
668 /// <li>
669 /// <p>stream.memory.z1d.6xlarge</p></li>
670 /// <li>
671 /// <p>stream.memory.z1d.12xlarge</p></li>
672 /// <li>
673 /// <p>stream.graphics-design.large</p></li>
674 /// <li>
675 /// <p>stream.graphics-design.xlarge</p></li>
676 /// <li>
677 /// <p>stream.graphics-design.2xlarge</p></li>
678 /// <li>
679 /// <p>stream.graphics-design.4xlarge</p></li>
680 /// <li>
681 /// <p>stream.graphics-desktop.2xlarge</p></li>
682 /// <li>
683 /// <p>stream.graphics.g4dn.xlarge</p></li>
684 /// <li>
685 /// <p>stream.graphics.g4dn.2xlarge</p></li>
686 /// <li>
687 /// <p>stream.graphics.g4dn.4xlarge</p></li>
688 /// <li>
689 /// <p>stream.graphics.g4dn.8xlarge</p></li>
690 /// <li>
691 /// <p>stream.graphics.g4dn.12xlarge</p></li>
692 /// <li>
693 /// <p>stream.graphics.g4dn.16xlarge</p></li>
694 /// <li>
695 /// <p>stream.graphics.g5.xlarge</p></li>
696 /// <li>
697 /// <p>stream.graphics.g5.2xlarge</p></li>
698 /// <li>
699 /// <p>stream.graphics.g5.4xlarge</p></li>
700 /// <li>
701 /// <p>stream.graphics.g5.8xlarge</p></li>
702 /// <li>
703 /// <p>stream.graphics.g5.12xlarge</p></li>
704 /// <li>
705 /// <p>stream.graphics.g5.16xlarge</p></li>
706 /// <li>
707 /// <p>stream.graphics.g5.24xlarge</p></li>
708 /// <li>
709 /// <p>stream.graphics-pro.4xlarge</p></li>
710 /// <li>
711 /// <p>stream.graphics-pro.8xlarge</p></li>
712 /// <li>
713 /// <p>stream.graphics-pro.16xlarge</p></li>
714 /// <li>
715 /// <p>stream.graphics.g6.xlarge</p></li>
716 /// <li>
717 /// <p>stream.graphics.g6.2xlarge</p></li>
718 /// <li>
719 /// <p>stream.graphics.g6.4xlarge</p></li>
720 /// <li>
721 /// <p>stream.graphics.g6.8xlarge</p></li>
722 /// <li>
723 /// <p>stream.graphics.g6.16xlarge</p></li>
724 /// <li>
725 /// <p>stream.graphics.g6.12xlarge</p></li>
726 /// <li>
727 /// <p>stream.graphics.g6.24xlarge</p></li>
728 /// <li>
729 /// <p>stream.graphics.gr6.4xlarge</p></li>
730 /// <li>
731 /// <p>stream.graphics.gr6.8xlarge</p></li>
732 /// </ul>
733 /// <p>The following instance types are available for Elastic fleets:</p>
734 /// <ul>
735 /// <li>
736 /// <p>stream.standard.small</p></li>
737 /// <li>
738 /// <p>stream.standard.medium</p></li>
739 /// <li>
740 /// <p>stream.standard.large</p></li>
741 /// <li>
742 /// <p>stream.standard.xlarge</p></li>
743 /// <li>
744 /// <p>stream.standard.2xlarge</p></li>
745 /// </ul>
746 pub fn set_instance_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
747 self.instance_type = input;
748 self
749 }
750 /// <p>The instance type to use when launching fleet instances. The following instance types are available:</p>
751 /// <ul>
752 /// <li>
753 /// <p>stream.standard.small</p></li>
754 /// <li>
755 /// <p>stream.standard.medium</p></li>
756 /// <li>
757 /// <p>stream.standard.large</p></li>
758 /// <li>
759 /// <p>stream.standard.xlarge</p></li>
760 /// <li>
761 /// <p>stream.standard.2xlarge</p></li>
762 /// <li>
763 /// <p>stream.compute.large</p></li>
764 /// <li>
765 /// <p>stream.compute.xlarge</p></li>
766 /// <li>
767 /// <p>stream.compute.2xlarge</p></li>
768 /// <li>
769 /// <p>stream.compute.4xlarge</p></li>
770 /// <li>
771 /// <p>stream.compute.8xlarge</p></li>
772 /// <li>
773 /// <p>stream.memory.large</p></li>
774 /// <li>
775 /// <p>stream.memory.xlarge</p></li>
776 /// <li>
777 /// <p>stream.memory.2xlarge</p></li>
778 /// <li>
779 /// <p>stream.memory.4xlarge</p></li>
780 /// <li>
781 /// <p>stream.memory.8xlarge</p></li>
782 /// <li>
783 /// <p>stream.memory.z1d.large</p></li>
784 /// <li>
785 /// <p>stream.memory.z1d.xlarge</p></li>
786 /// <li>
787 /// <p>stream.memory.z1d.2xlarge</p></li>
788 /// <li>
789 /// <p>stream.memory.z1d.3xlarge</p></li>
790 /// <li>
791 /// <p>stream.memory.z1d.6xlarge</p></li>
792 /// <li>
793 /// <p>stream.memory.z1d.12xlarge</p></li>
794 /// <li>
795 /// <p>stream.graphics-design.large</p></li>
796 /// <li>
797 /// <p>stream.graphics-design.xlarge</p></li>
798 /// <li>
799 /// <p>stream.graphics-design.2xlarge</p></li>
800 /// <li>
801 /// <p>stream.graphics-design.4xlarge</p></li>
802 /// <li>
803 /// <p>stream.graphics-desktop.2xlarge</p></li>
804 /// <li>
805 /// <p>stream.graphics.g4dn.xlarge</p></li>
806 /// <li>
807 /// <p>stream.graphics.g4dn.2xlarge</p></li>
808 /// <li>
809 /// <p>stream.graphics.g4dn.4xlarge</p></li>
810 /// <li>
811 /// <p>stream.graphics.g4dn.8xlarge</p></li>
812 /// <li>
813 /// <p>stream.graphics.g4dn.12xlarge</p></li>
814 /// <li>
815 /// <p>stream.graphics.g4dn.16xlarge</p></li>
816 /// <li>
817 /// <p>stream.graphics.g5.xlarge</p></li>
818 /// <li>
819 /// <p>stream.graphics.g5.2xlarge</p></li>
820 /// <li>
821 /// <p>stream.graphics.g5.4xlarge</p></li>
822 /// <li>
823 /// <p>stream.graphics.g5.8xlarge</p></li>
824 /// <li>
825 /// <p>stream.graphics.g5.12xlarge</p></li>
826 /// <li>
827 /// <p>stream.graphics.g5.16xlarge</p></li>
828 /// <li>
829 /// <p>stream.graphics.g5.24xlarge</p></li>
830 /// <li>
831 /// <p>stream.graphics-pro.4xlarge</p></li>
832 /// <li>
833 /// <p>stream.graphics-pro.8xlarge</p></li>
834 /// <li>
835 /// <p>stream.graphics-pro.16xlarge</p></li>
836 /// <li>
837 /// <p>stream.graphics.g6.xlarge</p></li>
838 /// <li>
839 /// <p>stream.graphics.g6.2xlarge</p></li>
840 /// <li>
841 /// <p>stream.graphics.g6.4xlarge</p></li>
842 /// <li>
843 /// <p>stream.graphics.g6.8xlarge</p></li>
844 /// <li>
845 /// <p>stream.graphics.g6.16xlarge</p></li>
846 /// <li>
847 /// <p>stream.graphics.g6.12xlarge</p></li>
848 /// <li>
849 /// <p>stream.graphics.g6.24xlarge</p></li>
850 /// <li>
851 /// <p>stream.graphics.gr6.4xlarge</p></li>
852 /// <li>
853 /// <p>stream.graphics.gr6.8xlarge</p></li>
854 /// </ul>
855 /// <p>The following instance types are available for Elastic fleets:</p>
856 /// <ul>
857 /// <li>
858 /// <p>stream.standard.small</p></li>
859 /// <li>
860 /// <p>stream.standard.medium</p></li>
861 /// <li>
862 /// <p>stream.standard.large</p></li>
863 /// <li>
864 /// <p>stream.standard.xlarge</p></li>
865 /// <li>
866 /// <p>stream.standard.2xlarge</p></li>
867 /// </ul>
868 pub fn get_instance_type(&self) -> &::std::option::Option<::std::string::String> {
869 &self.instance_type
870 }
871 /// <p>The fleet type.</p>
872 /// <dl>
873 /// <dt>
874 /// ALWAYS_ON
875 /// </dt>
876 /// <dd>
877 /// <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>
878 /// </dd>
879 /// <dt>
880 /// ON_DEMAND
881 /// </dt>
882 /// <dd>
883 /// <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>
884 /// </dd>
885 /// </dl>
886 pub fn fleet_type(mut self, input: crate::types::FleetType) -> Self {
887 self.fleet_type = ::std::option::Option::Some(input);
888 self
889 }
890 /// <p>The fleet type.</p>
891 /// <dl>
892 /// <dt>
893 /// ALWAYS_ON
894 /// </dt>
895 /// <dd>
896 /// <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>
897 /// </dd>
898 /// <dt>
899 /// ON_DEMAND
900 /// </dt>
901 /// <dd>
902 /// <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>
903 /// </dd>
904 /// </dl>
905 pub fn set_fleet_type(mut self, input: ::std::option::Option<crate::types::FleetType>) -> Self {
906 self.fleet_type = input;
907 self
908 }
909 /// <p>The fleet type.</p>
910 /// <dl>
911 /// <dt>
912 /// ALWAYS_ON
913 /// </dt>
914 /// <dd>
915 /// <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>
916 /// </dd>
917 /// <dt>
918 /// ON_DEMAND
919 /// </dt>
920 /// <dd>
921 /// <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>
922 /// </dd>
923 /// </dl>
924 pub fn get_fleet_type(&self) -> &::std::option::Option<crate::types::FleetType> {
925 &self.fleet_type
926 }
927 /// <p>The desired capacity for the fleet. This is not allowed for Elastic fleets. For Elastic fleets, specify MaxConcurrentSessions instead.</p>
928 pub fn compute_capacity(mut self, input: crate::types::ComputeCapacity) -> Self {
929 self.compute_capacity = ::std::option::Option::Some(input);
930 self
931 }
932 /// <p>The desired capacity for the fleet. This is not allowed for Elastic fleets. For Elastic fleets, specify MaxConcurrentSessions instead.</p>
933 pub fn set_compute_capacity(mut self, input: ::std::option::Option<crate::types::ComputeCapacity>) -> Self {
934 self.compute_capacity = input;
935 self
936 }
937 /// <p>The desired capacity for the fleet. This is not allowed for Elastic fleets. For Elastic fleets, specify MaxConcurrentSessions instead.</p>
938 pub fn get_compute_capacity(&self) -> &::std::option::Option<crate::types::ComputeCapacity> {
939 &self.compute_capacity
940 }
941 /// <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>
942 pub fn vpc_config(mut self, input: crate::types::VpcConfig) -> Self {
943 self.vpc_config = ::std::option::Option::Some(input);
944 self
945 }
946 /// <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>
947 pub fn set_vpc_config(mut self, input: ::std::option::Option<crate::types::VpcConfig>) -> Self {
948 self.vpc_config = input;
949 self
950 }
951 /// <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>
952 pub fn get_vpc_config(&self) -> &::std::option::Option<crate::types::VpcConfig> {
953 &self.vpc_config
954 }
955 /// <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>
956 /// <p>Specify a value between 600 and 432000.</p>
957 pub fn max_user_duration_in_seconds(mut self, input: i32) -> Self {
958 self.max_user_duration_in_seconds = ::std::option::Option::Some(input);
959 self
960 }
961 /// <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>
962 /// <p>Specify a value between 600 and 432000.</p>
963 pub fn set_max_user_duration_in_seconds(mut self, input: ::std::option::Option<i32>) -> Self {
964 self.max_user_duration_in_seconds = input;
965 self
966 }
967 /// <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>
968 /// <p>Specify a value between 600 and 432000.</p>
969 pub fn get_max_user_duration_in_seconds(&self) -> &::std::option::Option<i32> {
970 &self.max_user_duration_in_seconds
971 }
972 /// <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>
973 /// <p>Specify a value between 60 and 36000.</p>
974 pub fn disconnect_timeout_in_seconds(mut self, input: i32) -> Self {
975 self.disconnect_timeout_in_seconds = ::std::option::Option::Some(input);
976 self
977 }
978 /// <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>
979 /// <p>Specify a value between 60 and 36000.</p>
980 pub fn set_disconnect_timeout_in_seconds(mut self, input: ::std::option::Option<i32>) -> Self {
981 self.disconnect_timeout_in_seconds = input;
982 self
983 }
984 /// <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>
985 /// <p>Specify a value between 60 and 36000.</p>
986 pub fn get_disconnect_timeout_in_seconds(&self) -> &::std::option::Option<i32> {
987 &self.disconnect_timeout_in_seconds
988 }
989 /// <p>The description to display.</p>
990 pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
991 self.description = ::std::option::Option::Some(input.into());
992 self
993 }
994 /// <p>The description to display.</p>
995 pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
996 self.description = input;
997 self
998 }
999 /// <p>The description to display.</p>
1000 pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
1001 &self.description
1002 }
1003 /// <p>The fleet name to display.</p>
1004 pub fn display_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1005 self.display_name = ::std::option::Option::Some(input.into());
1006 self
1007 }
1008 /// <p>The fleet name to display.</p>
1009 pub fn set_display_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1010 self.display_name = input;
1011 self
1012 }
1013 /// <p>The fleet name to display.</p>
1014 pub fn get_display_name(&self) -> &::std::option::Option<::std::string::String> {
1015 &self.display_name
1016 }
1017 /// <p>Enables or disables default internet access for the fleet.</p>
1018 pub fn enable_default_internet_access(mut self, input: bool) -> Self {
1019 self.enable_default_internet_access = ::std::option::Option::Some(input);
1020 self
1021 }
1022 /// <p>Enables or disables default internet access for the fleet.</p>
1023 pub fn set_enable_default_internet_access(mut self, input: ::std::option::Option<bool>) -> Self {
1024 self.enable_default_internet_access = input;
1025 self
1026 }
1027 /// <p>Enables or disables default internet access for the fleet.</p>
1028 pub fn get_enable_default_internet_access(&self) -> &::std::option::Option<bool> {
1029 &self.enable_default_internet_access
1030 }
1031 /// <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>
1032 pub fn domain_join_info(mut self, input: crate::types::DomainJoinInfo) -> Self {
1033 self.domain_join_info = ::std::option::Option::Some(input);
1034 self
1035 }
1036 /// <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>
1037 pub fn set_domain_join_info(mut self, input: ::std::option::Option<crate::types::DomainJoinInfo>) -> Self {
1038 self.domain_join_info = input;
1039 self
1040 }
1041 /// <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>
1042 pub fn get_domain_join_info(&self) -> &::std::option::Option<crate::types::DomainJoinInfo> {
1043 &self.domain_join_info
1044 }
1045 /// Adds a key-value pair to `tags`.
1046 ///
1047 /// To override the contents of this collection use [`set_tags`](Self::set_tags).
1048 ///
1049 /// <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>
1050 /// <p>If you do not specify a value, the value is set to an empty string.</p>
1051 /// <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters:</p>
1052 /// <p>_ . : / = + \ - @</p>
1053 /// <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>
1054 pub fn tags(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
1055 let mut hash_map = self.tags.unwrap_or_default();
1056 hash_map.insert(k.into(), v.into());
1057 self.tags = ::std::option::Option::Some(hash_map);
1058 self
1059 }
1060 /// <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>
1061 /// <p>If you do not specify a value, the value is set to an empty string.</p>
1062 /// <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters:</p>
1063 /// <p>_ . : / = + \ - @</p>
1064 /// <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>
1065 pub fn set_tags(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
1066 self.tags = input;
1067 self
1068 }
1069 /// <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>
1070 /// <p>If you do not specify a value, the value is set to an empty string.</p>
1071 /// <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters:</p>
1072 /// <p>_ . : / = + \ - @</p>
1073 /// <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>
1074 pub fn get_tags(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
1075 &self.tags
1076 }
1077 /// <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>
1078 /// <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>
1079 /// <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>
1080 /// </note>
1081 pub fn idle_disconnect_timeout_in_seconds(mut self, input: i32) -> Self {
1082 self.idle_disconnect_timeout_in_seconds = ::std::option::Option::Some(input);
1083 self
1084 }
1085 /// <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>
1086 /// <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>
1087 /// <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>
1088 /// </note>
1089 pub fn set_idle_disconnect_timeout_in_seconds(mut self, input: ::std::option::Option<i32>) -> Self {
1090 self.idle_disconnect_timeout_in_seconds = input;
1091 self
1092 }
1093 /// <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>
1094 /// <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>
1095 /// <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>
1096 /// </note>
1097 pub fn get_idle_disconnect_timeout_in_seconds(&self) -> &::std::option::Option<i32> {
1098 &self.idle_disconnect_timeout_in_seconds
1099 }
1100 /// <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>
1101 /// <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>
1102 pub fn iam_role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1103 self.iam_role_arn = ::std::option::Option::Some(input.into());
1104 self
1105 }
1106 /// <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>
1107 /// <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>
1108 pub fn set_iam_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1109 self.iam_role_arn = input;
1110 self
1111 }
1112 /// <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>
1113 /// <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>
1114 pub fn get_iam_role_arn(&self) -> &::std::option::Option<::std::string::String> {
1115 &self.iam_role_arn
1116 }
1117 /// <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>
1118 /// <p>The default value is <code>APP</code>.</p>
1119 pub fn stream_view(mut self, input: crate::types::StreamView) -> Self {
1120 self.stream_view = ::std::option::Option::Some(input);
1121 self
1122 }
1123 /// <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>
1124 /// <p>The default value is <code>APP</code>.</p>
1125 pub fn set_stream_view(mut self, input: ::std::option::Option<crate::types::StreamView>) -> Self {
1126 self.stream_view = input;
1127 self
1128 }
1129 /// <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>
1130 /// <p>The default value is <code>APP</code>.</p>
1131 pub fn get_stream_view(&self) -> &::std::option::Option<crate::types::StreamView> {
1132 &self.stream_view
1133 }
1134 /// <p>The fleet platform. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported for Elastic fleets.</p>
1135 pub fn platform(mut self, input: crate::types::PlatformType) -> Self {
1136 self.platform = ::std::option::Option::Some(input);
1137 self
1138 }
1139 /// <p>The fleet platform. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported for Elastic fleets.</p>
1140 pub fn set_platform(mut self, input: ::std::option::Option<crate::types::PlatformType>) -> Self {
1141 self.platform = input;
1142 self
1143 }
1144 /// <p>The fleet platform. WINDOWS_SERVER_2019 and AMAZON_LINUX2 are supported for Elastic fleets.</p>
1145 pub fn get_platform(&self) -> &::std::option::Option<crate::types::PlatformType> {
1146 &self.platform
1147 }
1148 /// <p>The maximum concurrent sessions of the Elastic fleet. This is required for Elastic fleets, and not allowed for other fleet types.</p>
1149 pub fn max_concurrent_sessions(mut self, input: i32) -> Self {
1150 self.max_concurrent_sessions = ::std::option::Option::Some(input);
1151 self
1152 }
1153 /// <p>The maximum concurrent sessions of the Elastic fleet. This is required for Elastic fleets, and not allowed for other fleet types.</p>
1154 pub fn set_max_concurrent_sessions(mut self, input: ::std::option::Option<i32>) -> Self {
1155 self.max_concurrent_sessions = input;
1156 self
1157 }
1158 /// <p>The maximum concurrent sessions of the Elastic fleet. This is required for Elastic fleets, and not allowed for other fleet types.</p>
1159 pub fn get_max_concurrent_sessions(&self) -> &::std::option::Option<i32> {
1160 &self.max_concurrent_sessions
1161 }
1162 /// Appends an item to `usb_device_filter_strings`.
1163 ///
1164 /// To override the contents of this collection use [`set_usb_device_filter_strings`](Self::set_usb_device_filter_strings).
1165 ///
1166 /// <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>
1167 pub fn usb_device_filter_strings(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1168 let mut v = self.usb_device_filter_strings.unwrap_or_default();
1169 v.push(input.into());
1170 self.usb_device_filter_strings = ::std::option::Option::Some(v);
1171 self
1172 }
1173 /// <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>
1174 pub fn set_usb_device_filter_strings(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
1175 self.usb_device_filter_strings = input;
1176 self
1177 }
1178 /// <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>
1179 pub fn get_usb_device_filter_strings(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
1180 &self.usb_device_filter_strings
1181 }
1182 /// <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
1183 pub fn session_script_s3_location(mut self, input: crate::types::S3Location) -> Self {
1184 self.session_script_s3_location = ::std::option::Option::Some(input);
1185 self
1186 }
1187 /// <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
1188 pub fn set_session_script_s3_location(mut self, input: ::std::option::Option<crate::types::S3Location>) -> Self {
1189 self.session_script_s3_location = input;
1190 self
1191 }
1192 /// <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
1193 pub fn get_session_script_s3_location(&self) -> &::std::option::Option<crate::types::S3Location> {
1194 &self.session_script_s3_location
1195 }
1196 /// <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
1197 pub fn max_sessions_per_instance(mut self, input: i32) -> Self {
1198 self.max_sessions_per_instance = ::std::option::Option::Some(input);
1199 self
1200 }
1201 /// <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
1202 pub fn set_max_sessions_per_instance(mut self, input: ::std::option::Option<i32>) -> Self {
1203 self.max_sessions_per_instance = input;
1204 self
1205 }
1206 /// <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
1207 pub fn get_max_sessions_per_instance(&self) -> &::std::option::Option<i32> {
1208 &self.max_sessions_per_instance
1209 }
1210 /// Consumes the builder and constructs a [`CreateFleetInput`](crate::operation::create_fleet::CreateFleetInput).
1211 pub fn build(self) -> ::std::result::Result<crate::operation::create_fleet::CreateFleetInput, ::aws_smithy_types::error::operation::BuildError> {
1212 ::std::result::Result::Ok(crate::operation::create_fleet::CreateFleetInput {
1213 name: self.name,
1214 image_name: self.image_name,
1215 image_arn: self.image_arn,
1216 instance_type: self.instance_type,
1217 fleet_type: self.fleet_type,
1218 compute_capacity: self.compute_capacity,
1219 vpc_config: self.vpc_config,
1220 max_user_duration_in_seconds: self.max_user_duration_in_seconds,
1221 disconnect_timeout_in_seconds: self.disconnect_timeout_in_seconds,
1222 description: self.description,
1223 display_name: self.display_name,
1224 enable_default_internet_access: self.enable_default_internet_access,
1225 domain_join_info: self.domain_join_info,
1226 tags: self.tags,
1227 idle_disconnect_timeout_in_seconds: self.idle_disconnect_timeout_in_seconds,
1228 iam_role_arn: self.iam_role_arn,
1229 stream_view: self.stream_view,
1230 platform: self.platform,
1231 max_concurrent_sessions: self.max_concurrent_sessions,
1232 usb_device_filter_strings: self.usb_device_filter_strings,
1233 session_script_s3_location: self.session_script_s3_location,
1234 max_sessions_per_instance: self.max_sessions_per_instance,
1235 })
1236 }
1237}