Class: AWS::ELB::LoadBalancer

Inherits:
Core::Resource
  • Object
show all
Defined in:
lib/aws/elb/load_balancer.rb

Overview

Returns:

  • (Hash)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, options = {}) ⇒ LoadBalancer

Returns a new instance of LoadBalancer.



63
64
65
# File 'lib/aws/elb/load_balancer.rb', line 63

def initialize name, options = {}
  super(options.merge(:name => name.to_s))
end

Instance Attribute Details

#availability_zone_namesArray<String> (readonly)

Return the names of the availability zones this load balancer routes traffic to.

Returns:

  • (Array<String>)

    the current value of availability_zone_names



61
62
63
# File 'lib/aws/elb/load_balancer.rb', line 61

def availability_zone_names
  @availability_zone_names
end

#canonical_hosted_zone_nameString (readonly)

Provides the name of the Amazon Route 53 hosted zone that is associated with the load balancer. For more information: http://docs.amazonwebservices.com/ElasticLoadBalancing/latest/DeveloperGuide/index.html?using-domain-names-with-elb.html.

Returns:

  • (String)

    the current value of canonical_hosted_zone_name



61
62
63
# File 'lib/aws/elb/load_balancer.rb', line 61

def canonical_hosted_zone_name
  @canonical_hosted_zone_name
end

#canonical_hosted_zone_name_idString (readonly)

Provides the ID of the Amazon Route 53 hosted zone name that is associated with the load balancer. For more information: http://docs.amazonwebservices.com/ElasticLoadBalancing/latest/DeveloperGuide/index.html?using-domain-names-with-elb.html.

Returns:

  • (String)

    the current value of canonical_hosted_zone_name_id



61
62
63
# File 'lib/aws/elb/load_balancer.rb', line 61

def canonical_hosted_zone_name_id
  @canonical_hosted_zone_name_id
end

#dns_nameString (readonly)

Specifies the external DNS name associated with this load balancer.

Returns:

  • (String)

    the current value of dns_name



61
62
63
# File 'lib/aws/elb/load_balancer.rb', line 61

def dns_name
  @dns_name
end

#health_checkHash (readonly)

Returns a hash of the various health probes conducted on the load balancer instances. The following entries are returned:

  • :healthy_threshold

  • :unhealthy_threshold

  • :interval

  • :target

  • :timeout

See #configure_health_check for more details on what each of the configuration values mean.

Returns:

  • (Hash)

    the current value of health_check



61
62
63
# File 'lib/aws/elb/load_balancer.rb', line 61

def health_check
  @health_check
end

#nameString (readonly)

The name of the load balancer.

Returns:

  • (String)

    the current value of name



61
62
63
# File 'lib/aws/elb/load_balancer.rb', line 61

def name
  @name
end

#policy_descriptionsHash (readonly)

Returns a hash of :app_cookie_stickiness_policies, :lb_cookie_stickiness_policies and :other_policies. See also #policies.

Returns:

  • (Hash)

    the current value of policy_descriptions



61
62
63
# File 'lib/aws/elb/load_balancer.rb', line 61

def policy_descriptions
  @policy_descriptions
end

#schemeString? (readonly)

Specifies the type of LoadBalancer. This attribute it set only for LoadBalancers attached to an Amazon VPC. If the Scheme is ‘internet-facing’, the LoadBalancer has a publicly resolvable DNS name that resolves to public IP addresses. If the Scheme is ‘internal’, the LoadBalancer has a publicly resolvable DNS name that resolves to private IP addresses.

Returns:

  • (String, nil)

    the current value of scheme



61
62
63
# File 'lib/aws/elb/load_balancer.rb', line 61

def scheme
  @scheme
end

#subnet_idsArray<String> (readonly)

Provides a list of VPC subnet IDs for the LoadBalancer.

Returns:

  • (Array<String>)

    the current value of subnet_ids



61
62
63
# File 'lib/aws/elb/load_balancer.rb', line 61

def subnet_ids
  @subnet_ids
end

Instance Method Details

#availability_zonesAvailabilityZoneCollection

A collection that help maanage the availability zones for this load balancer.

Examples:

enable an availability zone


load_balancer.availability_zones.enable('us-east-1b')

disable an availability zone


load_balancer.availability_zones.disable('us-east-1b')

list enabled availability zoens


load_balancer.availability_zones.each do |zone|
  puts zone.name
end

Returns:

  • (AvailabilityZoneCollection)

    Returns a collection that represents this load balancer’s availability zones. You can use this collection to enable and disable availability zones.



133
134
135
# File 'lib/aws/elb/load_balancer.rb', line 133

def availability_zones
  AvailabilityZoneCollection.new(self)
end

#backend_server_policiesBackendServerPolicyCollection



153
154
155
# File 'lib/aws/elb/load_balancer.rb', line 153

def backend_server_policies
  BackendServerPolicyCollection.new(self)
end

#configure_health_check(options = {}) ⇒ Object

Updates the configuration that drives the instance health checks.

You only need to pass the options you want to change. You can call #health_check if you want to see what the current configuration values are.

Parameters:

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

Options Hash (options):

  • :healthy_threshold (Integer)

    Specifies the number of consecutive health probe successes required before moving the instance to the Healthy state.

  • :unhealthy_threshold (Integer)

    Specifies the number of consecutive health probe failures required before moving the instance to the Unhealthy state.

  • :interval (Integer)

    Specifies the approximate interval, in seconds, between health checks of an individual instance.

  • :timeout (Integer)

    Specifies the amount of time, in seconds, during which no response means a failed health probe. This value must be less than the :interval value.

  • :target (String)

    Specifies the instance being checked.

    This option should be formatted like: “TCP:80”

    • The protocol is either TCP, HTTP, HTTPS, or SSL.

    • The range of valid ports is one (1) through 65535.

    TCP is the default, specified as a TCP: port pair, for example “TCP:5000”. In this case a healthcheck simply attempts to open a TCP connection to the instance on the specified port. Failure to connect within the configured timeout is considered unhealthy.

    SSL is also specified as SSL: port pair, for example, SSL:5000. For HTTP or HTTPS protocol, the situation is different. You have to include a ping path in the string. HTTP is specified as a HTTP:port;/;PathToPing; grouping, for example “HTTP:80/weather/us/wa/seattle”. In this case, a HTTP GET request is issued to the instance on the given port and path. Any answer other than “200 OK” within the timeout period is considered unhealthy.

    The total length of the HTTP ping target needs to be 1024 16-bit Unicode characters or less.



205
206
207
208
209
210
211
212
213
214
215
# File 'lib/aws/elb/load_balancer.rb', line 205

def configure_health_check options = {}

  new_config = health_check.merge(options)

  response = client.configure_health_check(
    :load_balancer_name => name,
    :health_check => new_config)

  new_config

end

#deletenil

Deletes the load balancer.

Returns:

  • (nil)


264
265
266
267
# File 'lib/aws/elb/load_balancer.rb', line 264

def delete
  client.delete_load_balancer(:load_balancer_name => name)
  nil
end

#exists?Boolean

Returns true if the load balancer exists.

Returns:

  • (Boolean)

    Returns true if the load balancer exists.



255
256
257
258
259
260
# File 'lib/aws/elb/load_balancer.rb', line 255

def exists?
  client.describe_load_balancers(:load_balancer_names => [name])
  true
rescue Errors::LoadBalancerNotFound
  false
end

#instancesInstanceCollection

Returns:



148
149
150
# File 'lib/aws/elb/load_balancer.rb', line 148

def instances
  InstanceCollection.new(self)
end

#listenersListenerCollection

Returns:



138
139
140
# File 'lib/aws/elb/load_balancer.rb', line 138

def listeners
  ListenerCollection.new(self)
end

#policiesPolicyCollection

Returns:

  • (PolicyCollection)


143
144
145
# File 'lib/aws/elb/load_balancer.rb', line 143

def policies
  LoadBalancerPolicyCollection.new(self)
end

#security_groupsArray<EC2::SecurityGroup>

Note:

VPC only

Returns the VPC security groups assigned to this load balancer.

Returns:



227
228
229
230
231
# File 'lib/aws/elb/load_balancer.rb', line 227

def security_groups
  security_group_ids.collect do |id|
    EC2::SecurityGroup.new(id, :config => config)
  end
end

#source_security_groupHash

Generally you don’t need to call this method, rather you can just pass the load balancer as a source to the various authorize and revoke methods of AWS::EC2::SecurityGroup:

security_group.authorize_ingress(load_balancer)

security_group.revoke_ingress(load_balancer)

Returns:



247
248
249
250
251
252
# File 'lib/aws/elb/load_balancer.rb', line 247

def source_security_group
  {
    :group_name => source_security_group_name,
    :user_id => source_security_group_owner_alias,
  }
end

#subnetsArray<EC2::Subnet>

Note:

VPC only

Returns an array of VPC subnets for this load balancer.

Returns:

  • (Array<EC2::Subnet>)

    Returns an array of VPC subnets for this load balancer.



220
221
222
# File 'lib/aws/elb/load_balancer.rb', line 220

def subnets
  subnet_ids.map{|id| EC2::Subnet.new(id, :config => config) }
end