Class SpotInstanceRequest
Provides an EC2 Spot Instance Request resource. This allows instances to be requested on the spot market.
By default this provider creates Spot Instance Requests with a persistent type,
which means that for the duration of their lifetime, AWS will launch an
instance with the configured details if and when the spot market will accept
the requested price.
On destruction, this provider will make an attempt to terminate the associated Spot Instance if there is one present.
Spot Instances requests with a one-time type will close the spot request
when the instance is terminated either by the request being below the current spot
price availability or by a user.
NOTE: Because their behavior depends on the live status of the spot market, Spot Instance Requests have a unique lifecycle that makes them behave differently than other resources. Most importantly: there is no guarantee that a Spot Instance exists to fulfill the request at any given point in time. See the AWS Spot Instance documentation for more information.
Example Usage
using Pulumi;
using Aws = Pulumi.Aws;
class MyStack : Stack
{
public MyStack()
{
// Request a spot instance at $0.03
var cheapWorker = new Aws.Ec2.SpotInstanceRequest("cheapWorker", new Aws.Ec2.SpotInstanceRequestArgs
{
Ami = "ami-1234",
InstanceType = "c4.xlarge",
SpotPrice = "0.03",
Tags =
{
{ "Name", "CheapWorker" },
},
});
}
}
Inherited Members
Namespace: Pulumi.Aws.Ec2
Assembly: Pulumi.Aws.dll
Syntax
public class SpotInstanceRequest : CustomResource
Constructors
View SourceSpotInstanceRequest(String, SpotInstanceRequestArgs, CustomResourceOptions)
Create a SpotInstanceRequest resource with the given unique name, arguments, and options.
Declaration
public SpotInstanceRequest(string name, SpotInstanceRequestArgs args, CustomResourceOptions options = null)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | name | The unique name of the resource |
| SpotInstanceRequestArgs | args | The arguments used to populate this resource's properties |
| CustomResourceOptions | options | A bag of options that control this resource's behavior |
Properties
View SourceAmi
The AMI to use for the instance.
Declaration
public Output<string> Ami { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
Arn
Declaration
public Output<string> Arn { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
AssociatePublicIpAddress
Associate a public ip address with an instance in a VPC. Boolean value.
Declaration
public Output<bool> AssociatePublicIpAddress { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Boolean> |
AvailabilityZone
The AZ to start the instance in.
Declaration
public Output<string> AvailabilityZone { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
BlockDurationMinutes
The required duration for the Spot instances, in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, or 360). The duration period starts as soon as your Spot instance receives its instance ID. At the end of the duration period, Amazon EC2 marks the Spot instance for termination and provides a Spot instance termination notice, which gives the instance a two-minute warning before it terminates. Note that you can't specify an Availability Zone group or a launch group if you specify a duration.
Declaration
public Output<int?> BlockDurationMinutes { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Nullable<System.Int32>> |
CpuCoreCount
Sets the number of CPU cores for an instance. This option is only supported on creation of instance type that support CPU Options CPU Cores and Threads Per CPU Core Per Instance Type - specifying this option for unsupported instance types will return an error from the EC2 API.
Declaration
public Output<int> CpuCoreCount { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Int32> |
CpuThreadsPerCore
If set to to 1, hyperthreading is disabled on the launched instance. Defaults to 2 if not set. See Optimizing CPU Options for more information.
Declaration
public Output<int> CpuThreadsPerCore { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Int32> |
CreditSpecification
Customize the credit specification of the instance. See Credit Specification below for more details.
Declaration
public Output<SpotInstanceRequestCreditSpecification> CreditSpecification { get; }
Property Value
| Type | Description |
|---|---|
| Output<SpotInstanceRequestCreditSpecification> |
DisableApiTermination
If true, enables EC2 Instance Termination Protection
Declaration
public Output<bool?> DisableApiTermination { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Nullable<System.Boolean>> |
EbsBlockDevices
Additional EBS block devices to attach to the instance. Block device configurations only apply on resource creation. See Block Devices below for details on attributes and drift detection.
Declaration
public Output<ImmutableArray<SpotInstanceRequestEbsBlockDevice>> EbsBlockDevices { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Collections.Immutable.ImmutableArray<SpotInstanceRequestEbsBlockDevice>> |
EbsOptimized
If true, the launched EC2 instance will be EBS-optimized. Note that if this is not set on an instance type that is optimized by default then this will show as disabled but if the instance type is optimized by default then there is no need to set this and there is no effect to disabling it. See the EBS Optimized section of the AWS User Guide for more information.
Declaration
public Output<bool?> EbsOptimized { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Nullable<System.Boolean>> |
EphemeralBlockDevices
Customize Ephemeral (also known as "Instance Store") volumes on the instance. See Block Devices below for details.
Declaration
public Output<ImmutableArray<SpotInstanceRequestEphemeralBlockDevice>> EphemeralBlockDevices { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Collections.Immutable.ImmutableArray<SpotInstanceRequestEphemeralBlockDevice>> |
GetPasswordData
If true, wait for password data to become available and retrieve it. Useful for getting the administrator password for instances running Microsoft Windows. The password data is exported to the password_data attribute. See GetPasswordData for more information.
Declaration
public Output<bool?> GetPasswordData { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Nullable<System.Boolean>> |
Hibernation
If true, the launched EC2 instance will support hibernation.
Declaration
public Output<bool?> Hibernation { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Nullable<System.Boolean>> |
HostId
The Id of a dedicated host that the instance will be assigned to. Use when an instance is to be launched on a specific dedicated host.
Declaration
public Output<string> HostId { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
IamInstanceProfile
The IAM Instance Profile to
launch the instance with. Specified as the name of the Instance Profile. Ensure your credentials have the correct permission to assign the instance profile according to the EC2 documentation, notably iam:PassRole.
Declaration
public Output<string> IamInstanceProfile { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
InstanceInitiatedShutdownBehavior
Shutdown behavior for the
instance. Amazon defaults this to stop for EBS-backed instances and
terminate for instance-store instances. Cannot be set on instance-store
instances. See Shutdown Behavior for more information.
Declaration
public Output<string> InstanceInitiatedShutdownBehavior { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
InstanceInterruptionBehaviour
Indicates whether a Spot instance stops or terminates when it is interrupted. Default is terminate as this is the current AWS behaviour.
Declaration
public Output<string> InstanceInterruptionBehaviour { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
InstanceState
Declaration
public Output<string> InstanceState { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
InstanceType
The type of instance to start. Updates to this field will trigger a stop/start of the EC2 instance.
Declaration
public Output<string> InstanceType { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
Ipv6AddressCount
A number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet.
Declaration
public Output<int> Ipv6AddressCount { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Int32> |
Ipv6Addresses
Specify one or more IPv6 addresses from the range of the subnet to associate with the primary network interface
Declaration
public Output<ImmutableArray<string>> Ipv6Addresses { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Collections.Immutable.ImmutableArray<System.String>> |
KeyName
The key name of the Key Pair to use for the instance; which can be managed using the aws.ec2.KeyPair resource.
Declaration
public Output<string> KeyName { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
LaunchGroup
A launch group is a group of spot instances that launch together and terminate together. If left empty instances are launched and terminated individually.
Declaration
public Output<string> LaunchGroup { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
MetadataOptions
Customize the metadata options of the instance. See Metadata Options below for more details.
Declaration
public Output<SpotInstanceRequestMetadataOptions> MetadataOptions { get; }
Property Value
| Type | Description |
|---|---|
| Output<SpotInstanceRequestMetadataOptions> |
Monitoring
If true, the launched EC2 instance will have detailed monitoring enabled. (Available since v0.6.0)
Declaration
public Output<bool?> Monitoring { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Nullable<System.Boolean>> |
NetworkInterfaces
Customize network interfaces to be attached at instance boot time. See Network Interfaces below for more details.
Declaration
public Output<ImmutableArray<SpotInstanceRequestNetworkInterface>> NetworkInterfaces { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Collections.Immutable.ImmutableArray<SpotInstanceRequestNetworkInterface>> |
OutpostArn
Declaration
public Output<string> OutpostArn { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
PasswordData
Declaration
public Output<string> PasswordData { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
PlacementGroup
The Placement Group to start the instance in.
Declaration
public Output<string> PlacementGroup { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
PrimaryNetworkInterfaceId
Declaration
public Output<string> PrimaryNetworkInterfaceId { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
PrivateDns
The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC
Declaration
public Output<string> PrivateDns { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
PrivateIp
Private IP address to associate with the instance in a VPC.
Declaration
public Output<string> PrivateIp { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
PublicDns
The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC
Declaration
public Output<string> PublicDns { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
PublicIp
The public IP address assigned to the instance, if applicable.
Declaration
public Output<string> PublicIp { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
RootBlockDevice
Customize details about the root block device of the instance. See Block Devices below for details.
Declaration
public Output<SpotInstanceRequestRootBlockDevice> RootBlockDevice { get; }
Property Value
| Type | Description |
|---|---|
| Output<SpotInstanceRequestRootBlockDevice> |
SecurityGroups
A list of security group names (EC2-Classic) or IDs (default VPC) to associate with.
Declaration
public Output<ImmutableArray<string>> SecurityGroups { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Collections.Immutable.ImmutableArray<System.String>> |
SourceDestCheck
Controls if traffic is routed to the instance when the destination address does not match the instance. Used for NAT or VPNs. Defaults true.
Declaration
public Output<bool?> SourceDestCheck { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Nullable<System.Boolean>> |
SpotBidStatus
The current bid status of the Spot Instance Request.
spot_request_stateThe current request state of the Spot Instance Request.
Declaration
public Output<string> SpotBidStatus { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
SpotInstanceId
The Instance ID (if any) that is currently fulfilling the Spot Instance request.
Declaration
public Output<string> SpotInstanceId { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
SpotPrice
The maximum price to request on the spot market.
Declaration
public Output<string> SpotPrice { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
SpotRequestState
Declaration
public Output<string> SpotRequestState { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
SpotType
If set to one-time, after
the instance is terminated, the spot request will be closed.
Declaration
public Output<string> SpotType { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
SubnetId
The VPC Subnet ID to launch in.
Declaration
public Output<string> SubnetId { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
Tags
A map of tags to assign to the resource.
Declaration
public Output<ImmutableDictionary<string, object>> Tags { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Collections.Immutable.ImmutableDictionary<System.String, System.Object>> |
Tenancy
The tenancy of the instance (if the instance is running in a VPC). An instance with a tenancy of dedicated runs on single-tenant hardware. The host tenancy is not supported for the import-instance command.
Declaration
public Output<string> Tenancy { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
UserData
The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see user_data_base64 instead.
Declaration
public Output<string> UserData { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
UserDataBase64
Can be used instead of user_data to pass base64-encoded binary data directly. Use this instead of user_data whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption.
Declaration
public Output<string> UserDataBase64 { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
ValidFrom
The start date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ). The default is to start fulfilling the request immediately.
Declaration
public Output<string> ValidFrom { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
ValidUntil
The end date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ). At this point, no new Spot instance requests are placed or enabled to fulfill the request. The default end date is 7 days from the current date.
Declaration
public Output<string> ValidUntil { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.String> |
VolumeTags
A map of tags to assign to the devices created by the instance at launch time.
Declaration
public Output<ImmutableDictionary<string, object>> VolumeTags { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Collections.Immutable.ImmutableDictionary<System.String, System.Object>> |
VpcSecurityGroupIds
A list of security group IDs to associate with.
Declaration
public Output<ImmutableArray<string>> VpcSecurityGroupIds { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Collections.Immutable.ImmutableArray<System.String>> |
WaitForFulfillment
If set, this provider will wait for the Spot Request to be fulfilled, and will throw an error if the timeout of 10m is reached.
Declaration
public Output<bool?> WaitForFulfillment { get; }
Property Value
| Type | Description |
|---|---|
| Output<System.Nullable<System.Boolean>> |
Methods
View SourceGet(String, Input<String>, SpotInstanceRequestState, CustomResourceOptions)
Get an existing SpotInstanceRequest resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
Declaration
public static SpotInstanceRequest Get(string name, Input<string> id, SpotInstanceRequestState state = null, CustomResourceOptions options = null)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | name | The unique name of the resulting resource. |
| Input<System.String> | id | The unique provider ID of the resource to lookup. |
| SpotInstanceRequestState | state | Any extra arguments used during the lookup. |
| CustomResourceOptions | options | A bag of options that control this resource's behavior |
Returns
| Type | Description |
|---|---|
| SpotInstanceRequest |