

# Personalización del comportamiento del rastreador
<a name="crawler-configuration"></a>

Al configurar un Rastreador de AWS Glue, dispone de varias opciones para definir el comportamiento de su rastreador.
+ **Rastreos progresivos**: puede configurar un rastreador para ejecutar rastreos progresivos y agregar solo particiones nuevas al esquema de la tabla. 
+ **Índices de particiones**: un rastreador crea, de manera predeterminada, índices de particiones para los destinos de Amazon S3 y Delta Lake para ofrecer una búsqueda eficiente de particiones específicas.
+ **Mejora del tiempo de rastreo mediante eventos de Amazon S3**: puede configurar un rastreador para usar eventos de Amazon S3 para identificar los cambios entre dos rastreos al enumerar todos los archivos de la subcarpeta que activó el evento en lugar de publicar el destino completo de Amazon S3 o el Catálogo de datos.
+ **Gestión de los cambios de esquema**: puede impedir que un rastreador realice cambios de esquema en el esquema existente. Puede utilizar la Consola de administración de AWS o la API de AWS Glue para configurar la manera en que su rastreador procesa determinados tipos de cambios. 
+ **Un solo esquema para varias rutas de Amazon S3**: puede configurar un rastreador para crear un solo esquema para cada ruta de S3, si los datos son compatibles.
+ **Ubicación de la tabla y niveles de partición**: la opción de rastreador de nivel de tabla proporciona la flexibilidad para indicar al rastreador dónde se encuentran las tablas y cómo desea crear las particiones. 
+ **Umbral de tabla**: puede especificar el número máximo de tablas que el rastreador tiene permitido crear mediante un umbral de tabla.
+ **Credenciales de AWS Lake Formation**: puede configurar un rastreador para que utilice credenciales de Lake Formation para acceder a un almacén de datos de Amazon S3 o a una tabla del Catálogo de datos con una ubicación de Amazon S3 subyacente en la misma Cuenta de AWS o en otra Cuenta de AWS. 

 Para obtener más información acerca de cómo usar la consola de AWS Glue para añadir un rastreador, consulte [Configuración de rastreadores](define-crawler.md). 

**Topics**
+ [Programación de rastreos progresivos para agregar nuevas particiones](incremental-crawls.md)
+ [Generación de índices de particiones](crawler-configure-partition-indexes.md)
+ [Cómo evitar que un rastreador cambie un esquema existente](crawler-schema-changes-prevent.md)
+ [Creación de un único esquema para cada ruta de inclusión de Amazon S3](crawler-grouping-policy.md)
+ [Cómo especificar la ubicación de la tabla y el nivel de partición](crawler-table-level.md)
+ [Cómo especificar el número máximo de tablas que el rastreador tiene permitido crear](crawler-maximum-number-of-tables.md)
+ [Configuración de un rastreador para que utilice credenciales de Lake Formation](crawler-lf-integ.md)
+ [Aceleración de los rastreadores mediante las notificaciones de eventos de Amazon S3](crawler-s3-event-notifications.md)

# Programación de rastreos progresivos para agregar nuevas particiones
<a name="incremental-crawls"></a>

Puede configurar rastreos progresivos de ejecuciones de Rastreador de AWS Glue para agregar solo particiones nuevas al esquema de la tabla. Cuando el rastreador se ejecuta por primera vez, realiza un rastreo completo para procesar todo el origen de datos y registrar el esquema completo y todas las particiones existentes en AWS Glue Data Catalog.

Los rastreos posteriores al rastreo completo inicial serán progresivos, en los que el rastreador identificará y agregará solo las particiones nuevas que se hayan introducido desde el rastreo anterior. Este enfoque se traduce en tiempos de rastreo más rápidos, ya que el rastreador ya no necesita procesar todo el origen de datos para cada ejecución, sino que se centra únicamente en las nuevas particiones. 

**nota**  
Los rastreos progresivos no detectan las modificaciones o eliminaciones de las particiones existentes. Esta configuración es la más adecuada para orígenes de datos con un esquema estable. Si se produce un cambio importante en el esquema una sola vez, se recomienda configurar temporalmente el rastreador para que realice un rastreo completo a fin de capturar el nuevo esquema con precisión y, a continuación, volver al modo de rastreo progresivo. 

En el siguiente diagrama se muestra que, con la configuración de rastreo gradual habilitada, el rastreador solo detectará y agregará al catálogo la carpeta recién agregada, month=March.

![\[El siguiente diagrama muestra que se han agregado archivos para el mes de marzo.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/crawlers-s3-folders-new.png)


Siga estos pasos para actualizar su rastreador y realizar rastreos graduales:

------
#### [ Consola de administración de AWS ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Elija **Rastreadores** en el **Catálogo de datos**.

1. Elija el rastreador que desea configurar para rastrear progresivamente.

1. Seleccione **Editar**.

1. Elija **Paso 2. Elija orígenes de datos y clasificadores**.

1. Elija el origen de datos que desea rastrear progresivamente. 

1. Seleccione **Editar**.

1. Seleccione **Rastrear subcarpetas nuevas únicamente** en las **Siguientes ejecuciones del rastreador**.

1. Elija **Actualizar**.

Para crear una programación para un rastreador, consulte [Programación de un rastreador](schedule-crawler.md).

------
#### [ AWS CLI ]

```
aws glue update-crawler \
 --name myCrawler \
 --recrawl-policy RecrawlBehavior=CRAWL_NEW_FOLDERS_ONLY \
 --schema-change-policy UpdateBehavior=LOG,DeleteBehavior=LOG
```

------

**Notas y restricciones**  
Cuando esta opción está activada, no puede cambiar los almacenes de datos de destino de Amazon S3 al editar el rastreador. Esta opción afecta a determinados valores de configuración del rastreador. Cuando está activada, fuerza el comportamiento de actualización y el comportamiento de eliminación del rastreador a `LOG`. Esto significa que:
+ Si descubre objetos en los que los esquemas no son compatibles, el rastreador no agregará los objetos en el Catálogo de datos y agregará este detalle como un registro en CloudWatch Logs.
+ No actualizará los objetos eliminados en el Catálogo de datos.

# Generación de índices de particiones
<a name="crawler-configure-partition-indexes"></a>

El Catálogo de datos es compatible con la creación de índices de particiones para ofrecer una búsqueda eficiente de particiones específicas. Para obtener más información, consulte [Creación de índices de partición](https://docs.aws.amazon.com/glue/latest/dg/partition-indexes.html). El rastreador de AWS Glue crea, de manera predeterminada, índices de particiones para los destinos de Amazon S3 y Delta Lake.

------
#### [ Consola de administración de AWS ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Elija **Rastreadores** en el **Catálogo de datos**.

1. Cuando se define un rastreador, la opción para **Crear índices de partición de manera automática** se habilita de manera predeterminada en la sección **Opciones avanzadas** en la página **Establecer salida y programación**.

   Para desactivar esta opción, puede anular la selección de la casilla **Crear índices de particiones de manera automática** en la consola. 

1. Complete la configuración del rastreador y elija **Crear rastreador**.

------
#### [ AWS CLI ]

 También puede desactivarla mediante la AWS CLI, establezca `CreatePartitionIndex ` en el parámetro `configuration`. El valor predeterminado es true.

```
aws glue update-crawler \
    --name myCrawler \
    --configuration '{"Version": 1.0, "CreatePartitionIndex": false }'
```

------

## Notas de uso de índices de particiones
<a name="crawler-configure-partition-indexes-usage-notes"></a>
+ Las tablas creadas por el rastreador no tienen la variable de forma `partition_filtering.enabled` predeterminada. Para obtener más información, consulte [Índices de partición y filtros de AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/glue-best-practices.html#glue-best-practices-partition-index).
+ La creación de índices de partición para particiones cifradas no es compatible.

# Cómo evitar que un rastreador cambie un esquema existente
<a name="crawler-schema-changes-prevent"></a>

 Puede impedir que Rastreador de AWS Glue realice cambios de esquema en el Catálogo de datos durante su ejecución. De forma predeterminada, los rastreadores actualizan el esquema del Catálogo de datos para que coincida con el origen de datos que se está rastreando. Sin embargo, en algunos casos, puede impedir que el rastreador modifique el esquema existente, en especial si ha transformado o limpiado los datos y no quiere que el esquema original sobrescriba los cambios.

 Siga estos pasos para configurar el rastreador de forma que no sobrescriba el esquema existente en una definición de tabla. 

------
#### [  Consola de administración de AWS  ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Elija **Rastreadores** en el **Catálogo de datos**.

1. Elija un rastreador de la lista y, luego, **Editar**.

1. Elija **Paso 4: establecer la salida y la programación**.

1. En **Opciones avanzadas**, seleccione **Agregar solo columnas nuevas** o **Ignorar el cambio y no actualizar la tabla en el Catálogo de datos**. 

1.  También puede establecer una opción de configuración para **Actualizar todas las particiones nuevas y existentes con metadatos de la tabla**. Esto establece los esquemas de particiones para que se hereden de la tabla. 

1. Elija **Actualizar**.

------
#### [ AWS CLI ]

En el siguiente ejemplo, se muestra cómo configurar un rastreador para que no cambie el esquema existente y solo agregue columnas nuevas:

```
aws glue update-crawler \
  --name myCrawler \
  --configuration '{"Version": 1.0, "CrawlerOutput": {"Tables": {"AddOrUpdateBehavior": "MergeNewColumns"}}}'
```

En el siguiente ejemplo, se muestra cómo configurar un rastreador para que no cambie el esquema existente y no agregue columnas nuevas:

```
aws glue update-crawler \
  --name myCrawler \
  --schema-change-policy UpdateBehavior=LOG \
  --configuration '{"Version": 1.0, "CrawlerOutput": {"Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }}}'
```

------
#### [ API ]

Si no desea que un esquema de tabla cambie en absoluto cuando se ejecuta un rastreador, establezca la política de cambio de esquema en `LOG`. 

Al configurar el rastreador mediante la API, establezca los siguientes parámetros:
+ Configure el campo `UpdateBehavior` de la estructura `SchemaChangePolicy` en `LOG`.
+  Establezca el campo `Configuration` con una representación de cadena del siguiente objeto JSON en la API del rastreador; por ejemplo: 

  ```
  {
     "Version": 1.0,
     "CrawlerOutput": {
        "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }
     }
  }
  ```

------

# Creación de un único esquema para cada ruta de inclusión de Amazon S3
<a name="crawler-grouping-policy"></a>

De forma predeterminada, cuando un rastreador define tablas para los datos almacenados en Amazon S3, tiene en cuenta la compatibilidad y el esquema de los datos por igual. Entre los factores de compatibilidad de datos que se tienen en cuenta se incluye si los datos poseen el mismo formato (por ejemplo, JSON), el mismo tipo de compresión (por ejemplo, GZIP), la estructura de la ruta de Amazon S3 y otros atributos de datos. La similitud de los esquemas es una medida de qué tan similares son los esquemas de objetos de Amazon S3 independientes.

Para ayudar a ilustrar esta opción, supongamos que define un rastreador con una ruta de inclusión `s3://amzn-s3-demo-bucket/table1/`. Al ejecutarse el rastreador, encuentra dos archivos JSON con las siguientes características:
+ **Archivo 1** – `S3://amzn-s3-demo-bucket/table1/year=2017/data1.json`
+ *Contenido del archivo* – `{“A”: 1, “B”: 2}`
+ *Esquema* – `A:int, B:int`
+ **Archivo 2** – `S3://amzn-s3-demo-bucket/table1/year=2018/data2.json`
+ *Contenido del archivo* – `{“C”: 3, “D”: 4}`
+ *Esquema* – `C: int, D: int`

De forma predeterminada, el rastreador crea dos tablas, llamadas `year_2017` y `year_2018`, ya que los esquemas no son lo suficientemente similares. Sin embargo, si la opción **Crear un solo esquema para cada ruta de S3** está seleccionada y los datos son compatibles, el rastreador crea una tabla. La tabla tiene el esquema `A:int,B:int,C:int,D:int` y `partitionKey` `year:string`.

------
#### [ Consola de administración de AWS ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Elija **Rastreadores** en el **Catálogo de datos**.

1. Al configurar un rastreador nuevo, en **Salida y programación**, seleccione la opción **Crear un solo esquema para cada ruta de S3** en Opciones avanzadas. 

------
#### [ AWS CLI ]

Puede configurar un rastreador en `CombineCompatibleSchemas` en una definición de tabla común cuando sea posible. Con esta opción, el rastreador sigue teniendo en cuenta la compatibilidad de los datos, pero pasa por alto la similitud de los esquemas específicos al evaluar objetos de Amazon S3 en la ruta de inclusión especificada.

Al configurar el rastreador mediante la AWS CLI, establezca la siguiente opción de configuración:

```
aws glue update-crawler \
   --name myCrawler \
   --configuration '{"Version": 1.0, "Grouping": {"TableGroupingPolicy": "CombineCompatibleSchemas" }}'
```

------
#### [ API ]

Al configurar el rastreador mediante la API, establezca la siguiente opción de configuración:

 Establezca el campo `Configuration` con una representación de cadena del siguiente objeto JSON en la API del rastreador; por ejemplo: 

```
{
   "Version": 1.0,
   "Grouping": {
      "TableGroupingPolicy": "CombineCompatibleSchemas" }
}
```

------

# Cómo especificar la ubicación de la tabla y el nivel de partición
<a name="crawler-table-level"></a>

De forma predeterminada, cuando un rastreador define tablas para los datos almacenados en Amazon S3, el rastreador intenta combinar esquemas y crear tablas de nivel superior (`year=2019`). En algunos casos, es posible que espere que el rastreador cree una tabla para la carpeta `month=Jan`, pero en su lugar el rastreador crea una partición ya que una carpeta “hermana” (`month=Mar`) se fusionó en la misma tabla.

La opción de rastreador de nivel de tabla proporciona la flexibilidad para indicar al rastreador dónde se encuentran las tablas y cómo desea crear las particiones. Cuando se especifica un **Nivel de tabla**, la tabla se crea en ese nivel absoluto a partir del bucket de Amazon S3.

![\[Agrupación de rastreadores con nivel de tabla especificado como nivel 2.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/crawler-table-level1.jpg)


 Al configurar el rastreador en la consola, puede especificar un valor para la opción del rastreador **Nivel de tabla**. El valor debe ser un entero positivo que indique la ubicación de la tabla (el nivel absoluto del conjunto de datos). El nivel de la carpeta de nivel superior es 1. Por ejemplo, para la ruta `mydataset/year/month/day/hour`, si el nivel se establece en 3, la tabla se crea en la ubicación `mydataset/year/month`. 

------
#### [ Consola de administración de AWS ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Elija **Rastreadores** en el **Catálogo de datos**.

1. Al configurar un rastreador, en **Salida y programación**, elija **Nivel de tabla** en **Opciones avanzadas**.

![\[Especificación de un nivel de tabla en la configuración del rastreador.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/crawler-configuration-console.png)


------
#### [ AWS CLI ]

Al configurar el rastreador mediante la AWS CLI, defina el parámetro `configuration` tal y como se muestra en el código de ejemplo: 

```
aws glue update-crawler \
  --name myCrawler \
  --configuration '{"Version": 1.0, "Grouping": { "TableLevelConfiguration": 2 }}'
```

------
#### [ API ]

Cuando configure el rastreador mediante la API, establezca el campo `Configuration` con una representación de cadena del siguiente objeto JSON; por ejemplo: 

```
configuration = jsonencode(
{
   "Version": 1.0,
   "Grouping": {
            TableLevelConfiguration = 2  
        }
})
```

------
#### [ CloudFormation ]

En este ejemplo, establezca la opción **Nivel de la tabla** como disponible en la consola de la plantilla de CloudFormation:

```
"Configuration": "{
    \"Version\":1.0,
    \"Grouping\":{\"TableLevelConfiguration\":2}
}"
```

------

# Cómo especificar el número máximo de tablas que el rastreador tiene permitido crear
<a name="crawler-maximum-number-of-tables"></a>

Opcionalmente, puede especificar el número máximo de tablas que el rastreador tiene permitido crear especificando un valor de `TableThreshold` mediante la consola de AWS Glue o la AWS CLI. Si las tablas detectadas por el rastreador durante el rastreo superan este valor de entrada, se produce un error en el rastreo y no se escribe ningún dato en el Catálogo de datos.

Este parámetro es útil cuando las tablas que detectaría y crearía el rastreador son muchas más de las esperadas. Las razones para que ocurra esto pueden ser varias; por ejemplo:
+ Cuando se utiliza un trabajo de AWS Glue para rellenar las ubicaciones de Amazon S3, es posible que acabe habiendo archivos vacíos en el mismo nivel que el de una carpeta. En esos casos, cuando se ejecuta un rastreador en esta ubicación de Amazon S3, el rastreador crea varias tablas debido a la presencia de archivos y carpetas en el mismo nivel.
+ Si no configura `"TableGroupingPolicy": "CombineCompatibleSchemas"`, es posible que acabe habiendo más tablas de las esperadas. 

Se debe especificar un valor entero mayor que 0 para `TableThreshold`. Este valor se configura para cada rastreador. Es decir, se tiene en cuenta este valor para cada rastreo. Por ejemplo, un rastreador tiene el valor `TableThreshold` establecido en 5. En cada rastreo, AWS Glue compara el número de tablas detectadas con este valor de umbral de tablas (5) y, si el número de tablas detectadas es inferior a 5, AWS Glue escribe las tablas en el Catálogo de datos; en caso contrario, se produce un error en el rastreo y no se escribe nada en el Catálogo de datos.

------
#### [ Consola de administración de AWS ]

**Para configurar `TableThreshold` mediante la Consola de administración de AWS:**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Al configurar un rastreador, en **Salida y programación**, defina el **Umbral máximo de tabla** en el número de tablas que el rastreador puede generar.  
![\[Sección de salida y programación de la consola de AWS en la que aparece el parámetro Umbral de tablas máximo.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/crawler-max-tables.png)

------
#### [ AWS CLI ]

Para configurar `TableThreshold` mediante la AWS CLI:

```
aws glue update-crawler \
    --name myCrawler \
    --configuration '{"Version": 1.0, "CrawlerOutput": {"Tables": { "TableThreshold": 5 }}}'
```

------
#### [ API ]

Para configurar `TableThreshold` mediante la API:

```
"{"Version":1.0,
"CrawlerOutput":
{"Tables":{"AddOrUpdateBehavior":"MergeNewColumns",
"TableThreshold":5}}}";
```

------

Se registran mensajes de error para ayudarle a identificar las rutas de las tablas y a limpiar los datos. Ejemplo de registro en la cuenta si el rastreador falla porque el número de tablas es mayor que el valor umbral de tablas proporcionado:

```
Table Threshold value = 28, Tables detected - 29
```

En CloudWatch, se registran todas las ubicaciones de las tablas detectadas en forma de mensaje INFO. Se registra un error como motivo del fallo.

```
ERROR com.amazonaws.services.glue.customerLogs.CustomerLogService - CustomerLogService received CustomerFacingException with message 
The number of tables detected by crawler: 29 is greater than the table threshold value provided: 28. Failing crawler without writing to Data Catalog.
com.amazonaws.services.glue.exceptions.CustomerFacingInternalException: The number of tables detected by crawler: 29 is greater than the table threshold value provided: 28. 
Failing crawler without writing to Data Catalog.
```

# Configuración de un rastreador para que utilice credenciales de Lake Formation
<a name="crawler-lf-integ"></a>

Puede configurar un rastreador para que utilice credenciales de AWS Lake Formation para acceder a un almacén de datos de Amazon S3 o a una tabla del Catálogo de datos con una ubicación de Amazon S3 subyacente en la misma Cuenta de AWS o en otra Cuenta de AWS. Puede configurar una tabla existente del Catálogo de datos como destino de un rastreador, si el rastreador y la tabla del Catálogo de datos residen en la misma cuenta. Actualmente, solo se permite un único destino de catálogo con una sola tabla de catálogo cuando se utiliza una tabla del Catálogo de datos como destino de un rastreador.

**nota**  
Cuando vaya a definir una tabla del Catálogo de datos como destino de un rastreador, asegúrese de que la ubicación subyacente de la tabla del Catálogo de datos sea una ubicación de Amazon S3. Los rastreadores que utilizan credenciales de Lake Formation solo admiten destinos del Catálogo de datos con ubicaciones de Amazon S3 subyacentes.

## Configuración requerida cuando el rastreador y la ubicación de Amazon S3 o la tabla del Catálogo de datos registradas residen en la misma cuenta (rastreo en cuenta)
<a name="in-account-crawling"></a>

Para permitir que el rastreador acceda a un almacén de datos o a una tabla del Catálogo de datos con credenciales de Lake Formation, se debe registrar la ubicación de los datos en Lake Formation. Además, el rol de IAM del rastreador debe tener permisos para leer los datos del destino en el que esté registrado el bucket de Amazon S3.

Puede completar los siguientes pasos de configuración mediante la Consola de administración de AWS o la AWS Command Line Interface (AWS CLI).

------
#### [ Consola de administración de AWS ]

1. Antes de configurar un rastreador para que acceda al origen del rastreador, registre la ubicación de los datos del almacén de datos o el Catálogo de datos en Lake Formation. En la consola de Lake Formation ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)), registre una ubicación de Amazon S3 como ubicación raíz del lago de datos en la Cuenta de AWS donde esté definido el rastreador. Para obtener más información, consulte [Registering an Amazon S3 location](https://docs.aws.amazon.com/lake-formation/latest/dg/register-location.html) (Registro de una ubicación de Amazon S3).

1. Conceda permisos de **Ubicación de datos** al rol de IAM que se utiliza para la ejecución del rastreador, de modo que el rastreador pueda leer los datos del destino en Lake Formation. Para obtener más información, consulte [Concesión de permisos de ubicación de datos (misma cuenta)](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-location-permissions-local.html).

1. Otorgue al rol del rastreador permisos de acceso (`Create`) a la base de datos, que se especifica como base de datos de salida. Para obtener más información, consulte [Concesión de permisos de base de datos mediante la consola de Lake Formation y el método de recurso con nombre](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-database-permissions.html).

1. En la consola de IAM ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)), cree un rol de IAM para el rastreador. Agregue la política `lakeformation:GetDataAccess` al rol.

1. En la consola de AWS Glue ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)), al configurar el rastreador, seleccione la opción **Utilizar credenciales de Lake Formation para rastrear un origen de datos de Amazon S3**.
**nota**  
El campo accountId es opcional para el rastreo en cuenta.

------
#### [ AWS CLI ]

```
aws glue --profile demo create-crawler --debug --cli-input-json '{
    "Name": "prod-test-crawler",
    "Role": "arn:aws:iam::111122223333:role/service-role/AWSGlueServiceRole-prod-test-run-role",
    "DatabaseName": "prod-run-db",
    "Description": "",
    "Targets": {
    "S3Targets":[
                {
                 "Path": "s3://amzn-s3-demo-bucket"
                }
                ]
                },
   "SchemaChangePolicy": {
      "UpdateBehavior": "LOG",
      "DeleteBehavior": "LOG"
  },
  "RecrawlPolicy": {
    "RecrawlBehavior": "CRAWL_EVERYTHING"
  },
  "LineageConfiguration": {
    "CrawlerLineageSettings": "DISABLE"
  },
  "LakeFormationConfiguration": {
    "UseLakeFormationCredentials": true,
    "AccountId": "111122223333"
  },
  "Configuration": {
           "Version": 1.0,
           "CrawlerOutput": {
             "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" },
             "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" }
           },
           "Grouping": { "TableGroupingPolicy": "CombineCompatibleSchemas" }
         },
  "CrawlerSecurityConfiguration": "",
  "Tags": {
    "KeyName": ""
  }
}'
```

------

# Configuración requerida cuando el rastreador y la ubicación de Amazon S3 registrada residen en cuentas diferentes (rastreo entre cuentas)
<a name="cross-account-crawling"></a>

Para permitir que el rastreador acceda a un almacén de datos de una cuenta diferente con credenciales de Lake Formation, primero debe registrar la ubicación de los datos de Amazon S3 en Lake Formation. Después, debe conceder permisos de ubicación de datos a la cuenta del rastreador siguiendo estos pasos.

Puede completar los siguientes pasos mediante la Consola de administración de AWS o la AWS CLI.

------
#### [ Consola de administración de AWS ]

1. En la cuenta en la que esté registrada la ubicación de Amazon S3 (cuenta B):

   1. Registre una ruta de Amazon S3 en Lake Formation. Para obtener más información, consulte [Registro de una ubicación de Amazon S3](https://docs.aws.amazon.com/lake-formation/latest/dg/register-location.html).

   1.  Conceda permisos de **Ubicación de datos** a la cuenta (cuenta A) en la que se vaya a ejecutar el rastreador. Para obtener más información, consulte [Concesión de permisos de ubicación de datos](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-location-permissions-local.html). 

   1. Cree una base de datos vacía en Lake Formation con la ubicación subyacente como ubicación de Amazon S3 de destino. Para obtener más información, consulte [Creación de una base de datos](https://docs.aws.amazon.com/lake-formation/latest/dg/creating-database.html).

   1. Conceda a la cuenta A (la cuenta en la que se vaya a ejecutar el rastreador) acceso a la base de datos que ha creado en el paso anterior. Para obtener más información, consulte [Concesión de permisos de base de datos](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-database-permissions.html). 

1. En la cuenta donde se ha creado y se va a ejecutar el rastreador (cuenta A):

   1.  Mediante la consola de AWS RAM, acepte la base de datos que se haya compartido desde la cuenta externa (cuenta B). Para obtener más información, consulte [Aceptación de una invitación para compartir un recurso de AWS Resource Access Manager](https://docs.aws.amazon.com/lake-formation/latest/dg/accepting-ram-invite.html). 

   1.  Cree un rol de IAM para el rastreador. Agregue la política `lakeformation:GetDataAccess` al rol.

   1.  En la consola de Lake Formation ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)), conceda permisos de **Ubicación de datos** sobre la ubicación de Amazon S3 de destino al rol de IAM utilizado para la ejecución del rastreador, de modo que el rastreador pueda leer los datos del destino en Lake Formation. Para obtener más información, consulte [Concesión de permisos de ubicación de datos](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-location-permissions-local.html). 

   1.  Cree un enlace de recurso en la base de datos compartida. Para obtener más información, consulte [Creación de un enlace de recurso](https://docs.aws.amazon.com/lake-formation/latest/dg/create-resource-link-database.html). 

   1.  Otorgue al rol del rastreador permisos de acceso (`Create`) en la base de datos compartida y (`Describe`) en el enlace de recurso. El enlace de recurso se especifica en la salida del rastreador. 

   1.  En la consola de AWS Glue ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)), al configurar el rastreador, seleccione la opción **Use Lake Formation credentials for crawling Amazon S3 data source** (Utilizar credenciales de Lake Formation para rastrear un origen de datos de Amazon S3).

      Para el rastreo entre cuentas, especifique el ID de la Cuenta de AWS donde esté registrada la ubicación de Amazon S3 de destino en Lake Formation. Para el rastreo en cuenta, el campo accountId es opcional.   
![\[IAM role selection and Lake Formation configuration options for Rastreador de AWS Glue security settings.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/cross-account-crawler.png)

------
#### [ AWS CLI ]

```
aws glue --profile demo create-crawler --debug --cli-input-json '{
    "Name": "prod-test-crawler",
    "Role": "arn:aws:iam::111122223333:role/service-role/AWSGlueServiceRole-prod-test-run-role",
    "DatabaseName": "prod-run-db",
    "Description": "",
    "Targets": {
    "S3Targets":[
                {
                 "Path": "s3://amzn-s3-demo-bucket"
                }
                ]
                },
   "SchemaChangePolicy": {
      "UpdateBehavior": "LOG",
      "DeleteBehavior": "LOG"
  },
  "RecrawlPolicy": {
    "RecrawlBehavior": "CRAWL_EVERYTHING"
  },
  "LineageConfiguration": {
    "CrawlerLineageSettings": "DISABLE"
  },
  "LakeFormationConfiguration": {
    "UseLakeFormationCredentials": true,
    "AccountId": "111111111111"
  },
  "Configuration": {
           "Version": 1.0,
           "CrawlerOutput": {
             "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" },
             "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" }
           },
           "Grouping": { "TableGroupingPolicy": "CombineCompatibleSchemas" }
         },
  "CrawlerSecurityConfiguration": "",
  "Tags": {
    "KeyName": ""
  }
}'
```

------

**nota**  
Un rastreador que utilice credenciales de Lake Formation solo puede rastrear destinos de Amazon S3 y el Catálogo de datos.
En el caso de destinos que utilicen el suministro de credenciales de Lake Formation, las ubicaciones de Amazon S3 subyacentes deben pertenecer al mismo bucket. Por ejemplo, los clientes pueden utilizar varios destinos (s3://amzn-s3-demo-bucket1/folder1, s3://amzn-s3-demo-bucket1/folder2) siempre que todas las ubicaciones de destino estén en el mismo bucket (amzn-s3-demo-bucket1). No se permite especificar buckets diferentes (s3://amzn-s3-demo-bucket1/folder1, s3://amzn-s3-demo-bucket2/folder2).
Actualmente, para los rastreadores de destinos del Catálogo de datos, solo se permite un único destino de catálogo con una sola tabla de catálogo.

# Aceleración de los rastreadores mediante las notificaciones de eventos de Amazon S3
<a name="crawler-s3-event-notifications"></a>

En lugar de publicar los objetos de un destino de Amazon S3 o del Catálogo de datos, puede configurar el rastreador para que utilice eventos de Amazon S3 para buscar cualquier cambio. Esta característica mejora el tiempo de rastreo mediante el uso de eventos de Amazon S3 o del Catálogo de datos para identificar los cambios entre dos rastreos al enumerar todos los archivos de la subcarpeta que activó el evento en lugar de publicar el destino completo de Amazon S3 o el Catálogo de datos.

En el primer rastreo se enumeran todos los objetos de Amazon S3 del destino. Después del primer rastreo exitoso, puede optar por volver a rastrear manualmente o según un calendario establecido. El rastreador enumerará solo los objetos de esos eventos en lugar de enumerar todos los objetos.

Cuando el destino es una tabla del Catálogo de datos, el rastreador actualiza las tablas existentes en el Catálogo de datos con los cambios (por ejemplo, particiones adicionales en una tabla).

Las ventajas de pasar a un rastreador basado en eventos de Amazon S3 son:
+ Un nuevo rastreo más rápido, ya que la lista de todos los objetos del destino no es necesaria, sino que la lista de carpetas específicas se realiza cuando se agregan o eliminan objetos.
+ Reducción del costo global de rastreo a medida que la lista de carpetas específicas se realiza en las que se agregan o eliminan objetos.

El rastreo de eventos de Amazon S3 se ejecuta al consumir eventos de Amazon S3 desde la cola de SQS según la programación del rastreador. No habrá ningún costo si no hay eventos en la cola. Los eventos de Amazon S3 se pueden configurar para que vayan directamente a la cola de SQS o en los casos en que varios consumidores necesitan el mismo evento, una combinación de SNS y SQS. Para obtener más información, consulte [Cómo configurar la cuenta para las notificaciones de eventos de Amazon S3](#crawler-s3-event-notifications-setup).

Después de crear y configurar el rastreador en modo evento, el primer rastreo se ejecuta en modo listado y enumera un listado completo del destino de Amazon S3 o del Catálogo de datos. A través del siguiente registro se confirma el funcionamiento del rastreo mediante el uso de eventos de Amazon S3 tras el primer rastreo correcto: “El rastreo se ejecuta mediante el uso de eventos de Amazon S3”.

Después de crear el rastreo de eventos de Amazon S3 y actualizar las propiedades del rastreador que pueden afectar al rastreo, el rastreo funciona en modo lista y se agrega el siguiente registro: “El rastreo no se ejecuta en modo de evento de S3”.

**nota**  
El número máximo de mensajes que se pueden consumir es de 100 000 mensajes por rastreo.

## Consideraciones y limitaciones
<a name="s3event-crawler-limitations"></a>

Las siguientes consideraciones y limitaciones se aplican al configurar un rastreador para usar notificaciones de eventos de Amazon S3 para detectar cualquier cambio. 
+  **Comportamiento importante con particiones eliminadas** 

  Cuando se utilizan rastreadores de eventos de Amazon S3 con tablas del Catálogo de datos:
  +  Si elimina una partición mediante la llamada a la API `DeletePartition`, también debe eliminar todos los objetos de S3 de esa partición y seleccionar **Todos los eventos de eliminación de objetos** al configurar las notificaciones de eventos de S3. Si los eventos de eliminación no están configurados, el rastreador volverá a crear la partición eliminada durante su próxima ejecución. 
+ El rastreador admite un solo destino, ya sean destinos para Amazon S3 o para el Catálogo de datos.
+ No es posible utilizar SQS en una VPC privada.
+ No se admite el muestreo de Amazon S3.
+ El destino del rastreador debe ser una carpeta para un destino de Amazon S3 o una o más tablas del Catálogo de datos de AWS Glue para un destino del Catálogo de datos.
+ No se admite el comodín de la ruta “todo”: s3://%
+ Para un destino de Catálogo de datos, todas las tablas del Catálogo deben apuntar al mismo bucket de Amazon S3 para el modo de eventos de Amazon S3.
+ Para un destino de Catálogo de datos, una tabla de catálogo no debe apuntar a una ubicación de Amazon S3 en formato Delta Lake (que contenga carpetas \$1symlink o consulte las tablas del catálogo `InputFormat`).

**Topics**
+ [Consideraciones y limitaciones](#s3event-crawler-limitations)
+ [Cómo configurar la cuenta para las notificaciones de eventos de Amazon S3](#crawler-s3-event-notifications-setup)
+ [Configuración de un rastreador para las notificaciones de eventos de Amazon S3 para un destino de Amazon S3](crawler-s3-event-notifications-setup-console-s3-target.md)
+ [Configuración de un rastreador para notificaciones de eventos de Amazon S3 para una tabla del Catálogo de datos](crawler-s3-event-notifications-setup-console-catalog-target.md)

## Cómo configurar la cuenta para las notificaciones de eventos de Amazon S3
<a name="crawler-s3-event-notifications-setup"></a>

Realice los siguientes pasos de configuración. Tenga en cuenta que los valores entre paréntesis hacen referencia a los valores configurables del script.

1. Debe configurar las notificaciones de eventos para su bucket de Amazon S3.

   Para obtener más información, consulte [Notificaciones de eventos de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventNotifications.html).

1. Para utilizar el rastreador basado en eventos de Amazon S3, debe habilitar la notificación de eventos en el bucket de Amazon S3 con eventos filtrados del prefijo, que es el mismo que el destino de S3 y el almacenamiento en SQS. Puede configurar SQS y la notificación de eventos a través de la consola siguiendo los pasos del [Tutorial: configuración de un bucket para notificaciones](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ways-to-add-notification-config-to-bucket.html).

1. Agregue la siguiente política de SQS al rol utilizado por el rastreador. 

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": [
           "sqs:DeleteMessage",
           "sqs:GetQueueUrl",
           "sqs:ListDeadLetterSourceQueues",
           "sqs:ReceiveMessage",
           "sqs:GetQueueAttributes",
           "sqs:ListQueueTags",
           "sqs:SetQueueAttributes",
           "sqs:PurgeQueue"
         ],
         "Resource": "arn:aws:sqs:us-east-1:111122223333:cfn-sqs-queue"
       }
     ]
   }
   ```

------

# Configuración de un rastreador para las notificaciones de eventos de Amazon S3 para un destino de Amazon S3
<a name="crawler-s3-event-notifications-setup-console-s3-target"></a>

Siga estos pasos para configurar un rastreador para las notificaciones de eventos de Amazon S3 para un destino de Amazon S3 mediante la Consola de administración de AWS o AWS CLI.

------
#### [ Consola de administración de AWS ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de GuardDuty en [https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/).

1.  Configure las propiedades del rastreador. Para obtener más información, consulte [Opciones de configuración de rastreadores en la consola de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-configure-changes-console). 

1.  En la sección **Configuración de origen de datos**, se preguntará *¿Los datos ya están asignados a tablas de AWS Glue?* 

    De manera predeterminada, está seleccionado **Not yet** (Aún no). Déjelo así si está utilizando un origen de datos de Amazon S3 y los datos aún no están asignados a tablas de AWS Glue. 

1.  En la sección **Data sources** (Origen de datos), elija **Add a data source** (Agregar un origen de datos).   
![\[Data source configuration interface with options to select or add data sources for crawling.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/crawler-s3-event-console1.png)

1.  En el modal **Add data source** (Agregar origen de datos), configure el origen de datos de Amazon S3: 
   +  **Data source** (Origen de datos): de manera predeterminada, está seleccionado Amazon S3. 
   +  **Network connection** (Conexión de red) (opcional): elija **Add new connection** (Agregar nueva conexión). 
   +  **Location of Amazon S3 data** (Ubicación de datos de Amazon S3): de manera predeterminada, está seleccionado **In this account** (En esta cuenta). 
   +  **Amazon S3 path** (Ruta de Amazon S3): especifique la ruta de Amazon S3 en la que se rastrean carpetas y archivos. 
   +  **Subsequent crawler runs** (Ejecuciones posteriores del rastreador): elija **Crawl based on events** (Rastreo basado en eventos) para utilizar las notificaciones de eventos de Amazon S3 para el rastreador. 
   +  **Include SQS ARN** (Incluir ARN de SQS): especifique los parámetros del almacén de datos, incluido un ARN SQS válido. (Por ejemplo, `arn:aws:sqs:region:account:sqs`). 
   +  **Include dead-letter SQS ARN** (Incluir un SQS ARN de mensajes fallidos) (Optional): especifique un ARN de SQS con mensajes erróneos de Amazon válido. (Por ejemplo, `arn:aws:sqs:region:account:deadLetterQueue`). 
   +  Elija **Add an Amazon S3 data source** (Agregar un origen de datos de Amazon S3).   
![\[Add data source dialog for S3, showing options for network connection and crawl settings.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/crawler-s3-event-console2.png)

------
#### [ AWS CLI ]

 El siguiente es un ejemplo de llamada a la AWS CLI de Amazon S3 para configurar un rastreador para usar notificaciones de eventos a fin de rastrear un bucket de destino de Amazon S3. 

```
Create Crawler:
aws glue update-crawler \
    --name myCrawler \
    --recrawl-policy RecrawlBehavior=CRAWL_EVENT_MODE \
    --schema-change-policy UpdateBehavior=UPDATE_IN_DATABASE,DeleteBehavior=LOG
    --targets '{"S3Targets":[{"Path":"s3://amzn-s3-demo-bucket/", "EventQueueArn": "arn:aws:sqs:us-east-1:012345678910:MyQueue"}]}'
```

------

# Configuración de un rastreador para notificaciones de eventos de Amazon S3 para una tabla del Catálogo de datos
<a name="crawler-s3-event-notifications-setup-console-catalog-target"></a>

Cuando el destino sea una tabla del Catálogo de datos, configure un rastreador para las notificaciones de eventos de Amazon S3 mediante la consola de AWS Glue:

1.  Configure las propiedades del rastreador. Para obtener más información, consulte [Opciones de configuración de rastreadores en la consola de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-configure-changes-console). 

1.  En la sección **Configuración de origen de datos**, se preguntará *¿Los datos ya están asignados a tablas de AWS Glue?* 

    Seleccione **Yes** (Sí) para seleccionar las tablas existentes de su Catálogo de datos como origen de datos. 

1.  En la sección **Glue tables** (Tablas de Glue), seleccione **Add tables** (Agregar tablas).   
![\[Data source configuration interface with options to select existing Glue tables or add new ones.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/crawler-s3-event-console1-cat.png)

1.  En el modal **Add table** (Agregar tabla), configure la base de datos y las tablas: 
   +  **Network connection** (Conexión de red) (opcional): elija **Add new connection** (Agregar nueva conexión). 
   +  **Base de datos**: seleccione una base de datos en el Catálogo de datos. 
   +  **Tablas**: seleccione una o más tablas de esa base de datos en el Catálogo de datos. 
   +  **Subsequent crawler runs** (Ejecuciones posteriores del rastreador): elija **Crawl based on events** (Rastreo basado en eventos) para utilizar las notificaciones de eventos de Amazon S3 para el rastreador. 
   +  **Include SQS ARN** (Incluir ARN de SQS): especifique los parámetros del almacén de datos, incluido un ARN SQS válido. (Por ejemplo, `arn:aws:sqs:region:account:sqs`). 
   +  **Include dead-letter SQS ARN** (Incluir un SQS ARN de mensajes fallidos) (Optional): especifique un ARN de SQS con mensajes erróneos de Amazon válido. (Por ejemplo, `arn:aws:sqs:region:account:deadLetterQueue`). 
   +  Elija **Confirmar**.   
![\[Add Glue tables dialog with network, database, tables, and crawler options.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/crawler-s3-event-console2-cat.png)