Selon New EC2 Commande Exécuter l' article de nouvelles, AWS CLI devrait soutenir une nouvelle sous-commande pour exécuter des scripts sur des instances EC2 à distance.
Cependant, je me suis enregistré aws ec2 help
, mais je ne trouve pas la commande appropriée.
J'ai installé aws
via apt-get
:
$ aws --version
aws-cli/1.14.32 Python/3.5.4 Linux/4.12.7-64 botocore/1.8.36
Quelle sous-commande dois-je rechercher et quelle est la syntaxe à exécuter, disons ipconfig
dans PowerShell sur l'instance EC2 distante?
amazon-ec2
aws-cli
Kenorb
la source
la source
Réponses:
Pour exécuter ipconfig à partir de la commande d'exécution d'AWS Systems Manager:
Remarque: Si vous avez l'erreur, pensez à spécifier le droit
--region
.Cela suppose que vos informations d'identification AWS et CLI sont correctement configurées. Consultez la procédure pas à pas de la commande d'exécution de Systems Manager à l'aide de l'AWS CLI pour plus d'informations.
Voici l'exemple pratique de commande shell d'envoi et d'obtention de la sortie de commande:
la source
Voici un script Bash d'aide qui permet
aws ssm send-command
d'exécuter les commandes:Usage:
Exemple:
Pour exécuter des sorties plus importantes, consultez: Comment éviter que la sortie ne soit tronquée lors de l'exécution de la commande AWS SSM?
la source
Oui, vous pouvez le faire avec AWS Systems Manager. La commande d'exécution d'AWS Systems Manager vous permet d'exécuter à distance et en toute sécurité un ensemble de commandes sur EC2 ainsi que sur un serveur sur site. Voici les étapes de haut niveau pour y parvenir.
Attacher le rôle IAM d'instance: l'instance ec2 doit avoir un rôle IAM avec la stratégie AmazonSSMFullAccess. Ce rôle permet à l'instance de communiquer avec l'API Systems Manager.
Installer l'agent SSM: l'instance EC2 doit avoir installé l'agent SSM. L'agent SSM traite les demandes de commande d'exécution et configure l'instance selon la commande.
Commande d'exécution: exemple d'utilisation via l'AWS CLI:
Exécutez la commande suivante pour récupérer les services en cours d'exécution sur l'instance. Remplacez Instance-ID par l'ID d'instance ec2.
Informations plus détaillées: ici
la source
Voici quelque chose de super cool que je fais avec AWS SSM Send-Command!
En utilisant Apache Airflow, je crée une toute nouvelle instance EC2 en utilisant un modèle de formation cloud (ou CFT pour faire court) qui est juste un fichier JSON avec toutes les valeurs de configuration pour mon instance EC2 que je veux; notez également que dans ce CFT, j'ai également une commande d'amorçage qui copie un script Python d'un emplacement S3 vers la nouvelle instance EC2 afin que je puisse l'exécuter plus tard à l'aide d'une commande d'envoi SSM! Je fais cela en utilisant Python3 et le SDK AWS pour Python3 appelé la bibliothèque Boto3. Voici une partie de la commande de création de la nouvelle pile CFT qui, à son tour, crée ma nouvelle instance EC2:
Ensuite, je peux obtenir l'ID d'instance de la nouvelle instance EC2 (nécessaire pour utiliser la commande d'envoi SSM) en utilisant quelque chose comme ceci:
Ensuite, je peux obtenir l'ID d'instance de l'instance EC2 du serveur actuel d'Airflow Worker en exécutant cette commande
wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
via Python:MAINTENANT!!!! POUR LA GRANDE FINALE
Je peux ensuite exécuter un script sur la nouvelle instance EC2 que j'ai créée et envoyer ce script quels que soient les paramètres / arguments que je veux ... y compris l'ID d'instance du serveur qui a envoyé la commande d'envoi SSM de cette façon lorsque mon script est terminé exécuté sur la nouvelle instance EC2, il peut renvoyer une autre commande SSM Send-Command à mon serveur Airflow pour lui indiquer que le script est terminé. C'est à un niveau très élevé sans détails mais c'est juste pour démontrer une idée :)
Je ne sais pas si cela a aidé quelqu'un, mais c'est un exemple sympa et amusant de faire quelque chose avec l'AWS SSM Send-Command! Quoique, probablement une odeur de code xD
la source