Por defecto, a todas las instancias de Amazon EC2 se les asignan dos direcciones IP al lanzarlas: una dirección privada (RFC 1918) y una dirección pública que se asigna a la dirección IP privada mediante Network Address Translation (NAT).
Si usa DNS dinámico para asociar un nombre DNS existente a la dirección IP pública de una nueva instancia, podría tardar hasta 24 horas en que la dirección IP se propague por Internet. Como resultado, las nuevas instancias podrían no recibir tráfico mientras que las instancias terminadas siguen recibiendo peticiones.
Para resolver este problema, Amazon EC2 proporciona direcciones IP elásticas. Las direcciones IP elásticas son direcciones IP estáticas diseñadas para la computación en la nube dinámica. Las direcciones IP elásticas están asociadas a su cuenta, no a instancias específicas. Cualquier dirección IP elástica que asocie a su cuenta permanece asociada a su cuenta hasta que la libere explícitamente. Sin embargo, a diferencia de las direcciones IP estáticas tradicionales, las direcciones IP elásticas le permiten enmascarar fallos de instancia o de zona de disponibilidad reasignando rápidamente sus direcciones IP públicas a cualquier instancia de su cuenta.
Ejemplo 64.46. Asignando una nueva IP elástica
allocate asignará a su cuenta una nueva dirección IP elástica.
allocate devuelve la ip recién asignada.
$ec2_eip = new Zend_Service_Amazon_Ec2_Elasticip('aws_key','aws_secret_key');
$ip = $ec2_eip->allocate();
// print out your newly allocated elastic ip address;
print $ip;
Ejemplo 64.47. Describiendo direcciones IP elásticas asignadas
describe tiene un parámetro opcional para describir todas
sus direcciones IP elásticas asignadas o solo algunas de sus
direcciones asignadas.
describe devuelve un array que contiene información sobre cada dirección IP
elástica, incluyendo el publicIp y el instanceId si está asociado.
$ec2_eip = new Zend_Service_Amazon_Ec2_Elasticip('aws_key','aws_secret_key');
// describe all
$ips = $ec2_eip->describe();
// describe a subset
$ips = $ec2_eip->describe(array('ip1', 'ip2', 'ip3'));
// describe a single ip address
$ip = $ec2_eip->describe('ip1');
Ejemplo 64.48. Liberando una IP elástica
release liberará una IP elástica a Amazon.
Devuelve un booleano TRUE o FALSE.
$ec2_eip = new Zend_Service_Amazon_Ec2_Elasticip('aws_key','aws_secret_key');
$ec2_eip->release('ipaddress');
Ejemplo 64.49. Asocia una IP elástica a una instancia
associate asignará una IP elástica a una
instancia que ya esté en ejecución.
Devuelve un booleano TRUE o FALSE.
$ec2_eip = new Zend_Service_Amazon_Ec2_Elasticip('aws_key','aws_secret_key');
$ec2_eip->associate('instance_id', 'ipaddress');
Ejemplo 64.50. Desasociar una IP elástica de una instancia
disassociate desasociará una IP elástica de una instancia.
Si termina una instancia, se desasociará automáticamente la dirección IP
elástica por usted.
Devuelve un booleano TRUE o FALSE.
$ec2_eip = new Zend_Service_Amazon_Ec2_Elasticip('aws_key','aws_secret_key');
$ec2_eip->disassociate('ipaddress');