Class: AWS::ELB::LoadBalancerCollection

Inherits:
Object
  • Object
show all
Includes:
Core::Collection::Simple
Defined in:
lib/aws/elb/load_balancer_collection.rb

Instance Method Summary collapse

Methods included from Core::Collection

#each, #each_batch, #enum, #first, #in_groups_of, #page

Instance Method Details

#[](name) ⇒ LoadBalancer

Returns the load balancer with the given name. This does not make a request, just returns a reference.

Returns:

  • (LoadBalancer)

    Returns the load balancer with the given name. This does not make a request, just returns a reference.



99
100
101
# File 'lib/aws/elb/load_balancer_collection.rb', line 99

def [] name
  LoadBalancer.new(name, :config => config)
end

#create(name, options = {}) ⇒ Object

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,
  }])

Parameters:

  • name (String)

    The name of your load balancer. The name must be unique within your set of load balancers.

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

Options Hash (options):

  • :availability_zones (required, Array)

    An array of one or more availability zones. Values may be availability zone name strings, or AWS::EC2::AvailabilityZone objects.

  • :listeners (required, Array)

    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 AWS::ELB::ListenerCollection#create for more detailed description of each option.

  • :server_certificate (String, IAM::ServerCertificate) — default: nil

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



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/aws/elb/load_balancer_collection.rb', line 66

def create name, options = {}

  unless options[:availability_zones]
    raise ArgumentError, "missing required :availability_zones option"
  end

  unless options[:listeners]
    raise ArgumentError, "missing required :listeners option"
  end

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

  listeners = [options[:listeners]].flatten.collect do |listener_opts|
    format_listener_opts(listener_opts)
  end

  response = client.create_load_balancer(
    :load_balancer_name => name.to_s,
    :availability_zones => zones,
    :listeners => listeners)

  opts = {}
  opts[:config] = config
  opts[:dns_name] = response.dns_name

  LoadBalancer.new(name, opts)

end