# Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"). You # may not use this file except in compliance with the License. A copy of # the License is located at # # http://aws.amazon.com/apache2.0/ # # or in the "license" file accompanying this file. This file is # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. module AWS class ELB # Client class for Elastic Load Balancing (ELB). class Client < Core::QueryClient # @private CACHEABLE_REQUESTS = Set[] # client methods # # @!method apply_security_groups_to_load_balancer(options = {}) # Calls the ApplySecurityGroupsToLoadBalancer API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name associated # with the LoadBalancer. The name must be unique within the client # AWS account. # * +:security_groups+ - *required* - (Array) A list of # security group IDs to associate with your LoadBalancer in VPC. The # security group IDs must be provided as the ID and not the security # group name (For example, sg-1234). # @return [Core::Response] # The #data method of the response object returns # a hash with the following structure: # * +:security_groups+ - (Array) # @!method attach_load_balancer_to_subnets(options = {}) # Calls the AttachLoadBalancerToSubnets API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name associated # with the LoadBalancer. The name must be unique within the client # AWS account. # * +:subnets+ - *required* - (Array) A list of subnet IDs to # add for the LoadBalancer. # @return [Core::Response] # The #data method of the response object returns # a hash with the following structure: # * +:subnets+ - (Array) # @!method configure_health_check(options = {}) # Calls the ConfigureHealthCheck API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The mnemonic name # associated with the LoadBalancer. This name must be unique within # the client AWS account. # * +:health_check+ - *required* - (Hash) A structure containing the # configuration information for the new healthcheck. # * +:target+ - *required* - (String) Specifies the instance being # checked. 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. # * +:interval+ - *required* - (Integer) Specifies the approximate # interval, in seconds, between health checks of an individual # instance. # * +:timeout+ - *required* - (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. # * +:unhealthy_threshold+ - *required* - (Integer) Specifies the # number of consecutive health probe failures required before # moving the instance to the Unhealthy state. # * +:healthy_threshold+ - *required* - (Integer) Specifies the # number of consecutive health probe successes required before # moving the instance to the Healthy state. # @return [Core::Response] # The #data method of the response object returns # a hash with the following structure: # * +:health_check+ - (Hash) # * +:target+ - (String) # * +:interval+ - (Integer) # * +:timeout+ - (Integer) # * +:unhealthy_threshold+ - (Integer) # * +:healthy_threshold+ - (Integer) # @!method create_app_cookie_stickiness_policy(options = {}) # Calls the CreateAppCookieStickinessPolicy API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name associated # with the LoadBalancer. The name must be unique within the client # AWS account. # * +:policy_name+ - *required* - (String) The name of the policy being # created. The name must be unique within the set of policies for # this LoadBalancer. # * +:cookie_name+ - *required* - (String) Name of the application # cookie used for stickiness. # @return [Core::Response] # @!method create_lb_cookie_stickiness_policy(options = {}) # Calls the CreateLBCookieStickinessPolicy API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name associated # with the LoadBalancer. The name must be unique within the client # AWS account. # * +:policy_name+ - *required* - (String) The name of the policy being # created. The name must be unique within the set of policies for # this LoadBalancer. # * +:cookie_expiration_period+ - (Integer) The time period in seconds # after which the cookie should be considered stale. Not specifying # this parameter indicates that the sticky session will last for the # duration of the browser session. # @return [Core::Response] # @!method create_load_balancer(options = {}) # Calls the CreateLoadBalancer API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name associated # with the LoadBalancer. The name must be unique within your set of # LoadBalancers. # * +:listeners+ - *required* - (Array) A list of the following # tuples: LoadBalancerPort, InstancePort, and Protocol. # * +:protocol+ - *required* - (String) Specifies the LoadBalancer # transport protocol to use for routing - HTTP, HTTPS, TCP or SSL. # This property cannot be modified for the life of the # LoadBalancer. # * +:load_balancer_port+ - *required* - (Integer) Specifies the # external LoadBalancer port number. This property cannot be # modified for the life of the LoadBalancer. # * +:instance_protocol+ - (String) Specifies the protocol to use for # routing traffic to back-end instances - HTTP, HTTPS, TCP, or SSL. # This property cannot be modified for the life of the # LoadBalancer. If the front-end protocol is HTTP or HTTPS, # InstanceProtocol has to be at the same protocol layer, i.e., HTTP # or HTTPS. Likewise, if the front-end protocol is TCP or SSL, # InstanceProtocol has to be TCP or SSL. If there is another # listener with the same InstancePort whose InstanceProtocol is # secure, i.e., HTTPS or SSL, the listener's InstanceProtocol has # to be secure, i.e., HTTPS or SSL. If there is another listener # with the same InstancePort whose InstanceProtocol is HTTP or TCP, # the listener's InstanceProtocol must be either HTTP or TCP. # * +:instance_port+ - *required* - (Integer) Specifies the TCP port # on which the instance server is listening. This property cannot # be modified for the life of the LoadBalancer. # * +:ssl_certificate_id+ - (String) The ARN string of the server # certificate. To get the ARN of the server certificate, call the # AWS Identity and Access Management UploadServerCertificate API. # * +:availability_zones+ - (Array) A list of Availability # Zones. At least one Availability Zone must be specified. Specified # Availability Zones must be in the same EC2 Region as the # LoadBalancer. Traffic will be equally distributed across all zones. # This list can be modified after the creation of the LoadBalancer. # * +:subnets+ - (Array) A list of subnet IDs in your VPC to # attach to your LoadBalancer. # * +:security_groups+ - (Array) The security groups assigned # to your LoadBalancer within your VPC. # * +:scheme+ - (String) The type of a LoadBalancer. This option is # only available for LoadBalancers attached to a Amazon VPC. By # default, Elastic Load Balancer creates an internet-facing load # balancer with publicly resolvable DNS name that resolves to public # IP addresses. Specify the value internal for this option to create # an internal load balancer with a DNS name that resolves to private # IP addresses. # @return [Core::Response] # The #data method of the response object returns # a hash with the following structure: # * +:dns_name+ - (String) # @!method create_load_balancer_listeners(options = {}) # Calls the CreateLoadBalancerListeners API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name of the new # LoadBalancer. The name must be unique within your AWS account. # * +:listeners+ - *required* - (Array) A list of # LoadBalancerPort, InstancePort, Protocol, and SSLCertificateId # items. # * +:protocol+ - *required* - (String) Specifies the LoadBalancer # transport protocol to use for routing - HTTP, HTTPS, TCP or SSL. # This property cannot be modified for the life of the # LoadBalancer. # * +:load_balancer_port+ - *required* - (Integer) Specifies the # external LoadBalancer port number. This property cannot be # modified for the life of the LoadBalancer. # * +:instance_protocol+ - (String) Specifies the protocol to use for # routing traffic to back-end instances - HTTP, HTTPS, TCP, or SSL. # This property cannot be modified for the life of the # LoadBalancer. If the front-end protocol is HTTP or HTTPS, # InstanceProtocol has to be at the same protocol layer, i.e., HTTP # or HTTPS. Likewise, if the front-end protocol is TCP or SSL, # InstanceProtocol has to be TCP or SSL. If there is another # listener with the same InstancePort whose InstanceProtocol is # secure, i.e., HTTPS or SSL, the listener's InstanceProtocol has # to be secure, i.e., HTTPS or SSL. If there is another listener # with the same InstancePort whose InstanceProtocol is HTTP or TCP, # the listener's InstanceProtocol must be either HTTP or TCP. # * +:instance_port+ - *required* - (Integer) Specifies the TCP port # on which the instance server is listening. This property cannot # be modified for the life of the LoadBalancer. # * +:ssl_certificate_id+ - (String) The ARN string of the server # certificate. To get the ARN of the server certificate, call the # AWS Identity and Access Management UploadServerCertificate API. # @return [Core::Response] # @!method create_load_balancer_policy(options = {}) # Calls the CreateLoadBalancerPolicy API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name associated # with the LoadBalancer for which the policy is being created. This # name must be unique within the client AWS account. # * +:policy_name+ - *required* - (String) The name of the LoadBalancer # policy being created. The name must be unique within the set of # policies for this LoadBalancer. # * +:policy_type_name+ - *required* - (String) The name of the base # policy type being used to create this policy. To get the list of # policy types, use the DescribeLoadBalancerPolicyTypes action. # * +:policy_attributes+ - (Array) A list of attributes # associated with the policy being created. # * +:attribute_name+ - (String) The name of the attribute associated # with the policy. # * +:attribute_value+ - (String) The value of the attribute # associated with the policy. # @return [Core::Response] # @!method delete_load_balancer(options = {}) # Calls the DeleteLoadBalancer API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name associated # with the LoadBalancer. The name must be unique within the client # AWS account. # @return [Core::Response] # @!method delete_load_balancer_listeners(options = {}) # Calls the DeleteLoadBalancerListeners API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The mnemonic name # associated with the LoadBalancer. # * +:load_balancer_ports+ - *required* - (Array) The client # port number(s) of the LoadBalancerListener(s) to be removed. # @return [Core::Response] # @!method delete_load_balancer_policy(options = {}) # Calls the DeleteLoadBalancerPolicy API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The mnemonic name # associated with the LoadBalancer. The name must be unique within # your AWS account. # * +:policy_name+ - *required* - (String) The mnemonic name for the # policy being deleted. # @return [Core::Response] # @!method deregister_instances_from_load_balancer(options = {}) # Calls the DeregisterInstancesFromLoadBalancer API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name associated # with the LoadBalancer. The name must be unique within the client # AWS account. # * +:instances+ - *required* - (Array) A list of EC2 instance # IDs consisting of all instances to be deregistered. # * +:instance_id+ - (String) Provides an EC2 instance ID. # @return [Core::Response] # The #data method of the response object returns # a hash with the following structure: # * +:instances+ - (Array) # * +:instance_id+ - (String) # @!method describe_instance_health(options = {}) # Calls the DescribeInstanceHealth API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name associated # with the LoadBalancer. The name must be unique within the client # AWS account. # * +:instances+ - (Array) A list of instance IDs whose states # are being queried. # * +:instance_id+ - (String) Provides an EC2 instance ID. # @return [Core::Response] # The #data method of the response object returns # a hash with the following structure: # * +:instance_states+ - (Array) # * +:instance_id+ - (String) # * +:state+ - (String) # * +:reason_code+ - (String) # * +:description+ - (String) # @!method describe_load_balancer_policies(options = {}) # Calls the DescribeLoadBalancerPolicies API operation. # @param [Hash] options # * +:load_balancer_name+ - (String) The mnemonic name associated with # the LoadBalancer. If no name is specified, the operation returns # the attributes of either all the sample policies pre-defined by # Elastic Load Balancing or the specified sample polices. # * +:policy_names+ - (Array) The names of LoadBalancer # policies you've created or Elastic Load Balancing sample policy # names. # @return [Core::Response] # The #data method of the response object returns # a hash with the following structure: # * +:policy_descriptions+ - (Array) # * +:policy_name+ - (String) # * +:policy_type_name+ - (String) # * +:policy_attribute_descriptions+ - (Array) # * +:attribute_name+ - (String) # * +:attribute_value+ - (String) # @!method describe_load_balancer_policy_types(options = {}) # Calls the DescribeLoadBalancerPolicyTypes API operation. # @param [Hash] options # * +:policy_type_names+ - (Array) Specifies the name of the # policy types. If no names are specified, returns the description of # all the policy types defined by Elastic Load Balancing service. # @return [Core::Response] # The #data method of the response object returns # a hash with the following structure: # * +:policy_type_descriptions+ - (Array) # * +:policy_type_name+ - (String) # * +:description+ - (String) # * +:policy_attribute_type_descriptions+ - (Array) # * +:attribute_name+ - (String) # * +:attribute_type+ - (String) # * +:description+ - (String) # * +:default_value+ - (String) # * +:cardinality+ - (String) # @!method describe_load_balancers(options = {}) # Calls the DescribeLoadBalancers API operation. # @param [Hash] options # * +:load_balancer_names+ - (Array) A list of names associated # with the LoadBalancers at creation time. # * +:marker+ - (String) An optional parameter reserved for future use. # @return [Core::Response] # The #data method of the response object returns # a hash with the following structure: # * +:load_balancer_descriptions+ - (Array) # * +:load_balancer_name+ - (String) # * +:dns_name+ - (String) # * +:canonical_hosted_zone_name+ - (String) # * +:canonical_hosted_zone_name_id+ - (String) # * +:listener_descriptions+ - (Array) # * +:listener+ - (Hash) # * +:protocol+ - (String) # * +:load_balancer_port+ - (Integer) # * +:instance_protocol+ - (String) # * +:instance_port+ - (Integer) # * +:ssl_certificate_id+ - (String) # * +:policy_names+ - (Array) # * +:policies+ - (Hash) # * +:app_cookie_stickiness_policies+ - (Array) # * +:policy_name+ - (String) # * +:cookie_name+ - (String) # * +:lb_cookie_stickiness_policies+ - (Array) # * +:policy_name+ - (String) # * +:cookie_expiration_period+ - (Integer) # * +:other_policies+ - (Array) # * +:backend_server_descriptions+ - (Array) # * +:instance_port+ - (Integer) # * +:policy_names+ - (Array) # * +:availability_zones+ - (Array) # * +:subnets+ - (Array) # * +:vpc_id+ - (String) # * +:instances+ - (Array) # * +:instance_id+ - (String) # * +:health_check+ - (Hash) # * +:target+ - (String) # * +:interval+ - (Integer) # * +:timeout+ - (Integer) # * +:unhealthy_threshold+ - (Integer) # * +:healthy_threshold+ - (Integer) # * +:source_security_group+ - (Hash) # * +:owner_alias+ - (String) # * +:group_name+ - (String) # * +:security_groups+ - (Array) # * +:created_time+ - (Time) # * +:scheme+ - (String) # * +:next_marker+ - (String) # @!method detach_load_balancer_from_subnets(options = {}) # Calls the DetachLoadBalancerFromSubnets API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name associated # with the LoadBalancer to be detached. The name must be unique # within the client AWS account. # * +:subnets+ - *required* - (Array) A list of subnet IDs to # remove from the set of configured subnets for the LoadBalancer. # @return [Core::Response] # The #data method of the response object returns # a hash with the following structure: # * +:subnets+ - (Array) # @!method disable_availability_zones_for_load_balancer(options = {}) # Calls the DisableAvailabilityZonesForLoadBalancer API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name associated # with the LoadBalancer. The name must be unique within the client # AWS account. # * +:availability_zones+ - *required* - (Array) A list of # Availability Zones to be removed from the LoadBalancer. There must # be at least one Availability Zone registered with a LoadBalancer at # all times. The client cannot remove all the Availability Zones from # a LoadBalancer. Specified Availability Zones must be in the same # Region. # @return [Core::Response] # The #data method of the response object returns # a hash with the following structure: # * +:availability_zones+ - (Array) # @!method enable_availability_zones_for_load_balancer(options = {}) # Calls the EnableAvailabilityZonesForLoadBalancer API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name associated # with the LoadBalancer. The name must be unique within the client # AWS account. # * +:availability_zones+ - *required* - (Array) A list of new # Availability Zones for the LoadBalancer. Each Availability Zone # must be in the same Region as the LoadBalancer. # @return [Core::Response] # The #data method of the response object returns # a hash with the following structure: # * +:availability_zones+ - (Array) # @!method register_instances_with_load_balancer(options = {}) # Calls the RegisterInstancesWithLoadBalancer API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name associated # with the LoadBalancer. The name must be unique within the client # AWS account. # * +:instances+ - *required* - (Array) A list of instance IDs # that should be registered with the LoadBalancer. When the instance # is stopped and then restarted, the IP addresses associated with # your instance changes. Elastic Load Balancing cannot recognize the # new IP address, which prevents it from routing traffic to your # instances. We recommend that you de-register your Amazon EC2 # instances from your load balancer after you stop your instance, and # then register the load balancer with your instance after you've # restarted. To de-register your instances from load balancer, use # DeregisterInstancesFromLoadBalancer action. # * +:instance_id+ - (String) Provides an EC2 instance ID. # @return [Core::Response] # The #data method of the response object returns # a hash with the following structure: # * +:instances+ - (Array) # * +:instance_id+ - (String) # @!method set_load_balancer_listener_ssl_certificate(options = {}) # Calls the SetLoadBalancerListenerSSLCertificate API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name of the the # LoadBalancer. # * +:load_balancer_port+ - *required* - (Integer) The port that uses # the specified SSL certificate. # * +:ssl_certificate_id+ - *required* - (String) The ID of the SSL # certificate chain to use. For more information on SSL certificates, # see Managing Server Certificates in the AWS Identity and Access # Management documentation. # @return [Core::Response] # @!method set_load_balancer_policies_for_backend_server(options = {}) # Calls the SetLoadBalancerPoliciesForBackendServer API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The mnemonic name # associated with the LoadBalancer. This name must be unique within # the client AWS account. # * +:instance_port+ - *required* - (Integer) The port number # associated with the back-end server. # * +:policy_names+ - *required* - (Array) List of policy names # to be set. If the list is empty, then all current polices are # removed from the back-end server. # @return [Core::Response] # @!method set_load_balancer_policies_of_listener(options = {}) # Calls the SetLoadBalancerPoliciesOfListener API operation. # @param [Hash] options # * +:load_balancer_name+ - *required* - (String) The name associated # with the LoadBalancer. The name must be unique within the client # AWS account. # * +:load_balancer_port+ - *required* - (Integer) The external port of # the LoadBalancer with which this policy applies to. # * +:policy_names+ - *required* - (Array) List of policies to # be associated with the listener. Currently this list can have at # most one policy. If the list is empty, the current policy is # removed from the listener. # @return [Core::Response] # end client methods # define_client_methods('2012-06-01') end end end