

# 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: Bucket de S3 inexistente con campos adicionales**

```
aws: [ERROR]: An error occurred (NoSuchBucket) when calling the GetObject operation: The specified bucket does not exist

Additional error details:
BucketName: amzn-s3-demo-bucket
```

**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: Bucket de S3 inexistente**

```
{
    "Code": "NoSuchBucket",
    "Message": "The specified bucket does not exist",
    "BucketName": "amzn-s3-demo-bucket"
}
```

### 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: Bucket de S3 inexistente**

```
Code: NoSuchBucket
Message: The specified bucket does not exist
BucketName: amzn-s3-demo-bucket
```

### 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: Bucket de S3 inexistente**

```
amzn-s3-demo-bucket  NoSuchBucket    The specified bucket does not exist
```

### 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: Bucket de S3 inexistente**

```
-------------------------------------------------------------------------------------|
|                                       error                                        |
+---------------------------+---------------+----------------------------------------+
|        BucketName         |     Code      |                Message                 |
+---------------------------+---------------+----------------------------------------+
|  amzn-s3-demo-bucket      |  NoSuchBucket |  The specified bucket does not exist   |
+---------------------------+---------------+----------------------------------------+
```

### 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: Bucket de S3 inexistente**

```
An error occurred (NoSuchBucket) when calling the GetObject operation: The specified bucket does not exist
```

**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 s3api get-object \
    --bucket amzn-s3-demo-bucket \
    --key file.txt out.txt \
    --cli-error-format json
```

Salida (stderr):

```
{
    "Code": "NoSuchBucket",
    "Message": "The specified bucket does not exist",
    "BucketName": "amzn-s3-demo-bucket"
}
```

El campo `BucketName` es un elemento de error modelado devuelto por el servicio Amazon S3.