

# Usar o Amazon SQS, o Amazon SNS e o Lambda
<a name="how-to-enable-disable-notification-intro"></a>

A habilitação de notificações é uma operação em nível de bucket. Você armazena informações de configuração de notificação no sub-recurso de *notificação* que está associado a um bucket. Depois que você cria ou altera a configuração de notificação de bucket, normalmente é necessário aguardar cinco minutos para que as alterações entrem em vigor. Ocorre um `s3:TestEvent` quando a notificação é habilitada pela primeira vez. Você pode usar qualquer um dos métodos a seguir para gerenciar a configuração de notificação:
+ **Usar o console do Amazon S3**: você pode usar a interface de usuário do console para definir uma configuração de notificação em um bucket sem ter que escrever nenhum código. Para obter mais informações, consulte [Habilitar e configurar notificações de eventos usando o console do Amazon S3](enable-event-notifications.md).
+ **Uso dos AWS SDKs de forma programática**: internamente, tanto o console como os SDKs chamam a API REST do Amazon S3 para gerenciar sub-recursos de *notificação* que estão associados ao bucket. Para obter exemplos de configurações de notificação usando exemplos do AWS SDK, consulte [Demonstração: configurar um bucket para notificações (tópico do SNS ou fila do SQS)](ways-to-add-notification-config-to-bucket.md).
**nota**  
Você também pode fazer chamadas de API REST do Amazon S3 diretamente do seu código. Porém, isso pode ser complicado, porque é necessário gravar o código para autenticar suas solicitações. 

Independentemente do método usado, o Amazon S3 armazena a configuração de notificação como XML no sub-recurso *notification* (notificação) que está associado a um bucket. Para obter informações sobre sub-recursos de bucket, consulte [Opções de configuração de buckets de uso geral](UsingBucket.md#bucket-config-options-intro).

**nota**  
Se você tiver várias notificações de eventos de falha devido a destinos excluídos, poderá receber a mensagem **Não é possível validar as seguintes configurações de destino** ao tentar excluí-las. É possível resolver isso no console do S3 excluindo todas as notificações de falha ao mesmo tempo.

**Topics**
+ [Conceder permissões para publicar mensagens de notificação de vento a um destino](grant-destinations-permissions-to-s3.md)
+ [Habilitar e configurar notificações de eventos usando o console do Amazon S3](enable-event-notifications.md)
+ [Configuração de notificações de eventos de forma programática](#event-notification-configuration)
+ [Demonstração: configurar um bucket para notificações (tópico do SNS ou fila do SQS)](ways-to-add-notification-config-to-bucket.md)
+ [Configurar notificações de eventos usando filtragem de nomes de chave de objeto](notification-how-to-filtering.md)
+ [Estrutura de mensagens de evento](notification-content-structure.md)

## Configuração de notificações de eventos de forma programática
<a name="event-notification-configuration"></a>

Por padrão, as notificações não estão habilitadas para nenhum tipo de evento. Portanto, o sub-recurso *notification* (notificação) armazena inicialmente uma configuração vazia.

```
<NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
</NotificationConfiguration>
```

Para habilitar notificações para eventos de tipos específicos, você substitui o XML pela configuração apropriada que identifica os tipos de evento que deseja que o Amazon S3 publique e o destino onde deseja que os eventos sejam publicados. Para cada destino, você adiciona uma configuração correspondente de XML. 

**Para publicar mensagens de eventos em uma fila do SQS**  
Para definir uma fila do SQS como o destino de notificação para um ou mais tipos de evento, adicione o `QueueConfiguration`.

```
<NotificationConfiguration>
  <QueueConfiguration>
    <Id>{{optional-id-string}}</Id>
    <Queue>{{sqs-queue-arn}}</Queue>
    <Event>{{event-type}}</Event>
    <Event>{{event-type}}</Event>
     ...
  </QueueConfiguration>
   ...
</NotificationConfiguration>
```

**Para publicar mensagens de eventos em um tópico do SNS**  
Para definir um tópico do SNS como o destino de notificação para tipos de eventos específicos, adicione o `TopicConfiguration`.

```
<NotificationConfiguration>
  <TopicConfiguration>
     <Id>{{optional-id-string}}</Id>
     <Topic>{{sns-topic-arn}}</Topic>
     <Event>{{event-type}}</Event>
     <Event>{{event-type}}</Event>
      ...
  </TopicConfiguration>
   ...
</NotificationConfiguration>
```

**Para invocar a função do AWS Lambda e fornecer uma mensagem de evento como um argumento**  
Para definir uma função do Lambda como o destino de notificação para tipos de evento específicos, adicione o `CloudFunctionConfiguration`.

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>   
     <Id>{{optional-id-string}}</Id>   
     <CloudFunction>{{cloud-function-arn}}</CloudFunction>        
     <Event>{{event-type}}</Event>      
     <Event>{{event-type}}</Event>      
      ...  
  </CloudFunctionConfiguration>
   ...
</NotificationConfiguration>
```

**Para remover todas as notificações configuradas em um bucket**  
Para remover todas as notificações configuradas em um bucket, salve um elemento `<NotificationConfiguration/>` vazio no sub-recurso *notificação*. 

Quando o Amazon S3 detecta um evento do tipo específico, ele publica uma mensagem com as informações do evento. Para obter mais informações, consulte [Estrutura de mensagens de evento](notification-content-structure.md). 

Para obter mais informações sobre como configurar notificações de eventos, consulte os seguintes tópicos: 
+ [Demonstração: configurar um bucket para notificações (tópico do SNS ou fila do SQS)](ways-to-add-notification-config-to-bucket.md).
+ [Configurar notificações de eventos usando filtragem de nomes de chave de objeto](notification-how-to-filtering.md)