

# Especificación de valores de parámetros en la AWS CLI
<a name="cli-usage-parameters"></a>

Muchos de los parámetros que se utilizan en AWS Command Line Interface (AWS CLI) son simples valores numéricos o de cadena, como el nombre del par de claves `my-key-pair` en el siguiente ejemplo de comando `aws ec2 create-key-pair`. 

```
$ aws ec2 create-key-pair --key-name my-key-pair
```

El formato del comando puede variar entre terminales. Por ejemplo, la mayoría de los terminales distinguen entre mayúsculas y minúsculas, pero Powershell no distingue entre mayúsculas y minúsculas. Esto significa que los dos ejemplos de comandos siguientes arrojarían resultados diferentes para los terminales que distinguen entre mayúsculas y minúsculas, ya que ven `MyFile*.txt` y `myfile*.txt` como parámetros **diferentes**. 

Sin embargo, PowerShell procesaría estas solicitudes de la misma manera que ve `MyFile*.txt` y `myfile*.txt` como los **mismos** parámetros. En el siguiente ejemplo de comando se muestran estos parámetros con el comando `aws s3 cp`:

```
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "MyFile*.txt"
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "myfile*.txt"
```

Para obtener más información sobre no distinguir entre mayúsculas y minúsculas de casos en PowerShell, consulte [about\$1Case-Sensitivity](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_case-sensitivity) en la *documentación de PowerShell*.

A veces es necesario utilizar comillas o literales en las cadenas que incluyen caracteres especiales o de espacio. Las reglas en torno a este formato también pueden variar entre terminales. Para obtener más información sobre el uso de las comillas alrededor de parámetros complejos, consulte [Entrecomillado de cadenas y uso de literales en la AWS CLI](cli-usage-parameters-quoting-strings.md).

En estos temas se tratan las reglas de formato de terminal más habituales. Si tiene problemas para que su terminal reconozca los valores de los parámetros, asegúrese de revisar los temas de esta sección y también de consultar la documentación del terminal para conocer sus reglas de sintaxis específicas.

**Topics**
+ [

# Tipos de parámetros comunes en la AWS CLI
](cli-usage-parameters-types.md)
+ [

# Entrecomillado de cadenas y uso de literales en la AWS CLI
](cli-usage-parameters-quoting-strings.md)
+ [

# Carga de un parámetro de un archivo en la AWS CLI
](cli-usage-parameters-file.md)
+ [

# Esqueletos de la AWS CLI y archivos de entrada en la AWS CLI
](cli-usage-skeleton.md)
+ [

# Uso de la sintaxis abreviada en la AWS CLI
](cli-usage-shorthand.md)

# Tipos de parámetros comunes en la AWS CLI
<a name="cli-usage-parameters-types"></a>

En esta sección, se describen algunos de los tipos de parámetros comunes y el formato requerido típico. 

Si tiene problemas con el formato de un parámetro para un comando específico, compruebe la ayuda escribiendo **help** después del nombre del comando. La ayuda de cada subcomando incluye el nombre y la descripción de una opción. El tipo de parámetro de la opción se muestra entre paréntesis. Para obtener más información acerca de obtener ayuda, consulte [Acceso a la ayuda y a los recursos para la AWS CLI](cli-usage-help.md).

**Topics**
+ [

## Cadena
](#parameter-type-string)
+ [

## Marca de tiempo
](#parameter-type-timestamp)
+ [

## Enumeración
](#parameter-type-list)
+ [

## Booleano
](#parameter-type-boolean)
+ [

## Entero
](#parameter-type-integer)
+ [

## Binario/blob (objeto binario grande) y blob en streaming
](#parameter-type-blobs)
+ [

## Asignación
](#parameter-type-map)
+ [

## Documento
](#parameter-type-document)

## Cadena
<a name="parameter-type-string"></a>

Los parámetros de cadena pueden contener caracteres alfanuméricos, símbolos y espacios en blanco del conjunto de caracteres [ASCII](https://wikipedia.org/wiki/ASCII). Las cadenas que contienen espacios en blanco se deben entrecomillar. Le recomendamos que no utilice símbolos ni espacios en blanco diferentes del carácter de espacio estándar, y que observe las [reglas de entrecomillado](cli-usage-parameters-quoting-strings.md) del terminal para evitar resultados inesperados.

Algunos parámetros de cadena pueden aceptar datos binarios de un archivo. Consulte [Archivos binarios](cli-usage-parameters-file.md#cli-usage-parameters-file-binary) para ver un ejemplo. 

## Marca de tiempo
<a name="parameter-type-timestamp"></a>

Las marcas temporales tienen un formato conforme a la norma [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html). A menudo se conocen como parámetros "`DateTime`" o "`Date`". 

```
$ aws ec2 describe-spot-price-history --start-time 2014-10-13T19:00:00Z
```

Los formatos aceptados son:
+ *AAAA*-*MM*-*DD*T*hh*:*mm*:*ss.sss**TZD (UTC)*, por ejemplo, 2014-10-01T20:30:00.000Z
+ *AAAA*-*MM*-*DD*T*hh*:*mm*:*ss.sss**TZD (con compensación)*, por ejemplo, 2014-10-01T12:30:00.000-08:00
+ *AAAA*:*MM*:*DD*, por ejemplo, 2014-10-01
+ Hora Unix en segundos; por ejemplo, 1412195400. Esto es lo que a veces se denomina [fecha de inicio UNIX](https://wikipedia.org/wiki/Unix_time) y representa el número de segundos desde la medianoche del 1 de enero de 1970 UTC.

De forma predeterminada, la versión 2 de la AWS CLI convierte todos los valores DateTime ***response*** al formato ISO 8601.

Puede establecer el formato de la marca de tiempo con el ajuste de archivo `cli\$1timestamp\$1format`.

## Enumeración
<a name="parameter-type-list"></a>

Una o varias cadenas separadas por espacios. Si cualquiera de los elementos de cadena contiene un espacio, debe escribir dicho elemento entre comillas. Observe las [normas de entrecomillado](cli-usage-parameters-quoting-strings.md) del terminal para evitar resultados inesperados

```
$ aws ec2 describe-spot-price-history --instance-types m1.xlarge m1.medium
```

## Booleano
<a name="parameter-type-boolean"></a>

Marcador binario que activa o desactiva una opción. Por ejemplo, `ec2 describe-spot-price-history` tiene con un parámetro `--dry-run` booleano que, cuando se especifica, valida la consulta con el servicio sin ejecutar realmente una consulta. 

```
$ aws ec2 describe-spot-price-history --dry-run
```

El resultado indica si el comando tenía el formato correcto o no. Este comando también incluye una versión `--no-dry-run` del parámetro que puede utilizarse para indicar de forma explícita que el comando debe ejecutarse con normalidad, aunque no es necesario incluirlo, ya que este es el comportamiento predeterminado. 

## Entero
<a name="parameter-type-integer"></a>

Un número entero sin firma.

```
$ aws ec2 describe-spot-price-history --max-items 5
```

## Binario/blob (objeto binario grande) y blob en streaming
<a name="parameter-type-blobs"></a>

En la AWS CLI, puede pasar un valor binario como una cadena directamente en la línea de comandos. Existen dos tipos de blobs:
+ [Blob](#parameter-type-blob)
+ [Blob de streaming](#parameter-type-streaming-blob)

### Blob
<a name="parameter-type-blob"></a>

Para pasar un valor a un parámetro con el tipo `blob`, debe especificar una ruta a un archivo local que contenga los datos binarios mediante el prefijo `fileb://`. Los archivos a los que se hace referencia mediante el prefijo `fileb://` siempre se tratan como binarios sin codificar. La ruta especificada se interpreta como una ruta relativa al directorio de trabajo actual. Por ejemplo, el parámetro `--plaintext` para `aws kms encrypt` es un blob.

```
$ aws kms encrypt \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --plaintext fileb://ExamplePlaintextFile \
    --output text \
    --query CiphertextBlob | base64 \
    --decode > ExampleEncryptedFile
```

**nota**  
Por compatibilidad con versiones anteriores, puede utilizar el prefijo `file://`. Se utilizan dos formatos en función de la configuración de archivo `cli\$1binary\$1format` o de la opción de la línea de comandos `--cli-binary-format`:  
Predeterminado para la AWS CLI versión 2. Si el valor de la configuración es `base64`, los archivos a los que se hace referencia mediante el prefijo `file://` se tratan como texto codificado en base64. 
Predeterminado para la AWS CLI versión 1. Si el valor de la configuración es `raw-in-base64-out`, los archivos a los que se hace referencia mediante el prefijo `file://` se leen como texto y, a continuación, la AWS CLI intenta codificarlo en binario.
Para obtener más información, consulte la configuración de archivo `cli\$1binary\$1format` o la opción de la línea de comandos `--cli-binary-format`.

### Blob de streaming
<a name="parameter-type-streaming-blob"></a>

Los blobs de streaming como `aws cloudsearchdomain upload-documents` no utilizan prefijos. En cambio, los parámetros de blob de streaming se formatean mediante la ruta de archivo directa. En el siguiente ejemplo se utiliza la ruta de archivo directa `document-batch.json` para el comando `aws cloudsearchdomain upload-documents`:

```
$ aws cloudsearchdomain upload-documents \
    --endpoint-url https://doc-my-domain.us-west-1.cloudsearch.amazonaws.com \
    --content-type application/json \
    --documents document-batch.json
```

## Asignación
<a name="parameter-type-map"></a>

Un conjunto de pares de clave-valor especificado en JSON o mediante la [sintaxis abreviada](cli-usage-shorthand.md) de la CLI. En el siguiente ejemplo de JSON, se lee un elemento de una tabla de Amazon DynamoDB denominada *my-table* con un parámetro de mapa, `--key`. El parámetro especifica la clave principal denominada *id* con un valor numérico de *1* en una estructura JSON anidada.

Para conocer un uso más avanzado de JSON en una línea de comandos, considere usar un procesador JSON de línea de comandos, como`jq`, para crear cadenas JSON. Para obtener más información sobre `jq`, consulte el [repositorio jq](http://stedolan.github.io/jq/) en *GitHub*.

```
$ aws dynamodb get-item --table-name my-table --key '{"id": {"N":"1"}}'

{
    "Item": {
        "name": {
            "S": "John"
        },
        "id": {
            "N": "1"
        }
    }
}
```

## Documento
<a name="parameter-type-document"></a>

**nota**  
La [sintaxis abreviada](cli-usage-shorthand.md) no es compatible con los tipos de documento.

Los tipos de documento se utilizan para enviar datos sin necesidad de integrar JSON‎ dentro de cadenas. El tipo de documento permite a los servicios proporcionar esquemas arbitrarios para que utilice tipos de datos más flexibles. 

Esto permite enviar datos JSON sin necesidad de valores de escape. Por ejemplo, en lugar de utilizar la siguiente entrada JSON de escape:

```
{"document": "{\"key\":true}"}
```

Puede utilizar el tipo de documento que se muestra a continuación:

```
{"document": {"key": true}}
```

### Valores válidos para tipos de documentos
<a name="parameter-type-document-valid"></a>

Debido a la naturaleza flexible de los tipos de documentos, existen varios tipos de valores válidos. Entre los valores válidos se incluyen los siguientes:

**Cadena**  

```
--option '"value"'
```

**Número**  

```
--option 123
--option 123.456
```

**Booleano**  

```
--option true
```

**Nulo**  

```
--option null
```

**Matriz**  

```
--option '["value1", "value2", "value3"]'
--option '["value", 1, true, null, ["key1", 2.34], {"key2": "value2"}]'
```

**Objeto**  

```
--option '{"key": "value"}'
--option '{"key1": "value1", "key2": 123, "key3": true, "key4": null, "key5": ["value3", "value4"], "key6": {"value5": "value6"}'
```

# Entrecomillado de cadenas y uso de literales en la AWS CLI
<a name="cli-usage-parameters-quoting-strings"></a>

Hay dos maneras principales en las que se usan comillas simples y dobles en el AWS CLI.
+ [Usar comillas alrededor de cadenas que contienen espacios en blanco](#cli-usage-parameters-quoting-strings-around)
+ [Uso de comillas dentro de cadenas](#cli-usage-parameters-quoting-strings-containing)

## Usar comillas alrededor de cadenas que contienen espacios en blanco
<a name="cli-usage-parameters-quoting-strings-around"></a>

Los nombres de los parámetros y sus valores están separados por espacios en la línea de comandos. Si un valor de cadena contiene un espacio incrustado, debe rodear toda la cadena con comillas para evitar que la AWS CLI malinterprete el espacio como un divisor entre el valor y el siguiente nombre del parámetro. El tipo de comillas que utilice depende del sistema operativo en el que esté ejecutando la AWS CLI.

------
#### [ Linux and macOS ]

Uso de comillas simples `' '` 

```
$ aws ec2 create-key-pair --key-name 'my key pair'
```

Para obtener más información sobre el uso de las comillas, consulte documentación del usuario de su shell preferido.

------
#### [ PowerShell ]

**Comillas simples (recomendadas)**

Las marcas de comillas simples `' '` se llaman cadenas `verbatim`. La cadena se pasa al comando exactamente como se escribe, lo que significa que las variables de PowerShell no pasarán.

```
PS C:\> aws ec2 create-key-pair --key-name 'my key pair'
```

**Comillas dobles**

Las marcas de comillas dobles `" "` se llaman cadenas `expandable`. Las variables se pueden pasar en cadenas expandibles.

```
PS C:\> aws ec2 create-key-pair --key-name "my key pair"
```

Para obtener más información sobre el uso de las comillas, consulte [Acerca de las reglas de entrecomillado](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-7) en los *Documentos de Microsoft PowerShell*.

------
#### [ Windows command prompt ]

Uso de comillas dobles `" "` .

```
C:\> aws ec2 create-key-pair --key-name "my key pair"
```

------

Si lo desea, puede separar el nombre del parámetro del valor con un signo de igual `=` en lugar de un espacio. Normalmente, esto solo es necesario si el valor del parámetro comienza con un guion.

```
$ aws ec2 delete-key-pair --key-name=-mykey
```

## Uso de comillas dentro de cadenas
<a name="cli-usage-parameters-quoting-strings-containing"></a>

Las cadenas pueden contener comillas y el shell puede requerir comillas de cierre para que funcionen correctamente. Uno de los tipos de valor de parámetro comunes es una cadena JSON. Esto es complejo, ya que incluye espacios y comillas dobles `" "` alrededor de cada nombre de elemento y valor en la estructura JSON. El modo en que introduzca parámetros con formato JSON en la línea de comandos varía en función de su sistema operativo. 

Para conocer un uso más avanzado de JSON en la línea de comandos, considere usar un procesador JSON de línea de comandos, como`jq`, para crear cadenas JSON. Para obtener más información sobre `jq`, consulte el [repositorio jq](http://stedolan.github.io/jq/) en *GitHub*.

------
#### [ Linux and macOS ]

Para que Linux y macOS interpreten cadenas en forma literal, use comillas simples `' '` para entrecomillar la estructura de datos JSON, como en el siguiente ejemplo. No necesita cerrar las comillas dobles incrustadas en la cadena JSON, ya que se las trata de manera literal. Dado que la cadena JSON está encerrada entre comillas simples, se deberá cerrar cualquier comilla simple en la cadena. Esto generalmente se logra usando una barra diagonal inversa antes de la comilla simple `\'`.

```
$ aws ec2 run-instances \
    --image-id ami-12345678 \
    --block-device-mappings '[{"DeviceName":"/dev/sdb","Ebs":{"VolumeSize":20,"DeleteOnTermination":false,"VolumeType":"standard"}}]'
```

Para obtener más información sobre el uso de las comillas, consulte documentación del usuario de su shell preferido.

------
#### [ PowerShell ]

Utilice comillas simples `' '` o comillas dobles `" "`.

**Comillas simples (recomendadas)**

Las marcas de comillas simples `' '` se llaman cadenas `verbatim`. La cadena se pasa al comando exactamente como se escribe, lo que significa que las variables de PowerShell no pasarán.

Dado que las estructuras de datos JSON incluyen comillas dobles, sugerimos comillas **simples** `' '` para encerrarlas. Si usa comillas **simples**, no necesita cerrar las comillas **dobles** incrustadas en la cadena JSON. Sin embargo, debe cerrar cada comilla **simple** con una tilde invertido ``` dentro de la estructura JSON.

```
PS C:\> aws ec2 run-instances `
    --image-id ami-12345678 `
    --block-device-mappings '[{"DeviceName":"/dev/sdb","Ebs":{"VolumeSize":20,"DeleteOnTermination":false,"VolumeType":"standard"}}]'
```

**Comillas dobles**

Las marcas de comillas dobles `" "` se llaman cadenas `expandable`. Las variables se pueden pasar en cadenas expandibles.

Si usa comillas **dobles**, no necesita cerrar las comillas **simples** incrustadas en la cadena JSON. Sin embargo, debe cerrar cada comilla **doble** con un acento grave ``` dentro de la estructura JSON, como con el siguiente ejemplo.

```
PS C:\> aws ec2 run-instances `
    --image-id ami-12345678 `
    --block-device-mappings "[{`"DeviceName`":`"/dev/sdb`",`"Ebs`":{`"VolumeSize`":20,`"DeleteOnTermination`":false,`"VolumeType`":`"standard`"}}]"
```

Para obtener más información sobre el uso de las comillas, consulte [Acerca de las reglas de entrecomillado](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-7) en los *Documentos de Microsoft PowerShell*.

**aviso**  
Antes de que PowerShell envíe un comando a la AWS CLI, determina si su comando se interpreta usando PowerShell típico o reglas de entrecomillado de `CommandLineToArgvW`. Cuando PowerShell procesa mediante `CommandLineToArgvW`, deben escaparse los caracteres con una barra invertida `\`.  
Para obtener más información sobre `CommandLineToArgvW` en PowerShell, consulte [¿Qué pasa con el extraño tratamiento de comillas y barras invertidas por CommandLineToArgVW?](https://devblogs.microsoft.com/oldnewthing/20100917-00/?p=12833) en *Microsoft DevBlogs*, [Todos citan los argumentos de la línea de comandos de forma incorrecta](https://docs.microsoft.com/en-us/archive/blogs/twistylittlepassagesallalike/everyone-quotes-command-line-arguments-the-wrong-way) en *Microsoft Docs Blog* y[Función CommandLineToArgVW](https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw#remarks) en los *Documentos de Microsoft*.  
**Comillas simples**  
Las marcas de comillas simples `' '` se llaman cadenas `verbatim`. La cadena se pasa al comando exactamente como se escribe, lo que significa que las variables de PowerShell no pasarán. Los caracteres se escapan con una barra invertida`\`.  

```
PS C:\> aws ec2 run-instances `
    --image-id ami-12345678 `
    --block-device-mappings '[{\"DeviceName\":\"/dev/sdb\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false,\"VolumeType\":\"standard\"}}]'
```
**Comillas dobles**  
Las marcas de comillas dobles `" "` se llaman cadenas `expandable`. Las variables se pueden pasar en cadenas `expandable`. Para cadenas con comillas dobles, tiene que escapar dos veces usando *`\$1* para cada comilla en lugar de usar solo un signo de acento. La barra invertida escapa la barra invertida y, a continuación, la barra invertida se utiliza como un carácter de escape para proceso `CommandLineToArgvW`.  

```
PS C:\> aws ec2 run-instances `
    --image-id ami-12345678 `
    --block-device-mappings "[{`\"DeviceName`\":`\"/dev/sdb`\",`\"Ebs`\":{`\"VolumeSize`\":20,`\"DeleteOnTermination`\":false,`\"VolumeType`\":`\"standard`\"}}]"
```
**Blobs (recomendado)**  
Para omitir las reglas de entrecomillado de PowerShell para la entrada de datos JSON, use Blobs para pasar los datos JSON directamente a la AWS CLI. Para obtener más información acerca de Blobs, consulte o [Blob](cli-usage-parameters-types.md#parameter-type-blob).

------
#### [ Windows command prompt ]

El símbolo del sistema de Windows requiere comillas dobles `" "` para entrecomillar la estructura de datos JSON. Además, para evitar que el procesador de comandos malinterprete las comillas dobles incrustadas en el JSON, también debe cerrar (precedido por un carácter de barra invertida `\`) cada comilla doble `"` dentro de la propia estructura de datos JSON, como en el siguiente ejemplo. 

```
C:\> aws ec2 run-instances ^
    --image-id ami-12345678 ^
    --block-device-mappings "[{\"DeviceName\":\"/dev/sdb\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false,\"VolumeType\":\"standard\"}}]"
```

El único caso en el que no se utiliza el carácter de cierre es con las comillas dobles de los extremos.

------

# Carga de un parámetro de un archivo en la AWS CLI
<a name="cli-usage-parameters-file"></a>

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()`.

Este método sirve para cargar un archivo para un único parámetro. Para obtener información sobre la carga de varios parámetros con un único archivo, consulte [Esqueletos de la AWS CLI y archivos de entrada en la AWS CLI](cli-usage-skeleton.md).

**nota**  
De forma predeterminada, Windows PowerShell genera texto como UTF-16, lo que está en conflicto con la codificación UTF-8 utilizada por archivos JSON y 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. 

**Topics**
+ [

## Cómo cargar un parámetro de un archivo
](#cli-usage-parameters-file-how)
+ [

## Archivos binarios
](#cli-usage-parameters-file-binary)
+ [

## Carga de un archivo como un valor sintáctico abreviado
](#cli-usage-parameters-file-shorthand)

## Cómo cargar un parámetro de un archivo
<a name="cli-usage-parameters-file-how"></a>

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. 
+ Cuando se utilizan archivos con espacios o caracteres especiales, siga las [normas de escape y entrecomillado](cli-usage-parameters-quoting-strings.md) para el terminal. 

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 `%USERPROFILE%`.

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
<a name="cli-usage-parameters-file-binary"></a>

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

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](cli-services-iam.md#cli-services-iam-policy). 

## Carga de un archivo como un valor sintáctico abreviado
<a name="cli-usage-parameters-file-shorthand"></a>

Cuando se utiliza una sintaxis abreviada en la que un valor es grande o complejo, suele ser más fácil cargarlo en un archivo como un valor. Para cargar un archivo como un valor sintáctico abreviado, el formato cambiará ligeramente. En lugar de `key=value`, usará el operador `@=`, en lugar del operador `=`. El valor `@=` se refiere a la AWS CLI que el valor se debe leer como una ruta de archivo y no como una cadena. En el siguiente ejemplo se muestra un par clave-valor que carga un archivo por su valor.

------
#### [ Linux or macOS ]

```
--option key@=file://template.txt
```

------
#### [ Windows ]

```
--option "key1@=file://template.txt"
```

------

En el siguiente ejemplo, se muestra la carga de un archivo de certificado para el comando `aws rolesanywhere create-trust-anchor`.

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

Para obtener más información sobre la sintaxis abreviada, consulte [Uso de la sintaxis abreviada en la AWS CLI](cli-usage-shorthand.md).

# Esqueletos de la AWS CLI y archivos de entrada en la AWS CLI
<a name="cli-usage-skeleton"></a>

La mayoría de los comandos de la AWS CLI aceptan la importación de las entradas de parámetros de un archivo. Estas plantillas se pueden generar con la opción `generate-cli-skeleton` y, a continuación, se pueden importar con los parámetros `--cli-input-json` y `--cli-input-yaml`.

**Topics**
+ [

## Sobre esqueletos y archivos de ‎entrada de AWS CLI
](#cli-usage-skeleton-about)
+ [

## Generación e importación de un esqueleto de comandos
](#cli-usage-skeleton-generate)
+ [

## Combinación de archivos de entrada y parámetros de línea de comandos
](#cli-usage-skeleton-combine)

## Sobre esqueletos y archivos de ‎entrada de AWS CLI
<a name="cli-usage-skeleton-about"></a>

‎La mayoría de los comandos de AWS Command Line Interface (AWS CLI) pueden aceptar las entradas de parámetros desde un archivo con los parámetros ‎`--cli-input-json` y `--cli-input-yaml`.

Esos mismos comandos usan el parámetro `--generate-cli-skeleton` para generar un archivo en formato JSON o YAML con todos los parámetros que pueda editar y completar. ‎A continuación, puede ejecutar el comando con el parámetro `--cli-input-json` o `--cli-input-yaml` y apuntar al archivo cumplimentado.

**importante**  
Los comandos de la AWS CLI personalizados, como los [comandos `aws s3`](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/index.html) no admiten los parámetros `--generate-cli-skeleton` o `--cli-input-json` y `--cli-input-yaml` descritos en este tema. Para comprobar si un comando específico admite estos parámetros, ejecute el [comando `help`](cli-usage-help.md#cli-usage-help-command) correspondiente al comando que desee utilizar o consulte la [guía de referencia de la versión 2 de AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/index.html).

`--generate-cli-skeleton` genera y muestra una plantilla de parámetros que puede personalizar y utilizar como entrada en un comando. La plantilla generada incluye todos los parámetros que admite el comando.

El parámetro `--generate-cli-skeleton` acepta uno de los siguientes valores:
+ `input`: la plantilla generada incluye todos los parámetros de entrada formateados como JSON. Este es el valor predeterminado.
+ `yaml-input`: la plantilla generada incluye todos los parámetros de entrada formateados como YAML.
+ `output` – la plantilla generada incluye todos los parámetros de salida formateados como JSON. Actualmente, no puede solicitar los parámetros de salida en formato YAML. 

Como la AWS CLI es esencialmente un "encapsulador" de la API del servicio, el archivo de esqueleto espera que el usuario haga referencia a todos los parámetros utilizando los nombres de parámetro de la API subyacente. Es probable que este nombre sea distinto al nombre del parámetro de la AWS CLI. Por ejemplo, un parámetro de la AWS CLI llamado `user-name` podría corresponderse con un parámetro de la API de servicio de AWS llamado `UserName` (observe cómo se usan las mayúsculas y que falta un guion). Le recomendamos que utilice la opción `--generate-cli-skeleton` para generar la plantilla con los nombres de parámetros "correctos" con el fin de evitar errores. Puede hacer referencia a la Guía de referencia de la API del servicio para ver los nombres de los parámetros esperados. Puede eliminar cualquier parámetro de la plantilla que no sea necesario y para el que no desee proporcionar un valor.

Por ejemplo, si ejecuta el siguiente comando, se genera la plantilla de parámetros para el comando Amazon Elastic Compute Cloud (Amazon EC2) **run-instances**.

------
#### [ JSON ]

En el siguiente ejemplo, se muestra cómo se genera una plantilla con formato JSON utilizando el valor predeterminado (`input`) en el parámetro `--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
}
```

------
#### [ YAML ]

En el ejemplo siguiente, se muestra cómo se genera una plantilla con formato YAML utilizando el valor `yaml-input` en el parámetro `--generate-cli-skeleton`.

```
$ aws ec2 run-instances --generate-cli-skeleton yaml-input
```

```
BlockDeviceMappings:  # The block device mapping entries.
- DeviceName: ''  # The device name (for example, /dev/sdh or xvdh).
  VirtualName: '' # The virtual device name (ephemeralN).
  Ebs: # Parameters used to automatically set up Amazon EBS volumes when the instance is launched.
    DeleteOnTermination: true  # Indicates whether the EBS volume is deleted on instance termination.
    Iops: 0 # The number of I/O operations per second (IOPS) that the volume supports.
    SnapshotId: '' # The ID of the snapshot.
    VolumeSize: 0 # The size of the volume, in GiB.
    VolumeType: st1 # The volume type. Valid values are: standard, io1, gp2, sc1, st1.
    Encrypted: true # Indicates whether the encryption state of an EBS volume is changed while being restored from a backing snapshot.
    KmsKeyId: '' # Identifier (key ID, key alias, ID ARN, or alias ARN) for a customer managed KMS key under which the EBS volume is encrypted.
  NoDevice: '' # Suppresses the specified device included in the block device mapping of the AMI.
ImageId: '' # The ID of the AMI.
InstanceType: c4.4xlarge # The instance type. Valid values are: t1.micro, t2.nano, t2.micro, t2.small, t2.medium, t2.large, t2.xlarge, t2.2xlarge, t3.nano, t3.micro, t3.small, t3.medium, t3.large, t3.xlarge, t3.2xlarge, t3a.nano, t3a.micro, t3a.small, t3a.medium, t3a.large, t3a.xlarge, t3a.2xlarge, m1.small, m1.medium, m1.large, m1.xlarge, m3.medium, m3.large, m3.xlarge, m3.2xlarge, m4.large, m4.xlarge, m4.2xlarge, m4.4xlarge, m4.10xlarge, m4.16xlarge, m2.xlarge, m2.2xlarge, m2.4xlarge, cr1.8xlarge, r3.large, r3.xlarge, r3.2xlarge, r3.4xlarge, r3.8xlarge, r4.large, r4.xlarge, r4.2xlarge, r4.4xlarge, r4.8xlarge, r4.16xlarge, r5.large, r5.xlarge, r5.2xlarge, r5.4xlarge, r5.8xlarge, r5.12xlarge, r5.16xlarge, r5.24xlarge, r5.metal, r5a.large, r5a.xlarge, r5a.2xlarge, r5a.4xlarge, r5a.8xlarge, r5a.12xlarge, r5a.16xlarge, r5a.24xlarge, r5d.large, r5d.xlarge, r5d.2xlarge, r5d.4xlarge, r5d.8xlarge, r5d.12xlarge, r5d.16xlarge, r5d.24xlarge, r5d.metal, r5ad.large, r5ad.xlarge, r5ad.2xlarge, r5ad.4xlarge, r5ad.8xlarge, r5ad.12xlarge, r5ad.16xlarge, r5ad.24xlarge, x1.16xlarge, x1.32xlarge, x1e.xlarge, x1e.2xlarge, x1e.4xlarge, x1e.8xlarge, x1e.16xlarge, x1e.32xlarge, i2.xlarge, i2.2xlarge, i2.4xlarge, i2.8xlarge, i3.large, i3.xlarge, i3.2xlarge, i3.4xlarge, i3.8xlarge, i3.16xlarge, i3.metal, i3en.large, i3en.xlarge, i3en.2xlarge, i3en.3xlarge, i3en.6xlarge, i3en.12xlarge, i3en.24xlarge, i3en.metal, hi1.4xlarge, hs1.8xlarge, c1.medium, c1.xlarge, c3.large, c3.xlarge, c3.2xlarge, c3.4xlarge, c3.8xlarge, c4.large, c4.xlarge, c4.2xlarge, c4.4xlarge, c4.8xlarge, c5.large, c5.xlarge, c5.2xlarge, c5.4xlarge, c5.9xlarge, c5.12xlarge, c5.18xlarge, c5.24xlarge, c5.metal, c5d.large, c5d.xlarge, c5d.2xlarge, c5d.4xlarge, c5d.9xlarge, c5d.18xlarge, c5n.large, c5n.xlarge, c5n.2xlarge, c5n.4xlarge, c5n.9xlarge, c5n.18xlarge, cc1.4xlarge, cc2.8xlarge, g2.2xlarge, g2.8xlarge, g3.4xlarge, g3.8xlarge, g3.16xlarge, g3s.xlarge, g4dn.xlarge, g4dn.2xlarge, g4dn.4xlarge, g4dn.8xlarge, g4dn.12xlarge, g4dn.16xlarge, cg1.4xlarge, p2.xlarge, p2.8xlarge, p2.16xlarge, p3.2xlarge, p3.8xlarge, p3.16xlarge, p3dn.24xlarge, d2.xlarge, d2.2xlarge, d2.4xlarge, d2.8xlarge, f1.2xlarge, f1.4xlarge, f1.16xlarge, m5.large, m5.xlarge, m5.2xlarge, m5.4xlarge, m5.8xlarge, m5.12xlarge, m5.16xlarge, m5.24xlarge, m5.metal, m5a.large, m5a.xlarge, m5a.2xlarge, m5a.4xlarge, m5a.8xlarge, m5a.12xlarge, m5a.16xlarge, m5a.24xlarge, m5d.large, m5d.xlarge, m5d.2xlarge, m5d.4xlarge, m5d.8xlarge, m5d.12xlarge, m5d.16xlarge, m5d.24xlarge, m5d.metal, m5ad.large, m5ad.xlarge, m5ad.2xlarge, m5ad.4xlarge, m5ad.8xlarge, m5ad.12xlarge, m5ad.16xlarge, m5ad.24xlarge, h1.2xlarge, h1.4xlarge, h1.8xlarge, h1.16xlarge, z1d.large, z1d.xlarge, z1d.2xlarge, z1d.3xlarge, z1d.6xlarge, z1d.12xlarge, z1d.metal, u-6tb1.metal, u-9tb1.metal, u-12tb1.metal, u-18tb1.metal, u-24tb1.metal, a1.medium, a1.large, a1.xlarge, a1.2xlarge, a1.4xlarge, a1.metal, m5dn.large, m5dn.xlarge, m5dn.2xlarge, m5dn.4xlarge, m5dn.8xlarge, m5dn.12xlarge, m5dn.16xlarge, m5dn.24xlarge, m5n.large, m5n.xlarge, m5n.2xlarge, m5n.4xlarge, m5n.8xlarge, m5n.12xlarge, m5n.16xlarge, m5n.24xlarge, r5dn.large, r5dn.xlarge, r5dn.2xlarge, r5dn.4xlarge, r5dn.8xlarge, r5dn.12xlarge, r5dn.16xlarge, r5dn.24xlarge, r5n.large, r5n.xlarge, r5n.2xlarge, r5n.4xlarge, r5n.8xlarge, r5n.12xlarge, r5n.16xlarge, r5n.24xlarge.
Ipv6AddressCount: 0 # [EC2-VPC] The number of IPv6 addresses to associate with the primary network interface.
Ipv6Addresses: # [EC2-VPC] The IPv6 addresses from the range of the subnet to associate with the primary network interface.
- Ipv6Address: ''  # The IPv6 address.
KernelId: '' # The ID of the kernel.
KeyName: '' # The name of the key pair.
MaxCount: 0 # [REQUIRED] The maximum number of instances to launch.
MinCount: 0 # [REQUIRED] The minimum number of instances to launch.
Monitoring: # Specifies whether detailed monitoring is enabled for the instance.
  Enabled: true  # [REQUIRED] Indicates whether detailed monitoring is enabled.
Placement: # The placement for the instance.
  AvailabilityZone: ''  # The Availability Zone of the instance.
  Affinity: '' # The affinity setting for the instance on the Dedicated Host.
  GroupName: '' # The name of the placement group the instance is in.
  PartitionNumber: 0 # The number of the partition the instance is in.
  HostId: '' # The ID of the Dedicated Host on which the instance resides.
  Tenancy: dedicated # The tenancy of the instance (if the instance is running in a VPC). Valid values are: default, dedicated, host.
  SpreadDomain: '' # Reserved for future use.
RamdiskId: '' # The ID of the RAM disk to select.
SecurityGroupIds: # The IDs of the security groups.
- ''
SecurityGroups: # [default VPC] The names of the security groups.
- ''
SubnetId: '' # [EC2-VPC] The ID of the subnet to launch the instance into.
UserData: '' # The user data to make available to the instance.
AdditionalInfo: '' # Reserved.
ClientToken: '' # Unique, case-sensitive identifier you provide to ensure the idempotency of the request.
DisableApiTermination: true # If you set this parameter to true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can.
DryRun: true # Checks whether you have the required permissions for the action, without actually making the request, and provides an error response.
EbsOptimized: true # Indicates whether the instance is optimized for Amazon EBS I/O.
IamInstanceProfile: # The IAM instance profile.
  Arn: ''  # The Amazon Resource Name (ARN) of the instance profile.
  Name: '' # The name of the instance profile.
InstanceInitiatedShutdownBehavior: stop # Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown). Valid values are: stop, terminate.
NetworkInterfaces: # The network interfaces to associate with the instance.
- AssociatePublicIpAddress: true  # Indicates whether to assign a public IPv4 address to an instance you launch in a VPC.
  DeleteOnTermination: true # If set to true, the interface is deleted when the instance is terminated.
  Description: '' # The description of the network interface.
  DeviceIndex: 0 # The position of the network interface in the attachment order.
  Groups: # The IDs of the security groups for the network interface.
  - ''
  Ipv6AddressCount: 0 # A number of IPv6 addresses to assign to the network interface.
  Ipv6Addresses: # One or more IPv6 addresses to assign to the network interface.
  - Ipv6Address: ''  # The IPv6 address.
  NetworkInterfaceId: '' # The ID of the network interface.
  PrivateIpAddress: '' # The private IPv4 address of the network interface.
  PrivateIpAddresses: # One or more private IPv4 addresses to assign to the network interface.
  - Primary: true  # Indicates whether the private IPv4 address is the primary private IPv4 address.
    PrivateIpAddress: '' # The private IPv4 addresses.
  SecondaryPrivateIpAddressCount: 0 # The number of secondary private IPv4 addresses.
  SubnetId: '' # The ID of the subnet associated with the network interface.
  InterfaceType: '' # The type of network interface.
PrivateIpAddress: '' # [EC2-VPC] The primary IPv4 address.
ElasticGpuSpecification: # An elastic GPU to associate with the instance.
- Type: ''  # [REQUIRED] The type of Elastic Graphics accelerator.
ElasticInferenceAccelerators: # An elastic inference accelerator to associate with the instance.
- Type: ''  # [REQUIRED]  The type of elastic inference accelerator.
TagSpecifications: # The tags to apply to the resources during launch.
- ResourceType: network-interface  # The type of resource to tag. Valid values are: client-vpn-endpoint, customer-gateway, dedicated-host, dhcp-options, elastic-ip, fleet, fpga-image, host-reservation, image, instance, internet-gateway, launch-template, natgateway, network-acl, network-interface, reserved-instances, route-table, security-group, snapshot, spot-instances-request, subnet, traffic-mirror-filter, traffic-mirror-session, traffic-mirror-target, transit-gateway, transit-gateway-attachment, transit-gateway-route-table, volume, vpc, vpc-peering-connection, vpn-connection, vpn-gateway.
  Tags: # The tags to apply to the resource.
  - Key: ''  # The key of the tag.
    Value: '' # The value of the tag.
LaunchTemplate: # The launch template to use to launch the instances.
  LaunchTemplateId: ''  # The ID of the launch template.
  LaunchTemplateName: '' # The name of the launch template.
  Version: '' # The version number of the launch template.
InstanceMarketOptions: # The market (purchasing) option for the instances.
  MarketType: spot  # The market type. Valid values are: spot.
  SpotOptions: # The options for Spot Instances.
    MaxPrice: ''  # The maximum hourly price you're willing to pay for the Spot Instances.
    SpotInstanceType: one-time # The Spot Instance request type. Valid values are: one-time, persistent.
    BlockDurationMinutes: 0 # The required duration for the Spot Instances (also known as Spot blocks), in minutes.
    ValidUntil: 1970-01-01 00:00:00 # The end date of the request.
    InstanceInterruptionBehavior: terminate # The behavior when a Spot Instance is interrupted. Valid values are: hibernate, stop, terminate.
CreditSpecification: # The credit option for CPU usage of the T2 or T3 instance.
  CpuCredits: ''  # [REQUIRED] The credit option for CPU usage of a T2 or T3 instance.
CpuOptions: # The CPU options for the instance.
  CoreCount: 0  # The number of CPU cores for the instance.
  ThreadsPerCore: 0 # The number of threads per CPU core.
CapacityReservationSpecification: # Information about the Capacity Reservation targeting option.
  CapacityReservationPreference: none  # Indicates the instance's Capacity Reservation preferences. Valid values are: open, none.
  CapacityReservationTarget: # Information about the target Capacity Reservation.
    CapacityReservationId: ''  # The ID of the Capacity Reservation.
HibernationOptions: # Indicates whether an instance is enabled for hibernation.
  Configured: true  # If you set this parameter to true, your instance is enabled for hibernation.
LicenseSpecifications: # The license configurations.
- LicenseConfigurationArn: ''  # The Amazon Resource Name (ARN) of the license configuration.
```

------

## Generación e importación de un esqueleto de comandos
<a name="cli-usage-skeleton-generate"></a>

**Para generar y utilizar un archivo de esqueleto de parámetros**

1. ‎Ejecute el comando con el pa‎rámetro `--generate-cli-skeleton` para producir la salida en formato JSON o YAML y dirigirla a un archivo para guardarla.

------
#### [ JSON ]

   ```
   $ aws ec2 run-instances --generate-cli-skeleton input > ec2runinst.json
   ```

------
#### [ YAML ]

   ```
   $ aws ec2 run-instances --generate-cli-skeleton yaml-input > ec2runinst.yaml
   ```

------

1. Abra el archivo de esqueleto de parámetros en el editor de texto y quite todos los parámetros que no necesite. Por ejemplo, puede reducir la plantilla hasta dejarla tal y como se muestra a continuación. Confirme que el código JSON‎ o YAML del archivo sigue siendo válido después de eliminar los elementos que no necesita.

------
#### [ JSON ]

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

------
#### [ YAML ]

   ```
   DryRun: true
   ImageId: ''
   KeyName: ''
   SecurityGroups:
   - ''
   InstanceType:
   Monitoring: 
     Enabled: true
   ```

------

   En este ejemplo, dejamos el parámetro `DryRun` establecido en `true` para utilizar la característica “dry run” (simulacro) de Amazon EC2. Esta característica le permite probar el comando de forma segura sin crear ni modificar ningún recurso. 

1. Rellene los valores restantes con valores adecuados para su escenario. En este ejemplo, proporcionamos el tipo de instancia, el nombre de la clave, el grupo de seguridad y el identificador de Amazon Machine Image (AMI) que vamos a utilizar. En este ejemplo, se asume la Región de AWS predeterminada. La AMI `ami-dfc39aef` es una imagen de Amazon Linux de 64 bits alojada en la región `us-west-2`. Si utiliza una región diferente, debe [encontrar el ID apropiado de la AMI que desea utilizar](https://aws.amazon.com/amazon-linux-ami/).

------
#### [ JSON ]

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

------
#### [ YAML ]

   ```
   DryRun: true
   ImageId: 'ami-dfc39aef'
   KeyName: 'mykey'
   SecurityGroups:
   - 'my-sg'
   InstanceType: 't2.micro'
   Monitoring: 
     Enabled: true
   ```

------

1. Ejecute el comando con los parámetros completados pasando el archivo de plantilla relleno ya sea al parámetro `--cli-input-json` o --`cli-input-yaml` al utilizar ‎el prefijo `file://`. La AWS CLI interpreta la ruta como relativa al directorio de trabajo actual. En el siguiente ejemplo, la AWS CLI busca el archivo en el directorio de trabajo actual.

------
#### [ 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.
   ```

------
#### [ YAML ]

   ```
   $ aws ec2 run-instances --cli-input-yaml file://ec2runinst.yaml
   ```

   ```
   A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.
   ```

------

   El error del simulacro indica que el código JSON ‎o YAML está formado correctament‎e y que los valores de los parámetros son válidos. Si se informa de cualquier otro problema en la salida, corríjalo y repita el paso anterior hasta que aparezca el mensaje "`Request would have succeeded`". 

1. Ahora puede establecer el parámetro `DryRun` en `false` para deshabilitar el simulacro.

------
#### [ JSON ]

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

------
#### [ YAML ]

   ```
   DryRun: false
   ImageId: 'ami-dfc39aef'
   KeyName: 'mykey'
   SecurityGroups:
   - 'my-sg'
   InstanceType: 't2.micro'
   Monitoring: 
     Enabled: true
   ```

------

1. Ejecute el comando para que `run-instances` lance una instancia de Amazon EC2 y muestre los detalles que se generan cuando el lanzamiento se realiza correctamente. El parámetro `--output` controla el formato de salida, independientemente del formato de la plantilla de parámetros de entrada.

------
#### [ JSON ]

   ```
   $ aws ec2 run-instances --cli-input-json file://ec2runinst.json --output json
   ```

   ```
   {
       "OwnerId": "123456789012",
       "ReservationId": "r-d94a2b1",
       "Groups": [],
       "Instances": [
   ...
   ```

------
#### [ YAML ]

   ```
   $ aws ec2 run-instances --cli-input-yaml file://ec2runinst.yaml --output yaml
   ```

   ```
   OwnerId: '123456789012'
   ReservationId: 'r-d94a2b1',
   Groups":
   - ''
   Instances:
   ...
   ```

------

## Combinación de archivos de entrada y parámetros de línea de comandos
<a name="cli-usage-skeleton-combine"></a>

Se puede usar un archivo de entrada para todos los parámetros o se puede combinar con los parámetros especificados en la AWS CLI. Puede utilizar esta característica para los ajustes que reutiliza con frecuencia en un archivo de entrada y, al mismo tiempo, conservar los ajustes individuales en el propio comando.

En los siguientes ejemplos de `aws ec2 run-instances`, se combinan el uso de un archivo de entrada y parámetros. Proporcionamos el tipo de instancia, el nombre de la clave, el grupo de seguridad y el identificador de la imagen de máquina de Amazon (AMI) que se va a utilizar y se asume la Región de AWS predeterminada. La AMI `ami-dfc39aef` es una imagen de Amazon Linux de 64 bits alojada en la región `us-west-2`. Si utiliza una región diferente, debe [encontrar el ID apropiado de la AMI que desea utilizar](https://aws.amazon.com/amazon-linux-ami/).

------
#### [ JSON ]

Contenido del archivo JSON:

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

------
#### [ YAML ]

Contenido del archivo YAML:

```
ImageId: 'ami-dfc39aef'
KeyName: 'mykey'
SecurityGroups:
- 'my-sg'
InstanceType: 't2.micro'
Monitoring: 
  Enabled: true
```

------

En el siguiente ejemplo, se utiliza el archivo de entrada en combinación con el parámetro `--dry-run` para realizar una actualización de prueba del comando para confirmar si tiene los permisos necesarios y si ha rellenado el archivo con valores válidos.

------
#### [ 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.
```

------
#### [ YAML ]

```
$ aws ec2 run-instances --cli-input-yaml file://ec2runinst.yaml --dry-run
```

```
A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.
```

------

A continuación, en el siguiente ejemplo se utiliza el mismo archivo de entrada, pero con el parámetro `--no-dry-run` para ejecutar el comando en su totalidad.

------
#### [ JSON ]

```
$ aws ec2 run-instances --cli-input-json file://ec2runinst.json --no-dry-run --output json
```

```
{
    "OwnerId": "123456789012",
    "ReservationId": "r-d94a2b1",
    "Groups": [],
    "Instances": [
...
```

------
#### [ YAML ]

```
$ aws ec2 run-instances --cli-input-yaml file://ec2runinst.yaml --no-dry-run --output yaml
```

```
OwnerId: '123456789012'
ReservationId: 'r-d94a2b1',
Groups":
- ''
Instances:
...
```

------

# Uso de la sintaxis abreviada en la AWS CLI
<a name="cli-usage-shorthand"></a>

La AWS Command Line Interface (AWS CLI) puede aceptar muchos de sus parámetros de opciones en formato JSON. Sin embargo, resultaría tedioso escribir largas listas o estructuras de JSON en la línea de comandos. Para simplificarlo, la AWS CLI también admite una sintaxis abreviada que permite una representación de los parámetros de opciones más sencilla que si se usara el formato JSON íntegro.

**Topics**
+ [

## Parámetros de estructura con pares clave-valor
](#shorthand-structure-parameters)
+ [

## Carga de un archivo como un valor sintáctico abreviado
](#shorthand-files)
+ [

## Uso de sintaxis abreviada con la AWS CLI
](#shorthand-list-parameters)

## Parámetros de estructura con pares clave-valor
<a name="shorthand-structure-parameters"></a>

La sintaxis abreviada de la AWS CLI facilita a los usuarios la introducción de parámetros planos (con estructuras no anidadas). El formato consiste en una lista de pares de clave-valor separados por comas. Asegúrese de utilizar las reglas de [comillas](cli-usage-parameters-quoting-strings.md) y caracteres de escape apropiadas para el terminal como sintaxis abreviada son cadenas.

------
#### [ Linux or macOS ]

```
--option key1=value1,key2=value2,key3=value3
```

Equivale al siguiente ejemplo con formato JSON.

```
--option '{"key1":"value1","key2":"value2","key3":"value3"}'
```

------
#### [ Windows ]

```
--option "key1=value1,key2=value2,key3=value3"
```

Equivale al siguiente ejemplo con formato JSON.

```
--option '{"key1":"value1","key2":"value2","key3":"value3"}'
```

------

No debe haber espacios en blanco entre cada uno de los pares de clave-valor separados por comas. A continuación, se muestra un ejemplo del comando de `update-table` de Amazon DynamoDB con la opción `--provisioned-throughput` especificada en modo abreviado.

```
$ aws dynamodb update-table \
    --provisioned-throughput ReadCapacityUnits=15,WriteCapacityUnits=10 \
    --table-name MyDDBTable
```

Esto equivale al siguiente ejemplo con formato JSON.

```
$ aws dynamodb update-table \
    --provisioned-throughput '{"ReadCapacityUnits":15,"WriteCapacityUnits":10}' \
    --table-name MyDDBTable
```

## Carga de un archivo como un valor sintáctico abreviado
<a name="shorthand-files"></a>

Cuando un valor es grande o complejo, suele ser más fácil cargarlo en un archivo como un valor. Para cargar un archivo como un valor sintáctico abreviado, el formato cambiará ligeramente. En lugar de `key=value`, usará el operador `@=`, en lugar del operador `=`. El valor `@=` se refiere a la AWS CLI que el valor se debe leer como una ruta de archivo y no como una cadena. Al cargar archivos en una sintaxis abreviada, [se aplican las reglas de formato de archivo de la AWS CLI](cli-usage-parameters-file.md) habituales. En el siguiente ejemplo, se muestra un par clave-valor que carga un archivo por su valor.

------
#### [ Linux or macOS ]

```
--option key@=file://template.txt
```

------
#### [ Windows ]

```
--option "key1@=file://template.txt"
```

------

En el siguiente ejemplo, se muestra la carga de un archivo de certificado para el comando `aws rolesanywhere create-trust-anchor`.

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

## Uso de sintaxis abreviada con la AWS CLI
<a name="shorthand-list-parameters"></a>

Puede especificar los parámetros de entrada en una lista de dos formas: en JSON o en sintaxis abreviada. La sintaxis abreviada de la AWS CLI ha sido diseñada para que su inserción en listas con números, cadenas o estructuras no anidadas resulte más sencilla. 

A continuación se muestra el formato básico, en el que los valores de la lista están separados por un único espacio.

```
--option value1 value2 value3
```

Esto equivale al siguiente ejemplo con formato JSON.

```
--option '[value1,value2,value3]'
```

Como ya hemos mencionado anteriormente, puede especificar una lista de números, una lista de cadenas o una lista de estructuras no anidadas en formato abreviado. A continuación, se muestra un ejemplo del comando `stop-instances` para Amazon Elastic Compute Cloud (Amazon EC2), en el que el parámetro de entrada (lista de cadenas) de la opción `--instance-ids` se especifica en forma abreviada.

```
$ aws ec2 stop-instances \
    --instance-ids i-1486157a i-1286157c i-ec3a7e87
```

Esto equivale al siguiente ejemplo con formato JSON.

```
$ aws ec2 stop-instances \
    --instance-ids '["i-1486157a","i-1286157c","i-ec3a7e87"]'
```

En el siguiente ejemplo se muestra el comando de `create-tags` de Amazon EC2, que toma una lista de estructuras no anidadas para la opción `--tags`. La opción `--resources` especifica el identificador de la instancia que debe etiquetarse.

```
$ aws ec2 create-tags \
    --resources i-1286157c \
    --tags Key=My1stTag,Value=Value1 Key=My2ndTag,Value=Value2 Key=My3rdTag,Value=Value3
```

Esto equivale al siguiente ejemplo con formato JSON. El parámetro JSON está escrito en varias líneas para facilitar su lectura.

```
$ aws ec2 create-tags \
    --resources i-1286157c \
    --tags '[
        {"Key": "My1stTag", "Value": "Value1"},
        {"Key": "My2ndTag", "Value": "Value2"},
        {"Key": "My3rdTag", "Value": "Value3"}
    ]'
```