class AWS::EC2::ElasticIp
@attr_reader [String,nil] instance_id Returns the instance id if
assigned to an EC2 instance, nil otherwise.
@attr_reader [String,nil] allocation_id
The ID representing the allocation of the address for use with Amazon VPC.
@attr_reader [String] domain Indicates whether this elastic ip address
is for EC2 instances ('standard') or VPC instances ('vpc').
@attr_reader [String,nil] association_id The ID of the association
between this elastic ip address and an EC2 VPC instance (VPC only).
@attr_reader [String,nil] network_interface_id The ID of the network
interface (VPC only).
@attr_reader [String,nil] network_interface_owner_id
The ID of the AWS account that owns the network interface (VPC only).
Attributes
@return [String] The public IP address.
@return [String] The public IP address.
Public Class Methods
# File lib/aws/ec2/elastic_ip.rb, line 38 def initialize public_ip, options = {} @public_ip = public_ip super end
Protected Class Methods
@api private
# File lib/aws/ec2/elastic_ip.rb, line 203 def self.describe_call_name :describe_addresses end
Public Instance Methods
Associates this elastic IP address with an instance or a network interface. You may provide `:instance` or `:network_interface` but not both options.
# associate with an instance eip.associate :instance => 'i-12345678' # associate with a network interface eip.associate :network_interface => 'ni-12345678'
@param [Hash] options
@option options [String,Instance] :instance The id of an instance
or an {Instance} object.
@option options [String,NetworkInterface] :network_interface The id
of a network interface or a {NetworkInterface} object.
@return [String] Returns the resulting association id.
# File lib/aws/ec2/elastic_ip.rb, line 132 def associate options client_opts = {} [:instance,:network_interface,:private_ip_address].each do |opt| if value = options[opt] key = ( opt.to_s=='instance' || opt.to_s=='network_interface' ? opt.to_s+"_id" : opt.to_s ) client_opts[:"#{key}"] = value.is_a?(Resource) ? value.id : value end end if vpc? client_opts[:allocation_id] = allocation_id else client_opts[:public_ip] = public_ip end resp = client.associate_address(client_opts) resp.data[:association_id] end
@return [Boolean] Returns true if this IP address is associated
with an EC2 instance or a network interface.
# File lib/aws/ec2/elastic_ip.rb, line 73 def associated? !!(instance_id || association_id) end
Releases the elastic IP address.
(For non-VPC elastic ips) Releasing an IP address automatically disassociates it from any instance it's associated with.
@return [nil]
# File lib/aws/ec2/elastic_ip.rb, line 102 def delete if vpc? client.release_address(:allocation_id => allocation_id) else client.release_address(:public_ip => public_ip) end nil end
Disassociates this elastic IP address from an EC2 instance. Raises an exception if this elastic IP is not currently associated with an instance. @return [nil]
# File lib/aws/ec2/elastic_ip.rb, line 158 def disassociate if vpc? client.disassociate_address(:association_id => association_id) else client.disassociate_address(:public_ip => public_ip) end nil end
@return [Boolean] Returns true the elastic ip address exists in
your account.
# File lib/aws/ec2/elastic_ip.rb, line 169 def exists? begin get_resource true rescue Errors::InvalidAddress::NotFound false end end
@return [Instance,nil] If associated, returns the {Instance} this
elastic IP address is associated to, nil otherwise.
# File lib/aws/ec2/elastic_ip.rb, line 81 def instance if instance_id = self.instance_id Instance.new(instance_id, :config => config) end end
@return [NetworkInterface,nil] Returns the network interface this
elastic ip is associated with. Returns `nil` if this is not associated with an elastic ip address.
# File lib/aws/ec2/elastic_ip.rb, line 90 def network_interface if nid = network_interface_id NetworkInterface.new(nid, :config => config) end end
@return [String] Returns the public IP address
# File lib/aws/ec2/elastic_ip.rb, line 179 def to_s public_ip.to_s end
Protected Instance Methods
@api private
# File lib/aws/ec2/elastic_ip.rb, line 197 def describe_call_name :describe_addresses end
@api private
# File lib/aws/ec2/elastic_ip.rb, line 185 def resource_id_method :public_ip end
@api private
# File lib/aws/ec2/elastic_ip.rb, line 191 def response_id_method :public_ip end