Carga de parámetros de la AWS CLI desde un archivo - AWS Command Line Interface

Python 2.7, 3.4 y 3.5 están obsoletas para la versión 1 de AWS CLI. Para obtener más información, consulte la sección de la versión 1 de AWS CLI de Acerca de las versiones de AWS CLI.

Carga de parámetros de la AWS CLI desde un archivo

Algunos parámetros esperan nombres de archivo como argumentos, desde los que la AWS CLI carga los datos. Otros parámetros le permiten especificar el valor del parámetro como texto escrito en la línea de comandos o leído de un archivo. Tanto si un archivo es obligatorio como si es opcional, debe codificarlo correctamente para que la AWS CLI pueda entenderlo. La codificación del archivo debe coincidir con la configuración regional predeterminada del sistema de lectura. Esto se puede determinar utilizando el método Python locale.getpreferredencoding().

nota

De forma predeterminada, Windows PowerShell genera texto como UTF-16, lo que está en conflicto con la codificación UTF-8 utilizada por muchos sistemas Linux. Le recomendamos que utilice -Encoding ascii con los comandos Out-File de PowerShell para asegurarse de que la AWS CLI puede leer el archivo resultante.

En ocasiones, resulta conveniente cargar el valor de un parámetro desde un archivo en lugar de intentar escribirlo como un valor de parámetro de la línea de comandos, como, por ejemplo, cuando el parámetro es una cadena JSON compleja. Para especificar un archivo que contenga el valor, especifique la URL del archivo con el siguiente formato.

file://complete/path/to/file

Los dos primeros caracteres de barra inclinada "/" forman parte de la especificación. Si la ruta requerida comienza con '/', el resultado será tres caracteres de barra inclinada: file:///folder/file.

La dirección URL proporciona la ruta al archivo que incluye el contenido del parámetro real.

nota

Este comportamiento se deshabilita de forma automática en los parámetros que ya esperan una URL, como el parámetro que identifica una URL de plantilla de AWS CloudFormation.

También puede deshabilitar este comportamiento añadiendo la siguiente línea al archivo de configuración de la AWS CLI.

cli_follow_urlparam = false

Las rutas de archivo en los siguientes ejemplos se interpretan como rutas relativas al directorio de trabajo actual.

Linux o 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

Windows

// Read from a file in C:\temp C:\> aws ec2 describe-instances --filters file://C:\temp\filter.json

La opción de prefijo file:// admite ampliaciones tipo Unix, incluidas "~/", "./" y "../". En Windows, la expresión "~/" se amplía a su directorio de usuarios, guardado en la variable de entorno %USERPROFILE%. Por ejemplo, en Windows 10 normalmente tendría un directorio de usuarios en C:\Users\User Name\.

Debe añadir el carácter de escape a los documentos JSON que están integrados como valor de otro documento JSON.

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

Archivos binarios

Para los comandos que toman datos binarios como un parámetro, especifique que los datos son contenido binario utilizando el prefijo fileb://. Los comandos que aceptan datos binarios son:

  • aws ec2 run-instances--user-data Parámetro – .

  • aws s3api put-object--sse-customer-key Parámetro – .

  • aws kms decrypt--ciphertext-blob Parámetro – .

En el siguiente ejemplo, se genera una clave AES binaria de 256 bits utilizando una herramienta de línea de comandos de Linux y después se proporciona dicha clave a Amazon S3 para cifrar un archivo cargado en el lado del servidor.

$ 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 my-bucket --key test.txt --body test.txt --sse-customer-key fileb://sse.key --sse-customer-algorithm AES256 { "SSECustomerKeyMD5": "iVg8oWa8sy714+FjtesrJg==", "SSECustomerAlgorithm": "AES256", "ETag": "\"a6118e84b76cf98bf04bbe14b6045c6c\"" }

Archivos remotos

La AWS CLI también permite cargar parámetros desde un archivo ubicado en Internet con una URL http:// o https://. En el siguiente ejemplo, se hace referencia a un archivo almacenado en un bucket Amazon S3. Esto le permite obtener acceso a archivos de parámetros desde cualquier equipo, pero requiere que el contenedor sea de acceso público.

$ aws ec2 run-instances --image-id ami-12345678 --block-device-mappings http://my-bucket.s3.amazonaws.com/filename.json

En el ejemplo anterior se presupone que el archivo filename.json contiene los siguientes datos JSON.

[ { "DeviceName": "/dev/sdb", "Ebs": { "VolumeSize": 20, "DeleteOnTermination": false, "VolumeType": "standard" } } ]

Por ver otro ejemplo que haga referencia a un archivo que contenga parámetros con formato JSON, consulte Asociación de una política administrada de IAM a un usuario de IAM.