Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.awsnative.ec2.kotlin.inputs
import com.pulumi.awsnative.ec2.inputs.SpotFleetLaunchSpecificationArgs.builder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Double
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName
/**
*
* @property blockDeviceMappings One or more block devices that are mapped to the Spot Instances. You can't specify both a snapshot ID and an encryption value. This is because only blank volumes can be encrypted on creation. If a snapshot is the basis for a volume, it is not blank and its encryption status is used for the volume encryption status.
* @property ebsOptimized Indicates whether the instances are optimized for EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS Optimized instance.
* Default: `false`
* @property iamInstanceProfile The IAM instance profile.
* @property imageId The ID of the AMI.
* @property instanceRequirements The attributes for the instance types. When you specify instance attributes, Amazon EC2 will identify instance types with those attributes.
* > If you specify `InstanceRequirements` , you can't specify `InstanceType` .
* @property instanceType The instance type.
* @property kernelId The ID of the kernel.
* @property keyName The name of the key pair.
* @property monitoring Enable or disable monitoring for the instances.
* @property networkInterfaces The network interfaces.
* @property placement The placement information.
* @property ramdiskId The ID of the RAM disk. Some kernels require additional drivers at launch. Check the kernel requirements for information about whether you need to specify a RAM disk. To find kernel requirements, refer to the AWS Resource Center and search for the kernel ID.
* @property securityGroups The security groups.
* If you specify a network interface, you must specify any security groups as part of the network interface instead of using this parameter.
* @property spotPrice The maximum price per unit hour that you are willing to pay for a Spot Instance. We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price.
* > If you specify a maximum price, your instances will be interrupted more frequently than if you do not specify this parameter.
* @property subnetId The IDs of the subnets in which to launch the instances. To specify multiple subnets, separate them using commas; for example, "subnet-1234abcdeexample1, subnet-0987cdef6example2".
* If you specify a network interface, you must specify any subnets as part of the network interface instead of using this parameter.
* @property tagSpecifications The tags to apply during creation.
* @property userData The base64-encoded user data that instances use when starting up. User data is limited to 16 KB.
* @property weightedCapacity The number of units provided by the specified instance type. These are the same units that you chose to set the target capacity in terms of instances, or a performance characteristic such as vCPUs, memory, or I/O.
* If the target capacity divided by this value is not a whole number, Amazon EC2 rounds the number of instances to the next whole number. If this value is not specified, the default is 1.
* > When specifying weights, the price used in the `lowestPrice` and `priceCapacityOptimized` allocation strategies is per *unit* hour (where the instance price is divided by the specified weight). However, if all the specified weights are above the requested `TargetCapacity` , resulting in only 1 instance being launched, the price used is per *instance* hour.
*/
public data class SpotFleetLaunchSpecificationArgs(
public val blockDeviceMappings: Output>? = null,
public val ebsOptimized: Output? = null,
public val iamInstanceProfile: Output? = null,
public val imageId: Output,
public val instanceRequirements: Output? = null,
public val instanceType: Output? = null,
public val kernelId: Output? = null,
public val keyName: Output? = null,
public val monitoring: Output? = null,
public val networkInterfaces: Output>? =
null,
public val placement: Output? = null,
public val ramdiskId: Output? = null,
public val securityGroups: Output>? = null,
public val spotPrice: Output? = null,
public val subnetId: Output? = null,
public val tagSpecifications: Output>? = null,
public val userData: Output? = null,
public val weightedCapacity: Output? = null,
) : ConvertibleToJava {
override fun toJava(): com.pulumi.awsnative.ec2.inputs.SpotFleetLaunchSpecificationArgs =
com.pulumi.awsnative.ec2.inputs.SpotFleetLaunchSpecificationArgs.builder()
.blockDeviceMappings(
blockDeviceMappings?.applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 -> args0.toJava() })
})
}),
)
.ebsOptimized(ebsOptimized?.applyValue({ args0 -> args0 }))
.iamInstanceProfile(
iamInstanceProfile?.applyValue({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
}),
)
.imageId(imageId.applyValue({ args0 -> args0 }))
.instanceRequirements(
instanceRequirements?.applyValue({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
}),
)
.instanceType(instanceType?.applyValue({ args0 -> args0 }))
.kernelId(kernelId?.applyValue({ args0 -> args0 }))
.keyName(keyName?.applyValue({ args0 -> args0 }))
.monitoring(monitoring?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
.networkInterfaces(
networkInterfaces?.applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
})
}),
)
.placement(placement?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
.ramdiskId(ramdiskId?.applyValue({ args0 -> args0 }))
.securityGroups(
securityGroups?.applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
})
}),
)
.spotPrice(spotPrice?.applyValue({ args0 -> args0 }))
.subnetId(subnetId?.applyValue({ args0 -> args0 }))
.tagSpecifications(
tagSpecifications?.applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
})
}),
)
.userData(userData?.applyValue({ args0 -> args0 }))
.weightedCapacity(weightedCapacity?.applyValue({ args0 -> args0 })).build()
}
/**
* Builder for [SpotFleetLaunchSpecificationArgs].
*/
@PulumiTagMarker
public class SpotFleetLaunchSpecificationArgsBuilder internal constructor() {
private var blockDeviceMappings: Output>? = null
private var ebsOptimized: Output? = null
private var iamInstanceProfile: Output? = null
private var imageId: Output? = null
private var instanceRequirements: Output? = null
private var instanceType: Output? = null
private var kernelId: Output? = null
private var keyName: Output? = null
private var monitoring: Output? = null
private var networkInterfaces: Output>? =
null
private var placement: Output? = null
private var ramdiskId: Output? = null
private var securityGroups: Output>? = null
private var spotPrice: Output? = null
private var subnetId: Output? = null
private var tagSpecifications: Output>? = null
private var userData: Output? = null
private var weightedCapacity: Output? = null
/**
* @param value One or more block devices that are mapped to the Spot Instances. You can't specify both a snapshot ID and an encryption value. This is because only blank volumes can be encrypted on creation. If a snapshot is the basis for a volume, it is not blank and its encryption status is used for the volume encryption status.
*/
@JvmName("hqikelyunnouxryk")
public suspend fun blockDeviceMappings(`value`: Output>) {
this.blockDeviceMappings = value
}
@JvmName("rokehpuewllmsdxp")
public suspend fun blockDeviceMappings(vararg values: Output) {
this.blockDeviceMappings = Output.all(values.asList())
}
/**
* @param values One or more block devices that are mapped to the Spot Instances. You can't specify both a snapshot ID and an encryption value. This is because only blank volumes can be encrypted on creation. If a snapshot is the basis for a volume, it is not blank and its encryption status is used for the volume encryption status.
*/
@JvmName("atcysoevqxofdswv")
public suspend fun blockDeviceMappings(values: List