AWS CLI-Skeletons und Eingabedateien - AWS Command Line Interface

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.

AWS CLI-Skeletons und Eingabedateien

Die meisten der AWS CLI-Befehle akzeptieren alle Parametereingaben aus einer Datei. Diese Vorlagen können mit der generate-cli-skeleton-Option generiert werden.

Informationen zu AWS CLI-Skeletons und Eingabedateien

Die meisten AWS Command Line Interface (AWS CLI)-Befehle unterstützen die Möglichkeit, alle Parametereingaben aus einer Datei mit den --cli-input-json-Parametern zu akzeptieren.

Dieselben Befehle stellen den --generate-cli-skeleton-Parameter zum Generieren einer Datei JSON- -Format mit allen Parametern bereit, die Sie bearbeiten und füllen können. Anschließend können Sie den Befehl mit dem relevanten Parameter --cli-input-json ausführen und auf die gefüllte Datei zeigen.

Wichtig

Mehrere AWS CLI-Befehle sind nicht direkt einzelnen AWS-API-Operationen zugeordnet, wie z. B. die aws s3-Befehle. Diese Befehle unterstützen nicht die in diesem Thema beschriebenen Parameter --generate-cli-skeleton oder --cli-input-json. Wenn Sie Fragen dazu haben, ob ein bestimmter Befehl diese Parameter unterstützt, führen Sie den folgenden Befehl aus. Ersetzen Sie dabei die Namen service und command durch die Namen, an denen Sie interessiert sind.

$ aws service command help

Die Ausgabe enthält einen Abschnitt namens Synopsis, der die Parameter zeigt, die von dem angegebenen Befehl unterstützt werden.

$ aws iam list-users help ... SYNOPSIS list-users ... [--cli-input-json] ... [--generate-cli-skeleton <value>] ...

Der Parameter --generate-cli-skeleton bewirkt, dass der Befehl nicht ausgeführt wird. Stattdessen wird eine Parametervorlage generiert und angezeigt, die Sie anpassen und bei einem späteren Befehl als Eingabe verwenden können. Die generierte Vorlage enthält alle Parameter, die der Befehl unterstützt.

Der --generate-cli-skeleton-Parameter akzeptiert einen der folgenden Werte:

  • input – Die generierte Vorlage enthält alle Eingabeparameter, die als JSON formatiert sind. Dies ist der Standardwert.

  • output – Die generierte Vorlage enthält alle Ausgabeparameter, die als JSON formatiert sind.

Da es sich bei der AWS CLI im Grunde um einen „Wrapper“ für die API des Service handelt, erwartet die Skeleton-Datei, dass Sie alle Parameter anhand des zugrunde liegenden API-Parameternamens referenzieren. Dieser unterscheidet sich wahrscheinlich vom AWS CLI-Parameternamen. Beispielsweise kann ein AWS CLI-Parameter mit dem Namen user-name dem API-Parameter des AWS-Service mit dem Namen UserName zugeordnet werden (beachten Sie hierbei die geänderte Groß- und Kleinschreibung und den fehlenden Bindestrich). Wir empfehlen, die Option --generate-cli-skeleton zu verwenden, um die Vorlage mit den „richtigen“ Parameternamen zu generieren und so Fehler zu vermeiden. Sie können auch das API-Referenzhandbuch für den Service nutzen, um die erwarteten Parameternamen anzuzeigen. Sie können alle Parameter aus der Vorlage löschen, die nicht erforderlich sind und für die Sie keinen Wert angeben möchten.

Wenn Sie beispielsweise den folgenden Befehl ausführen, wird die Parametervorlage für den Amazon-Elastic-Compute-Cloud (Amazon EC2)-Befehl run-instances generiert.

JSON

Das folgende Beispiel zeigt, wie eine in JSON formatierte Vorlage generiert wird, indem der Standardwert (input) für den --generate-cli-skeleton-Parameter verwendet wird.

$ aws ec2 run-instances --generate-cli-skeleton
{ "DryRun": true, "ImageId": "", "MinCount": 0, "MaxCount": 0, "KeyName": "", "SecurityGroups": [ "" ], "SecurityGroupIds": [ "" ], "UserData": "", "InstanceType": "", "Placement": { "AvailabilityZone": "", "GroupName": "", "Tenancy": "" }, "KernelId": "", "RamdiskId": "", "BlockDeviceMappings": [ { "VirtualName": "", "DeviceName": "", "Ebs": { "SnapshotId": "", "VolumeSize": 0, "DeleteOnTermination": true, "VolumeType": "", "Iops": 0, "Encrypted": true }, "NoDevice": "" } ], "Monitoring": { "Enabled": true }, "SubnetId": "", "DisableApiTermination": true, "InstanceInitiatedShutdownBehavior": "", "PrivateIpAddress": "", "ClientToken": "", "AdditionalInfo": "", "NetworkInterfaces": [ { "NetworkInterfaceId": "", "DeviceIndex": 0, "SubnetId": "", "Description": "", "PrivateIpAddress": "", "Groups": [ "" ], "DeleteOnTermination": true, "PrivateIpAddresses": [ { "PrivateIpAddress": "", "Primary": true } ], "SecondaryPrivateIpAddressCount": 0, "AssociatePublicIpAddress": true } ], "IamInstanceProfile": { "Arn": "", "Name": "" }, "EbsOptimized": true }

Generieren eines Befehls–Skeletons

So generieren und verwenden Sie eine Parameter-Skeleton-Datei
  1. Führen Sie den Befehl mit dem --generate-cli-skeleton-Parameter aus, um JSON zu erzeugen, und leiten Sie die Ausgabe an eine Datei, um sie zu speichern.

    JSON
    $ aws ec2 run-instances --generate-cli-skeleton input > ec2runinst.json
  2. Öffnen Sie die Parameter-Skeleton-Datei in Ihrem Texteditor und entfernen Sie alle Parameter, die Sie nicht benötigen. Beispielsweise können Sie die Vorlage auf Folgendes beschränken. Stellen Sie sicher, dass die Datei noch immer das gültige JSON-Format hat, nachdem Sie die Elemente entfernt haben, die Sie nicht benötigen.

    JSON
    { "DryRun": true, "ImageId": "", "KeyName": "", "SecurityGroups": [ "" ], "InstanceType": "", "Monitoring": { "Enabled": true } }

    In diesem Beispiel lassen wir den DryRun-Parameter auf true eingestellt, um die Amazon-EC2-DryRun-Funktion zu verwenden. Mit dieser Funktion können Sie den Befehl sicher testen, ohne tatsächlich Ressourcen zu erstellen oder zu ändern.

  3. Füllen Sie den Rest mit Werten auf, die sich für Ihr Szenario eignen. In diesem Beispiel stellen wir den Instance-Typ, den Schlüsselnamen, die Sicherheitsgruppe und die ID des zu verwendenden Amazon Machine Image (AMI) bereit. In diesem Beispiel wird davon ausgegangen, dass die standardmäßige AWS-Region verwendet wird. Das AMI ami-dfc39aef ist ein 64-Bit-Amazon-Linux-Image, das in der Region us-west-2 gehostet ist. Wenn Sie eine andere Region verwenden, müssen Sie die richtige AMI-ID finden.

    JSON
    { "DryRun": true, "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }
  4. Führen Sie den Befehl mit den abgeschlossenen Parametern aus, indem Sie die fertige Vorlagendatei mit dem --cli-input-json-Präfix an den Parameter cli-input-yaml übergeben. Die AWS CLI interpretiert den Pfad relativ zum aktuellen Arbeitsverzeichnis, sodass im folgenden Beispiel, in dem nur der Dateiname ohne Pfad angezeigt wird, direkt im aktuellen Arbeitsverzeichnis nach der Datei gesucht wird.

    JSON
    $ aws ec2 run-instances --cli-input-json file://ec2runinst.json
    A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.

    Die Probelauf-Fehlermeldung gibt an, dass der JSON-Code korrekt formatiert wird und die Parameterwerte gültig sind. Wenn andere Probleme in der Ausgabe gemeldet werden, beheben Sie sie und wiederholen Sie den vorherigen Schritt, bis die Meldung „Request would have succeeded“ angezeigt wird.

  5. Jetzt können Sie den Parameter DryRun auf false setzen, um den Probelauf zu deaktivieren.

    JSON
    { "DryRun": false, "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }
  6. Führen Sie den Befehl aus. run-instances startet eine Amazon-EC2-Instance und zeigt die Details an, die durch den erfolgreichen Start generiert wurden. Das Format der Ausgabe wird vom --output-Parameter unabhängig vom Format Ihrer Eingabeparametervorlage gesteuert.

    JSON
    $ aws ec2 run-instances --cli-input-json file://ec2runinst.json --output json
    { "OwnerId": "123456789012", "ReservationId": "r-d94a2b1", "Groups": [], "Instances": [ ...