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

com.pulumi.awsnative.gamelift.kotlin.FleetArgs.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 1.11.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.awsnative.gamelift.kotlin

import com.pulumi.awsnative.gamelift.FleetArgs.builder
import com.pulumi.awsnative.gamelift.kotlin.enums.FleetApplyCapacity
import com.pulumi.awsnative.gamelift.kotlin.enums.FleetComputeType
import com.pulumi.awsnative.gamelift.kotlin.enums.FleetInstanceRoleCredentialsProvider
import com.pulumi.awsnative.gamelift.kotlin.enums.FleetNewGameSessionProtectionPolicy
import com.pulumi.awsnative.gamelift.kotlin.enums.FleetType
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetAnywhereConfigurationArgs
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetAnywhereConfigurationArgsBuilder
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetCertificateConfigurationArgs
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetCertificateConfigurationArgsBuilder
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetContainerGroupsConfigurationArgs
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetContainerGroupsConfigurationArgsBuilder
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetIpPermissionArgs
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetIpPermissionArgsBuilder
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetLocationConfigurationArgs
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetLocationConfigurationArgsBuilder
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetResourceCreationLimitPolicyArgs
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetResourceCreationLimitPolicyArgsBuilder
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetRuntimeConfigurationArgs
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetRuntimeConfigurationArgsBuilder
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetScalingPolicyArgs
import com.pulumi.awsnative.gamelift.kotlin.inputs.FleetScalingPolicyArgsBuilder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * The AWS::GameLift::Fleet resource creates an Amazon GameLift (GameLift) fleet to host game servers. A fleet is a set of EC2 or Anywhere instances, each of which can host multiple game sessions.
 * @property anywhereConfiguration Configuration for Anywhere fleet.
 * @property applyCapacity Determines whether to apply fleet or location capacities on fleet creation.
 * @property buildId A unique identifier for a build to be deployed on the new fleet. If you are deploying the fleet with a custom game build, you must specify this property. The build must have been successfully uploaded to Amazon GameLift and be in a READY status. This fleet setting cannot be changed once the fleet is created.
 * @property certificateConfiguration Indicates whether to generate a TLS/SSL certificate for the new fleet. TLS certificates are used for encrypting traffic between game clients and game servers running on GameLift. If this parameter is not set, certificate generation is disabled. This fleet setting cannot be changed once the fleet is created.
 * @property computeType ComputeType to differentiate EC2 hardware managed by GameLift and Anywhere hardware managed by the customer.
 * @property containerGroupsConfiguration *This data type is used with the Amazon GameLift containers feature, which is currently in public preview.*
 * Configuration details for a set of container groups, for use when creating a fleet with compute type `CONTAINER` .
 * *Used with:* `CreateFleet`
 * @property description A human-readable description of a fleet.
 * @property desiredEc2Instances [DEPRECATED] The number of EC2 instances that you want this fleet to host. When creating a new fleet, GameLift automatically sets this value to "1" and initiates a single instance. Once the fleet is active, update this value to trigger GameLift to add or remove instances from the fleet.
 * @property ec2InboundPermissions A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift server.
 * @property ec2InstanceType The name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See Amazon EC2 Instance Types for detailed descriptions.
 * @property fleetType Indicates whether to use On-Demand instances or Spot instances for this fleet. If empty, the default is ON_DEMAND. Both categories of instances use identical hardware and configurations based on the instance type selected for this fleet.
 * @property instanceRoleArn A unique identifier for an AWS IAM role that manages access to your AWS services. With an instance role ARN set, any application that runs on an instance in this fleet can assume the role, including install scripts, server processes, and daemons (background processes). Create a role or look up a role's ARN from the IAM dashboard in the AWS Management Console.
 * @property instanceRoleCredentialsProvider Credentials provider implementation that loads credentials from the Amazon EC2 Instance Metadata Service.
 * @property locations A set of remote locations to deploy additional instances to and manage as part of the fleet. This parameter can only be used when creating fleets in AWS Regions that support multiple locations. You can add any Amazon GameLift-supported AWS Region as a remote location, in the form of an AWS Region code, such as `us-west-2` or Local Zone code. To create a fleet with instances in the home Region only, don't set this parameter.
 * When using this parameter, Amazon GameLift requires you to include your home location in the request.
 * @property logPaths This parameter is no longer used. When hosting a custom game build, specify where Amazon GameLift should store log files using the Amazon GameLift server API call ProcessReady()
 * @property maxSize [DEPRECATED] The maximum value that is allowed for the fleet's instance count. When creating a new fleet, GameLift automatically sets this value to "1". Once the fleet is active, you can change this value.
 * @property metricGroups The name of an Amazon CloudWatch metric group. A metric group aggregates the metrics for all fleets in the group. Specify a string containing the metric group name. You can use an existing name or use a new name to create a new metric group. Currently, this parameter can have only one string.
 * @property minSize [DEPRECATED] The minimum value allowed for the fleet's instance count. When creating a new fleet, GameLift automatically sets this value to "0". After the fleet is active, you can change this value.
 * @property name A descriptive label that is associated with a fleet. Fleet names do not need to be unique.
 * @property newGameSessionProtectionPolicy A game session protection policy to apply to all game sessions hosted on instances in this fleet. When protected, active game sessions cannot be terminated during a scale-down event. If this parameter is not set, instances in this fleet default to no protection. You can change a fleet's protection policy to affect future game sessions on the fleet. You can also set protection for individual game sessions.
 * @property peerVpcAwsAccountId A unique identifier for the AWS account with the VPC that you want to peer your Amazon GameLift fleet with. You can find your account ID in the AWS Management Console under account settings.
 * @property peerVpcId A unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same Region as your fleet. To look up a VPC ID, use the VPC Dashboard in the AWS Management Console.
 * @property resourceCreationLimitPolicy A policy that limits the number of game sessions an individual player can create over a span of time for this fleet.
 * @property runtimeConfiguration Instructions for launching server processes on each instance in the fleet. Server processes run either a custom game build executable or a Realtime script. The runtime configuration defines the server executables or launch script file, launch parameters, and the number of processes to run concurrently on each instance. When creating a fleet, the runtime configuration must have at least one server process configuration; otherwise the request fails with an invalid request exception.
 * This parameter is required unless the parameters ServerLaunchPath and ServerLaunchParameters are defined. Runtime configuration has replaced these parameters, but fleets that use them will continue to work.
 * @property scalingPolicies A list of rules that control how a fleet is scaled.
 * @property scriptId A unique identifier for a Realtime script to be deployed on a new Realtime Servers fleet. The script must have been successfully uploaded to Amazon GameLift. This fleet setting cannot be changed once the fleet is created.
 * Note: It is not currently possible to use the !Ref command to reference a script created with a CloudFormation template for the fleet property ScriptId. Instead, use Fn::GetAtt Script.Arn or Fn::GetAtt Script.Id to retrieve either of these properties as input for ScriptId. Alternatively, enter a ScriptId string manually.
 * @property serverLaunchParameters This parameter is no longer used but is retained for backward compatibility. Instead, specify server launch parameters in the RuntimeConfiguration parameter. A request must specify either a runtime configuration or values for both ServerLaunchParameters and ServerLaunchPath.
 * @property serverLaunchPath This parameter is no longer used. Instead, specify a server launch path using the RuntimeConfiguration parameter. Requests that specify a server launch path and launch parameters instead of a runtime configuration will continue to work.
 */
public data class FleetArgs(
    public val anywhereConfiguration: Output? = null,
    public val applyCapacity: Output? = null,
    public val buildId: Output? = null,
    public val certificateConfiguration: Output? = null,
    public val computeType: Output? = null,
    public val containerGroupsConfiguration: Output? = null,
    public val description: Output? = null,
    public val desiredEc2Instances: Output? = null,
    public val ec2InboundPermissions: Output>? = null,
    public val ec2InstanceType: Output? = null,
    public val fleetType: Output? = null,
    public val instanceRoleArn: Output? = null,
    public val instanceRoleCredentialsProvider: Output? = null,
    public val locations: Output>? = null,
    public val logPaths: Output>? = null,
    public val maxSize: Output? = null,
    public val metricGroups: Output>? = null,
    public val minSize: Output? = null,
    public val name: Output? = null,
    public val newGameSessionProtectionPolicy: Output? = null,
    public val peerVpcAwsAccountId: Output? = null,
    public val peerVpcId: Output? = null,
    public val resourceCreationLimitPolicy: Output? = null,
    public val runtimeConfiguration: Output? = null,
    public val scalingPolicies: Output>? = null,
    public val scriptId: Output? = null,
    public val serverLaunchParameters: Output? = null,
    public val serverLaunchPath: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.gamelift.FleetArgs =
        com.pulumi.awsnative.gamelift.FleetArgs.builder()
            .anywhereConfiguration(
                anywhereConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .applyCapacity(applyCapacity?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .buildId(buildId?.applyValue({ args0 -> args0 }))
            .certificateConfiguration(
                certificateConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .computeType(computeType?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .containerGroupsConfiguration(
                containerGroupsConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .description(description?.applyValue({ args0 -> args0 }))
            .desiredEc2Instances(desiredEc2Instances?.applyValue({ args0 -> args0 }))
            .ec2InboundPermissions(
                ec2InboundPermissions?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .ec2InstanceType(ec2InstanceType?.applyValue({ args0 -> args0 }))
            .fleetType(fleetType?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .instanceRoleArn(instanceRoleArn?.applyValue({ args0 -> args0 }))
            .instanceRoleCredentialsProvider(
                instanceRoleCredentialsProvider?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .locations(
                locations?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .logPaths(logPaths?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .maxSize(maxSize?.applyValue({ args0 -> args0 }))
            .metricGroups(metricGroups?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .minSize(minSize?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .newGameSessionProtectionPolicy(
                newGameSessionProtectionPolicy?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .peerVpcAwsAccountId(peerVpcAwsAccountId?.applyValue({ args0 -> args0 }))
            .peerVpcId(peerVpcId?.applyValue({ args0 -> args0 }))
            .resourceCreationLimitPolicy(
                resourceCreationLimitPolicy?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .runtimeConfiguration(
                runtimeConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .scalingPolicies(
                scalingPolicies?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .scriptId(scriptId?.applyValue({ args0 -> args0 }))
            .serverLaunchParameters(serverLaunchParameters?.applyValue({ args0 -> args0 }))
            .serverLaunchPath(serverLaunchPath?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [FleetArgs].
 */
@PulumiTagMarker
public class FleetArgsBuilder internal constructor() {
    private var anywhereConfiguration: Output? = null

    private var applyCapacity: Output? = null

    private var buildId: Output? = null

    private var certificateConfiguration: Output? = null

    private var computeType: Output? = null

    private var containerGroupsConfiguration: Output? = null

    private var description: Output? = null

    private var desiredEc2Instances: Output? = null

    private var ec2InboundPermissions: Output>? = null

    private var ec2InstanceType: Output? = null

    private var fleetType: Output? = null

    private var instanceRoleArn: Output? = null

    private var instanceRoleCredentialsProvider: Output? = null

    private var locations: Output>? = null

    private var logPaths: Output>? = null

    private var maxSize: Output? = null

    private var metricGroups: Output>? = null

    private var minSize: Output? = null

    private var name: Output? = null

    private var newGameSessionProtectionPolicy: Output? = null

    private var peerVpcAwsAccountId: Output? = null

    private var peerVpcId: Output? = null

    private var resourceCreationLimitPolicy: Output? = null

    private var runtimeConfiguration: Output? = null

    private var scalingPolicies: Output>? = null

    private var scriptId: Output? = null

    private var serverLaunchParameters: Output? = null

    private var serverLaunchPath: Output? = null

    /**
     * @param value Configuration for Anywhere fleet.
     */
    @JvmName("spqypgshywdjcwke")
    public suspend fun anywhereConfiguration(`value`: Output) {
        this.anywhereConfiguration = value
    }

    /**
     * @param value Determines whether to apply fleet or location capacities on fleet creation.
     */
    @JvmName("vfshrgktbifrstxc")
    public suspend fun applyCapacity(`value`: Output) {
        this.applyCapacity = value
    }

    /**
     * @param value A unique identifier for a build to be deployed on the new fleet. If you are deploying the fleet with a custom game build, you must specify this property. The build must have been successfully uploaded to Amazon GameLift and be in a READY status. This fleet setting cannot be changed once the fleet is created.
     */
    @JvmName("cpsxlcptdqnjbfmq")
    public suspend fun buildId(`value`: Output) {
        this.buildId = value
    }

    /**
     * @param value Indicates whether to generate a TLS/SSL certificate for the new fleet. TLS certificates are used for encrypting traffic between game clients and game servers running on GameLift. If this parameter is not set, certificate generation is disabled. This fleet setting cannot be changed once the fleet is created.
     */
    @JvmName("mxkooidxcfbkqdji")
    public suspend fun certificateConfiguration(`value`: Output) {
        this.certificateConfiguration = value
    }

    /**
     * @param value ComputeType to differentiate EC2 hardware managed by GameLift and Anywhere hardware managed by the customer.
     */
    @JvmName("ohmhfiusqrwnsova")
    public suspend fun computeType(`value`: Output) {
        this.computeType = value
    }

    /**
     * @param value *This data type is used with the Amazon GameLift containers feature, which is currently in public preview.*
     * Configuration details for a set of container groups, for use when creating a fleet with compute type `CONTAINER` .
     * *Used with:* `CreateFleet`
     */
    @JvmName("sjmlickpcthhtmpn")
    public suspend fun containerGroupsConfiguration(`value`: Output) {
        this.containerGroupsConfiguration = value
    }

    /**
     * @param value A human-readable description of a fleet.
     */
    @JvmName("gubvurpvytqonfue")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value [DEPRECATED] The number of EC2 instances that you want this fleet to host. When creating a new fleet, GameLift automatically sets this value to "1" and initiates a single instance. Once the fleet is active, update this value to trigger GameLift to add or remove instances from the fleet.
     */
    @JvmName("vbglfhosglwvxlfm")
    public suspend fun desiredEc2Instances(`value`: Output) {
        this.desiredEc2Instances = value
    }

    /**
     * @param value A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift server.
     */
    @JvmName("nevyimidpehmvlni")
    public suspend fun ec2InboundPermissions(`value`: Output>) {
        this.ec2InboundPermissions = value
    }

    @JvmName("joixktvgpfdiqqfr")
    public suspend fun ec2InboundPermissions(vararg values: Output) {
        this.ec2InboundPermissions = Output.all(values.asList())
    }

    /**
     * @param values A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift server.
     */
    @JvmName("vvwmovbksvrkvqxw")
    public suspend fun ec2InboundPermissions(values: List>) {
        this.ec2InboundPermissions = Output.all(values)
    }

    /**
     * @param value The name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See Amazon EC2 Instance Types for detailed descriptions.
     */
    @JvmName("vhoxjdsshxtwrgbt")
    public suspend fun ec2InstanceType(`value`: Output) {
        this.ec2InstanceType = value
    }

    /**
     * @param value Indicates whether to use On-Demand instances or Spot instances for this fleet. If empty, the default is ON_DEMAND. Both categories of instances use identical hardware and configurations based on the instance type selected for this fleet.
     */
    @JvmName("ylnkkhgoyiyhypww")
    public suspend fun fleetType(`value`: Output) {
        this.fleetType = value
    }

    /**
     * @param value A unique identifier for an AWS IAM role that manages access to your AWS services. With an instance role ARN set, any application that runs on an instance in this fleet can assume the role, including install scripts, server processes, and daemons (background processes). Create a role or look up a role's ARN from the IAM dashboard in the AWS Management Console.
     */
    @JvmName("tmvapkaylroawnxo")
    public suspend fun instanceRoleArn(`value`: Output) {
        this.instanceRoleArn = value
    }

    /**
     * @param value Credentials provider implementation that loads credentials from the Amazon EC2 Instance Metadata Service.
     */
    @JvmName("rvyjuwtdcxpdprna")
    public suspend fun instanceRoleCredentialsProvider(`value`: Output) {
        this.instanceRoleCredentialsProvider = value
    }

    /**
     * @param value A set of remote locations to deploy additional instances to and manage as part of the fleet. This parameter can only be used when creating fleets in AWS Regions that support multiple locations. You can add any Amazon GameLift-supported AWS Region as a remote location, in the form of an AWS Region code, such as `us-west-2` or Local Zone code. To create a fleet with instances in the home Region only, don't set this parameter.
     * When using this parameter, Amazon GameLift requires you to include your home location in the request.
     */
    @JvmName("dtfrigejlcgasrua")
    public suspend fun locations(`value`: Output>) {
        this.locations = value
    }

    @JvmName("tlusymktlhmsybfh")
    public suspend fun locations(vararg values: Output) {
        this.locations = Output.all(values.asList())
    }

    /**
     * @param values A set of remote locations to deploy additional instances to and manage as part of the fleet. This parameter can only be used when creating fleets in AWS Regions that support multiple locations. You can add any Amazon GameLift-supported AWS Region as a remote location, in the form of an AWS Region code, such as `us-west-2` or Local Zone code. To create a fleet with instances in the home Region only, don't set this parameter.
     * When using this parameter, Amazon GameLift requires you to include your home location in the request.
     */
    @JvmName("yccsrbgxwsjedduv")
    public suspend fun locations(values: List>) {
        this.locations = Output.all(values)
    }

    /**
     * @param value This parameter is no longer used. When hosting a custom game build, specify where Amazon GameLift should store log files using the Amazon GameLift server API call ProcessReady()
     */
    @JvmName("hotwmimkmoksusxv")
    public suspend fun logPaths(`value`: Output>) {
        this.logPaths = value
    }

    @JvmName("ysayrqwotrfdhwea")
    public suspend fun logPaths(vararg values: Output) {
        this.logPaths = Output.all(values.asList())
    }

    /**
     * @param values This parameter is no longer used. When hosting a custom game build, specify where Amazon GameLift should store log files using the Amazon GameLift server API call ProcessReady()
     */
    @JvmName("qbabqvafqpkpftjl")
    public suspend fun logPaths(values: List>) {
        this.logPaths = Output.all(values)
    }

    /**
     * @param value [DEPRECATED] The maximum value that is allowed for the fleet's instance count. When creating a new fleet, GameLift automatically sets this value to "1". Once the fleet is active, you can change this value.
     */
    @JvmName("sgkoxcmcywsltnfb")
    public suspend fun maxSize(`value`: Output) {
        this.maxSize = value
    }

    /**
     * @param value The name of an Amazon CloudWatch metric group. A metric group aggregates the metrics for all fleets in the group. Specify a string containing the metric group name. You can use an existing name or use a new name to create a new metric group. Currently, this parameter can have only one string.
     */
    @JvmName("mbjnrjyhpujpgstj")
    public suspend fun metricGroups(`value`: Output>) {
        this.metricGroups = value
    }

    @JvmName("ioigorfbhpgnnkmv")
    public suspend fun metricGroups(vararg values: Output) {
        this.metricGroups = Output.all(values.asList())
    }

    /**
     * @param values The name of an Amazon CloudWatch metric group. A metric group aggregates the metrics for all fleets in the group. Specify a string containing the metric group name. You can use an existing name or use a new name to create a new metric group. Currently, this parameter can have only one string.
     */
    @JvmName("lhpxbdhgxujggtpo")
    public suspend fun metricGroups(values: List>) {
        this.metricGroups = Output.all(values)
    }

    /**
     * @param value [DEPRECATED] The minimum value allowed for the fleet's instance count. When creating a new fleet, GameLift automatically sets this value to "0". After the fleet is active, you can change this value.
     */
    @JvmName("vxswuhoprmihgqbh")
    public suspend fun minSize(`value`: Output) {
        this.minSize = value
    }

    /**
     * @param value A descriptive label that is associated with a fleet. Fleet names do not need to be unique.
     */
    @JvmName("shhpocrwvxodmkjj")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value A game session protection policy to apply to all game sessions hosted on instances in this fleet. When protected, active game sessions cannot be terminated during a scale-down event. If this parameter is not set, instances in this fleet default to no protection. You can change a fleet's protection policy to affect future game sessions on the fleet. You can also set protection for individual game sessions.
     */
    @JvmName("yeouiqomuuogptvx")
    public suspend fun newGameSessionProtectionPolicy(`value`: Output) {
        this.newGameSessionProtectionPolicy = value
    }

    /**
     * @param value A unique identifier for the AWS account with the VPC that you want to peer your Amazon GameLift fleet with. You can find your account ID in the AWS Management Console under account settings.
     */
    @JvmName("sqwilhjtflgoyafn")
    public suspend fun peerVpcAwsAccountId(`value`: Output) {
        this.peerVpcAwsAccountId = value
    }

    /**
     * @param value A unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same Region as your fleet. To look up a VPC ID, use the VPC Dashboard in the AWS Management Console.
     */
    @JvmName("ndroucfyjucoflmk")
    public suspend fun peerVpcId(`value`: Output) {
        this.peerVpcId = value
    }

    /**
     * @param value A policy that limits the number of game sessions an individual player can create over a span of time for this fleet.
     */
    @JvmName("dugeeuueleglgrkk")
    public suspend fun resourceCreationLimitPolicy(`value`: Output) {
        this.resourceCreationLimitPolicy = value
    }

    /**
     * @param value Instructions for launching server processes on each instance in the fleet. Server processes run either a custom game build executable or a Realtime script. The runtime configuration defines the server executables or launch script file, launch parameters, and the number of processes to run concurrently on each instance. When creating a fleet, the runtime configuration must have at least one server process configuration; otherwise the request fails with an invalid request exception.
     * This parameter is required unless the parameters ServerLaunchPath and ServerLaunchParameters are defined. Runtime configuration has replaced these parameters, but fleets that use them will continue to work.
     */
    @JvmName("ongbhiyvinqgctpl")
    public suspend fun runtimeConfiguration(`value`: Output) {
        this.runtimeConfiguration = value
    }

    /**
     * @param value A list of rules that control how a fleet is scaled.
     */
    @JvmName("abjquimojeweortl")
    public suspend fun scalingPolicies(`value`: Output>) {
        this.scalingPolicies = value
    }

    @JvmName("slmbqwbtfsypcrus")
    public suspend fun scalingPolicies(vararg values: Output) {
        this.scalingPolicies = Output.all(values.asList())
    }

    /**
     * @param values A list of rules that control how a fleet is scaled.
     */
    @JvmName("pnrswctoulfwtsav")
    public suspend fun scalingPolicies(values: List>) {
        this.scalingPolicies = Output.all(values)
    }

    /**
     * @param value A unique identifier for a Realtime script to be deployed on a new Realtime Servers fleet. The script must have been successfully uploaded to Amazon GameLift. This fleet setting cannot be changed once the fleet is created.
     * Note: It is not currently possible to use the !Ref command to reference a script created with a CloudFormation template for the fleet property ScriptId. Instead, use Fn::GetAtt Script.Arn or Fn::GetAtt Script.Id to retrieve either of these properties as input for ScriptId. Alternatively, enter a ScriptId string manually.
     */
    @JvmName("xasxecmogerqdlud")
    public suspend fun scriptId(`value`: Output) {
        this.scriptId = value
    }

    /**
     * @param value This parameter is no longer used but is retained for backward compatibility. Instead, specify server launch parameters in the RuntimeConfiguration parameter. A request must specify either a runtime configuration or values for both ServerLaunchParameters and ServerLaunchPath.
     */
    @JvmName("hwdbiwpnqiqvirmm")
    public suspend fun serverLaunchParameters(`value`: Output) {
        this.serverLaunchParameters = value
    }

    /**
     * @param value This parameter is no longer used. Instead, specify a server launch path using the RuntimeConfiguration parameter. Requests that specify a server launch path and launch parameters instead of a runtime configuration will continue to work.
     */
    @JvmName("ffhdsqqfrxomajnj")
    public suspend fun serverLaunchPath(`value`: Output) {
        this.serverLaunchPath = value
    }

    /**
     * @param value Configuration for Anywhere fleet.
     */
    @JvmName("velfubakjjtingoq")
    public suspend fun anywhereConfiguration(`value`: FleetAnywhereConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.anywhereConfiguration = mapped
    }

    /**
     * @param argument Configuration for Anywhere fleet.
     */
    @JvmName("ekcihgtahnhrvgge")
    public suspend fun anywhereConfiguration(argument: suspend FleetAnywhereConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = FleetAnywhereConfigurationArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.anywhereConfiguration = mapped
    }

    /**
     * @param value Determines whether to apply fleet or location capacities on fleet creation.
     */
    @JvmName("sllderwlyottuqim")
    public suspend fun applyCapacity(`value`: FleetApplyCapacity?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.applyCapacity = mapped
    }

    /**
     * @param value A unique identifier for a build to be deployed on the new fleet. If you are deploying the fleet with a custom game build, you must specify this property. The build must have been successfully uploaded to Amazon GameLift and be in a READY status. This fleet setting cannot be changed once the fleet is created.
     */
    @JvmName("iptlbdbtmrorjuxp")
    public suspend fun buildId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.buildId = mapped
    }

    /**
     * @param value Indicates whether to generate a TLS/SSL certificate for the new fleet. TLS certificates are used for encrypting traffic between game clients and game servers running on GameLift. If this parameter is not set, certificate generation is disabled. This fleet setting cannot be changed once the fleet is created.
     */
    @JvmName("xrhfgdiwjyisfxya")
    public suspend fun certificateConfiguration(`value`: FleetCertificateConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.certificateConfiguration = mapped
    }

    /**
     * @param argument Indicates whether to generate a TLS/SSL certificate for the new fleet. TLS certificates are used for encrypting traffic between game clients and game servers running on GameLift. If this parameter is not set, certificate generation is disabled. This fleet setting cannot be changed once the fleet is created.
     */
    @JvmName("dqymbdtmftmweugy")
    public suspend fun certificateConfiguration(argument: suspend FleetCertificateConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = FleetCertificateConfigurationArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.certificateConfiguration = mapped
    }

    /**
     * @param value ComputeType to differentiate EC2 hardware managed by GameLift and Anywhere hardware managed by the customer.
     */
    @JvmName("xkvakqqsnlgeubnd")
    public suspend fun computeType(`value`: FleetComputeType?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.computeType = mapped
    }

    /**
     * @param value *This data type is used with the Amazon GameLift containers feature, which is currently in public preview.*
     * Configuration details for a set of container groups, for use when creating a fleet with compute type `CONTAINER` .
     * *Used with:* `CreateFleet`
     */
    @JvmName("bxwdgkfwecawipii")
    public suspend fun containerGroupsConfiguration(`value`: FleetContainerGroupsConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.containerGroupsConfiguration = mapped
    }

    /**
     * @param argument *This data type is used with the Amazon GameLift containers feature, which is currently in public preview.*
     * Configuration details for a set of container groups, for use when creating a fleet with compute type `CONTAINER` .
     * *Used with:* `CreateFleet`
     */
    @JvmName("emkyxjsxpvwnblxp")
    public suspend fun containerGroupsConfiguration(argument: suspend FleetContainerGroupsConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = FleetContainerGroupsConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.containerGroupsConfiguration = mapped
    }

    /**
     * @param value A human-readable description of a fleet.
     */
    @JvmName("twhdadruymgyeapi")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value [DEPRECATED] The number of EC2 instances that you want this fleet to host. When creating a new fleet, GameLift automatically sets this value to "1" and initiates a single instance. Once the fleet is active, update this value to trigger GameLift to add or remove instances from the fleet.
     */
    @JvmName("yoppbmcbknvpiqcl")
    public suspend fun desiredEc2Instances(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.desiredEc2Instances = mapped
    }

    /**
     * @param value A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift server.
     */
    @JvmName("pjormxowogousavf")
    public suspend fun ec2InboundPermissions(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ec2InboundPermissions = mapped
    }

    /**
     * @param argument A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift server.
     */
    @JvmName("mhhndcktqkpalggc")
    public suspend fun ec2InboundPermissions(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            FleetIpPermissionArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.ec2InboundPermissions = mapped
    }

    /**
     * @param argument A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift server.
     */
    @JvmName("ookjpacjgwkyqpru")
    public suspend fun ec2InboundPermissions(vararg argument: suspend FleetIpPermissionArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            FleetIpPermissionArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.ec2InboundPermissions = mapped
    }

    /**
     * @param argument A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift server.
     */
    @JvmName("ocjurrercexkafpq")
    public suspend fun ec2InboundPermissions(argument: suspend FleetIpPermissionArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(FleetIpPermissionArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.ec2InboundPermissions = mapped
    }

    /**
     * @param values A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift server.
     */
    @JvmName("kcbnvchxwgckvehh")
    public suspend fun ec2InboundPermissions(vararg values: FleetIpPermissionArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.ec2InboundPermissions = mapped
    }

    /**
     * @param value The name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See Amazon EC2 Instance Types for detailed descriptions.
     */
    @JvmName("tcpuowqilyxxxsau")
    public suspend fun ec2InstanceType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ec2InstanceType = mapped
    }

    /**
     * @param value Indicates whether to use On-Demand instances or Spot instances for this fleet. If empty, the default is ON_DEMAND. Both categories of instances use identical hardware and configurations based on the instance type selected for this fleet.
     */
    @JvmName("dhxmjcvmypsldrmi")
    public suspend fun fleetType(`value`: FleetType?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.fleetType = mapped
    }

    /**
     * @param value A unique identifier for an AWS IAM role that manages access to your AWS services. With an instance role ARN set, any application that runs on an instance in this fleet can assume the role, including install scripts, server processes, and daemons (background processes). Create a role or look up a role's ARN from the IAM dashboard in the AWS Management Console.
     */
    @JvmName("dmxikmdayskocukk")
    public suspend fun instanceRoleArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.instanceRoleArn = mapped
    }

    /**
     * @param value Credentials provider implementation that loads credentials from the Amazon EC2 Instance Metadata Service.
     */
    @JvmName("kxehjwusxcqeplsh")
    public suspend fun instanceRoleCredentialsProvider(`value`: FleetInstanceRoleCredentialsProvider?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.instanceRoleCredentialsProvider = mapped
    }

    /**
     * @param value A set of remote locations to deploy additional instances to and manage as part of the fleet. This parameter can only be used when creating fleets in AWS Regions that support multiple locations. You can add any Amazon GameLift-supported AWS Region as a remote location, in the form of an AWS Region code, such as `us-west-2` or Local Zone code. To create a fleet with instances in the home Region only, don't set this parameter.
     * When using this parameter, Amazon GameLift requires you to include your home location in the request.
     */
    @JvmName("ubunfqiciaiqnohk")
    public suspend fun locations(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.locations = mapped
    }

    /**
     * @param argument A set of remote locations to deploy additional instances to and manage as part of the fleet. This parameter can only be used when creating fleets in AWS Regions that support multiple locations. You can add any Amazon GameLift-supported AWS Region as a remote location, in the form of an AWS Region code, such as `us-west-2` or Local Zone code. To create a fleet with instances in the home Region only, don't set this parameter.
     * When using this parameter, Amazon GameLift requires you to include your home location in the request.
     */
    @JvmName("tqucmbirfdcodvho")
    public suspend fun locations(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            FleetLocationConfigurationArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.locations = mapped
    }

    /**
     * @param argument A set of remote locations to deploy additional instances to and manage as part of the fleet. This parameter can only be used when creating fleets in AWS Regions that support multiple locations. You can add any Amazon GameLift-supported AWS Region as a remote location, in the form of an AWS Region code, such as `us-west-2` or Local Zone code. To create a fleet with instances in the home Region only, don't set this parameter.
     * When using this parameter, Amazon GameLift requires you to include your home location in the request.
     */
    @JvmName("uadmtakcbysgfora")
    public suspend fun locations(vararg argument: suspend FleetLocationConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            FleetLocationConfigurationArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.locations = mapped
    }

    /**
     * @param argument A set of remote locations to deploy additional instances to and manage as part of the fleet. This parameter can only be used when creating fleets in AWS Regions that support multiple locations. You can add any Amazon GameLift-supported AWS Region as a remote location, in the form of an AWS Region code, such as `us-west-2` or Local Zone code. To create a fleet with instances in the home Region only, don't set this parameter.
     * When using this parameter, Amazon GameLift requires you to include your home location in the request.
     */
    @JvmName("nvcmgyaqmgbrqiqb")
    public suspend fun locations(argument: suspend FleetLocationConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            FleetLocationConfigurationArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.locations = mapped
    }

    /**
     * @param values A set of remote locations to deploy additional instances to and manage as part of the fleet. This parameter can only be used when creating fleets in AWS Regions that support multiple locations. You can add any Amazon GameLift-supported AWS Region as a remote location, in the form of an AWS Region code, such as `us-west-2` or Local Zone code. To create a fleet with instances in the home Region only, don't set this parameter.
     * When using this parameter, Amazon GameLift requires you to include your home location in the request.
     */
    @JvmName("pjyprsebsfyyarev")
    public suspend fun locations(vararg values: FleetLocationConfigurationArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.locations = mapped
    }

    /**
     * @param value This parameter is no longer used. When hosting a custom game build, specify where Amazon GameLift should store log files using the Amazon GameLift server API call ProcessReady()
     */
    @JvmName("qhosmsnjrvgpaltm")
    public suspend fun logPaths(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.logPaths = mapped
    }

    /**
     * @param values This parameter is no longer used. When hosting a custom game build, specify where Amazon GameLift should store log files using the Amazon GameLift server API call ProcessReady()
     */
    @JvmName("ksgsbhutssawukim")
    public suspend fun logPaths(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.logPaths = mapped
    }

    /**
     * @param value [DEPRECATED] The maximum value that is allowed for the fleet's instance count. When creating a new fleet, GameLift automatically sets this value to "1". Once the fleet is active, you can change this value.
     */
    @JvmName("erccdnasarxegxlt")
    public suspend fun maxSize(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maxSize = mapped
    }

    /**
     * @param value The name of an Amazon CloudWatch metric group. A metric group aggregates the metrics for all fleets in the group. Specify a string containing the metric group name. You can use an existing name or use a new name to create a new metric group. Currently, this parameter can have only one string.
     */
    @JvmName("ebbuygpoilynwlpd")
    public suspend fun metricGroups(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.metricGroups = mapped
    }

    /**
     * @param values The name of an Amazon CloudWatch metric group. A metric group aggregates the metrics for all fleets in the group. Specify a string containing the metric group name. You can use an existing name or use a new name to create a new metric group. Currently, this parameter can have only one string.
     */
    @JvmName("btbqedqictekiovy")
    public suspend fun metricGroups(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.metricGroups = mapped
    }

    /**
     * @param value [DEPRECATED] The minimum value allowed for the fleet's instance count. When creating a new fleet, GameLift automatically sets this value to "0". After the fleet is active, you can change this value.
     */
    @JvmName("ekyoamhuddhqdnty")
    public suspend fun minSize(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.minSize = mapped
    }

    /**
     * @param value A descriptive label that is associated with a fleet. Fleet names do not need to be unique.
     */
    @JvmName("gigrgtuqvvfcpcbp")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value A game session protection policy to apply to all game sessions hosted on instances in this fleet. When protected, active game sessions cannot be terminated during a scale-down event. If this parameter is not set, instances in this fleet default to no protection. You can change a fleet's protection policy to affect future game sessions on the fleet. You can also set protection for individual game sessions.
     */
    @JvmName("vvitovfeouifacdc")
    public suspend fun newGameSessionProtectionPolicy(`value`: FleetNewGameSessionProtectionPolicy?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.newGameSessionProtectionPolicy = mapped
    }

    /**
     * @param value A unique identifier for the AWS account with the VPC that you want to peer your Amazon GameLift fleet with. You can find your account ID in the AWS Management Console under account settings.
     */
    @JvmName("novfsuaciqekxbmq")
    public suspend fun peerVpcAwsAccountId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.peerVpcAwsAccountId = mapped
    }

    /**
     * @param value A unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same Region as your fleet. To look up a VPC ID, use the VPC Dashboard in the AWS Management Console.
     */
    @JvmName("slfvccgprimntrsp")
    public suspend fun peerVpcId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.peerVpcId = mapped
    }

    /**
     * @param value A policy that limits the number of game sessions an individual player can create over a span of time for this fleet.
     */
    @JvmName("fkxrfilabbejoeve")
    public suspend fun resourceCreationLimitPolicy(`value`: FleetResourceCreationLimitPolicyArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceCreationLimitPolicy = mapped
    }

    /**
     * @param argument A policy that limits the number of game sessions an individual player can create over a span of time for this fleet.
     */
    @JvmName("qdcjwxmqqinnmdms")
    public suspend fun resourceCreationLimitPolicy(argument: suspend FleetResourceCreationLimitPolicyArgsBuilder.() -> Unit) {
        val toBeMapped = FleetResourceCreationLimitPolicyArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.resourceCreationLimitPolicy = mapped
    }

    /**
     * @param value Instructions for launching server processes on each instance in the fleet. Server processes run either a custom game build executable or a Realtime script. The runtime configuration defines the server executables or launch script file, launch parameters, and the number of processes to run concurrently on each instance. When creating a fleet, the runtime configuration must have at least one server process configuration; otherwise the request fails with an invalid request exception.
     * This parameter is required unless the parameters ServerLaunchPath and ServerLaunchParameters are defined. Runtime configuration has replaced these parameters, but fleets that use them will continue to work.
     */
    @JvmName("yhhehkeujjtjreqo")
    public suspend fun runtimeConfiguration(`value`: FleetRuntimeConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.runtimeConfiguration = mapped
    }

    /**
     * @param argument Instructions for launching server processes on each instance in the fleet. Server processes run either a custom game build executable or a Realtime script. The runtime configuration defines the server executables or launch script file, launch parameters, and the number of processes to run concurrently on each instance. When creating a fleet, the runtime configuration must have at least one server process configuration; otherwise the request fails with an invalid request exception.
     * This parameter is required unless the parameters ServerLaunchPath and ServerLaunchParameters are defined. Runtime configuration has replaced these parameters, but fleets that use them will continue to work.
     */
    @JvmName("busixgmukxdgtyts")
    public suspend fun runtimeConfiguration(argument: suspend FleetRuntimeConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = FleetRuntimeConfigurationArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.runtimeConfiguration = mapped
    }

    /**
     * @param value A list of rules that control how a fleet is scaled.
     */
    @JvmName("pkssbxrcyrdiyfqi")
    public suspend fun scalingPolicies(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scalingPolicies = mapped
    }

    /**
     * @param argument A list of rules that control how a fleet is scaled.
     */
    @JvmName("mrqyyrsbqwqqciye")
    public suspend fun scalingPolicies(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            FleetScalingPolicyArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.scalingPolicies = mapped
    }

    /**
     * @param argument A list of rules that control how a fleet is scaled.
     */
    @JvmName("iwolwrwdrhrujnhb")
    public suspend fun scalingPolicies(vararg argument: suspend FleetScalingPolicyArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            FleetScalingPolicyArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.scalingPolicies = mapped
    }

    /**
     * @param argument A list of rules that control how a fleet is scaled.
     */
    @JvmName("ynlylcixrehaxaoe")
    public suspend fun scalingPolicies(argument: suspend FleetScalingPolicyArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(FleetScalingPolicyArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.scalingPolicies = mapped
    }

    /**
     * @param values A list of rules that control how a fleet is scaled.
     */
    @JvmName("qpsraklsklnhohjd")
    public suspend fun scalingPolicies(vararg values: FleetScalingPolicyArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.scalingPolicies = mapped
    }

    /**
     * @param value A unique identifier for a Realtime script to be deployed on a new Realtime Servers fleet. The script must have been successfully uploaded to Amazon GameLift. This fleet setting cannot be changed once the fleet is created.
     * Note: It is not currently possible to use the !Ref command to reference a script created with a CloudFormation template for the fleet property ScriptId. Instead, use Fn::GetAtt Script.Arn or Fn::GetAtt Script.Id to retrieve either of these properties as input for ScriptId. Alternatively, enter a ScriptId string manually.
     */
    @JvmName("ojhijnbkjawuisyn")
    public suspend fun scriptId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scriptId = mapped
    }

    /**
     * @param value This parameter is no longer used but is retained for backward compatibility. Instead, specify server launch parameters in the RuntimeConfiguration parameter. A request must specify either a runtime configuration or values for both ServerLaunchParameters and ServerLaunchPath.
     */
    @JvmName("nstikutavdkucmvv")
    public suspend fun serverLaunchParameters(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serverLaunchParameters = mapped
    }

    /**
     * @param value This parameter is no longer used. Instead, specify a server launch path using the RuntimeConfiguration parameter. Requests that specify a server launch path and launch parameters instead of a runtime configuration will continue to work.
     */
    @JvmName("wsueasjnelitbjwu")
    public suspend fun serverLaunchPath(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serverLaunchPath = mapped
    }

    internal fun build(): FleetArgs = FleetArgs(
        anywhereConfiguration = anywhereConfiguration,
        applyCapacity = applyCapacity,
        buildId = buildId,
        certificateConfiguration = certificateConfiguration,
        computeType = computeType,
        containerGroupsConfiguration = containerGroupsConfiguration,
        description = description,
        desiredEc2Instances = desiredEc2Instances,
        ec2InboundPermissions = ec2InboundPermissions,
        ec2InstanceType = ec2InstanceType,
        fleetType = fleetType,
        instanceRoleArn = instanceRoleArn,
        instanceRoleCredentialsProvider = instanceRoleCredentialsProvider,
        locations = locations,
        logPaths = logPaths,
        maxSize = maxSize,
        metricGroups = metricGroups,
        minSize = minSize,
        name = name,
        newGameSessionProtectionPolicy = newGameSessionProtectionPolicy,
        peerVpcAwsAccountId = peerVpcAwsAccountId,
        peerVpcId = peerVpcId,
        resourceCreationLimitPolicy = resourceCreationLimitPolicy,
        runtimeConfiguration = runtimeConfiguration,
        scalingPolicies = scalingPolicies,
        scriptId = scriptId,
        serverLaunchParameters = serverLaunchParameters,
        serverLaunchPath = serverLaunchPath,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy