Class: AWS::AutoScaling::Instance

Inherits:
Core::Resource show all
Defined in:
lib/aws/auto_scaling/instance.rb

Overview

A small wrapper around an EC2::Instance.

Getting Auto Scaling Instances

If you know the EC2 instance id, you can use AWS::AutoScaling::InstanceCollection#[] to get the Auto Scaling instance.

instance = auto_scaling.instances['i-1234578']
instance.health_statue #=> :healthy
instance.ec2_instance #=> <AWS::EC2::Instance instance_id:i-1234578>

Enumerating Auto Scaling Instances

You can enumerate ALL instances like so:

auto_scaling = AWS::AutoScaling.new
auto_scaling.instances.each do |auto_scaling_instance|
  # ... 
end

If you want the instances for a single auto scaling group:

group = auto_scaling.groups['group-name']
group.auto_scaling_instances.each do |instance|
  # ...
end

If you prefer EC2::Instance objects you should use Group#ec2_instances instead.

Instance Attribute Summary collapse

Attributes included from Core::Model

#config

Instance Method Summary collapse

Methods inherited from Core::Resource

attribute_providers, attribute_providers_for, attributes, #attributes_from_response, define_attribute_type, #eql?, #inspect, new_from

Methods included from Core::Cacheable

included, #retrieve_attribute

Methods included from Core::Model

#client, #config_prefix, #inspect

Constructor Details

#initialize(instance_id, options = {}) ⇒ Instance

Returns a new instance of Instance.


61
62
63
64
# File 'lib/aws/auto_scaling/instance.rb', line 61

def initialize instance_id, options = {}
  @instance_id = instance_id
  super
end

Instance Attribute Details

#auto_scaling_group_nameString (readonly)

Returns the current value of auto_scaling_group_name.

Returns:

  • (String)

    the current value of auto_scaling_group_name


58
59
60
# File 'lib/aws/auto_scaling/instance.rb', line 58

def auto_scaling_group_name
  @auto_scaling_group_name
end

#availability_zone_nameString (readonly)

Returns the current value of availability_zone_name.

Returns:

  • (String)

    the current value of availability_zone_name


58
59
60
# File 'lib/aws/auto_scaling/instance.rb', line 58

def availability_zone_name
  @availability_zone_name
end

#health_statusString (readonly)

Returns the instance health status (e.g. 'Healthly' or 'Unhealthly').

Returns:

  • (String)

    the current value of health_status


58
59
60
# File 'lib/aws/auto_scaling/instance.rb', line 58

def health_status
  @health_status
end

#instance_idString (readonly) Also known as: id

Returns instance_id Returns the EC2 id instance.

Returns:

  • (String)

    instance_id Returns the EC2 id instance.


67
68
69
# File 'lib/aws/auto_scaling/instance.rb', line 67

def instance_id
  @instance_id
end

#launch_configuration_nameString (readonly)

Returns the current value of launch_configuration_name.

Returns:

  • (String)

    the current value of launch_configuration_name


58
59
60
# File 'lib/aws/auto_scaling/instance.rb', line 58

def launch_configuration_name
  @launch_configuration_name
end

#lifecycle_stateString (readonly)

Returns the current value of lifecycle_state.

Returns:

  • (String)

    the current value of lifecycle_state


58
59
60
# File 'lib/aws/auto_scaling/instance.rb', line 58

def lifecycle_state
  @lifecycle_state
end

Instance Method Details

#auto_scaling_groupAutoScaling::Group Also known as: group

Returns:


110
111
112
# File 'lib/aws/auto_scaling/instance.rb', line 110

def auto_scaling_group
  Group.new(auto_scaling_group_name, :config => config)
end

#availability_zoneEC2::AvailabilityZone


116
117
118
# File 'lib/aws/auto_scaling/instance.rb', line 116

def availability_zone
  EC2::AvailabilityZone.new(availability_zone_name, :config => config)
end

#ec2_instanceEC2::Instance

Returns:


105
106
107
# File 'lib/aws/auto_scaling/instance.rb', line 105

def ec2_instance
  EC2::Instance.new(instance_id, :config => config)
end

#exists?Boolean

Returns true if there exists an Auto Scaling instance with this instance id.

Returns:

  • (Boolean)

    Returns true if there exists an Auto Scaling instance with this instance id.


147
148
149
# File 'lib/aws/auto_scaling/instance.rb', line 147

def exists?
  !get_resource.auto_scaling_instances.empty?
end

#launch_configurationLaunchConfiguration

Returns:


121
122
123
# File 'lib/aws/auto_scaling/instance.rb', line 121

def launch_configuration
  LaunchConfiguration.new(launch_configuration_name, :config => config)
end

#set_health(status, options = {}) ⇒ nil

Parameters:

  • status (String)

    Sets the health status of an instance.

    Valid values inculde 'Healthy' and 'Unhealthy'

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :respect_grace_period (Boolean) — default: false

    If true, this call should respect the grace period associated with this instance's Auto Scaling group.

Returns:

  • (nil)

136
137
138
139
140
141
142
143
# File 'lib/aws/auto_scaling/instance.rb', line 136

def set_health status, options = {}
  client_opts = {}
  client_opts[:instance_id] = instance_id
  client_opts[:health_status] = status
  client_opts[:should_respect_grace_period] = 
    options[:respect_grace_period] == true
  client.set_instance_health(client_opts)
end

#terminate(decrement_desired_capacity) ⇒ Activity Also known as: delete

Terminates the current Auto Scaling instance.

Parameters:

  • decrement_desired_capacity (Boolean)

    Specifies whether or not terminating this instance should also decrement the size of the AutoScalingGroup.

Returns:

  • (Activity)

    Returns an activity that represents the termination of the instance.


160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/aws/auto_scaling/instance.rb', line 160

def terminate decrement_desired_capacity

  client_opts = {}
  client_opts[:instance_id] = instance_id
  client_opts[:should_decrement_desired_capacity] = 
    decrement_desired_capacity

  resp = client.terminate_instance_in_auto_scaling_group(client_opts)

  Activity.new_from(
    :terminate_instance_in_auto_scaling_group,
    resp.activity, 
    resp.activity.activity_id, 
    :config => config)

end