

# Salida de error estructurado en la AWS CLI
<a name="cli-usage-error-format"></a>

Este tema describe los formatos de salida de error estructurado para la AWS Command Line Interface (AWS CLI). La CLI escribe los errores en stderr y admite los siguientes formatos:
+ **[`enhanced`](#cli-error-format-enhanced)** (predeterminado): mensaje de error con detalles adicionales que se muestran en línea. Se utiliza para la depuración legible por el usuario.
+ **[`json`](#cli-error-format-json)**: la salida se formatea como una cadena [JSON](https://json.org/) con todos los campos de error. Se usa para la automatización y el scripting.
+ **[`yaml`](#cli-error-format-yaml)**: la salida se formatea como una cadena [YAML](https://yaml.org/) con todos los campos de error. Se usa para la automatización y el scripting.
+ **[`text`](#cli-error-format-text)**: formatea los errores usando el formateador de texto. Se utiliza para el escaneo visual rápido.
+ **[`table`](#cli-error-format-table)**: formatea los errores usando el formateador de tabla. Se utiliza para el escaneo visual rápido.
+ **[`legacy`](#cli-error-format-legacy)**: formato de error original sin detalles estructurados. Se usa para la retrocompatibilidad.

## Configuración del formato de error
<a name="cli-error-format-configuring"></a>

Puede configurar el formato de error utilizando cualquiera de los siguientes métodos:

Indicador de línea de comandos  

```
$ aws {{<command>}} --cli-error-format json
```

Archivo de configuración: (`~/.aws/config`)  

```
[default]
cli_error_format = json
```

Variable de entorno  

```
$ export AWS_CLI_ERROR_FORMAT=yaml
```

## Formatos de salida de error
<a name="cli-error-output-formats"></a>

En las secciones siguientes se describe cada formato:

### Formato mejorado (predeterminado)
<a name="cli-error-format-enhanced"></a>

El formato mejorado muestra los mensajes de error con detalles adicionales en línea para valores simples. Para estructuras complejas, el formato proporciona una sugerencia para usar JSON o YAML.

**Ejemplo: Ausencia de configuración de la región**

```
aws: [ERROR]: An error occurred (NoRegion): You must specify a region. You can also configure your region by running "aws configure".
```

**Ejemplo: Función de Lambda inexistente con campos adicionales**

```
aws: [ERROR]: An error occurred (ResourceNotFoundException) when calling the GetFunction operation: Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345

Additional error details:
Type: User
```

La sección “Detalles adicionales del error” muestra solo los campos definidos en el modelo de forma de error del servicio. No se muestran los campos no modelados de la respuesta de error.

**Ejemplo: Campos de error complejos**

```
An error occurred (TransactionCanceledException) when calling the TransactWriteItems operation: Transaction cancelled, please refer cancellation reasons for specific reasons [ConditionalCheckFailed, None]

Additional error details:
CancellationReasons: <complex value>
Use "--cli-error-format json" or another error format to see the full details.
```

### Formato JSON
<a name="cli-error-format-json"></a>

El formato JSON proporciona una representación estructurada con todos los campos de error.

**Ejemplo: Ausencia de configuración de la región**

```
{
    "Code": "NoRegion",
    "Message": "You must specify a region. You can also configure your region by running \"aws configure\"."
}
```

**Ejemplo: Función de Lambda inexistente**

```
{
    "Code": "ResourceNotFoundException",
    "Message": "Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345",
    "Type": "User"
}
```

### Formato YAML
<a name="cli-error-format-yaml"></a>

El formato YAML proporciona una representación estructurada con todos los campos de error.

**Ejemplo: Ausencia de configuración de la región**

```
Code: NoRegion
Message: You must specify a region. You can also configure your region by running "aws configure".
```

**Ejemplo: Función de Lambda inexistente**

```
Code: ResourceNotFoundException
Message: "Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345"
Type: User
```

### Formato de texto
<a name="cli-error-format-text"></a>

El formato de texto utiliza el mismo formateador que la salida del comando que se ha ejecutado correctamente.

**Ejemplo: Función de Lambda inexistente**

```
ResourceNotFoundException    Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345    User
```

### Formato de tabla
<a name="cli-error-format-table"></a>

El formato de tabla utiliza el mismo formateador que la salida del comando que se ha ejecutado correctamente.

**Ejemplo: Función de Lambda inexistente**

```
------------------------------------------------------------------------------------------------------------------------------------|
|                                                              error                                                                 |
+----------------------------+--------------------------------------------------------------------------------------------------+------+
|            Code            |                              Message                                                             | Type |
+----------------------------+--------------------------------------------------------------------------------------------------+------+
|  ResourceNotFoundException |  Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345   | User |
+----------------------------+--------------------------------------------------------------------------------------------------+------+
```

### Formato heredado
<a name="cli-error-format-legacy"></a>

El formato heredado proporciona el formato de error original sin detalles estructurados. Este formato no incluye el prefijo “Se produjo un error (ErrorCode):” para las excepciones de la CLI.

**Ejemplo: Ausencia de configuración de la región**

```
aws: [ERROR]: You must specify a region. You can also configure your region by running "aws configure".
```

**Ejemplo: Función de Lambda inexistente**

```
An error occurred (ResourceNotFoundException) when calling the GetFunction operation: Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345
```

**nota**  
Los errores incluyen ahora sistemáticamente el prefijo `aws: [ERROR]:` para las excepciones de la CLI. Las versiones anteriores no siempre incluían este prefijo.  
Las siguientes excepciones siempre utilizan el formato heredado, independientemente del formato de error configurado:  
`UnknownArgumentError`: muestra la información de uso.
Interrupciones del teclado (`KeyboardInterrupt`)

## Ejemplo completo
<a name="cli-error-format-example"></a>

En el siguiente ejemplo se muestra un comando con formato de error JSON:

```
$ aws lambda get-function \
    --function-name nonexistent-function-12345 \
    --cli-error-format json
```

Salida (stderr):

```
{
    "Code": "ResourceNotFoundException",
    "Message": "Function not found: arn:aws:lambda:us-west-2:123456789012:function:nonexistent-function-12345",
    "Type": "User"
}
```

El campo `Type` es un miembro de error modelado definido en la forma de error del servicio Lambda. Solo se incluyen en la salida estructurada de errores los campos definidos en el modelo de errores del servicio.