Diese Dokumentation bezieht sich AWS CLI nur auf Version 1 von. Dokumentation zu Version 2 von finden Sie im Benutzerhandbuch für Version 2. AWS CLI
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Einstellung des Ausgabeformats in der AWS CLI
In diesem Thema werden die verschiedenen Ausgabeformate für AWS Command Line Interface (AWS CLI) beschrieben. AWS CLI unterstützt die folgenden Ausgabeformate:
-
text – Die Ausgabe wird als mehrere Zeilen mit tabulatorgetrennten Zeichenfolgenwerten formatiert. Dies kann nützlich sein, um die Ausgabe an einen Textprozessor wie
grep
,sed
oderawk
zu übergeben. -
table – Die Ausgabe erfolgt in Form einer Tabelle mit den Zeichen +|-, um die Zellenrahmen zu bilden. Normalerweise wird die Information in einem benutzerfreundlichen Format wiedergegeben, das viel einfacher zu lesen ist als die anderen, jedoch programmatisch nicht so nützlich ist.
Auswählen des Ausgabeformats
Wie im Thema Konfiguration erläutert, gibt es drei verschiedene Methoden, das Ausgabeformat anzugeben:
-
Verwenden der Option
output
in einem benannten Profil in derconfig
-Datei – Im folgenden Beispiel wird das Standardausgabeformat auftext
festgelegt.[default] output=text
-
Verwenden der Umgebungsvariablen
AWS_DEFAULT_OUTPUT
– Die folgende Ausgabe legt das Format für die Befehle in dieser Befehlszeilensitzung auftable
fest, bis die Variable geändert wird oder die Sitzung endet. Diese Umgebungsvariable überschreibt alle Werte, die in der Dateiconfig
festgelegt sind.$
export AWS_DEFAULT_OUTPUT="table"
-
Verwenden der Option
--output
in der Befehlszeile – Im folgenden Beispiel wird nur die Ausgabe dieses einen Befehls aufjson
gesetzt. Mit dieser Option für den Befehl werden alle aktuell festgelegten Umgebungsvariablen überschrieben oder der Wert in der Dateiconfig
.$
aws swf list-domains --registration-status REGISTERED --output json
Wichtig
Der von Ihnen angegebene Ausgabetyp ändert die Funktionsweise der Option --query
:
-
Wenn Sie angeben
--output text
, wird die Ausgabe paginiert, bevor der--query
Filter angewendet wird, und die Abfrage wird auf jeder Seite der Ausgabe einmal AWS CLI ausgeführt. Aus diesem Grund enthält die Abfrage das erste passende Element auf jeder Seite, was zu unerwarteten zusätzlichen Ausgaben führen kann. Um die Ausgabe zusätzlich zu filtern, können Sie andere Befehlszeilentools wiehead
odertail
verwenden. -
Wenn Sie
--output json
, angeben, wird die Ausgabe vollständig als einzelne, native Struktur verarbeitet, bevor der--query
-Filter angewendet wird. Der AWS CLI führt die Abfrage nur einmal für die gesamte Struktur aus, wodurch ein gefiltertes Ergebnis erzeugt wird, das dann ausgegeben wird.
JSON-Ausgabeformat
JSON
Für komplexere Filterung, mit der Sie möglicherweise nicht arbeiten können--query
, können Sie einen Befehlszeilenprozessor in Betracht ziehenjq
. JSON Sie können dies unter http://stedolan.github.io/jq/
Das Folgende ist ein Beispiel für eine JSON Ausgabe.
$
aws iam list-users --output json
{ "Users": [ { "Path": "/", "UserName": "Admin", "UserId": "AIDA1111111111EXAMPLE", "Arn": "arn:aws:iam::123456789012:user/Admin", "CreateDate": "2014-10-16T16:03:09+00:00", "PasswordLastUsed": "2016-06-03T18:37:29+00:00" }, { "Path": "/backup/", "UserName": "backup-user", "UserId": "AIDA2222222222EXAMPLE", "Arn": "arn:aws:iam::123456789012:user/backup/backup-user", "CreateDate": "2019-09-17T19:30:40+00:00" }, { "Path": "/", "UserName": "cli-user", "UserId": "AIDA3333333333EXAMPLE", "Arn": "arn:aws:iam::123456789012:user/cli-user", "CreateDate": "2019-09-17T19:11:39+00:00" } ] }
Textausgabeformat
Das text
Format organisiert die AWS CLI Ausgabe in tabulatorgetrennten Zeilen. Es funktioniert gut mit herkömmlichen Unix-Textwerkzeugen wiegrep
, sed
awk
, und und der Textverarbeitung von. PowerShell
Das text
-Ausgabeformat entspricht der unten gezeigten grundlegenden Struktur. Die Spalten sind alphabetisch nach den entsprechenden Schlüsselnamen des zugrunde liegenden JSON Objekts sortiert.
IDENTIFIER sorted-column1 sorted-column2 IDENTIFIER2 sorted-column1 sorted-column2
Es folgt ein Beispiel für die text
-Ausgabe. Jedes Feld ist durch einen Tabulator getrennt von den anderen, mit einem zusätzlichen Tabulator, wenn ein leeres Feld vorhanden ist.
$
aws iam list-users --output text
USERS arn:aws:iam::123456789012:user/Admin 2014-10-16T16:03:09+00:00 2016-06-03T18:37:29+00:00 / AIDA1111111111EXAMPLE Admin USERS arn:aws:iam::123456789012:user/backup/backup-user 2019-09-17T19:30:40+00:00 /backup/ AIDA2222222222EXAMPLE backup-user USERS arn:aws:iam::123456789012:user/cli-user 2019-09-17T19:11:39+00:00 / AIDA3333333333EXAMPLE cli-user
Die vierte Spalte ist das PasswordLastUsed
-Feld und ist für die letzten beiden Einträge leer, da sich diese Benutzer nie bei der AWS Management Console anmelden.
Wichtig
Wir empfehlen dringend, dass Sie, wenn Sie eine text
-Ausgabe angeben, immer die Option --query verwenden, um ein konsistentes Verhalten zu gewährleisten.
Das liegt daran, dass das Textformat die Ausgabespalten alphabetisch nach dem Schlüsselnamen des zugrunde liegenden JSON Objekts sortiert, das vom AWS Dienst zurückgegeben wird, und ähnliche Ressourcen möglicherweise nicht dieselben Schlüsselnamen haben. Beispielsweise kann die JSON Darstellung einer Linux-basierten EC2 Amazon-Instance Elemente enthalten, die in der JSON Darstellung einer Windows-basierten Instance nicht vorhanden sind, oder umgekehrt. In zukünftigen Aktualisierungen können auch Schlüssel-Wert-Elemente zu Ressourcen hinzugefügt oder aus diesen entfernt werden, wodurch sich die Spaltensortierung ändert. In diesem Fall erweitert --query
die Funktionalität der text
-Ausgabe, um eine vollständige Kontrolle über das Ausgabeformat zu ermöglichen.
Im folgenden Beispiel gibt der Befehl an, welche Elemente angezeigt werden sollen. definiert die Reihenfolge der Spalten über die Listennotation [key1, key2, ...]
. Auf diese Weise können Sie sich vollständig darauf verlassen, dass immer die richtigen Schlüsselwerte in der erwarteten Spalte zu sehen sind. Beachten Sie schließlich, dass die AWS CLI Ausgaben None
als Wert für Schlüssel ausgegeben werden, die nicht existieren.
$
aws iam list-users --output text --query 'Users[*].[UserName,Arn,CreateDate,PasswordLastUsed,UserId]'
Admin arn:aws:iam::123456789012:user/Admin 2014-10-16T16:03:09+00:00 2016-06-03T18:37:29+00:00 AIDA1111111111EXAMPLE backup-user arn:aws:iam::123456789012:user/backup-user 2019-09-17T19:30:40+00:00 None AIDA2222222222EXAMPLE cli-user arn:aws:iam::123456789012:user/cli-backup 2019-09-17T19:11:39+00:00 None AIDA3333333333EXAMPLE
Das folgende Beispiel zeigt, wie Sie grep
und awk
mit der text
-Ausgabe des Befehls aws ec2
describe-instances
verwenden können. Durch den ersten Befehl erhalten Sie die Availability Zone, den aktuellen Status und die Instance-ID der einzelnen Instances als text
-Ausgabe angezeigt. Der zweite Befehl verarbeitet diese Ausgabe so, dass nur die Instanz IDs aller laufenden Instances in der us-west-2a
Availability Zone angezeigt wird.
$
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[Placement.AvailabilityZone, State.Name, InstanceId]' --output text
us-west-2a running i-4b41a37c us-west-2a stopped i-a071c394 us-west-2b stopped i-97a217a0 us-west-2a running i-3045b007 us-west-2a running i-6fc67758
$
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[Placement.AvailabilityZone, State.Name, InstanceId]' --output text | grep us-west-2a | grep running | awk '{print $3}'
i-4b41a37c i-3045b007 i-6fc67758
Das folgende Beispiel geht noch einen Schritt weiter und zeigt nicht nur, wie Sie die Ausgabe filtern, sondern auch, wie Sie die Ausgabe verwenden, um sich ändernde Instance-Typen für angehaltene Instances zu automatisieren.
$
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[State.Name, InstanceId]' --output text |
>
grep stopped |
>
awk '{print $2}' |
>
while read line;
>
do aws ec2 modify-instance-attribute --instance-id $line --instance-type '{"Value": "m1.medium"}';
>
done
Die text
Ausgabe kann auch nützlich sein in PowerShell. Da die Spalten in der text
Ausgabe durch Tabulatoren getrennt sind, können Sie die Ausgabe mithilfe des PowerShell Trennzeichens `t
problemlos in ein Array aufteilen. Mit dem folgenden Befehl bekommen Sie den Wert der dritten Spalte (InstanceId
) angezeigt, wenn die erste Spalte (AvailabilityZone
) mit der Zeichenfolge us-west-2a
übereinstimmt.
PS C:\>
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[Placement.AvailabilityZone, State.Name, InstanceId]' --output text | %{if ($_.split("`t")[0] -match "us-west-2a") { $_.split("`t")[2]; } }
-4b41a37c i-a071c394 i-3045b007 i-6fc67758
Beachten Sie, dass das vorherige Beispiel zwar zeigt, wie der --query
Parameter verwendet wird, um die zugrunde liegenden JSON Objekte zu analysieren und die gewünschte Spalte herauszuziehen, aber es PowerShell hat seine eigene Fähigkeit, damit umzugehenJSON, wenn die plattformübergreifende Kompatibilität kein Problem darstellt. Anstatt die Ausgabe als Text zu behandeln, wie es die meisten Befehls-Shells erfordern, PowerShell können Sie das ConvertFrom-JSON
Cmdlet verwenden, um ein hierarchisch strukturiertes Objekt zu erzeugen. Sie können dann direkt von diesem Objekt aus auf das gewünschte Element zugreifen.
(aws ec2 describe-instances --output json | ConvertFrom-Json).Reservations.Instances.InstanceId
Tipp
Wenn Sie Text ausgeben und die Ausgabe mithilfe des Parameters --query
zu einem einzelnen Feld filtern, besteht die Ausgabe aus einer einzelnen Zeile mit Tabulator-getrennten Werten. Um jeden Wert auf eine separate Zeile zu bekommen, können Sie das Ausgabefeld in Klammern setzen, wie in den folgenden Beispielen gezeigt.
Tabulatorgetrennte, einzeilige Ausgabe:
$
aws iam list-groups-for-user --user-name susan --output text --query "Groups[].GroupName"
HRDepartment Developers SpreadsheetUsers LocalAdmins
Jeder Wert auf einer eigenen Zeile durch Setzen von [GroupName]
in Klammern:
$
aws iam list-groups-for-user --user-name susan --output text --query "Groups[].
[
GroupName]
"
HRDepartment Developers SpreadsheetUsers LocalAdmins
Tabellenausgabeformat
Das table
-Format produziert lesbare Darstellungen der komplexen AWS CLI
-Ausgabe in Tabellenform.
$
aws iam list-users --output table
----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ListUsers | +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ || Users || |+----------------------------------------------------+---------------------------+---------------------------+----------+-----------------------+-------------+| || Arn | CreateDate | PasswordLastUsed | Path | UserId | UserName || |+----------------------------------------------------+---------------------------+---------------------------+----------+-----------------------+-------------+| || arn:aws:iam::123456789012:user/Admin | 2014-10-16T16:03:09+00:00 | 2016-06-03T18:37:29+00:00 | / | AIDA1111111111EXAMPLE | Admin || || arn:aws:iam::123456789012:user/backup/backup-user | 2019-09-17T19:30:40+00:00 | | /backup/ | AIDA2222222222EXAMPLE | backup-user || || arn:aws:iam::123456789012:user/cli-user | 2019-09-17T19:11:39+00:00 | | / | AIDA3333333333EXAMPLE | cli-user || +---------------------------------------------------------------------------------------------------------------------------------------------------------------+
Sie können die --query
-Option mit dem table
-Format kombinieren, um eine Gruppe von Elementen zu erhalten, die vorab aus der unformatierten Ausgabe ausgewählt wurden. Beachten Sie die Ausgabeunterschiede in Wörterbuch- und Listennotation: Im ersten Beispiel werden die Spaltennamen alphabetisch sortiert und im zweiten Beispiel werden die unbenannten Spalten nach der Definition des Benutzers geordnet. Weitere Informationen zur Option --query
finden Sie unter Ausgabe filtern in AWS CLI.
$
aws ec2 describe-volumes --query 'Volumes[*].{ID:VolumeId,InstanceId:Attachments[0].InstanceId,AZ:AvailabilityZone,Size:Size}' --output table
------------------------------------------------------ | DescribeVolumes | +------------+----------------+--------------+-------+ | AZ | ID | InstanceId | Size | +------------+----------------+--------------+-------+ | us-west-2a| vol-e11a5288 | i-a071c394 | 30 | | us-west-2a| vol-2e410a47 | i-4b41a37c | 8 | +------------+----------------+--------------+-------+
$
aws ec2 describe-volumes --query 'Volumes[*].[VolumeId,Attachments[0].InstanceId,AvailabilityZone,Size]' --output table
---------------------------------------------------- | DescribeVolumes | +--------------+--------------+--------------+-----+ | vol-e11a5288| i-a071c394 | us-west-2a | 30 | | vol-2e410a47| i-4b41a37c | us-west-2a | 8 | +--------------+--------------+--------------+-----+