27 votes

Comment trouver l'adresse IP d'une instance Amazon EC2 au redémarrage

Au redémarrage, l'adresse IP d'une instance amazon change. Comment trouver la nouvelle adresse IP à l'aide de l'API Java?

57voto

Eric Hammond Points 10699

Au redémarrage, les adresses IP d'une instance EC2 ne pas changer. Ils le font généralement à changer sur stop/start de non-VPC EBS de démarrage de l'instance.

Voir ma réponse à vos question ici:

http://stackoverflow.com/questions/7533871/difference-between-rebooting-and-stop-starting-an-amazon-ec2-instance

Cela dit, vous pouvez trouver le privé et le public des adresses IP par le biais de l'appel d'API pour DescribeInstances dans votre langue particulière.

Si vous êtes sur l'instance elle-même, vous pouvez également trouver les adresses IP par l'utilisateur des données de l'API à l'aide de simple HTTP:

http://instance-data/latest/meta-data/local-ipv4
http://instance-data/latest/meta-data/public-ipv4

Par exemple,

wget -qO- http://instance-data/latest/meta-data/public-ipv4

Adresses IP élastiques sont recommandés pour garder une cohérence (statique) de l'extérieur face à une adresse IP pour un service particulier ou d'un serveur. Ces le besoin d'être ré-attribuée à une instance après un stop/start (mais pas après un redémarrage).

28voto

buley Points 7880
curl http://169.254.169.254/latest/meta-data/public-ipv4

2voto

Eight-Bit Guru Points 4613

En supposant que vous ne voulez pas attribuer une adresse IP élastique (et il y a des raisons pour lesquelles ce n'est pas toujours une solution), appelez simplement DescribeInstances sur l'instance redémarrée, qui renvoie un tas d'informations, y compris l'adresse IP publique .

Voici la documentation de l'API Java AWS EC2 sur le sujet.

1voto

Sachin Gaykar Points 11

Afin de récupérer l'IP publique de l'instance, vous devez d'abord obtenir l'ID d'instance de cette instance. Vous pouvez obtenir l'ID d'instance de l'instance en utilisant le code java suivant.

  List<Instance> instances = runInstancesResult.getReservation().getInstances();

 String instanceId = instances.get(0).toString().substring(13, 23);
 

Et maintenant, afin d'obtenir l'IP publique, vous pouvez utiliser le code java suivant.

 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());
         }     
    }
}
 

0voto

Lostsoul Points 5465

En supposant que le redémarrage de l'instance et qu'ils ne lancent pas à partir de zéro que vous pouvez attribuer une adresse IP élastique qui reste toujours avec l'instance ec2(sauf si vous déplacez l'IP d'un autre serveur). Cela permet de pointer tous vos DNS pour qu'une seule adresse IP et vous inquiétez pas à ce qu'un redémarrage peut vous causer des problèmes.

Je pense que c'est ce que votre demande mais il y a d'autres choses que vous pourriez poser. L'adresse IP interne du serveur(si vous relancez l'instance de ne pas redémarrer) et vous ne pouvez pas "réserve" de sorte que vous pouvez avoir besoin de créer un script pour vous garder la nouvelle adresse IP(si votre pointage de services internes à elle).

espère que ça aide

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: