Obtenez de l'instance-id de l'instance EC2 via Java

J'ai une AWS EC2 instance déployée, et j'ai besoin de savoir son IP publique. Howver, à savoir que je dois d'abord connaître l'instance-id de mon exemple.

Objectif:

  • J'ai un code Java s'exécutant dans mon cas, et je veux que la figure de code la propriété intellectuelle actuelle ou à l'Instance-ID de l'instance où il est en cours d'exécution.

Après la lecture d'Amazon de la documentation, je suis venu avec une méthode Java qui renvoie l'adresse IP de toutes les instances, mais ce n'est pas ce que je veux, je veux une méthode qui retourne uniquement l'instance-id ou l'adresse IP publique de l'instance en cours d'exécution.

    /**
     * Returns a list with the public IPs of all the active instances, which are
     * returned by the {@link #getActiveInstances()} method.
     * 
     * @return  a list with the public IPs of all the active instances.
     * @see     #getActiveInstances()
     * */
    public List<String> getPublicIPs(){
        List<String> publicIpsList = new LinkedList<String>();

        //if there are no active instances, we return immediately to avoid extra 
        //computations.
        if(!areAnyActive())
            return publicIpsList;

        DescribeInstancesRequest request =  new DescribeInstancesRequest();
        request.setInstanceIds(instanceIds);

        DescribeInstancesResult result = ec2.describeInstances(request);
        List<Reservation> reservations = result.getReservations();

        List<Instance> instances;
        for(Reservation res : reservations){
            instances = res.getInstances();
            for(Instance ins : instances){
                LOG.info("PublicIP from " + ins.getImageId() + " is " + ins.getPublicIpAddress());
                publicIpsList.add(ins.getPublicIpAddress());
            }
        }

        return publicIpsList;
    }

Dans ce code j'ai un tableau avec l'instance-id de toutes les instances actives, mais je ne sais pas si ils sont "moi" ou pas. Donc je suppose que ma première étape serait de savoir qui je suis, et puis à demander mon adresse IP publique.

Est il y a un changement je peux le faire à la méthode précédente pour me donner ce que je veux? Est-il un moyen plus efficace de faire cela?

OriginalL'auteur Flame_Phoenix | 2014-04-15