La réponse dépend un peu de l'AMI que vous exécutez, car les fonctionnalités fournies dépendent entièrement de l'AMI.
L'AMIS d'Amazon Linux et les AMI officielles d'Ubuntu ont l'avantage d'avoir les mêmes caractéristiques. cloud-init paquet installé. Il existe plusieurs façons de déclencher des actions de démarrage, mais celle qui correspond le mieux à votre demande (et ma préférée car je l'ai inventée) est le concept de données utilisateur script .
Vous pouvez simplement passer tout script (commençant par les deux caractères # !) comme données utilisateur lors du démarrage des instances EC2. Il sera exécuté en tant que Root lors du premier démarrage de l'instance.
Pour un exemple précis de ce fonctionnement, j'utilise cette technique exacte dans mon récent article : Télécharger la clé d'hôte ssh connue dans les données utilisateur EC2 script.
Vous vouliez également exécuter plus d'une instance EC2 avec le même script. La commande ec2-run-instances ainsi que les API et la console Web associées vous permettent de spécifier un nombre quelconque d'instances à lancer avec les mêmes données utilisateur. Par exemple :
ec2-run-instances \
--instance-count 10 \
--user-data-file $MYSCRIPT \
--key $USER \
$SOMEAMI
Si vous utilisez actuellement une AMI qui n'a pas installé cloud-init, vous pouvez faire l'une des choses suivantes :
-
Passez à une AMI sur laquelle cloud-init est installé, ou
-
Créez une version personnalisée de votre AMI sur laquelle cloud-init est installé, ou bien
-
Écrivez une enveloppe script plus compliquée qui fait un enregistrement de tous les ids d'instance après qu'ils aient été démarrés, attend que toutes les instances passent à l'état de fonctionnement, attend que le sshd accepte les connexions, télécharge votre script de démarrage sur chaque instance, et exécute le script de démarrage sur chaque instance.