Cargar parámetros de un archivo en el AWS CLI - AWS Command Line Interface

Esta documentación es AWS CLI únicamente para la versión 1 de la versión. Para ver la documentación relacionada con la versión 2 de AWS CLI, consulte la Guía del usuario de la versión 2.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Cargar parámetros de un archivo en el AWS CLI

Algunos parámetros utilizan los nombres de los archivos como argumentos, a partir de los cuales se AWS CLI cargan 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 AWS CLI puedan 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 el texto como UTF -16, lo que entra en conflicto con la codificación UTF -8 que utilizan los JSON archivos y muchos sistemas Linux. Le recomendamos que lo utilice -Encoding ascii junto con sus PowerShell Out-File comandos para asegurarse de que AWS CLI puede leer el archivo resultante.

Cómo cargar parámetros de un archivo

A veces es conveniente cargar el valor de un parámetro desde un archivo en lugar de intentar escribirlo todo como un valor de parámetro de la línea de comandos, como cuando el parámetro es una JSON cadena compleja. Para especificar un archivo que contenga el valor, especifique un archivo con URL 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.

  • URLProporciona la ruta al archivo que contiene el contenido real del parámetro.

  • Cuando se utilizan archivos con espacios o caracteres especiales, siguiendo las normas de escape y entrecomillado para el terminal.

nota

Este comportamiento se desactiva automáticamente para los parámetros que ya esperan unaURL, como el parámetro que identifica una AWS CloudFormation plantillaURL. También puede deshabilitar este comportamiento deshabilitando el cli_follow_urlparamajuste en el archivo de AWS CLI configuración.

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

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"

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\UserName\.

Debe seguir evitando JSON los documentos que están incrustados como el valor de otro JSON documento.

$ 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: parámetro --user-data.

  • aws s3api put-object: parámetro --sse-customer-key.

  • aws kms decrypt: parámetro --ciphertext-blob.

El siguiente ejemplo genera una AES clave binaria de 256 bits mediante una herramienta de línea de comandos de Linux y, a continuación, se la proporciona a Amazon S3 para cifrar un archivo cargado en el 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 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\"" }

Archivos remotos

AWS CLI También admite la carga de parámetros desde un archivo alojado en Internet con una o. http:// https:// URL 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://amzn-s3-demo-bucket.s3.amazonaws.com/filename.json

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

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

Para ver otro ejemplo que hace referencia a un archivo que contiene parámetros JSON con formato, consulte. Adjuntar una política IAM gestionada a un usuario