Skeleton e file di input della AWS CLI nella AWS CLI - AWS Command Line Interface

Questa documentazione è valida AWS CLI solo per la versione 1. Per la documentazione relativa alla versione 2 di AWS CLI, consulta la Guida per l'utente della versione 2.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Skeleton e file di input della AWS CLI nella AWS CLI

La maggior parte dei comandi della AWS CLI accetta l’importazione di input di parametri da un file. Questi modelli possono essere generati utilizzando l’opzione generate-cli-skeleton e quindi importati utilizzando i parametri --cli-input-json.

Informazioni sugli skeleton e sui file di input della AWS CLI

La maggior parte dei comandi di AWS Command Line Interface (AWS CLI) consente di accettare tutti gli input di parametri da un file utilizzando i parametri --cli-input-json.

Questi stessi comandi utilizzano il parametro --generate-cli-skeleton per generare un file in formato JSON con tutti i parametri che può essere modificato e compilato. Quindi puoi eseguire il comando con il parametro --cli-input-json e scegliere il file compilato.

Importante

I comandi della AWS CLI personalizzati, come i comandi aws s3 non supportano né --generate-cli-skeleton--cli-input-json descritti in questo argomento. Per verificare se un comando specifico supporta questi parametri, esegui il comando help relativo al comando che desideri utilizzare o consulta la AWS CLI version 1 reference guide.

Il comando --generate-cli-skeleton genera e visualizza un modello di parametri che è possibile personalizzare e utilizzare come input per un comando. Il modello generato include tutti i parametri supportati dal comando.

Il parametro --generate-cli-skeleton accetta uno dei seguenti valori:

  • input - Il modello generato include tutti i parametri di input formattati come JSON. Si tratta del valore di default.

  • output - Il modello generato include tutti i parametri di output formattati come JSON..

Poiché l'AWS CLI è essenzialmente un "wrapper" per l'API del servizio, il file di skeleton prevede che tu faccia riferimento a tutti i parametri in base ai nomi del parametro API sottostanti. Questo è probabilmente diverso dal nome del parametro AWS CLI. Ad esempio, un parametro AWS CLI denominato user-name potrebbe essere mappato al parametro API del servizio AWS denominato UserName (nota le maiuscole e il trattino mancante). Ti consigliamo di utilizzare l'opzione --generate-cli-skeleton per generare il modello con i nomi di parametro "corretti" per evitare errori. Puoi fare riferimento alla Guida di riferimento delle API per il servizio per visualizzare i nomi dei parametri previsti. Puoi eliminare dal modello tutti i parametri che non sono obbligatori e per i quali non desideri fornire un valore.

Ad esempio, se esegui questo comando, viene generato il modello di parametri per il comando run-instances di Amazon Elastic Compute Cloud (Amazon EC2).

JSON

Nell'esempio seguente viene illustrato come generare un modello formattato in JSON utilizzando il valore predefinito (input) per il parametro --generate-cli-skeleton.

$ 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 }

Generazione e importazione di uno skeleton di comandi

Per generare e utilizzare un file scheletro dei parametri
  1. Eseguire il comando con il parametro --generate-cli-skeleton per produrre JSON e indirizzare l’output a un file per salvarlo.

    JSON
    $ aws ec2 run-instances --generate-cli-skeleton input > ec2runinst.json
  2. Apri il file scheletro dei parametri nell'editor di testo e rimuovi qualsiasi parametro non necessario. Ad esempio, è possibile eliminare il modello fino al seguente. Conferma che il file sia ancora nel formato JSON valido dopo aver rimosso gli elementi non necessari.

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

    In questo esempio, il parametro DryRun viene lasciato impostato su true per utilizzare la funzionalità di test EC2. Questa funzione consente di testare in modo sicuro il comando senza creare o modificare effettivamente alcuna risorsa.

  3. Compila i valori rimanenti con valori appropriati per il tuo scenario. In questo esempio, forniamo il tipo di istanza, il nome della chiave, il gruppo di sicurezza e l'identificatore dell'Amazon Machine Image (AMI) da utilizzare. Questo esempio prevede l’utilizzo della Regione AWS. L’AMI ami-dfc39aef è un’immagine a 64 bit Amazon Linux ospitata nella Regione us-west-2. Se utilizzi un'altra regione, devi trovare l'ID AMI corretto da utilizzare.

    JSON
    { "DryRun": true, "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }
  4. Eseguire il comando con i parametri completati passando il file modello completato al parametro --cli-input-json utilizzando il prefisso file://. La AWS CLI interpreta il percorso come relativo alla directory di lavoro corrente. L’esempio AWS CLI seguente cerca il file nella directory di lavoro corrente.

    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.

    L’errore in fase di test indica che la formattazione del JSON è corretta e i valori dei parametri sono validi. Se nell'output vengono segnalati altri problemi, correggerli e ripetere la fase precedente fino a quando non viene visualizzato il messaggio"Request would have succeeded".

  5. Ora puoi impostare il parametro DryRun su false per disabilitare il test.

    JSON
    { "DryRun": false, "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }
  6. Eseguire il comando, e run-instances avvia effettivamente un’istanza Amazon EC2 e visualizza tutte le informazioni generate dal lancio corretto. Il formato dell'output è controllato dal parametro --output, separatamente dal formato del modello di parametro di input.

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

Combinazione di file di input e parametri della riga di comando

Un file di input può essere utilizzato per tutti i parametri o può essere combinato con i parametri specificati in AWS CLI. È possibile utilizzare questa funzionalità per le impostazioni che si riutilizzano frequentemente in un file di input, mantenendo le impostazioni individuali nel comando stesso.

Negli esempi seguenti aws ec2 run-instances combinano l’uso di un file di input e di parametri. Forniamo il tipo di istanza, il nome della chiave, il gruppo di sicurezza, l’identificatore dell’Amazon Machine Image (AMI) da utilizzare e assegniamo la Regione AWS predefinita. L’AMI ami-dfc39aef è un’immagine a 64 bit Amazon Linux ospitata nella Regione us-west-2. Se utilizzi un'altra regione, devi trovare l'ID AMI corretto da utilizzare.

JSON

Contenuto del file JSON:

{ "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }

L’esempio seguente utilizza il file di input in combinazione con il parametro --dry-run per eseguire una prova del comando per confermare se si dispone delle autorizzazioni richieste e se il file è stato compilato con valori validi.

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

L’esempio seguente utilizza quindi lo stesso file di input, ma con il parametro --no-dry-run per eseguire il comando per intero.

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