2017-05-11 6 views
2

Je voudrais créer une instance EC2, mais avant de commencer, faites quelques choses en utilisant l'ID d'instance généré pour cette instance. Existe-t-il une option dans aws ec2 run-instances ou une autre commande aws ec2 pour créer une instance AWS EC2 sans la démarrer? Une solution de contournement générerait UUID pour étiqueter cette instance et associer cet UUID au lieu de l'ID d'instance, ou s'arrêter juste après l'instance d'exécution, mais je préférerais une solution plus intelligente.Créer une instance EC2 sans démarrer

+0

Que voulez-vous dire par "faire des choses"? La bonne façon d'agir sur l'instance avant qu'elle ne soit complètement opérationnelle est de donner à l'instance quelques [userdata] (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html). Si vous voulez vraiment que votre instance reste arrêtée et commence avec les bonnes données, vous pouvez préparer un volume 'EBS' sur une autre instance et l'attacher à celui qui démarre, mais je ne le recommanderais pas, userdatas est le chemin à suivre. – iMil

+0

@iMil par "faire des choses" Je veux dire créer des ressources qui seront utilisées par l'instance. Je peux les mettre en place s'ils n'existent pas dans '/ etc/rc.local', mais cela rend le code plus conditionnel. Je sais comment fonctionnent les données utilisateur, mais je ne vois pas comment cela pourrait m'aider à faire des actions sur l'instance qui démarre l'événement existant mais avant qu'il ne commence à fonctionner. Je veux être en mesure de réinitialiser une instance et ne pas créer à nouveau les ressources. – pt12lol

+0

En fait ce que vous essayez de faire est exactement ce que sont les userdatas, ils sont exécutés bien avant 'rc.local' et en fait avant que votre système Linux entre dans la phase multi-utilisateur. Une autre option serait de créer une AMI (par exemple en utilisant [packer] (https://www.packer.io/)) qui configurera ce dont vous avez besoin à la création de l'instance. Et btw, packer commence une instance afin de construire l'AMI :) – iMil

Répondre

3

Alors que je disais à @ pt12lol dans les commentaires, c'est exactement ce userdata est pour.

De la documentation d'Amazon:

Lorsque vous lancez une instance dans Amazon EC2, vous avez la possibilité de transmettre des données d'utilisateur à l'instance qui peut être utilisé pour effectuer des tâches de configuration automatisées communes et même exécuter des scripts après l'instance départs. Vous pouvez transmettre deux types de données utilisateur à Amazon EC2: les scripts shell et les directives cloud-init. Vous pouvez également transmettre ces données dans l'assistant de lancement en texte brut, en tant que fichier (utile pour lancer des instances via les outils de ligne de commande) ou en tant que texte codé en base64 (pour les appels d'API).

utilisateur-données peuvent être transmises à l'instance au moment de la création, par exemple en utilisant le drapeau --user-data dans la aws cli ou la zone de texte Userdata dans la console AWS.

+0

C'est la solution la plus applicable pour la question. _ – kosa