Class: AWSCDK::Autoscaling::MixedInstancesPolicy

Inherits:
Jsii::Struct
  • Object
show all
Defined in:
autoscaling/mixed_instances_policy.rb

Overview

MixedInstancesPolicy allows you to configure a group that diversifies across On-Demand Instances and Spot Instances of multiple instance types.

For more information, see Auto Scaling groups with multiple instance types and purchase options in the Amazon EC2 Auto Scaling User Guide:

https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-purchase-options.html

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(launch_template:, instances_distribution: nil, launch_template_overrides: nil) ⇒ MixedInstancesPolicy

Returns a new instance of MixedInstancesPolicy.

Parameters:



15
16
17
18
19
20
21
22
# File 'autoscaling/mixed_instances_policy.rb', line 15

def initialize(launch_template:, instances_distribution: nil, launch_template_overrides: nil)
  @launch_template = launch_template
  Jsii::Type.check_type(@launch_template, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfZWMyLklMYXVuY2hUZW1wbGF0ZSJ9")), "launchTemplate")
  @instances_distribution = instances_distribution.is_a?(Hash) ? ::AWSCDK::Autoscaling::InstancesDistribution.new(**instances_distribution.transform_keys(&:to_sym)) : instances_distribution
  Jsii::Type.check_type(@instances_distribution, JSON.parse(Base64.strict_decode64("eyJmcW4iOiJhd3MtY2RrLWxpYi5hd3NfYXV0b3NjYWxpbmcuSW5zdGFuY2VzRGlzdHJpYnV0aW9uIn0=")), "instancesDistribution") unless @instances_distribution.nil?
  @launch_template_overrides = launch_template_overrides.is_a?(Array) ? launch_template_overrides.map { |jsii_v0| jsii_v0.is_a?(Hash) ? ::AWSCDK::Autoscaling::LaunchTemplateOverrides.new(**jsii_v0.transform_keys(&:to_sym)) : jsii_v0 } : launch_template_overrides
  Jsii::Type.check_type(@launch_template_overrides, JSON.parse(Base64.strict_decode64("eyJjb2xsZWN0aW9uIjp7ImVsZW1lbnR0eXBlIjp7ImZxbiI6ImF3cy1jZGstbGliLmF3c19hdXRvc2NhbGluZy5MYXVuY2hUZW1wbGF0ZU92ZXJyaWRlcyJ9LCJraW5kIjoiYXJyYXkifX0=")), "launchTemplateOverrides") unless @launch_template_overrides.nil?
end

Instance Attribute Details

#instances_distributionAWSCDK::Autoscaling::InstancesDistribution? (readonly)

Note:

Default: - The value for each property in it uses a default value.

InstancesDistribution to use.



32
33
34
# File 'autoscaling/mixed_instances_policy.rb', line 32

def instances_distribution
  @instances_distribution
end

#launch_templateAWSCDK::EC2::ILaunchTemplate (readonly)

Launch template to use.



27
28
29
# File 'autoscaling/mixed_instances_policy.rb', line 27

def launch_template
  @launch_template
end

#launch_template_overridesArray<AWSCDK::Autoscaling::LaunchTemplateOverrides>? (readonly)

Note:

Default: - Do not provide any overrides

Launch template overrides.

The maximum number of instance types that can be associated with an Auto Scaling group is 40.

The maximum number of distinct launch templates you can define for an Auto Scaling group is 20.



41
42
43
# File 'autoscaling/mixed_instances_policy.rb', line 41

def launch_template_overrides
  @launch_template_overrides
end

Class Method Details

.jsii_propertiesObject



43
44
45
46
47
48
49
# File 'autoscaling/mixed_instances_policy.rb', line 43

def self.jsii_properties
  {
    :launch_template => "launchTemplate",
    :instances_distribution => "instancesDistribution",
    :launch_template_overrides => "launchTemplateOverrides",
  }
end

Instance Method Details

#to_jsiiObject



51
52
53
54
55
56
57
58
59
# File 'autoscaling/mixed_instances_policy.rb', line 51

def to_jsii
  result = {}
  result.merge!({
    "launchTemplate" => @launch_template,
    "instancesDistribution" => @instances_distribution,
    "launchTemplateOverrides" => @launch_template_overrides,
  })
  result.compact
end