AWS CLI Skelette und Eingabedateien in der AWS CLI - 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 Skelette und Eingabedateien in der AWS CLI

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

Über AWS CLI Skelette und Eingabedateien

Die meisten Befehle AWS Command Line Interface (AWS CLI) unterstützen die Fähigkeit, alle Parametereingaben aus einer Datei mit den --cli-input-yaml Parametern --cli-input-json s zu akzeptieren.

Dieselben Befehle stellen hilfreich den --generate-cli-skeleton Parameter bereit, mit dem Sie eine Datei mit allen Parametern generieren können, die Sie bearbeiten und ausfü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

Einige AWS CLI Befehle lassen sich nicht direkt einzelnen AWS API Vorgängen zuordnen, wie z. B. die aws s3. Diese Befehle unterstützen nicht die in diesem Thema beschriebenen Parameter --generate-cli-skeleton oder --cli-input-json. Wenn Sie nicht wissen, ob ein bestimmter Befehl diese Parameter unterstützt, führen Sie den folgenden Befehl aus und ersetzen Sie den service and command Namen mit denen, die Sie interessieren.

$ 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 formatiert sind. JSON

Da AWS CLI es sich im Grunde um einen „Wrapper“ um den Dienst handeltAPI, erwartet die Skelettdatei, dass Sie auf alle Parameter anhand ihrer zugrunde liegenden API Parameternamen verweisen. Dies unterscheidet sich wahrscheinlich vom AWS CLI Parameternamen. Beispielsweise user-name könnte ein benannter AWS CLI Parameter dem genannten API Parameter des AWS Dienstes zugeordnet sein UserName (beachten Sie die geänderte Groß-/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. Die erwarteten Parameternamen finden Sie auch im API Referenzhandbuch für den Service. 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, generiert er die Parametervorlage für den Befehl Amazon Elastic Compute Cloud (AmazonEC2)run-instances.

JSON

Das folgende Beispiel zeigt, wie Sie eine Vorlage generieren, die JSON mithilfe des Standardwerts (input) für den --generate-cli-skeleton Parameter formatiert ist.

$ 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 zu erzeugen, YAML und leiten Sie die Ausgabe in eine Datei um, 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. Vergewissern Sie sich, dass die Datei noch gültig ist JSON ob Sie die Elemente, die Sie nicht benötigen, entfernt haben.

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

    In diesem Beispiel belassen wir den DryRun Parametersatz auf, true um die Amazon EC2 Dry-Run-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 geben wir den Instance-Typ, den Schlüsselnamen, die Sicherheitsgruppe und die ID des zu verwendenden Amazon Machine Image (AMI) an. In diesem Beispiel wird von der AWS Standardregion ausgegangen. Das AMI ami-dfc39aef ist ein 64-Bit-Image von Amazon Linux, das in der us-west-2 Region gehostet wird. 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. Der AWS CLI interpretiert den Pfad als relativ zu Ihrem aktuellen Arbeitsverzeichnis. Im folgenden Beispiel, in dem nur der Dateiname ohne Pfad angezeigt wird, wird direkt im aktuellen Arbeitsverzeichnis nach der Datei gesucht.

    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.

    Der Probelauffehler weist darauf hin, dass das JSON korrekt formatiert YAML ist und dass 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 und starten Sie run-instances tatsächlich eine EC2 Amazon-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": [ ...