Laut dem Nachrichtenartikel New EC2 Run Command sollte AWS CLI einen neuen Unterbefehl zum Ausführen von Skripten auf Remote-EC2-Instanzen unterstützen.
Ich habe zwar eingecheckt aws ec2 help
, kann aber den entsprechenden Befehl nicht finden.
Ich habe installiert aws
über apt-get
:
$ aws --version
aws-cli/1.14.32 Python/3.5.4 Linux/4.12.7-64 botocore/1.8.36
Nach welchem Unterbefehl sollte ich suchen und welche Syntax muss ausgeführt werden, beispielsweise ipconfig
in PowerShell auf der Remote-EC2-Instanz?
amazon-ec2
aws-cli
Kenorb
quelle
quelle
Antworten:
So führen Sie ipconfig über den Ausführungsbefehl von AWS Systems Manager aus:
Hinweis: Wenn Sie den Fehler haben, sollten Sie das richtige angeben
--region
.Dies setzt voraus, dass Sie Ihre AWS-Anmeldeinformationen und Ihre CLI ordnungsgemäß konfiguriert haben. Siehe System Manager Run Command Lösungsweg Mit dem AWS CLI für weitere Informationen.
Hier ist das praktische Beispiel für einen Shell-Befehl zum Senden und Abrufen der Befehlsausgabe:
quelle
Hier ist ein Bash-Hilfsskript, mit
aws ssm send-command
dem die Befehle ausgeführt werden:Verwendung:
Beispiel:
Informationen zum Ausführen größerer Ausgaben finden Sie unter: So vermeiden Sie, dass die Ausgabe beim Ausführen des AWS SSM-Befehls abgeschnitten wird.
quelle
Hier ist etwas super cooles, was ich mit AWS SSM Send-Command mache!
Mit Apache Airflow erstelle ich eine brandneue EC2-Instanz mit einer Cloud Formation-Vorlage (kurz CFT), die nur eine JSON-Datei mit allen gewünschten Konfigurationswerten für meine EC2-Instanz ist. Beachten Sie auch, dass ich in dieser CFT auch einen Bootstrap-Befehl habe, der ein Python-Skript von einem S3-Speicherort in die neue EC2-Instanz kopiert, damit ich es später mit einem SSM-Sendebefehl ausführen kann! Ich mache dies mit Python3 und dem AWS SDK für Python3 namens Boto3-Bibliothek. Hier ist ein Teil des Befehls zum Erstellen des neuen CFT-Stapels, der wiederum meine neue EC2-Instanz erstellt:
Dann kann ich die Instanz-ID der neuen EC2-Instanz (erforderlich, um den SSM-Sendebefehl zu verwenden) wie folgt abrufen:
Dann kann ich die Instanz-ID der EC2-Instanz des aktuellen Airflow Worker-Servers erhalten, indem ich diesen Befehl
wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
über Python ausführe:JETZT!!!! FÜR DAS GRAND FINALE
Ich kann dann ein Skript auf der neuen EC2-Instanz ausführen, die ich erstellt habe, und dieses Skript mit allen gewünschten Parametern / Argumenten senden ... einschließlich der Instanz-ID des Servers, der den SSM-Sendebefehl gesendet hat, damit mein Skript fertig ist Auf der neuen EC2-Instanz kann ein weiterer SSM-Sendebefehl an meinen Airflow-Server zurückgesendet werden, um ihm mitzuteilen, dass das Skript fertig ist. Dies ist auf einem sehr hohen Niveau ohne Details, aber es dient nur dazu, eine Idee zu demonstrieren :)
Ich bin mir nicht sicher, ob dies jemandem geholfen hat, aber es ist ein cooles und lustiges Beispiel dafür, wie man etwas mit dem AWS SSM Send-Command macht! Allerdings riecht wahrscheinlich ein Code xD
quelle
Ja, Sie können dies mit AWS Systems Manager tun. Mit AWS Systems Manager Run Command können Sie eine Reihe von Befehlen remote und sicher auf EC2- und On-Premise-Servern ausführen. Im Folgenden finden Sie allgemeine Schritte, um dies zu erreichen.
Instanz-IAM-Rolle anhängen: Die ec2-Instanz muss eine IAM-Rolle mit der Richtlinie AmazonSSMFullAccess haben. Diese Rolle ermöglicht der Instanz die Kommunikation mit der Systems Manager-API.
SSM-Agenten installieren: Auf der EC2-Instanz muss der SSM-Agent installiert sein. Der SSM-Agent verarbeitet die Ausführungsbefehlsanforderungen und konfiguriert die Instanz gemäß dem Befehl.
Befehl ausführen: Beispiel für die Verwendung über AWS CLI:
Führen Sie den folgenden Befehl aus, um die auf der Instanz ausgeführten Dienste abzurufen. Ersetzen Sie die Instanz-ID durch die ec2-Instanz-ID.
Nähere Informationen: hier
quelle