EC2: en Attente jusqu'à ce qu'une nouvelle instance est en cours d'exécution
Je voudrais créer une nouvelle instance basée sur mon stockées AMI.
Je obtenir ce par le code suivant:
RunInstancesRequest rir = new RunInstancesRequest(imageId,1, 1);
//Code for configuring the settings of the new instance
...
RunInstancesResult runResult = ec2.runInstances(rir);
Cependant, je ne trouve pas d'attente pour "bloquer"/attendre jusqu'à ce que l'instance est en place et en cours d'exécution en dehors de Fil.currentThread().sommeil(xxxx) de commande.
D'autre part, StartInstancesResult et TerminateInstancesResult vous donne un moyen d'avoir accès à l'état des instances et être en mesure de surveiller tous les changements. Mais, qu'en l'état d'une instance entièrement nouvelle?
Vous devez vous connecter pour publier un commentaire.
D'attente pour l'instance EC2 pour se préparer est un modèle commun. Dans la bibliothèque Python boto vous aussi résoudre ce avec
sleep
appels:Avec ce mécanisme, vous serez en mesure d'interrogation quand votre nouvelle instance va venir.
instance.wait_until_running()
boto3 a:
De la AWS CLI changelog v1.6.0:
Je ne la vois pas mentionné dans la documentation, mais la suite a fonctionné pour moi:
La
wait instance-running
ligne n'a pas fini jusqu'à ce que l'instance EC2 a été en cours d'exécution.Je n'ai pas utiliser Python/boto/botocore mais suppose qu'il a quelque chose de similaire. Découvrez waiter.py sur Github.
En fonction de ce que vous essayez de faire (et de combien de serveurs vous prévoyez de commencer), au lieu de scrutin pour l'instance de départ des événements, vous pouvez l'installer sur l'AMI d'un simple programme/script qui s'exécute une fois au démarrage de l'instance et envoie une notification à cet effet, c'est à dire à une AWS SNS Sujet.
Le processus qui doit connaître de nouveaux serveurs de départ pourrait alors s'abonner à ce topic SNS, et devrait recevoir un push de notifications chaque fois qu'un serveur démarre.
Résout le même problème sous un angle différent; votre kilométrage peut varier.
Allez utiliser Boto3 de
wait_until_running
méthode:http://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.Instance.wait_until_running
Vous pouvez utiliser boto3 serveurs,
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#waiters
pour cette ex: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Waiter.InstanceRunning
Ou en Java https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/
Je suis sûr qu'il y a des serveurs mis en œuvre dans tous les AWS sdk.