class AWS::ELB::BackendServerPolicyCollection

Helps manage policies assigned to backend server instnace ports.

Creating a Backend Server Policy

Creating a backend server policy can be a bit tricky. A BackendServerAuthenticationPolicyType policy only has one attribute, a list of public key policies.

Before you can assign a policy to a backend server instance port you must create on of the appropriate type:

# step 1, create one (or more) PublicKeyPolicyType policies

public_key1 = "-----BEGIN CERTIFICATE-----
MIICaTCCAdICCQDuvCF4erLGSjANBgkqhkiG9w0BAQUFADB5MQswCQYDVQQGEwJa
....
o50MymfqtoVcebZcXbiDVAXW1cPEHKLBXecX6/LZ+GOzEsUOxgt7Xs9uabqp
-----END CERTIFICATE-----
"

public_key_policy = load_balancer.policies.create("pkp",
  'PublicKeyPolicyType', 'PublicKey' => public_key.strip)  

# step 2, create the backend server policy, passing the public key policy

name = 'backend-policy'
type = 'BackendServerAuthenticationPolicyType'
attributes = {
  # note: you can pass more than one public key policy here
  'PublicKeyPolicyName' => [public_key_policy]
}

backend_policy = @load_balancer.policies.create(name, type, attributes)
  'BackendServerAuthenticationPolicyType', attributes)

Once you have created a backend server authentication policy, you can assign it to a backend instance port:

load_balancer.backend_server_policies[80] = backend_policy

If you want to remove the policy you can pass nil instead.

# removes the policy from instance port 80
load_balancer.backend_server_policies[80] = nil

You can also get the current policy:

load_balancer.backend_server_policies[80] # returns a policy or nil

Attributes

load_balancer[R]

@return [LoadBalancer]

Public Class Methods

new(load_balancer, options = {}) click to toggle source
# File lib/aws/elb/backend_server_policy_collection.rb, line 71
def initialize load_balancer, options = {}
  @load_balancer = load_balancer
  super
end

Public Instance Methods

[](instance_port) click to toggle source

Returns the policy currently assigned to the given instance port.

@param [Integer] instance_port The backend server port to

get the currently policy of.

@return [LoadBalancerPolicy,nil] Returns the load balancer policy

currently assigned to the given instance port.  Returns nil if
no policy has been assigned.
# File lib/aws/elb/backend_server_policy_collection.rb, line 88
def [] instance_port
  enum(:instance_port => instance_port).first
end
[]=(instance_port, policy) click to toggle source

Sets the policy for the given backend server instance port.

@param [Integer] instance_port The instance port you want to set

backend server policies for.

@param [String,LoadBalancerPolicy,nil] policies Load balancer policy

name or object.  Passing nil removes the current policy.

@return [nil]

# File lib/aws/elb/backend_server_policy_collection.rb, line 102
def []= instance_port, policy

  client.set_load_balancer_policies_for_backend_server(
    :load_balancer_name => load_balancer.name,
    :instance_port => instance_port.to_i,
    :policy_names => [policy_name(policy)].compact)

  nil

end

Protected Instance Methods

_each_item(options = {}) { |policy| ... } click to toggle source
# File lib/aws/elb/backend_server_policy_collection.rb, line 123
def _each_item options = {}

  instance_port = options[:instance_port]

  load_balancer.backend_server_descriptions.each do |desc|
    if instance_port.nil? or desc.instance_port == instance_port
      desc.policy_names.collect do |policy_name|
        policy = load_balancer.policies[policy_name]
        yield(policy)
      end
    end
  end

end
policy_name(policy) click to toggle source
# File lib/aws/elb/backend_server_policy_collection.rb, line 114
def policy_name policy
  case policy
  when nil then nil
  when LoadBalancerPolicy then policy.name
  else policy.to_s
  end
end