class AWS::ELB::LoadBalancerCollection

Public Instance Methods

[](name) click to toggle source

@return [LoadBalancer] Returns the load balancer with the given

name.  This does not make a request, just returns a reference.
# File lib/aws/elb/load_balancer_collection.rb, line 112
def [] name
  LoadBalancer.new(name, :config => config)
end
create(name, options = {}) click to toggle source

Creates and returns a load balancer. A load balancer requires:

  • a unique name

  • at least one availability zone

  • at least one listener

An example that creates a load balancer in two availability zones with a single listener:

load_balancer = elb.load_balancers.create('my-load-balancer',
  :availability_zones => %w(us-east-1a us-east-1b),
  :listeners => [{
    :port => 80,
    :protocol => :http,
    :instance_port => 80,
    :instance_protocol => :http,
  }])

@param [String] name The name of your load balancer. The name must

be unique within your set of load balancers.

@param [Hash] options

@option options [required,Array] :availability_zones An array of

one or more availability zones.  Values may be availability zone
name strings, or {AWS::EC2::AvailabilityZone} objects.

@option options [required,Array<Hash>] :listeners An array of load

balancer listener options.  Each value must be an array with the
following keys:
* +:port+
* +:protocol+
* +:instance_port+
* +:instance_protocol+

Port values should be integers, and protocols should be symbols or
strings (e.g. :http, or 'HTTP').  See {ListenerCollection#create}
for more detailed description of each option.

@option options [String,IAM::ServerCertificate] :server_certificate (nil)

The ARN string of an IAM::ServerCertifcate or an
IAM::ServerCertificate object.  Reqruied for HTTPs listeners.

@option options [Array] :subnets An list of VPC subets to attach the

load balancer to.  This can be an array of subnet ids (strings) or
{EC2::Subnet} objects. VPC only.

@option options [Array] :security_groups The security groups assigned to

your load balancer within your VPC.  This can be an array of
security group ids or {EC2::SecurityGroup} objects. VPC only.

@option options [String] :scheme ('internal' The type of a load

balancer.  Accepts 'internet-facing' or 'internal'. VPC only.
# File lib/aws/elb/load_balancer_collection.rb, line 76
def create name, options = {}

  if listeners = options[:listeners]
    options[:listeners] = [listeners].flatten.map do |listener|
      format_listener_opts(listener)
    end
  end

  if zones = options[:availability_zones]
    options[:availability_zones] = [zones].flatten.map do |zone|
      zone.is_a?(EC2::AvailabilityZone) ? zone.name : zone
    end
  end

  if groups = options[:security_groups]
    options[:security_groups] = [groups].flatten.map do |group|
      group.is_a?(EC2::SecurityGroup) ? group.id : group
    end
  end

  if subnets = options[:subnets]
    options[:subnets] = [subnets].flatten.map do |subnet|
      subnet.is_a?(EC2::Subnet) ? subnet.id : subnet
    end
  end

  options[:load_balancer_name] = name.to_s

  resp = client.create_load_balancer(options)

  LoadBalancer.new(name, :dns_name => resp[:dns_name], :config => config)

end

Protected Instance Methods

_each_item(options = {}) { |load_balancer| ... } click to toggle source
# File lib/aws/elb/load_balancer_collection.rb, line 117
def _each_item options = {}, &block
  response = client.describe_load_balancers(options)
  response.data[:load_balancer_descriptions].each do |description|

    load_balancer = LoadBalancer.new_from(
      :describe_load_balancers,
      description,
      description[:load_balancer_name],
      :config => config)

    yield(load_balancer)

  end
end