Al reiniciar, la dirección IP de una instancia de Amazon cambia. ¿Cómo encontrar la nueva dirección IP usando java API?Cómo encontrar la dirección IP de una instancia de Amazon EC2 al reiniciar
Respuesta
asumiendo que no desea asignar una dirección IP elástico (y hay razones para que esto no siempre es una solución) a continuación, sólo tiene que llamar DescribeInstances
en la instancia reiniciado, que devuelve un montón de información, incluida la dirección IP pública.
Aquí está el AWS EC2 Java API Documentation sobre el tema.
Te he votado como Eight-Bit-Guru. ¿Conoces alguna forma fácil de obtener el InstanceID de la última instancia creada para asociar inmediatamente un ElasticIP? Que yo sepa, requiere analizar la información devuelta de 'ec2-run-instances' o analizar JSON utilizando bash con el retorno JSON de' aws ec2 run-instances'. Intentando evitar dependencias adicionales. – JohnAllen
Para aclarar el comando 'DescribeInstances' anterior, me gusta usar esto:' aws ec2 describe-instances | grep "Value \ | PublicIpAddress" '(por supuesto necesitarás el Aws Cli instalado) – modulitos
¿Por qué? Gracias, amable downvoter anónimo. ¡Tu razón para desestabilizar mi reputación reprendiendo mi respuesta aceptada hace seis años es tan descaradamente obvia que no se requieren comentarios! –
Suponiendo que se reinicia la instancia y no se inicia desde cero, se puede asignar una IP elástica que siempre permanece con la instancia de ec2 (a menos que mueva la IP a otro servidor). Esto le permite apuntar todos sus DNS a esa IP y no preocuparse de que un reinicio le cause problemas.
Creo que eso es lo que preguntas, pero hay otras cosas que podrías estar preguntando. La IP interna del servidor cambia (si relanza la instancia no se reinicia) y no puede 'reservarla', por lo que puede necesitar crear una secuencia de comandos para mantener la nueva IP (si su puntero le presta servicios internos).
esperanza de que ayuda a
Al reiniciar, las direcciones IP de una instancia EC2 hacen no cambio. Por lo general, cambian al detener/iniciar una instancia de arranque de EBS que no es de VPC.
Véase mi respuesta a su pregunta relacionada aquí:
Dicho esto, se pueden encontrar las direcciones IP privadas y públicas a través de la llamada a la API para DescribeInstances en su idioma particular.
Si se encuentra en la propia instancia, también se pueden encontrar las direcciones IP a través de la API de datos de usuario utilizando HTTP simple:
http://instance-data/latest/meta-data/local-ipv4
http://instance-data/latest/meta-data/public-ipv4
Por ejemplo,
wget -qO- http://instance-data/latest/meta-data/public-ipv4
Elastic IP addresses se recomiendan para mantener una dirección IP orientada externamente (estática) para un servicio o servidor en particular. Estos deben ser reasignados a una instancia después de una parada/inicio (pero no después de un reinicio).
Esta es una respuesta completa y sólida. El "wget" proporciona la respuesta correcta específica y la prosa que lo rodea también es útil/útil. – javadba
curl http://169.254.169.254/latest/meta-data/public-ipv4
Esta debería ser la respuesta aceptada, y también es lo que dicen en los documentos. http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html – jontsai
¿Qué es esa extraña IP? ¿Es una amenaza a la seguridad llamar a este IP desconocido desde el servidor de uno? : D me sugirió una edición que explica que la propiedad intelectual y parece que no fue aceptada –
@RavindranathAkila No, usted puede utilizar este comando desde el interior de la instancia EC2 –
esto es cómo lo hice en una instancia EC2 Ubuntu 12.04 dentro de una VPC:
curl ifconfig.me
no sé por qué pero público-IPv4 no se encontró bajo la url de meta-datos
He intentado esto: se cuelga sin respuesta – javadba
Obras en CentOS 7 –
Para obtener la IP pública de la instancia, primero necesita obtener el ID de instancia de esa instancia. Puede obtener el ID de instancia de la instancia utilizando el siguiente código java.
List<Instance> instances = runInstancesResult.getReservation().getInstances();
String instanceId = instances.get(0).toString().substring(13, 23);
Y ahora, para obtener la IP pública, puede usar el siguiente código de Java.
public void fetchInstancePublicIP() {
DescribeInstancesRequest request = new DescribeInstancesRequest().withInstanceIds("i-d99ae7d2");
DescribeInstancesResult result= ec2.describeInstances(request);
List <Reservation> list = result.getReservations();
for (Reservation res:list) {
List <Instance> instanceList= res.getInstances();
for (Instance instance:instanceList){
System.out.println("Public IP :" + instance.getPublicIpAddress());
System.out.println("Public DNS :" + instance.getPublicDnsName());
System.out.println("Instance State :" + instance.getState());
System.out.println("Instance TAGS :" + instance.getTags());
}
}
}
Tienen una clase util que facilita el acceso a los metadatos EC2. Por ejemplo
EC2MetadataUtils.getNetworkInterfaces().get(0).getPublicHostname();
EC2MetadataUtils.getNetworkInterfaces().get(0).getPublicIPv4s();
puede usar esto.
var ipofnewServer = string.Empty;
while (string.IsNullOrEmpty(ipofnewServer))
{
var statusRequest1 = new DescribeInstancesRequest
{
InstanceIds = new List<string>() { instanceId }
};
var result = amazonEc2client.DescribeInstances(statusRequest1);
var status = result.Reservations[0].Instances.FirstOrDefault();
if (status != null)
{
ipofnewServer = status.PublicIpAddress;
}
}
La dirección IPv4 pública también está disponible desde la instancia EC2 de esta manera:
curl checkip.amazonaws.com
Y el nombre de host público es:
dig -x $(curl -s checkip.amazonaws.com) +short
esto realmente funcionó mejor. La respuesta/public-ipv4 anterior funcionaba hasta hace poco, no estoy seguro de si AWS cambió algo o restringir el tráfico a través del ELB hizo una diferencia, pero estaba recibiendo mi IP elástica informada en ambas instancias. Sin embargo, la cuenta de curl lo hizo correctamente, mi IP elástica en una y una aleatoriamente asignada en la otra. –
- 1. Uso de la dirección IP estática con Amazon EC2
- 2. Amazon AWS Ec2 + Elastic IP
- 3. Amazon EC2 - tema reiniciar el servidor Apache
- 4. Detener una instancia de Amazon EC2 con "instancia tienda"
- 5. Micro instancia de Amazon EC2 no responde
- 6. Si detengo una instancia de Amazon EC2, ¿está esto guardado?
- 7. ¿Cómo selecciona una instancia de Amazon EC2 su kernel?
- 8. cómo reservar una instancia de amazon ec2 en ejecución?
- 9. ¿Cómo funciona la IP pública de EC2?
- 10. Cómo supervisar el rendimiento de la instancia de Amazon ec2?
- 11. ¿Cómo aumentar ulimit en la instancia de Amazon EC2?
- 12. ¿Cómo encontrar la dirección IP del cliente conectado al servidor?
- 13. Amazon EC2 Permiso denegado (publickey)
- 14. Instancia de Amazon EC2: cómo encontrar la contraseña de SQL Server
- 15. Descargue Amazon EC2 AMI?
- 16. ¿Cómo lanzar una instancia de amazon ec2 dentro de VPC usando Chef?
- 17. Apagado automático e Iniciar la instancia de Amazon EC2
- 18. ¿Encontrar una dirección IP pública en Python?
- 19. GUI en la instancia de Amazon EC2 Linux
- 20. Amazon EC2 Elastic Load Balancer: ¿Su IP cambia alguna vez?
- 21. Amazon EC2: Jetty Unaccessible
- 22. Cómo deshabilitar la carga de Amazon EC2?
- 23. ¿Cómo escalar automáticamente mi instancia en Amazon EC2?
- 24. ¿Cómo iniciar automáticamente servicios web al iniciar una instancia de Amazon EC2?
- 25. Instancias de autoescalado de Amazon EC2 con direcciones IP elásticas
- 26. Administración de instancias de Amazon EC2 reservadas
- 27. ¿Por qué mi instancia de Amazon EC2 está "pendiente"?
- 28. ¿Cómo encontrar el número de puerto de la dirección IP?
- 29. ID de instancia de Amazon EC2: ¿por qué XOR?
- 30. Cómo iniciar una instancia de Amazon EC2 mediante programación en .NET
¿Por qué no asignar una dirección IP fija elástica ? – okrasz