Laden eines Parameters aus einer Datei in der AWS CLI - AWS Command Line Interface

Laden eines Parameters aus einer Datei in der AWS CLI

Einige Parameter erwarten Dateinamen als Argumente, aus denen die AWS CLI Daten lädt. Mit anderen Parametern können Sie den Parameterwert als Text angeben, der in die Befehlszeile eingegeben wird oder aus einer Datei gelesen wird. Unabhängig davon, ob eine Datei erforderlich oder optional ist, müssen Sie die Datei korrekt codieren, damit die AWS CLI sie verstehen kann. Die Kodierung der Datei muss mit dem Standardgebietsschema des Lesesystems übereinstimmen. Sie können dies mithilfe der Python-Methode locale.getpreferredencoding() bestimmen.

Diese Methode dient zum Laden einer Datei für einen einzelnen Parameter. Weitere Informationen zum Laden mehrerer Parameter mit einer einzigen Datei finden Sie unter AWS CLI-Skeletons und Eingabedateien in der AWS CLI.

Anmerkung

Standardmäßig gibt Windows PowerShell Text als UTF-16 aus. Dies steht mit der UTF-8-Kodierung in Konflikt, die von JSON-Dateien und vielen Linux-Systemen verwendet wird. Wir empfehlen, -Encoding ascii mit Ihren Out-File-PowerShell-Befehlen zu verwenden, um sicherzustellen, dass die AWS CLI die resultierende Datei lesen kann.

So laden Sie Parameter aus einer Datei

Manchmal ist es praktisch, einen Parameterwert aus einer Datei zu laden, anstatt den gesamten Wert in die Befehlszeile einzugeben, beispielsweise, wenn es sich bei dem Parameterwert um eine komplexe JSON-Zeichenfolge handelt. Um eine Datei anzugeben, die den Wert enthält, geben Sie eine Datei-URL im folgenden Format an.

file://complete/path/to/file
  • Die ersten beiden Schrägstriche "/" sind Teil der Spezifikation. Wenn der erforderliche Pfad mit einem "/" beginnt, besteht das Ergebnis aus drei Schrägstrichen: file:///folder/file.

  • Die URL gibt den Pfad zu der Datei mit dem tatsächlichen Parameterinhalt an.

  • Wenn Sie Dateien mit Leerzeichen oder Sonderzeichen verwenden, befolgen Sie die Anführungszeichen- und Escape-Regeln Ihres Terminals.

Die Dateipfade in den folgenden Beispielen werden als relativ zum aktuellen Arbeitsverzeichnis interpretiert.

Linux or macOS
// Read from a file in the current directory $ aws ec2 describe-instances --filters file://filter.json // Read from a file in /tmp $ aws ec2 describe-instances --filters file:///tmp/filter.json // Read from a file with a filename with whitespaces $ aws ec2 describe-instances --filters 'file://filter content.json'
Windows command prompt
// Read from a file in C:\temp C:\> aws ec2 describe-instances --filters file://C:\temp\filter.json // Read from a file with a filename with whitespaces C:\> aws ec2 describe-instances --filters "file://C:\temp\filter content.json"

Die Präfixoption file:// unterstützt Erweiterungen im Unix-Stil, einschließlich "~/", "./" und "../". Unter Windows erfolgt mit dem Ausdruck "~/" die Erweiterung zu Ihrem Benutzerverzeichnis, das in der Umgebungsvariablen %USERPROFILE% gespeichert ist. Beispielsweise befindet sich das Benutzerverzeichnis in Windows 10 in der Regel unter %USERPROFILE%.

JSON-Dokumente, die als Wert eines anderen JSON-Dokuments eingebettet sind, müssen weiterhin durch ein Escape-Zeichen geschützt werden.

$ aws sqs create-queue --queue-name my-queue --attributes file://attributes.json

attributes.json

{ "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-west-2:0123456789012:deadletter\", \"maxReceiveCount\":\"5\"}" }

Binärdateien

Für Befehle, die Binärdaten als Parameter annehmen, geben Sie mit dem Präfix fileb:// an, dass es sich bei den Daten um binäre Inhalte handelt. Zu den Befehlen, die Binärdaten akzeptieren, zählen:

  • aws ec2 run-instances: --user-data-Parameter.

  • aws s3api put-object: --sse-customer-key-Parameter.

  • aws kms decrypt: --ciphertext-blob-Parameter.

Das folgende Beispiel generiert mit einem Linux-Befehlszeilen-Tool einen binären 256-Bit-AES-Schlüssel und stellt diesen dann in Amazon S3 bereit, um eine hochgeladene Datei serverseitig zu verschlüsseln.

$ dd if=/dev/urandom bs=1 count=32 > sse.key 32+0 records in 32+0 records out 32 bytes (32 B) copied, 0.000164441 s, 195 kB/s $ aws s3api put-object \ --bucket amzn-s3-demo-bucket \ --key test.txt \ --body test.txt \ --sse-customer-key fileb://sse.key \ --sse-customer-algorithm AES256 { "SSECustomerKeyMD5": "iVg8oWa8sy714+FjtesrJg==", "SSECustomerAlgorithm": "AES256", "ETag": "\"a6118e84b76cf98bf04bbe14b6045c6c\"" }

Ein weiteres Beispiel mit einem Verweis auf eine Datei mit JSON-formatierten Parametern finden Sie unter Anfügen einer IAM-verwalteten Richtlinie an einen Benutzer.

Laden einer Datei als Kurznotationssyntax-Wert

Wenn die Kurznotationssyntax für einen großen oder komplexen Wert verwendet wird, ist es oft einfacher, eine Datei als Wert zu laden. Um eine Datei als Kurznotationssyntax-Wert zu laden, ändert sich die Formatierung geringfügig. Statt key=value verwenden Sie den Operator @= anstelle des Operators =. @= weist die AWS CLI darauf hin, dass der Wert als Dateipfad und nicht als Zeichenfolge gelesen werden soll. Das folgende Beispiel zeigt ein Schlüssel-Wert-Paar, das eine Datei für seinen Wert lädt.

Linux or macOS
--option key@=file://template.txt
Windows
--option "key1@=file://template.txt"

Das folgende Beispiel zeigt, wie eine Zertifikatsdatei für den Befehl aws rolesanywhere create-trust-anchor geladen wird.

$ aws rolesanywhere create-trust-anchor --name TrustAnchor \ --source sourceData={x509CertificateData@=file://root-ca.crt},sourceType="CERTIFICATE_BUNDLE" \ --enabled

Weitere Informationen zur Kurznotationssyntax finden Sie unter Verwenden der Kurznotationssyntax in der AWS CLI.