All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.cloudshiftdev.awscdk.services.appstream.CfnFleetProps.kt Maven / Gradle / Ivy

The newest version!
@file:Suppress("RedundantVisibilityModifier","RedundantUnitReturnType","RemoveRedundantQualifierName","unused","UnusedImport","ClassName","REDUNDANT_PROJECTION","DEPRECATION")

package io.cloudshiftdev.awscdk.services.appstream

import io.cloudshiftdev.awscdk.CfnTag
import io.cloudshiftdev.awscdk.IResolvable
import io.cloudshiftdev.awscdk.common.CdkDslMarker
import io.cloudshiftdev.awscdk.common.CdkObject
import io.cloudshiftdev.awscdk.common.CdkObjectWrappers
import kotlin.Any
import kotlin.Boolean
import kotlin.Number
import kotlin.String
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Properties for defining a `CfnFleet`.
 *
 * Example:
 *
 * ```
 * CfnFleet fleet = CfnFleet.Builder.create(this, "Fleet")
 * .instanceType("stream.standard.small")
 * .name("Fleet")
 * .computeCapacity(ComputeCapacityProperty.builder()
 * .desiredInstances(1)
 * .build())
 * .imageName("AppStream-AmazonLinux2-09-21-2022")
 * .build();
 * fleet.getCfnOptions().getCreationPolicy() = CfnCreationPolicy.builder()
 * .startFleet(true)
 * .build();
 * ```
 *
 * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html)
 */
public interface CfnFleetProps {
  /**
   * The desired capacity for the fleet.
   *
   * This is not allowed for Elastic fleets.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-computecapacity)
   */
  public fun computeCapacity(): Any? = unwrap(this).getComputeCapacity()

  /**
   * The description to display.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-description)
   */
  public fun description(): String? = unwrap(this).getDescription()

  /**
   * 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.
   *
   * Specify a value between 60 and 36000.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-disconnecttimeoutinseconds)
   */
  public fun disconnectTimeoutInSeconds(): Number? = unwrap(this).getDisconnectTimeoutInSeconds()

  /**
   * The fleet name to display.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-displayname)
   */
  public fun displayName(): String? = unwrap(this).getDisplayName()

  /**
   * 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.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-domainjoininfo)
   */
  public fun domainJoinInfo(): Any? = unwrap(this).getDomainJoinInfo()

  /**
   * Enables or disables default internet access for the fleet.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-enabledefaultinternetaccess)
   */
  public fun enableDefaultInternetAccess(): Any? = unwrap(this).getEnableDefaultInternetAccess()

  /**
   * The fleet type.
   *
   * * **ALWAYS_ON** - 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.
   * * **ON_DEMAND** - 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.
   * * **ELASTIC** - The pool of streaming instances is managed by Amazon AppStream 2.0. When a user
   * selects their application or desktop to launch, they will start streaming after the app block has
   * been downloaded and mounted to a streaming instance.
   *
   * *Allowed Values* : `ALWAYS_ON` | `ELASTIC` | `ON_DEMAND`
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-fleettype)
   */
  public fun fleetType(): String? = unwrap(this).getFleetType()

  /**
   * The ARN of the IAM role that is applied to the fleet.
   *
   * To assume a role, the fleet instance calls the AWS Security Token Service `AssumeRole` 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
   * *appstream_machine_role* credential profile on the instance.
   *
   * For more information, see [Using an IAM Role to Grant Permissions to Applications and Scripts
   * Running on AppStream 2.0 Streaming
   * Instances](https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html)
   * in the *Amazon AppStream 2.0 Administration Guide* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-iamrolearn)
   */
  public fun iamRoleArn(): String? = unwrap(this).getIamRoleArn()

  /**
   * The amount of time that users can be idle (inactive) before they are disconnected from their
   * streaming session and the `DisconnectTimeoutInSeconds` 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 `DisconnectTimeoutInSeconds` 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 `IdleDisconnectTimeoutInSeconds` elapses, they are disconnected.
   *
   * To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise,
   * specify a value between 60 and 36000.
   *
   * 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.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-idledisconnecttimeoutinseconds)
   */
  public fun idleDisconnectTimeoutInSeconds(): Number? =
      unwrap(this).getIdleDisconnectTimeoutInSeconds()

  /**
   * The ARN of the public, private, or shared image to use.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-imagearn)
   */
  public fun imageArn(): String? = unwrap(this).getImageArn()

  /**
   * The name of the image used to create the fleet.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-imagename)
   */
  public fun imageName(): String? = unwrap(this).getImageName()

  /**
   * The instance type to use when launching fleet instances. The following instance types are
   * available for non-Elastic fleets:.
   *
   * * stream.standard.small
   * * stream.standard.medium
   * * stream.standard.large
   * * stream.compute.large
   * * stream.compute.xlarge
   * * stream.compute.2xlarge
   * * stream.compute.4xlarge
   * * stream.compute.8xlarge
   * * stream.memory.large
   * * stream.memory.xlarge
   * * stream.memory.2xlarge
   * * stream.memory.4xlarge
   * * stream.memory.8xlarge
   * * stream.memory.z1d.large
   * * stream.memory.z1d.xlarge
   * * stream.memory.z1d.2xlarge
   * * stream.memory.z1d.3xlarge
   * * stream.memory.z1d.6xlarge
   * * stream.memory.z1d.12xlarge
   * * stream.graphics-design.large
   * * stream.graphics-design.xlarge
   * * stream.graphics-design.2xlarge
   * * stream.graphics-design.4xlarge
   * * stream.graphics-desktop.2xlarge
   * * stream.graphics.g4dn.xlarge
   * * stream.graphics.g4dn.2xlarge
   * * stream.graphics.g4dn.4xlarge
   * * stream.graphics.g4dn.8xlarge
   * * stream.graphics.g4dn.12xlarge
   * * stream.graphics.g4dn.16xlarge
   * * stream.graphics-pro.4xlarge
   * * stream.graphics-pro.8xlarge
   * * stream.graphics-pro.16xlarge
   *
   * The following instance types are available for Elastic fleets:
   *
   * * stream.standard.small
   * * stream.standard.medium
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-instancetype)
   */
  public fun instanceType(): String

  /**
   * The maximum number of concurrent sessions that can be run on an Elastic fleet.
   *
   * This setting is required for Elastic fleets, but is not used for other fleet types.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-maxconcurrentsessions)
   */
  public fun maxConcurrentSessions(): Number? = unwrap(this).getMaxConcurrentSessions()

  /**
   * Max number of user sessions on an instance.
   *
   * This is applicable only for multi-session fleets.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-maxsessionsperinstance)
   */
  public fun maxSessionsPerInstance(): Number? = unwrap(this).getMaxSessionsPerInstance()

  /**
   * 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.
   *
   * Specify a value between 600 and 432000.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-maxuserdurationinseconds)
   */
  public fun maxUserDurationInSeconds(): Number? = unwrap(this).getMaxUserDurationInSeconds()

  /**
   * A unique name for the fleet.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-name)
   */
  public fun name(): String

  /**
   * The platform of the fleet.
   *
   * Platform is a required setting for Elastic fleets, and is not used for other fleet types.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-platform)
   */
  public fun platform(): String? = unwrap(this).getPlatform()

  /**
   * The S3 location of the session scripts configuration zip file.
   *
   * This only applies to Elastic fleets.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-sessionscripts3location)
   */
  public fun sessionScriptS3Location(): Any? = unwrap(this).getSessionScriptS3Location()

  /**
   * The AppStream 2.0 view that is displayed to your users when they stream from the fleet. When
   * `APP` is specified, only the windows of applications opened by users display. When `DESKTOP` is
   * specified, the standard desktop that is provided by the operating system displays.
   *
   * The default value is `APP` .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-streamview)
   */
  public fun streamView(): String? = unwrap(this).getStreamView()

  /**
   * An array of key-value pairs.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-tags)
   */
  public fun tags(): List = unwrap(this).getTags()?.map(CfnTag::wrap) ?: emptyList()

  /**
   * 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.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-usbdevicefilterstrings)
   */
  public fun usbDeviceFilterStrings(): List = unwrap(this).getUsbDeviceFilterStrings() ?:
      emptyList()

  /**
   * The VPC configuration for the fleet.
   *
   * This is required for Elastic fleets, but not required for other fleet types.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-vpcconfig)
   */
  public fun vpcConfig(): Any? = unwrap(this).getVpcConfig()

  /**
   * A builder for [CfnFleetProps]
   */
  @CdkDslMarker
  public interface Builder {
    /**
     * @param computeCapacity The desired capacity for the fleet.
     * This is not allowed for Elastic fleets.
     */
    public fun computeCapacity(computeCapacity: IResolvable)

    /**
     * @param computeCapacity The desired capacity for the fleet.
     * This is not allowed for Elastic fleets.
     */
    public fun computeCapacity(computeCapacity: CfnFleet.ComputeCapacityProperty)

    /**
     * @param computeCapacity The desired capacity for the fleet.
     * This is not allowed for Elastic fleets.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("73e9cdbabab83e85e1da25daa1a039334828818ddcfa6a02eaeda85ad4cb80da")
    public fun computeCapacity(computeCapacity: CfnFleet.ComputeCapacityProperty.Builder.() -> Unit)

    /**
     * @param description The description to display.
     */
    public fun description(description: String)

    /**
     * @param disconnectTimeoutInSeconds 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.
     *
     * Specify a value between 60 and 36000.
     */
    public fun disconnectTimeoutInSeconds(disconnectTimeoutInSeconds: Number)

    /**
     * @param displayName The fleet name to display.
     */
    public fun displayName(displayName: String)

    /**
     * @param domainJoinInfo 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.
     */
    public fun domainJoinInfo(domainJoinInfo: IResolvable)

    /**
     * @param domainJoinInfo 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.
     */
    public fun domainJoinInfo(domainJoinInfo: CfnFleet.DomainJoinInfoProperty)

    /**
     * @param domainJoinInfo 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.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("308a5d79b8e903a24a9de1981c9ebfba808bd63632efd009682e5e28a601db69")
    public fun domainJoinInfo(domainJoinInfo: CfnFleet.DomainJoinInfoProperty.Builder.() -> Unit)

    /**
     * @param enableDefaultInternetAccess Enables or disables default internet access for the fleet.
     */
    public fun enableDefaultInternetAccess(enableDefaultInternetAccess: Boolean)

    /**
     * @param enableDefaultInternetAccess Enables or disables default internet access for the fleet.
     */
    public fun enableDefaultInternetAccess(enableDefaultInternetAccess: IResolvable)

    /**
     * @param fleetType The fleet type.
     * * **ALWAYS_ON** - 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.
     * * **ON_DEMAND** - 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.
     * * **ELASTIC** - The pool of streaming instances is managed by Amazon AppStream 2.0. When a
     * user selects their application or desktop to launch, they will start streaming after the app
     * block has been downloaded and mounted to a streaming instance.
     *
     * *Allowed Values* : `ALWAYS_ON` | `ELASTIC` | `ON_DEMAND`
     */
    public fun fleetType(fleetType: String)

    /**
     * @param iamRoleArn The ARN of the IAM role that is applied to the fleet.
     * To assume a role, the fleet instance calls the AWS Security Token Service `AssumeRole` 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
     * *appstream_machine_role* credential profile on the instance.
     *
     * For more information, see [Using an IAM Role to Grant Permissions to Applications and Scripts
     * Running on AppStream 2.0 Streaming
     * Instances](https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html)
     * in the *Amazon AppStream 2.0 Administration Guide* .
     */
    public fun iamRoleArn(iamRoleArn: String)

    /**
     * @param idleDisconnectTimeoutInSeconds The amount of time that users can be idle (inactive)
     * before they are disconnected from their streaming session and the `DisconnectTimeoutInSeconds`
     * 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 `DisconnectTimeoutInSeconds`
     * 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 `IdleDisconnectTimeoutInSeconds` elapses, they are
     * disconnected.
     *
     * To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise,
     * specify a value between 60 and 36000.
     *
     * 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.
     */
    public fun idleDisconnectTimeoutInSeconds(idleDisconnectTimeoutInSeconds: Number)

    /**
     * @param imageArn The ARN of the public, private, or shared image to use.
     */
    public fun imageArn(imageArn: String)

    /**
     * @param imageName The name of the image used to create the fleet.
     */
    public fun imageName(imageName: String)

    /**
     * @param instanceType The instance type to use when launching fleet instances. The following
     * instance types are available for non-Elastic fleets:. 
     * * stream.standard.small
     * * stream.standard.medium
     * * stream.standard.large
     * * stream.compute.large
     * * stream.compute.xlarge
     * * stream.compute.2xlarge
     * * stream.compute.4xlarge
     * * stream.compute.8xlarge
     * * stream.memory.large
     * * stream.memory.xlarge
     * * stream.memory.2xlarge
     * * stream.memory.4xlarge
     * * stream.memory.8xlarge
     * * stream.memory.z1d.large
     * * stream.memory.z1d.xlarge
     * * stream.memory.z1d.2xlarge
     * * stream.memory.z1d.3xlarge
     * * stream.memory.z1d.6xlarge
     * * stream.memory.z1d.12xlarge
     * * stream.graphics-design.large
     * * stream.graphics-design.xlarge
     * * stream.graphics-design.2xlarge
     * * stream.graphics-design.4xlarge
     * * stream.graphics-desktop.2xlarge
     * * stream.graphics.g4dn.xlarge
     * * stream.graphics.g4dn.2xlarge
     * * stream.graphics.g4dn.4xlarge
     * * stream.graphics.g4dn.8xlarge
     * * stream.graphics.g4dn.12xlarge
     * * stream.graphics.g4dn.16xlarge
     * * stream.graphics-pro.4xlarge
     * * stream.graphics-pro.8xlarge
     * * stream.graphics-pro.16xlarge
     *
     * The following instance types are available for Elastic fleets:
     *
     * * stream.standard.small
     * * stream.standard.medium
     */
    public fun instanceType(instanceType: String)

    /**
     * @param maxConcurrentSessions The maximum number of concurrent sessions that can be run on an
     * Elastic fleet.
     * This setting is required for Elastic fleets, but is not used for other fleet types.
     */
    public fun maxConcurrentSessions(maxConcurrentSessions: Number)

    /**
     * @param maxSessionsPerInstance Max number of user sessions on an instance.
     * This is applicable only for multi-session fleets.
     */
    public fun maxSessionsPerInstance(maxSessionsPerInstance: Number)

    /**
     * @param maxUserDurationInSeconds 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.
     *
     * Specify a value between 600 and 432000.
     */
    public fun maxUserDurationInSeconds(maxUserDurationInSeconds: Number)

    /**
     * @param name A unique name for the fleet. 
     */
    public fun name(name: String)

    /**
     * @param platform The platform of the fleet.
     * Platform is a required setting for Elastic fleets, and is not used for other fleet types.
     */
    public fun platform(platform: String)

    /**
     * @param sessionScriptS3Location The S3 location of the session scripts configuration zip file.
     * This only applies to Elastic fleets.
     */
    public fun sessionScriptS3Location(sessionScriptS3Location: IResolvable)

    /**
     * @param sessionScriptS3Location The S3 location of the session scripts configuration zip file.
     * This only applies to Elastic fleets.
     */
    public fun sessionScriptS3Location(sessionScriptS3Location: CfnFleet.S3LocationProperty)

    /**
     * @param sessionScriptS3Location The S3 location of the session scripts configuration zip file.
     * This only applies to Elastic fleets.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("ad395e1e53e659550a6645eab8bfd307a269d1b76ba055229d82e95afca3e34d")
    public
        fun sessionScriptS3Location(sessionScriptS3Location: CfnFleet.S3LocationProperty.Builder.() -> Unit)

    /**
     * @param streamView The AppStream 2.0 view that is displayed to your users when they stream
     * from the fleet. When `APP` is specified, only the windows of applications opened by users
     * display. When `DESKTOP` is specified, the standard desktop that is provided by the operating
     * system displays.
     * The default value is `APP` .
     */
    public fun streamView(streamView: String)

    /**
     * @param tags An array of key-value pairs.
     */
    public fun tags(tags: List)

    /**
     * @param tags An array of key-value pairs.
     */
    public fun tags(vararg tags: CfnTag)

    /**
     * @param usbDeviceFilterStrings 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.
     */
    public fun usbDeviceFilterStrings(usbDeviceFilterStrings: List)

    /**
     * @param usbDeviceFilterStrings 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.
     */
    public fun usbDeviceFilterStrings(vararg usbDeviceFilterStrings: String)

    /**
     * @param vpcConfig The VPC configuration for the fleet.
     * This is required for Elastic fleets, but not required for other fleet types.
     */
    public fun vpcConfig(vpcConfig: IResolvable)

    /**
     * @param vpcConfig The VPC configuration for the fleet.
     * This is required for Elastic fleets, but not required for other fleet types.
     */
    public fun vpcConfig(vpcConfig: CfnFleet.VpcConfigProperty)

    /**
     * @param vpcConfig The VPC configuration for the fleet.
     * This is required for Elastic fleets, but not required for other fleet types.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("3ab49971d1d1fc25990b8996f87906c689182b6a229ba0e8e9ff08455a1854f2")
    public fun vpcConfig(vpcConfig: CfnFleet.VpcConfigProperty.Builder.() -> Unit)
  }

  private class BuilderImpl : Builder {
    private val cdkBuilder: software.amazon.awscdk.services.appstream.CfnFleetProps.Builder =
        software.amazon.awscdk.services.appstream.CfnFleetProps.builder()

    /**
     * @param computeCapacity The desired capacity for the fleet.
     * This is not allowed for Elastic fleets.
     */
    override fun computeCapacity(computeCapacity: IResolvable) {
      cdkBuilder.computeCapacity(computeCapacity.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param computeCapacity The desired capacity for the fleet.
     * This is not allowed for Elastic fleets.
     */
    override fun computeCapacity(computeCapacity: CfnFleet.ComputeCapacityProperty) {
      cdkBuilder.computeCapacity(computeCapacity.let(CfnFleet.ComputeCapacityProperty.Companion::unwrap))
    }

    /**
     * @param computeCapacity The desired capacity for the fleet.
     * This is not allowed for Elastic fleets.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("73e9cdbabab83e85e1da25daa1a039334828818ddcfa6a02eaeda85ad4cb80da")
    override
        fun computeCapacity(computeCapacity: CfnFleet.ComputeCapacityProperty.Builder.() -> Unit):
        Unit = computeCapacity(CfnFleet.ComputeCapacityProperty(computeCapacity))

    /**
     * @param description The description to display.
     */
    override fun description(description: String) {
      cdkBuilder.description(description)
    }

    /**
     * @param disconnectTimeoutInSeconds 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.
     *
     * Specify a value between 60 and 36000.
     */
    override fun disconnectTimeoutInSeconds(disconnectTimeoutInSeconds: Number) {
      cdkBuilder.disconnectTimeoutInSeconds(disconnectTimeoutInSeconds)
    }

    /**
     * @param displayName The fleet name to display.
     */
    override fun displayName(displayName: String) {
      cdkBuilder.displayName(displayName)
    }

    /**
     * @param domainJoinInfo 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.
     */
    override fun domainJoinInfo(domainJoinInfo: IResolvable) {
      cdkBuilder.domainJoinInfo(domainJoinInfo.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param domainJoinInfo 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.
     */
    override fun domainJoinInfo(domainJoinInfo: CfnFleet.DomainJoinInfoProperty) {
      cdkBuilder.domainJoinInfo(domainJoinInfo.let(CfnFleet.DomainJoinInfoProperty.Companion::unwrap))
    }

    /**
     * @param domainJoinInfo 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.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("308a5d79b8e903a24a9de1981c9ebfba808bd63632efd009682e5e28a601db69")
    override fun domainJoinInfo(domainJoinInfo: CfnFleet.DomainJoinInfoProperty.Builder.() -> Unit):
        Unit = domainJoinInfo(CfnFleet.DomainJoinInfoProperty(domainJoinInfo))

    /**
     * @param enableDefaultInternetAccess Enables or disables default internet access for the fleet.
     */
    override fun enableDefaultInternetAccess(enableDefaultInternetAccess: Boolean) {
      cdkBuilder.enableDefaultInternetAccess(enableDefaultInternetAccess)
    }

    /**
     * @param enableDefaultInternetAccess Enables or disables default internet access for the fleet.
     */
    override fun enableDefaultInternetAccess(enableDefaultInternetAccess: IResolvable) {
      cdkBuilder.enableDefaultInternetAccess(enableDefaultInternetAccess.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param fleetType The fleet type.
     * * **ALWAYS_ON** - 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.
     * * **ON_DEMAND** - 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.
     * * **ELASTIC** - The pool of streaming instances is managed by Amazon AppStream 2.0. When a
     * user selects their application or desktop to launch, they will start streaming after the app
     * block has been downloaded and mounted to a streaming instance.
     *
     * *Allowed Values* : `ALWAYS_ON` | `ELASTIC` | `ON_DEMAND`
     */
    override fun fleetType(fleetType: String) {
      cdkBuilder.fleetType(fleetType)
    }

    /**
     * @param iamRoleArn The ARN of the IAM role that is applied to the fleet.
     * To assume a role, the fleet instance calls the AWS Security Token Service `AssumeRole` 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
     * *appstream_machine_role* credential profile on the instance.
     *
     * For more information, see [Using an IAM Role to Grant Permissions to Applications and Scripts
     * Running on AppStream 2.0 Streaming
     * Instances](https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html)
     * in the *Amazon AppStream 2.0 Administration Guide* .
     */
    override fun iamRoleArn(iamRoleArn: String) {
      cdkBuilder.iamRoleArn(iamRoleArn)
    }

    /**
     * @param idleDisconnectTimeoutInSeconds The amount of time that users can be idle (inactive)
     * before they are disconnected from their streaming session and the `DisconnectTimeoutInSeconds`
     * 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 `DisconnectTimeoutInSeconds`
     * 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 `IdleDisconnectTimeoutInSeconds` elapses, they are
     * disconnected.
     *
     * To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise,
     * specify a value between 60 and 36000.
     *
     * 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.
     */
    override fun idleDisconnectTimeoutInSeconds(idleDisconnectTimeoutInSeconds: Number) {
      cdkBuilder.idleDisconnectTimeoutInSeconds(idleDisconnectTimeoutInSeconds)
    }

    /**
     * @param imageArn The ARN of the public, private, or shared image to use.
     */
    override fun imageArn(imageArn: String) {
      cdkBuilder.imageArn(imageArn)
    }

    /**
     * @param imageName The name of the image used to create the fleet.
     */
    override fun imageName(imageName: String) {
      cdkBuilder.imageName(imageName)
    }

    /**
     * @param instanceType The instance type to use when launching fleet instances. The following
     * instance types are available for non-Elastic fleets:. 
     * * stream.standard.small
     * * stream.standard.medium
     * * stream.standard.large
     * * stream.compute.large
     * * stream.compute.xlarge
     * * stream.compute.2xlarge
     * * stream.compute.4xlarge
     * * stream.compute.8xlarge
     * * stream.memory.large
     * * stream.memory.xlarge
     * * stream.memory.2xlarge
     * * stream.memory.4xlarge
     * * stream.memory.8xlarge
     * * stream.memory.z1d.large
     * * stream.memory.z1d.xlarge
     * * stream.memory.z1d.2xlarge
     * * stream.memory.z1d.3xlarge
     * * stream.memory.z1d.6xlarge
     * * stream.memory.z1d.12xlarge
     * * stream.graphics-design.large
     * * stream.graphics-design.xlarge
     * * stream.graphics-design.2xlarge
     * * stream.graphics-design.4xlarge
     * * stream.graphics-desktop.2xlarge
     * * stream.graphics.g4dn.xlarge
     * * stream.graphics.g4dn.2xlarge
     * * stream.graphics.g4dn.4xlarge
     * * stream.graphics.g4dn.8xlarge
     * * stream.graphics.g4dn.12xlarge
     * * stream.graphics.g4dn.16xlarge
     * * stream.graphics-pro.4xlarge
     * * stream.graphics-pro.8xlarge
     * * stream.graphics-pro.16xlarge
     *
     * The following instance types are available for Elastic fleets:
     *
     * * stream.standard.small
     * * stream.standard.medium
     */
    override fun instanceType(instanceType: String) {
      cdkBuilder.instanceType(instanceType)
    }

    /**
     * @param maxConcurrentSessions The maximum number of concurrent sessions that can be run on an
     * Elastic fleet.
     * This setting is required for Elastic fleets, but is not used for other fleet types.
     */
    override fun maxConcurrentSessions(maxConcurrentSessions: Number) {
      cdkBuilder.maxConcurrentSessions(maxConcurrentSessions)
    }

    /**
     * @param maxSessionsPerInstance Max number of user sessions on an instance.
     * This is applicable only for multi-session fleets.
     */
    override fun maxSessionsPerInstance(maxSessionsPerInstance: Number) {
      cdkBuilder.maxSessionsPerInstance(maxSessionsPerInstance)
    }

    /**
     * @param maxUserDurationInSeconds 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.
     *
     * Specify a value between 600 and 432000.
     */
    override fun maxUserDurationInSeconds(maxUserDurationInSeconds: Number) {
      cdkBuilder.maxUserDurationInSeconds(maxUserDurationInSeconds)
    }

    /**
     * @param name A unique name for the fleet. 
     */
    override fun name(name: String) {
      cdkBuilder.name(name)
    }

    /**
     * @param platform The platform of the fleet.
     * Platform is a required setting for Elastic fleets, and is not used for other fleet types.
     */
    override fun platform(platform: String) {
      cdkBuilder.platform(platform)
    }

    /**
     * @param sessionScriptS3Location The S3 location of the session scripts configuration zip file.
     * This only applies to Elastic fleets.
     */
    override fun sessionScriptS3Location(sessionScriptS3Location: IResolvable) {
      cdkBuilder.sessionScriptS3Location(sessionScriptS3Location.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param sessionScriptS3Location The S3 location of the session scripts configuration zip file.
     * This only applies to Elastic fleets.
     */
    override fun sessionScriptS3Location(sessionScriptS3Location: CfnFleet.S3LocationProperty) {
      cdkBuilder.sessionScriptS3Location(sessionScriptS3Location.let(CfnFleet.S3LocationProperty.Companion::unwrap))
    }

    /**
     * @param sessionScriptS3Location The S3 location of the session scripts configuration zip file.
     * This only applies to Elastic fleets.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("ad395e1e53e659550a6645eab8bfd307a269d1b76ba055229d82e95afca3e34d")
    override
        fun sessionScriptS3Location(sessionScriptS3Location: CfnFleet.S3LocationProperty.Builder.() -> Unit):
        Unit = sessionScriptS3Location(CfnFleet.S3LocationProperty(sessionScriptS3Location))

    /**
     * @param streamView The AppStream 2.0 view that is displayed to your users when they stream
     * from the fleet. When `APP` is specified, only the windows of applications opened by users
     * display. When `DESKTOP` is specified, the standard desktop that is provided by the operating
     * system displays.
     * The default value is `APP` .
     */
    override fun streamView(streamView: String) {
      cdkBuilder.streamView(streamView)
    }

    /**
     * @param tags An array of key-value pairs.
     */
    override fun tags(tags: List) {
      cdkBuilder.tags(tags.map(CfnTag.Companion::unwrap))
    }

    /**
     * @param tags An array of key-value pairs.
     */
    override fun tags(vararg tags: CfnTag): Unit = tags(tags.toList())

    /**
     * @param usbDeviceFilterStrings 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.
     */
    override fun usbDeviceFilterStrings(usbDeviceFilterStrings: List) {
      cdkBuilder.usbDeviceFilterStrings(usbDeviceFilterStrings)
    }

    /**
     * @param usbDeviceFilterStrings 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.
     */
    override fun usbDeviceFilterStrings(vararg usbDeviceFilterStrings: String): Unit =
        usbDeviceFilterStrings(usbDeviceFilterStrings.toList())

    /**
     * @param vpcConfig The VPC configuration for the fleet.
     * This is required for Elastic fleets, but not required for other fleet types.
     */
    override fun vpcConfig(vpcConfig: IResolvable) {
      cdkBuilder.vpcConfig(vpcConfig.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param vpcConfig The VPC configuration for the fleet.
     * This is required for Elastic fleets, but not required for other fleet types.
     */
    override fun vpcConfig(vpcConfig: CfnFleet.VpcConfigProperty) {
      cdkBuilder.vpcConfig(vpcConfig.let(CfnFleet.VpcConfigProperty.Companion::unwrap))
    }

    /**
     * @param vpcConfig The VPC configuration for the fleet.
     * This is required for Elastic fleets, but not required for other fleet types.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("3ab49971d1d1fc25990b8996f87906c689182b6a229ba0e8e9ff08455a1854f2")
    override fun vpcConfig(vpcConfig: CfnFleet.VpcConfigProperty.Builder.() -> Unit): Unit =
        vpcConfig(CfnFleet.VpcConfigProperty(vpcConfig))

    public fun build(): software.amazon.awscdk.services.appstream.CfnFleetProps = cdkBuilder.build()
  }

  private class Wrapper(
    cdkObject: software.amazon.awscdk.services.appstream.CfnFleetProps,
  ) : CdkObject(cdkObject),
      CfnFleetProps {
    /**
     * The desired capacity for the fleet.
     *
     * This is not allowed for Elastic fleets.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-computecapacity)
     */
    override fun computeCapacity(): Any? = unwrap(this).getComputeCapacity()

    /**
     * The description to display.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-description)
     */
    override fun description(): String? = unwrap(this).getDescription()

    /**
     * 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.
     *
     * Specify a value between 60 and 36000.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-disconnecttimeoutinseconds)
     */
    override fun disconnectTimeoutInSeconds(): Number? =
        unwrap(this).getDisconnectTimeoutInSeconds()

    /**
     * The fleet name to display.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-displayname)
     */
    override fun displayName(): String? = unwrap(this).getDisplayName()

    /**
     * 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.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-domainjoininfo)
     */
    override fun domainJoinInfo(): Any? = unwrap(this).getDomainJoinInfo()

    /**
     * Enables or disables default internet access for the fleet.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-enabledefaultinternetaccess)
     */
    override fun enableDefaultInternetAccess(): Any? = unwrap(this).getEnableDefaultInternetAccess()

    /**
     * The fleet type.
     *
     * * **ALWAYS_ON** - 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.
     * * **ON_DEMAND** - 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.
     * * **ELASTIC** - The pool of streaming instances is managed by Amazon AppStream 2.0. When a
     * user selects their application or desktop to launch, they will start streaming after the app
     * block has been downloaded and mounted to a streaming instance.
     *
     * *Allowed Values* : `ALWAYS_ON` | `ELASTIC` | `ON_DEMAND`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-fleettype)
     */
    override fun fleetType(): String? = unwrap(this).getFleetType()

    /**
     * The ARN of the IAM role that is applied to the fleet.
     *
     * To assume a role, the fleet instance calls the AWS Security Token Service `AssumeRole` 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
     * *appstream_machine_role* credential profile on the instance.
     *
     * For more information, see [Using an IAM Role to Grant Permissions to Applications and Scripts
     * Running on AppStream 2.0 Streaming
     * Instances](https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html)
     * in the *Amazon AppStream 2.0 Administration Guide* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-iamrolearn)
     */
    override fun iamRoleArn(): String? = unwrap(this).getIamRoleArn()

    /**
     * The amount of time that users can be idle (inactive) before they are disconnected from their
     * streaming session and the `DisconnectTimeoutInSeconds` 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 `DisconnectTimeoutInSeconds`
     * 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 `IdleDisconnectTimeoutInSeconds` elapses, they are
     * disconnected.
     *
     * To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise,
     * specify a value between 60 and 36000.
     *
     * 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.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-idledisconnecttimeoutinseconds)
     */
    override fun idleDisconnectTimeoutInSeconds(): Number? =
        unwrap(this).getIdleDisconnectTimeoutInSeconds()

    /**
     * The ARN of the public, private, or shared image to use.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-imagearn)
     */
    override fun imageArn(): String? = unwrap(this).getImageArn()

    /**
     * The name of the image used to create the fleet.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-imagename)
     */
    override fun imageName(): String? = unwrap(this).getImageName()

    /**
     * The instance type to use when launching fleet instances. The following instance types are
     * available for non-Elastic fleets:.
     *
     * * stream.standard.small
     * * stream.standard.medium
     * * stream.standard.large
     * * stream.compute.large
     * * stream.compute.xlarge
     * * stream.compute.2xlarge
     * * stream.compute.4xlarge
     * * stream.compute.8xlarge
     * * stream.memory.large
     * * stream.memory.xlarge
     * * stream.memory.2xlarge
     * * stream.memory.4xlarge
     * * stream.memory.8xlarge
     * * stream.memory.z1d.large
     * * stream.memory.z1d.xlarge
     * * stream.memory.z1d.2xlarge
     * * stream.memory.z1d.3xlarge
     * * stream.memory.z1d.6xlarge
     * * stream.memory.z1d.12xlarge
     * * stream.graphics-design.large
     * * stream.graphics-design.xlarge
     * * stream.graphics-design.2xlarge
     * * stream.graphics-design.4xlarge
     * * stream.graphics-desktop.2xlarge
     * * stream.graphics.g4dn.xlarge
     * * stream.graphics.g4dn.2xlarge
     * * stream.graphics.g4dn.4xlarge
     * * stream.graphics.g4dn.8xlarge
     * * stream.graphics.g4dn.12xlarge
     * * stream.graphics.g4dn.16xlarge
     * * stream.graphics-pro.4xlarge
     * * stream.graphics-pro.8xlarge
     * * stream.graphics-pro.16xlarge
     *
     * The following instance types are available for Elastic fleets:
     *
     * * stream.standard.small
     * * stream.standard.medium
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-instancetype)
     */
    override fun instanceType(): String = unwrap(this).getInstanceType()

    /**
     * The maximum number of concurrent sessions that can be run on an Elastic fleet.
     *
     * This setting is required for Elastic fleets, but is not used for other fleet types.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-maxconcurrentsessions)
     */
    override fun maxConcurrentSessions(): Number? = unwrap(this).getMaxConcurrentSessions()

    /**
     * Max number of user sessions on an instance.
     *
     * This is applicable only for multi-session fleets.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-maxsessionsperinstance)
     */
    override fun maxSessionsPerInstance(): Number? = unwrap(this).getMaxSessionsPerInstance()

    /**
     * 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.
     *
     * Specify a value between 600 and 432000.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-maxuserdurationinseconds)
     */
    override fun maxUserDurationInSeconds(): Number? = unwrap(this).getMaxUserDurationInSeconds()

    /**
     * A unique name for the fleet.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-name)
     */
    override fun name(): String = unwrap(this).getName()

    /**
     * The platform of the fleet.
     *
     * Platform is a required setting for Elastic fleets, and is not used for other fleet types.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-platform)
     */
    override fun platform(): String? = unwrap(this).getPlatform()

    /**
     * The S3 location of the session scripts configuration zip file.
     *
     * This only applies to Elastic fleets.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-sessionscripts3location)
     */
    override fun sessionScriptS3Location(): Any? = unwrap(this).getSessionScriptS3Location()

    /**
     * The AppStream 2.0 view that is displayed to your users when they stream from the fleet. When
     * `APP` is specified, only the windows of applications opened by users display. When `DESKTOP` is
     * specified, the standard desktop that is provided by the operating system displays.
     *
     * The default value is `APP` .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-streamview)
     */
    override fun streamView(): String? = unwrap(this).getStreamView()

    /**
     * An array of key-value pairs.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-tags)
     */
    override fun tags(): List = unwrap(this).getTags()?.map(CfnTag::wrap) ?: emptyList()

    /**
     * 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.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-usbdevicefilterstrings)
     */
    override fun usbDeviceFilterStrings(): List = unwrap(this).getUsbDeviceFilterStrings()
        ?: emptyList()

    /**
     * The VPC configuration for the fleet.
     *
     * This is required for Elastic fleets, but not required for other fleet types.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-fleet.html#cfn-appstream-fleet-vpcconfig)
     */
    override fun vpcConfig(): Any? = unwrap(this).getVpcConfig()
  }

  public companion object {
    public operator fun invoke(block: Builder.() -> Unit = {}): CfnFleetProps {
      val builderImpl = BuilderImpl()
      return Wrapper(builderImpl.apply(block).build())
    }

    internal fun wrap(cdkObject: software.amazon.awscdk.services.appstream.CfnFleetProps):
        CfnFleetProps = CdkObjectWrappers.wrap(cdkObject) as? CfnFleetProps ?: Wrapper(cdkObject)

    internal fun unwrap(wrapped: CfnFleetProps):
        software.amazon.awscdk.services.appstream.CfnFleetProps = (wrapped as CdkObject).cdkObject
        as software.amazon.awscdk.services.appstream.CfnFleetProps
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy