

# Procesadores analizadores
<a name="parser-processors"></a>

Los procesadores analizadores convierten los datos de registro sin procesar o semiestructurados en formatos estructurados. Cada canalización puede tener como máximo un procesador de análisis principal, que debe ser el primer procesador de la canalización. El analizador XML es una excepción: funciona con los campos generados por un analizador principal y puede agregar como máximo cinco instancias a una sola canalización.

**No se admite el procesamiento condicional**  
Los procesadores de análisis, excepto Grok y XML, no admiten el procesamiento condicional con el parámetro `when`. Esto incluye los analizadores de OCSF, CSV, JSON, KeyValue, VPC, Route53, RDS, WAF, Postgres y Amazon CloudFront. Para obtener más información, consulte [Sintaxis de expresiones para el procesamiento condicional](conditional-processing.md).

## Procesador de OCSF
<a name="ocsf-processor"></a>

Analiza y transforma los datos de registro de acuerdo con los estándares del Marco de esquema de ciberseguridad abierto (OCSF).

**Configuración**  
Configure el procesador de OCSF con los siguientes parámetros:

```
processor:
  - ocsf:
      version: "1.5"
      mapping_version: 1.5.0
      schema:
          microsoft_office365_management_activity:
```Parameters

`version` (obligatorio)  
Versión del esquema de OCSF que se utilizará para la transformación. Debe ser 1.5.

`mapping_version` (obligatorio)  
Versión de la asignación de OCSF para la transformación. Debe ser 1.5.0.

`schema` (obligatorio)  
Objeto de esquema que especifica el tipo de origen de datos. Los esquemas admitidos dependen del tipo de origen de la canalización: cada tipo de origen tiene su propio conjunto de esquemas de OCSF compatibles. Debe usar un esquema que coincida con el tipo de origen de la canalización.

En esta tabla se muestran las combinaciones de esquemas admitidas.


| Tipo de origen de la canalización | Esquemas admitidos | Versión | Versión de la asignación | 
| --- | --- | --- | --- | 
| cloudwatch\_logs | cloud\_trail: | 1.5 | No obligatorio | 
| cloudwatch\_logs | route53\_resolver: | 1.5 | No obligatorio | 
| cloudwatch\_logs | vpc\_flow: | 1.5 | No obligatorio | 
| cloudwatch\_logs | eks\_audit: | 1.5 | No obligatorio | 
| cloudwatch\_logs | aws\_waf: | 1.5 | No obligatorio | 
| cloudwatch\_logs | aws\_nlb: | 1.5 | No obligatorio | 
| s3 | Cualquier esquema de OCSF | Cualquiera | Cualquiera | 
| microsoft\_office365 | microsoft\_office365: | 1.5 | 1.5.0 | 
| microsoft\_entraid | microsoft\_entraid: | 1.5 | 1.5.0 | 
| microsoft\_windows\_event | microsoft\_windows\_event: | 1.5 | 1.5.0 | 
| paloaltonetworks\_nextgenerationfirewall | paloaltonetworks\_nextgenerationfirewall: | 1.5 | 1.5.0 | 
| okta\_auth0 | okta\_auth0: | 1.5 | 1.5.0 | 
| okta\_sso | okta\_sso: | 1.5 | 1.5.0 | 
| crowdstrike\_falcon | crowdstrike\_falcon: | 1.5 | 1.5.0 | 
| github\_auditlogs | github\_auditlogs: | 1.5 | 1.5.0 | 
| sentinelone\_endpointsecurity | sentinelone\_endpointsecurity: | 1.5 | 1.5.0 | 
| servicenow\_cmdb | servicenow\_cmdb: | 1.5 | 1.5.0 | 
| wiz\_cnapp | wiz\_cnapp: | 1.5 | 1.5.0 | 
| zscaler\_internetaccess | zscaler\_internetaccess: | 1.5 | 1.5.0 | 

## Procesador de CSV
<a name="csv-processor"></a>

Analiza los datos con formato CSV en campos estructurados.

**Configuración**  
Configure el procesador de CSV con los siguientes parámetros:

```
processor:
  - csv:      
      column_names: ["col1", "col2", "col3"]
      delimiter: ","
      quote_character: '"'
```Parameters

`column_names` (opcional)  
Matriz de nombres de columna para los campos analizados. Máximo de 100 columnas, cada nombre con un máximo de 128 caracteres. Si no se proporciona, el valor predeterminado es column\_1, column\_2, etc.

`delimiter` (opcional)  
Carácter utilizado para separar los campos de CSV. Debe ser un solo carácter. El valor predeterminado es coma (,).

`quote_character` (opcional)  
Carácter utilizado para citar los campos de CSV que contienen delimitadores. Debe ser un solo carácter. El valor predeterminado es comillas (").

Para utilizar el procesador sin especificar ningún parámetro adicional, utilice el siguiente comando:

```
processor:
  - csv: {}
```

## Procesador Grok
<a name="grok-processor"></a>

Analiza datos no estructurados mediante patrones de Grok. Se admite como máximo 1 Grok por canalización. Para obtener más información sobre el transformador de Grok en Registros de CloudWatch, consulte [Procesadores que puede usar](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation-Processors.html) en la *Guía del usuario de Registros de CloudWatch*.

**Configuración**  
Configure el procesador de Grok con los siguientes parámetros:

Cuando el origen de datos es un diccionario, puede usar esta configuración:

```
processor:
  - grok:      
      match:
       source_key: ["%{WORD:level} %{GREEDYDATA:msg}"]
```

Cuando el origen de datos es Registros de CloudWatch, puede usar esta configuración:

```
processor:
  - grok:      
      match:
       source_key: ["%{WORD:level} %{GREEDYDATA:msg}"]
```Parameters

`match` (obligatorio)  
Asignación de campos con patrones de Grok. Solo se permite una asignación de campos.

`match.<field>` (obligatorio)  
Matriz con un solo patrón de Grok. Máximo de 512 caracteres por patrón.

`when` (opcional)  
Expresión condicional que determina si este procesador se pone en marcha. La longitud máxima es de 256 caracteres. Consulte [Sintaxis de expresiones para el procesamiento condicional](conditional-processing.md).

**importante**  
Si el procesador Grok se utiliza como analizador (primer procesador) en una canalización y su condición `when` se evalúa como falsa, la canalización completa no se pone en marcha para ese evento de registro. Los analizadores deben ponerse en marcha para que los procesadores posteriores reciban datos estructurados.

## Procesador de VPC
<a name="vpc-processor"></a>

Analiza los datos del registro de flujo de VPC en campos estructurados.

**Configuración**  
Configure el procesador de VPC con los siguientes parámetros:

```
processor:
  - parse_vpc: {}
```

## Procesador de JSON
<a name="json-processor"></a>

Analiza los datos de JSON en campos estructurados.

**Configuración**  
Configure el procesador de JSON con los siguientes parámetros:

```
processor:
  - parse_json:
      source: "message"
      destination: "parsed_json"
```Parameters

`source` (opcional)  
Campo que contiene los datos de JSON que se van a analizar. Si se omite, se procesa todo el mensaje de registro.

`destination` (opcional)  
Campo en el que se almacenará el JSON analizado. Si se omite, los campos analizados se agregan al nivel raíz.

## Procesador de Route 53
<a name="route53-processor"></a>

Analiza los datos de registro de Route 53 Resolver en campos estructurados.

**Configuración**  
Configure el procesador de Route 53 con los siguientes parámetros:

```
processor:
  - parse_route53: {}
```

## Procesador de Amazon RDS
<a name="rds-processor"></a>

Analiza los datos de registro de Aurora de Amazon RDS en campos estructurados. El procesador `parse_rds` solo es compatible cuando el valor `data_source_name` de la canalización es `amazon_rds`. Aplica la lógica de análisis que coincide con el valor `data_source_type` de la canalización .

**Configuración**  
Configure el procesador de Amazon RDS con los siguientes parámetros:

```
processor:
  - parse_rds: {}
```

## Procesador de clave-valor
<a name="key-value-processor"></a>

Analiza los datos con formato de pares clave-valor en campos estructurados.

**Configuración**  
Configure el procesador de clave-valor con los siguientes parámetros:

```
processor:
  - key_value:
      source: "message"
      destination: "parsed_kv"
      field_delimiter: "&"
      key_value_delimiter: "="
```Parameters

`source` (opcional)  
Campo que contiene datos con el formato clave-valor. 128 caracteres como máximo.

`destination` (opcional)  
Campo de destino para los pares clave-valor analizados. 128 caracteres como máximo.

`field_delimiter` (opcional)  
Patrón para dividir pares clave-valor. 10 caracteres como máximo.

`key_value_delimiter` (opcional)  
Patrón para separar las claves de los valores. 10 caracteres como máximo.

`overwrite_if_destination_exists` (opcional)  
Si se debe sobrescribir el campo de destino existente.

`prefix` (opcional)  
Prefijo que se agregará a las claves extraídas. 128 caracteres como máximo.

`non_match_value` (opcional)  
Valor para claves sin coincidencias. 128 caracteres como máximo.

Para utilizar el procesador sin especificar ningún parámetro adicional, utilice el siguiente comando:

```
processor:
  - key_value: {}
```

## Analizador XML
<a name="xml-processor"></a>

Utilice el analizador XML para convertir al formato JSON un campo específico que contenga una cadena XML. Utilice el analizador XML cuando los eventos de registro contengan campos XML incorporados que desee consultar como datos estructurados. El analizador XML funciona con un campo con nombre que ya contiene una cadena XML. Coloque este analizador después de un analizador principal en la canalización. Puede agregar como máximo cinco analizadores `parse_xml` a una sola canalización.

**Configuración**  
Configure el analizador XML con los siguientes parámetros:

```
processor:
  - parse_json:
      source: "@message"
  - parse_xml:
      source: "body"
      destination: "parsed_xml"
```Parameters

`source` (Obligatorio)  
Especifica el campo que contiene la cadena XML que se analizará. Utilice la notación de puntos para acceder a los campos anidados. Por ejemplo, `event.body`. 128 caracteres como máximo.

`destination` (opcional)  
Especifica el campo donde se almacena la estructura XML analizada. Si omite este parámetro, los campos analizados se agregan al nivel raíz. 128 caracteres como máximo.

`when` (opcional)  
Expresión condicional que determina si se ejecuta este analizador. La longitud máxima es de 256 caracteres. Para obtener más información, consulte [Sintaxis de expresiones para el procesamiento condicional](conditional-processing.md).

**Ejemplo: salida del analizador XML**  
Dado el siguiente evento de registro JSON con un campo XML incorporado:

```
{
  "body": "<Person id=\"123\" active=\"true\"><name>John</name><age>30</age></Person>"
}
```

Con la siguiente configuración:

```
processor:
  - parse_json:
      source: "@message"
  - parse_xml:
      source: "body"
      destination: "parsed_xml"
```

El analizador XML genera la siguiente salida:

```
{
  "body": "<Person id=\"123\" active=\"true\"><name>John</name><age>30</age></Person>",
  "parsed_xml": {
    "id": "123",
    "active": "true",
    "name": "John",
    "age": "30"
  }
}
```Notas de comportamiento

Profundidad de anidamiento  
El analizador XML admite una profundidad máxima de anidamiento de 25 niveles. Los elementos anidados que superen este límite generan un error.

Gestión de errores  
El XML con formato incorrecto no provoca un error en la canalización. El analizador conserva el `@message` original y establece `@pipeline.processing.status = "error"` en el evento.