Caricamento di un parametro da un file nella AWS CLI - AWS Command Line Interface

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à.

Caricamento di un parametro da un file nella AWS CLI

Alcuni parametri si aspettano nomi di file come argomenti, grazie ai quali l'AWS CLI carica i dati. Altri parametri consentono di specificare il valore del parametro come testo digitato sulla riga di comando o letto da un file. Se un file è obbligatorio o facoltativo, è necessario codificare correttamente il file in modo che l'AWS CLI possa comprenderlo. La codifica del file deve corrispondere alle impostazioni locali predefinite del sistema di lettura. È possibile determinarle usando il metodo Python locale.getpreferredencoding().

Questo metodo serve per caricare un file per un singolo parametro. Per informazioni sul caricamento di più parametri con un singolo file, consultaSkeleton e file di input della AWS CLI nella AWS CLI.

Nota

Per impostazione predefinita, Windows PowerShell restituisce il testo in formato UTF-16, che è in conflitto con la codifica UTF-8 utilizzata dai file JSON e da molti sistemi Linux. Ti consigliamo di utilizzare -Encoding ascii con i comandi PowerShell Out-File per essere sicuro che il file risultante possa essere letto dall'AWS CLI.

Come caricare un parametro da un file

In alcuni casi, ad esempio quando il parametro è una stringa JSON complessa, è utile caricare il valore di un parametro da un file anziché provare a digitarlo come valore di parametro della riga di comando. Per specificare un file che contiene il valore, specifica un URL di file nel formato seguente:

file://complete/path/to/file
  • I primi due caratteri di barra" /" fanno parte della specifica. Se il percorso richiesto inizia con "/", il risultato conterrà tre caratteri di barra: file:///folder/file.

  • L'URL fornisce il percorso del file con il contenuto del parametro effettivo.

  • Quando utilizzi dei file con spazi o caratteri speciali, segui le regole di escape e di utilizzo delle virgolette del tuo terminale.

I percorsi di file specificati nei seguenti esempi vengono interpretati come relativi alla directory di lavoro corrente.

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"

L'opzione del prefisso file:// supporta le espansioni in stile Unix, tra cui "~/", "./" e "../". In Windows l'espressione "~/" si espande alla directory utente, archiviata nella variabile di ambiente %USERPROFILE%. Ad esempio, in Windows 10 in genere è presente una directory utente in %USERPROFILE%.

Nei documenti JSON incorporati come valore di un altro documento JSON deve essere comunque inserito il carattere di escape.

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

File binari

Per i comandi che richiedono dati binari come parametro, è necessario specificare che i dati sono contenuto binario mediante il prefisso fileb://. I comandi che accettano i dati binari includono:

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

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

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

Nell’esempio seguente viene generata una chiave AES binaria da 256 bit mediante uno strumento a riga di comando Linux che vien poi fornita ad Amazon S3 per crittografare un file caricato sul lato server.

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

Per un altro esempio che fa riferimento a un file contenente parametri in formato JSON più complessi, consulta Collegamento di una policy IAM gestita a un utente .

Caricamento di un file come valore di sintassi abbreviata

Quando si utilizza una sintassi abbreviata in cui un valore è grande o complesso, è spesso più semplice caricarlo in un file come valore. Per caricare un file come valore di sintassi abbreviata, la formattazione cambierà leggermente. Invece di key=value, utilizzerai l’operatore @= al posto dell’operatore =. @= significa per la AWS CLI che il valore deve essere letto come un percorso di file e non come una stringa. L’esempio seguente mostra una coppia chiave-valore che carica un file per il relativo valore.

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

L’esempio seguente mostra il caricamento di un file di certificato per il comando aws rolesanywhere create-trust-anchor.

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

Per ulteriori informazioni sulla sintassi abbreviata, consulta Utilizzo della sintassi abbreviata in AWS CLI.