Class: AWSCDK::EMR::CfnCluster::SpotProvisioningSpecificationProperty

Inherits:
Jsii::Struct
  • Object
show all
Defined in:
emr/cfn_cluster.rb

Overview

SpotProvisioningSpecification is a subproperty of the InstanceFleetProvisioningSpecifications property type.

SpotProvisioningSpecification determines the launch specification for Spot instances in the instance fleet, which includes the defined duration and provisioning timeout behavior.

The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(timeout_action:, timeout_duration_minutes:, allocation_strategy: nil, block_duration_minutes: nil) ⇒ SpotProvisioningSpecificationProperty

Returns a new instance of SpotProvisioningSpecificationProperty.

Parameters:

  • timeout_action (String)

    The action to take when TargetSpotCapacity has not been fulfilled when the TimeoutDurationMinutes has expired;

  • timeout_duration_minutes (Numeric)

    The Spot provisioning timeout period in minutes.

  • allocation_strategy (String, nil) (defaults to: nil)

    Specifies one of the following strategies to launch Spot Instance fleets: capacity-optimized , price-capacity-optimized , lowest-price , or diversified , and capacity-optimized-prioritized .

  • block_duration_minutes (Numeric, nil) (defaults to: nil)

    The defined duration for Spot Instances (also known as Spot blocks) in minutes.



2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
# File 'emr/cfn_cluster.rb', line 2957

def initialize(timeout_action:, timeout_duration_minutes:, allocation_strategy: nil, block_duration_minutes: nil)
  @timeout_action = timeout_action
  Jsii::Type.check_type(@timeout_action, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "timeoutAction")
  @timeout_duration_minutes = timeout_duration_minutes
  Jsii::Type.check_type(@timeout_duration_minutes, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "timeoutDurationMinutes")
  @allocation_strategy = allocation_strategy
  Jsii::Type.check_type(@allocation_strategy, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "allocationStrategy") unless @allocation_strategy.nil?
  @block_duration_minutes = block_duration_minutes
  Jsii::Type.check_type(@block_duration_minutes, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "blockDurationMinutes") unless @block_duration_minutes.nil?
end

Instance Attribute Details

#allocation_strategyString? (readonly)

Specifies one of the following strategies to launch Spot Instance fleets: capacity-optimized , price-capacity-optimized , lowest-price , or diversified , and capacity-optimized-prioritized .

For more information on the provisioning strategies, see Allocation strategies for Spot Instances in the Amazon EC2 User Guide for Linux Instances .

When you launch a Spot Instance fleet with the old console, it automatically launches with the capacity-optimized strategy. You can't change the allocation strategy from the old console.



2990
2991
2992
# File 'emr/cfn_cluster.rb', line 2990

def allocation_strategy
  @allocation_strategy
end

#block_duration_minutesNumeric? (readonly)

The defined duration for Spot Instances (also known as Spot blocks) in minutes.

When specified, the Spot Instance does not terminate before the defined duration expires, and defined duration pricing for Spot Instances applies. Valid values are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as a Spot Instance receives its instance ID. At the end of the duration, 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.

Spot Instances with a defined duration (also known as Spot blocks) are no longer available to new customers from July 1, 2021. For customers who have previously used the feature, we will continue to support Spot Instances with a defined duration until December 31, 2022.



2999
3000
3001
# File 'emr/cfn_cluster.rb', line 2999

def block_duration_minutes
  @block_duration_minutes
end

#timeout_actionString (readonly)

The action to take when TargetSpotCapacity has not been fulfilled when the TimeoutDurationMinutes has expired;

that is, when all Spot Instances could not be provisioned within the Spot provisioning timeout. Valid values are TERMINATE_CLUSTER and SWITCH_TO_ON_DEMAND . SWITCH_TO_ON_DEMAND specifies that if no Spot Instances are available, On-Demand Instances should be provisioned to fulfill any remaining Spot capacity.



2974
2975
2976
# File 'emr/cfn_cluster.rb', line 2974

def timeout_action
  @timeout_action
end

#timeout_duration_minutesNumeric (readonly)

The Spot provisioning timeout period in minutes.

If Spot Instances are not provisioned within this time period, the TimeOutAction is taken. Minimum value is 5 and maximum value is 1440. The timeout applies only during initial provisioning, when the cluster is first created.



2981
2982
2983
# File 'emr/cfn_cluster.rb', line 2981

def timeout_duration_minutes
  @timeout_duration_minutes
end

Class Method Details

.jsii_propertiesObject



3001
3002
3003
3004
3005
3006
3007
3008
# File 'emr/cfn_cluster.rb', line 3001

def self.jsii_properties
  {
    :timeout_action => "timeoutAction",
    :timeout_duration_minutes => "timeoutDurationMinutes",
    :allocation_strategy => "allocationStrategy",
    :block_duration_minutes => "blockDurationMinutes",
  }
end

Instance Method Details

#to_jsiiObject



3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
# File 'emr/cfn_cluster.rb', line 3010

def to_jsii
  result = {}
  result.merge!({
    "timeoutAction" => @timeout_action,
    "timeoutDurationMinutes" => @timeout_duration_minutes,
    "allocationStrategy" => @allocation_strategy,
    "blockDurationMinutes" => @block_duration_minutes,
  })
  result.compact
end