Ich lerne gerade die AWS CLI (v2) und habe sie unter Ubuntu 18.04 installiert. Ich verwende zsh mit installiertem oh-my-zsh. Ich versuche, die Ausgabe des Befehls aws als JSON-Zeichenfolge (oder sogar als Text) an das Terminal zurückzumelden, aber die Ausgabe wird immer an vi umgeleitet.

Mein AWS-Konto ist brandneu - keine EC2-Instanzen. Wenn ich den folgenden Befehl ausführe:

aws ec2 describe-instances

Es sendet den erwarteten Ausgabewert (z. B. {"Reservierungen": []}), jedoch direkt an vi, anstatt eine JSON-Zeichenfolge an das Terminal auszugeben, das anschließend das Schließen von vi erfordert. Dies geschieht unabhängig vom Ausgabeformat (json, text, table) oder der von mir verwendeten Shell (bash, zsh).

Ich bin nicht sicher, ob es sich um ein AWS CLI-Konfigurationsproblem / eine Änderung oder ein Shell / Linux-Konfigurationsproblem / eine Änderung handelt

  • Ich habe meine Dateien .zshrc, .bashrc, .bash_profile und .bash_aliases überprüft und hier keine offensichtliche Lösung gefunden, die die Ausgabe ändern oder umleiten würde.
  • Ich habe die AWS CLI-Dokumentation, Stack Overflow und Google durchsucht und keine Lösung oder einen ähnlichen Fall gefunden.

Vielen Dank für alle Vorschläge.

29
moulder 22 Feb. 2020 im 00:44

3 Antworten

Beste Antwort

Es war die PAGER-Umgebungsvariable, die auf "weniger" gesetzt war (was ich mit vi verwechselte).

Mit diesem Fix wird die Datei ~ / .aws / config aktualisiert und cli_pager auf einen leeren Wert gesetzt, z. ::

[default]
region = us-west-2
output = json
cli_pager =

Vielen Dank an Sorin, der meine Frage kommentiert hat und mich zur Antwort geführt hat.

3
moulder 22 Feb. 2020 im 19:56

Ich empfehle, entweder ein neues Benutzerkonto zu erstellen und / oder eine Subshell ohne Profil aufzurufen und erneut zu versuchen, Ihren AWS-Befehl auszuführen. Beispielsweise...

username:~$ sudo -u `whoami` bash --noprofile
# Now it drops us into a sub-shell with no /etc/profile or any scripts
bash-3.2$ aws ec2 describe-instances

Dies oben führt Sie in eine Subshell, in der keine Profildateien (/ etc / profile oder .bash_profile) enthalten sind. Es sollte makellos sein. Von hier aus versuchen wir Ihren Befehl erneut und sehen, was er tut. Ich würde hier vermuten, dass es gut funktionieren würde und Sie nicht in VI fallen lassen würde. Wenn ja, müssen Sie an anderer Stelle nach Bash / Zsh suchen (z. B. / etc / profile), das dies verursacht.

HINWEIS: Wenn dies Ihr Problem NICHT behebt, befindet sich Ihr Problem möglicherweise im Ordner ~ / .aws. Ich würde diesen Ordner löschen und von vorne beginnen, aws configure erneut ausführen und dann Versuchen Sie Ihren Befehl erneut.

-1
Farley 21 Feb. 2020 im 22:54

In AWS gibt es ein Dokument mit dem Titel Steuern der Befehlsausgabe von der AWS CLI. Laut diesem Dokument sollte die richtige Syntax sein

aws ec2 describe-instances --output json
-1
kub7 21 Feb. 2020 im 22:04