

# Acelerar crawls usando notificações de eventos do Amazon S3
<a name="crawler-s3-event-notifications"></a>

Em vez de listar os objetos de um destino do Amazon S3 ou do Data Catalog, você pode configurar o crawler para usar eventos do Amazon S3 para localizar quaisquer alterações. Esse recurso melhora o tempo de recrawl usando eventos do Amazon S3 para identificar as alterações entre dois crawls listando todos os arquivos da subpasta que disparou o evento em vez de listar o destino completo do Amazon S3 ou do Data Catalog.

O primeiro crawl lista todos os objetos do Amazon S3 do destino. Após o primeiro crawling bem-sucedido, você pode optar pelo recrawling manualmente ou em um cronograma definido. O crawler listará apenas os objetos desses eventos em vez de listar todos os objetos.

Quando o destino é uma tabela do Catálogo de dados, o crawler atualiza as tabelas existentes no Catálogo de dados com as alterações (por exemplo, partições extras em uma tabela).

As vantagens de migrar para um crawler baseado em eventos do Amazon S3 são:
+ Uma recuperação mais rápida, pois a listagem de todos os objetos do destino não é necessária, em vez disso, a listagem de pastas específicas é feita onde os objetos são adicionados ou excluídos.
+ Uma redução no custo geral de crawl à medida que a listagem de pastas específicas é feita onde os objetos são adicionados ou excluídos.

O crawl de eventos do Amazon S3 é executado consumindo eventos do Amazon S3 da fila SQS com base na programação do crawler. Não haverá custo se não houver eventos na fila. Os eventos do Amazon S3 podem ser configurados para ir diretamente para a fila SQS ou nos casos em que vários consumidores precisam do mesmo evento, uma combinação de SNS e SQS. Para obter mais informações, consulte [Configurar sua conta para notificações de eventos do Amazon S3](#crawler-s3-event-notifications-setup).

Depois de criar e configurar o crawler no modo de evento, o primeiro crawl é executado no modo de listagem fazendo uma listagem completa do destino do Amazon S3 ou do Data Catalog. O log a seguir confirma a operação do crawl consumindo eventos do Amazon S3 após o primeiro crawl bem-sucedido: "The crawl is running by consuming Amazon S3 events." (O crawl está sendo executado consumindo eventos do Amazon S3).

Depois de criar o crawl de eventos do Amazon S3 e atualizar as propriedades do crawler que podem afetar o crawl, o crawl opera no modo de lista e o seguinte log é adicionado: "Crawl is not running in S3 event mode" (O crawl não está sendo executado no modo de evento S3).

**nota**  
O número máximo de mensagens a serem consumidas é 100 mil mensagens por operação de crawl.

## Considerações e limitações
<a name="s3event-crawler-limitations"></a>

As considerações e limitações apresentadas a seguir se aplicam ao configurar um crawler para usar notificações de eventos do Amazon S3 na descoberta de alterações. 
+  **Aspectos relevantes do comportamento ao lidar com partições excluídas** 

  Ao usar crawlers de eventos do Amazon S3 com as tabelas do Catálogo de Dados:
  +  Se você excluir uma partição usando a chamada de API `DeletePartition`, também deverá excluir todos os objetos do S3 contidos nessa partição e selecionar a opção **Todos os eventos de remoção de objetos** ao configurar as notificações de eventos do S3. Se os eventos de exclusão não estiverem configurados, o crawler recriará a partição excluída na próxima execução. 
+ O crawler só é compatível com um único destino, tanto para destinos do Amazon S3 quanto do Data Catalog.
+ Não há suporte para SQS na VPC privada.
+ Não há suporte para amostragem do Amazon S3.
+ O destino do crawler deve ser uma pasta para um destino do Amazon S3 ou uma ou mais tabelas do AWS Glue Data Catalog para um destino do Data Catalog.
+ Não há suporte para o curinga de caminho ‘everything’ (tudo): s3: //%
+ Para um destino do Data Catalog, todas as tabelas de catálogo devem apontar para o mesmo bucket do Amazon S3 para o modo de evento do Amazon S3.
+ Para um destino do Data Catalog, uma tabela de catálogo não deve apontar para uma localização no Amazon S3 no formato Delta Lake (contendo pastas \$1symlink ou conferindo o `InputFormat` da tabela do catálogo).

**Topics**
+ [Considerações e limitações](#s3event-crawler-limitations)
+ [Configurar sua conta para notificações de eventos do Amazon S3](#crawler-s3-event-notifications-setup)
+ [Configurar um crawler de notificações de eventos do Amazon S3 para um destino do Amazon S3](crawler-s3-event-notifications-setup-console-s3-target.md)
+ [Configurar um crawler para notificações de eventos do Amazon S3 para uma tabela do Catálogo de dados](crawler-s3-event-notifications-setup-console-catalog-target.md)

## Configurar sua conta para notificações de eventos do Amazon S3
<a name="crawler-s3-event-notifications-setup"></a>

Complete as tarefas de configuração a seguir. Observe que os valores entre parênteses fazem referência às definições configuráveis do script.

1. É necessário configurar notificações de eventos para seu bucket do Amazon S3.

   Para obter mais informações, consulte [Notificações de eventos do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventNotifications.html).

1. Para usar o crawler baseado em eventos do Amazon S3, você deve habilitar a notificação de eventos no bucket do Amazon S3 com eventos filtrados do prefixo que é o mesmo que o destino do S3 e armazenado no SQS. Você pode configurar o SQS e a notificação de eventos por meio do console seguindo as etapas em [Passo a passo: configuração de um bucket para notificações](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ways-to-add-notification-config-to-bucket.html).

1. Adicione a política de SQS a seguir à função usada pelo crawler. 

------
#### [ 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"
       }
     ]
   }
   ```

------

# Configurar um crawler de notificações de eventos do Amazon S3 para um destino do Amazon S3
<a name="crawler-s3-event-notifications-setup-console-s3-target"></a>

Siga estas etapas para configurar um crawler para notificações de eventos do Amazon S3 para um destino do Amazon S3 usando o Console de gerenciamento da AWS ou a AWS CLI.

------
#### [ Console de gerenciamento da AWS ]

1. Faça login no Console de gerenciamento da AWS e abra o console do GuardDuty em [https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/).

1.  Defina as propriedades do crawler. Para obter mais informações, consulte [Definir opções de configuração do crawler no console do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-configure-changes-console). 

1.  Na seção **Configuração da fonte de dados**, é perguntado a você se *Os dados já estão mapeados para tabelas do AWS Glue? * 

    A opção **Not yet** (Ainda não) já estará selecionada por padrão. Isso ocorre porque você está usando uma fonte de dados do Amazon S3 e os dados ainda não estão mapeados para as tabelas do AWS Glue. 

1.  Na seção **Data sources** (Fontes de dados), escolha **Add a data source** (Adicionar uma fonte de dados).   
![\[Data source configuration interface with options to select or add data sources for crawling.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/crawler-s3-event-console1.png)

1.  No modal **Add data source** (Adicionar origem dos dados), configure a fonte de dados do Amazon S3: 
   +  **Data source** (Fonte de dados): o Amazon S3 é selecionado por padrão. 
   +  **Network connection** (Conexão de rede) (opcional): escolha **Add new connection** (Adicionar nova conexão). 
   +  **Location of Amazon S3 data** (Local de dados do Amazon S3): a opção **In this account** (Nesta conta) será selecionado por padrão. 
   +  **Amazon S3 path** (Caminho do Amazon S3): especifique o caminho do Amazon S3 no qual pastas e arquivos são rastreados. 
   +  **Subsequent crawler runs** (Execuções subsequentes do crawler): escolha **Crawl based on events** (Rastreamento baseado em eventos) para usar notificações de eventos do Amazon S3 para seu crawler. 
   +  **Include SQS ARN** (Incluir ARN de SQS): especifique os parâmetros do armazenamento de dados, incluindo um ARN válido do SQS. (Por exemplo, `arn:aws:sqs:region:account:sqs`). 
   +  **Include dead-letter SQS ARN** (Incluir ARN de mensagens não entregues do SQS) (opcional): especifique um ARN válido de mensagens não entregues do SQS na Amazon. (Por exemplo, `arn:aws:sqs:region:account:deadLetterQueue`). 
   +  Escolha **Add an Amazon S3 data source** (Adicionar uma fonte de dados do Amazon S3).   
![\[Add data source dialog for S3, showing options for network connection and crawl settings.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/crawler-s3-event-console2.png)

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

 O exemplo a seguir é uma chamada da AWS CLI do Amazon S3 para configurar um crawler para usar notificações de eventos para fazer crawl em um bucket de destino do 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"}]}'
```

------

# Configurar um crawler para notificações de eventos do Amazon S3 para uma tabela do Catálogo de dados
<a name="crawler-s3-event-notifications-setup-console-catalog-target"></a>

Quando você tiver uma tabela do Catálogo de dados, configure um crawler para fornecer notificações de eventos do Amazon S3 usando o console do AWS Glue:

1.  Defina as propriedades do crawler. Para obter mais informações, consulte [Definir opções de configuração do crawler no console do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-configure-changes-console). 

1.  Na seção **Configuração da fonte de dados**, é perguntado a você se *Os dados já estão mapeados para tabelas do AWS Glue? * 

    Selecione **Yes** (Sim) para selecionar as tabelas existentes do Data Catalog como fonte de dados. 

1.  Na seção **Glue tables** (Tabelas do Glue), escolha **Add tables** (Adicionar tabelas).   
![\[Data source configuration interface with options to select existing Glue tables or add new ones.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/crawler-s3-event-console1-cat.png)

1.  No modal **Add table** (Adicionar tabela), configure o banco de dados e as tabelas: 
   +  **Network connection** (Conexão de rede) (opcional): escolha **Add new connection** (Adicionar nova conexão). 
   +  **Database** (Banco de dados): selecione um banco de dados no Data Catalog. 
   +  **Tables** (Tabelas): selecione uma ou mais tabelas desse banco de dados no Data Catalog. 
   +  **Subsequent crawler runs** (Execuções subsequentes do crawler): escolha **Crawl based on events** (Rastreamento baseado em eventos) para usar notificações de eventos do Amazon S3 para seu crawler. 
   +  **Include SQS ARN** (Incluir ARN de SQS): especifique os parâmetros do armazenamento de dados, incluindo um ARN válido do SQS. (Por exemplo, `arn:aws:sqs:region:account:sqs`). 
   +  **Include dead-letter SQS ARN** (Incluir ARN de mensagens não entregues do SQS) (opcional): especifique um ARN válido de mensagens não entregues do SQS na Amazon. (Por exemplo, `arn:aws:sqs:region:account:deadLetterQueue`). 
   +  Escolha **Confirmar**.   
![\[Add Glue tables dialog with network, database, tables, and crawler options.\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/crawler-s3-event-console2-cat.png)