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.
Argomenti
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.
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 --attributesfile://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-dataaws ec2 run-instances:. -
Parametro
--sse-customer-keyaws s3api put-object:. -
Parametro
--ciphertext-blobaws 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.key32+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.
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.