

# Notificações de eventos do Amazon S3
<a name="EventNotifications"></a>

Você pode usar o recurso Notificações de eventos do Amazon S3 para receber notificações quando determinados eventos acontecerem no bucket do S3. Para habilitar notificações, adicione uma configuração de notificação que identifique os eventos que deseja que o Amazon S3 publique. Verifique se ele também identifica os destinos para os quais você deseja que o Amazon S3 envie as notificações. Armazene essa configuração no sub-recurso *notification* associado a um bucket. Para obter mais informações, consulte [Opções de configuração de buckets de uso geral](UsingBucket.md#bucket-config-options-intro). O Amazon S3 fornece uma API para gerenciamento desse sub-recurso. 

**Importante**  
As notificações de eventos do Amazon S3 são projetadas para serem entregues pelo menos uma vez. Em geral, as notificações de eventos são entregues em segundos, mas, às vezes, podem levar um minuto ou mais. 

## Visão geral das notificações de eventos do Amazon S3
<a name="notification-how-to-overview"></a>

Atualmente, o Amazon S3 pode publicar notificações para os seguintes eventos:
+ Eventos de criação de novos objetos
+ Eventos de remoção de objetos
+ Eventos de restauração de objetos
+ Eventos de perda de objeto com Reduced Redundancy Storage (RRS)
+ Eventos de replicação
+ Eventos de validade do S3 Lifecycle
+ Eventos de transição do S3 Lifecycle
+ Eventos de arquivamento automático do S3 Intelligent-Tiering
+ Eventos de marcação de objetos
+ Eventos PUT de ACL de objeto

Para obter descrições completas de todos os tipos de evento compatíveis, consulte [Tipos de evento compatíveis com SQS, SNS e Lambda](notification-how-to-event-types-and-destinations.md#supported-notification-event-types). 

O Amazon S3 pode enviar mensagens de notificação de eventos aos seguintes destinos. Você especifica o valor do nome de recurso da Amazon (ARN) desses destinos na configuração de notificação.
+ Amazon Simple Notification Service (Amazon SNS) topics
+ Filas do Amazon Simple Queue Service (Amazon SQS)
+ AWS LambdaFunção 
+ Amazon EventBridge

Para obter mais informações, consulte [Destinos de eventos suportados](notification-how-to-event-types-and-destinations.md#supported-notification-destinations).

**nota**  
As filas FIFO (primeiro entrar, primeiro a sair) do Amazon Simple Queue Service não são compatíveis como destino de notificação de evento do Amazon S3. Para enviar uma notificação de um evento do Amazon S3 para uma fila FIFO do Amazon SQS, você pode usar o Amazon EventBridge. Para obter mais informações, consulte [Habilitar o Amazon EventBridge](enable-event-notifications-eventbridge.md).

**Atenção**  
Se a notificação for gravada no mesmo bucket que aciona a notificação, isso poderá causar um loop de execução. Por exemplo, se o bucket acionar uma função do Lambda toda vez que houver um upload de objeto, e a função fizer upload de um objeto no bucket, a função será acionada indiretamente. Para evitar isso, use dois buckets ou configure o trigger para só se aplicar a um prefixo usado em objetos recebidos.  
Para obter mais informações e um exemplo de uso de notificações do Amazon S3 com AWS Lambda, consulte [Uso do AWS Lambda com o Amazon S3](https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html) no *Guia do desenvolvedor do AWS Lambda*. 

Para obter mais informações sobre o número de configurações de notificação de eventos que você pode criar por bucket, consulte [Cotas de serviço do Amazon S3](https://docs.aws.amazon.com/general/latest/gr/s3.html#limits_s3) na *Referência geral da AWS*.

Para obter mais informações sobre notificações de eventos do S3, consulte as seções a seguir.

**Topics**
+ [Visão geral das notificações de eventos do Amazon S3](#notification-how-to-overview)
+ [Tipos e destinos de notificações de evento](notification-how-to-event-types-and-destinations.md)
+ [Usar o Amazon SQS, o Amazon SNS e o Lambda](how-to-enable-disable-notification-intro.md)
+ [Usar o EventBridge](EventBridge.md)

# Tipos e destinos de notificações de evento
<a name="notification-how-to-event-types-and-destinations"></a>

O Amazon S3 oferece suporte a vários tipos de notificação de eventos e destinos nos quais as notificações podem ser publicadas. Você pode especificar o tipo de evento e o destino ao configurar suas notificações de eventos. Somente um destino pode ser especificado para cada notificação de evento. As notificações de eventos do Amazon S3 enviam uma entrada de evento para cada mensagem de notificação.

**Topics**
+ [Destinos de eventos suportados](#supported-notification-destinations)
+ [Tipos de evento compatíveis com SQS, SNS e Lambda](#supported-notification-event-types)
+ [Tipos de evento compatíveis com o Amazon EventBridge](#supported-notification-event-types-eventbridge)
+ [Ordenação de eventos e eventos duplicados](#event-ordering-and-duplicate-events)

## Destinos de eventos suportados
<a name="supported-notification-destinations"></a>

O Amazon S3 pode enviar mensagens de notificação de eventos aos seguintes destinos.
+ Amazon Simple Notification Service (Amazon SNS) topics
+ Filas do Amazon Simple Queue Service (Amazon SQS)
+ AWS Lambda
+ Amazon EventBridge

No entanto, somente um tipo de destino pode ser especificado para cada notificação de evento.

**nota**  
Você deve conceder ao Amazon S3 permissões para postar mensagens em um tópico do Amazon SNS ou em uma fila do Amazon SQS. Você também deve conceder permissão ao Amazon S3 para invocar uma função do AWS Lambda em seu nome. Para obter instruções sobre como conceder essas permissões, consulte [Conceder permissões para publicar mensagens de notificação de vento a um destino](grant-destinations-permissions-to-s3.md). 

### Tópico do Amazon SNS
<a name="amazon-sns-topic"></a>

O Amazon SNS é um serviço de mensagens por push flexível e totalmente gerenciado. Você pode usar esse serviço para enviar mensagens por push para dispositivos móveis ou serviços distribuídos. Com o SNS, você pode publicar uma mensagem uma vez e entregá-la uma ou mais vezes. Atualmente, o SNS padrão só é permitido como um destino de notificação de eventos do S3, enquanto o SNS FIFO não é permitido.

O Amazon SNS coordena e gerencia o envio e a entrega de mensagens para endpoints ou clientes assinantes. Você pode usar o console do Amazon SNS para criar um tópico do Amazon SNS para o qual suas notificações podem ser enviadas. 

O tópico deve estar na mesma Região da AWS que o bucket do Amazon S3. Para obter instruções sobre como criar um tópico do Amazon SNS, consulte [Conceitos básicos do Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html) no *Guia do desenvolvedor do Amazon Simple Notification Service* e as [Perguntas frequentes do Amazon SNS](https://aws.amazon.com/sns/faqs/).

Antes de poder usar o tópico do Amazon SNS criado como um destino de notificação de evento, você precisará de:
+ O Nome de recurso da Amazon (ARN) do tópico do Amazon SNS
+ Uma assinatura válida do tópico do Amazon SNS. Com ela, os assinantes do tópico são notificados quando uma mensagem é publicada em seu tópico do Amazon SNS.

### Fila do Amazon SQS
<a name="amazon-sqs-queue"></a>

O Amazon SQS oferece filas hospedadas confiáveis e escaláveis para o armazenamento de mensagens à medida que transitam entre computadores. Você pode usar o Amazon SQS para transmitir qualquer volume de dados sem exigir que outros serviços estejam sempre disponíveis. Você pode usar o console do Amazon SQS para criar uma fila do Amazon SQS para a qual suas notificações podem ser enviadas. 

A fila do Amazon SQS deve estar na mesma Região da AWS que o bucket do Amazon S3. Para obter instruções sobre como criar uma fila do Amazon SQS, consulte [O que é o Amazon Simple Queue Service](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) e [Conceitos básicos do Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) no *Guia do desenvolvedor do Amazon Simple Queue Service*. 

Antes de poder usar a fila do Amazon SQS como um destino de notificação de evento, você precisa do seguinte:
+ O nome do recurso da Amazon (ARN) da fila do Amazon SQS

**nota**  
As filas FIFO (primeiro entrar, primeiro a sair) do Amazon Simple Queue Service não são compatíveis como destino de notificação de evento do Amazon S3. Para enviar uma notificação de um evento do Amazon S3 para uma fila FIFO do Amazon SQS, você pode usar o Amazon EventBridge. Para obter mais informações, consulte [Habilitar o Amazon EventBridge](enable-event-notifications-eventbridge.md).

### Função Lambda
<a name="lambda-function"></a>

É possível usar o AWS Lambda para estender outros serviços da AWS com lógica personalizada ou criar seu próprio back-end que opere de acordo com a escala, a performance e a segurança da AWS. Com o Lambda, é possível criar aplicações discretas orientadas por eventos que são executadas somente quando necessário. Você também pode usá-lo para escalar essas aplicações automaticamente de poucas solicitações por dia a milhares por segundo. 

O Lambda pode executar código personalizado em resposta a eventos do bucket do Amazon S3. Carregue o código personalizado no Lambda e crie o que é chamado de função Lambda. Quando o Amazon S3 detecta um evento de um tipo específico, ele pode publicar o evento no AWS Lambda e invocar sua função no Lambda. Em resposta, o Lambda executa a função. Um tipo de evento que ele pode detectar, por exemplo, é um evento criado por objeto.

Você pode usar o console do AWS Lambda para criar uma função do Lambda que use a infraestrutura da AWS para executar o código em seu nome. A função do Lambda deve estar na mesma região que seu bucket do S3. Você também deve ter o nome ou o ARN de uma função do Lambda para configurar a função do Lambda como um destino de notificação de evento.

**Atenção**  
Se a notificação for gravada no mesmo bucket que aciona a notificação, isso poderá causar um loop de execução. Por exemplo, se o bucket acionar uma função do Lambda toda vez que houver um upload de objeto, e a função fizer upload de um objeto no bucket, a função será acionada indiretamente. Para evitar isso, use dois buckets ou configure o trigger para só se aplicar a um prefixo usado em objetos recebidos.  
Para obter mais informações e um exemplo de uso de notificações do Amazon S3 com AWS Lambda, consulte [Uso do AWS Lambda com o Amazon S3](https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html) no *Guia do desenvolvedor do AWS Lambda*. 

### Amazon EventBridge
<a name="eventbridge-dest"></a>

O Amazon EventBridge é um barramento de eventos sem servidor, que recebe eventos de produtos da AWS. É possível configurar regras para corresponder a eventos e entregá-los a destinos, como um produto da AWS ou um endpoint de HTTP. Para obter mais informações, consulte [O que é o EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) no *Guia do usuário do Amazon EventBridge*.

Ao contrário de outros destinos, você pode habilitar ou desabilitar eventos a serem entregues ao EventBridge para um bucket. Se você habilitar a entrega, todos os eventos serão enviados ao EventBridge. Além disso, você pode usar regras do EventBridge para encaminhar eventos para outros destinos.

## Tipos de evento compatíveis com SQS, SNS e Lambda
<a name="supported-notification-event-types"></a>

O Amazon S3 pode publicar eventos dos seguintes tipos. Você especifica esses tipos de evento na configuração de notificação.


|  Tipos de evento |  Descrição  | 
| --- | --- | 
|  `s3:TestEvent`  |  Quando uma notificação é habilitada, o Amazon S3 publica uma notificação de teste. Isso serve para verificar se o tópico existe e se o proprietário do bucket tem permissão para publicar o tópico especificado. Se a ativação da notificação falhar, você não receberá a notificação de teste.  | 
|  `s3:ObjectCreated:*` `s3:ObjectCreated:Put` `s3:ObjectCreated:Post` `s3:ObjectCreated:Copy` `s3:ObjectCreated:CompleteMultipartUpload`  |  As operações de API do Amazon S3, como `PUT`, `POST` e `COPY`, podem criar um objeto. Com esses tipos de evento, você pode habilitar notificações quando um objeto é criado usando uma operação de API específica. Se preferir, você pode usar o tipo de evento `s3:ObjectCreated:*` para solicitar notificação, qualquer que seja a API usada para criar um objeto.  `s3:ObjectCreated:CompleteMultipartUpload` inclui objetos criados usando [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) para operações de cópia.  | 
|  `s3:ObjectRemoved:*` `s3:ObjectRemoved:Delete` `s3:ObjectRemoved:DeleteMarkerCreated`  |  Usando os tipos de evento `ObjectRemoved`, é possível habilitar a notificação quando um objeto ou um lote de objetos é removido de um bucket. Você pode solicitar uma notificação quando um objeto for excluído ou quando um objeto com versionamento for excluído permanentemente usando o tipo de evento `s3:ObjectRemoved:Delete`. Se preferir, você pode solicitar uma notificação quando um marcador de exclusão for criado para um objeto com versionamento usando `s3:ObjectRemoved:DeleteMarkerCreated`. Para obter instruções sobre como excluir objetos com versionamento, consulte [Excluir versões de objetos de um bucket com versionamento habilitado](DeletingObjectVersions.md). Você também pode usar um caractere curinga `s3:ObjectRemoved:*` para solicitar uma notificação sempre que um objeto for excluído.  Essas notificações de eventos não alertam sobre exclusões automáticas de configurações de ciclo de vida ou operações que falharam.  | 
|  `s3:ObjectRestore:*` `s3:ObjectRestore:Post` `s3:ObjectRestore:Completed` `s3:ObjectRestore:Delete`  |  Com os tipos de evento `ObjectRestore`, é possível receber notificações de iniciação e conclusão de eventos ao restaurar objetos das classes de armazenamento S3 Glacier Flexible Retrieval, S3 Glacier Deep Archive, nível de acesso S3 Intelligent-Tiering Archive e nível de acesso S3 Intelligent-Tiering Deep Archive. Você também pode receber notificações quando a cópia restaurada de um objeto expirar. O tipo de evento `s3:ObjectRestore:Post` notifica você sobre o início da restauração de objetos. O tipo de evento `s3:ObjectRestore:Completed` notifica você sobre a conclusão da restauração. O tipo de evento `s3:ObjectRestore:Delete` notifica você quando a cópia temporária de um objeto restaurado expira.  | 
| s3:ReducedRedundancyLostObject | Você recebe esse evento de notificação quando o Amazon S3 detecta que um objeto da classe de armazenamento RRS foi perdido. | 
|  `s3:Replication:*` `s3:Replication:OperationFailedReplication` `s3:Replication:OperationMissedThreshold` `s3:Replication:OperationReplicatedAfterThreshold` `s3:Replication:OperationNotTracked`  |  Com tipos de evento `Replication`, é possível receber notificações de configurações de replicação com métricas de replicação do S3 ou o Controle de Tempo de Replicação do S3 (S3 RTC) habilitados. Você pode monitorar o progresso minuto a minuto de eventos de replicação, rastreando bytes pendentes, operações pendentes e latência de replicação. Para obter informações sobre métricas de replicação, consulte . [Monitorar a replicação com métricas, notificações de eventos e status](replication-metrics.md). [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html)  | 
|  `s3:LifecycleExpiration:*` `s3:LifecycleExpiration:Delete` `s3:LifecycleExpiration:DeleteMarkerCreated`  |  Ao usar os tipos de evento `LifecycleExpiration`, você poderá receber uma notificação sempre que o Amazon S3 excluir um objeto com base na configuração de ciclo de vida do S3. O tipo de evento `s3:LifecycleExpiration:Delete` notifica você quando um objeto em um bucket sem versionamento é excluído. Ele também notifica quando uma versão de objeto é excluída permanentemente por uma configuração do S3 Lifecycle. O tipo de evento `s3:LifecycleExpiration:DeleteMarkerCreated` notifica você quando o S3 Lifecycle cria um marcador de exclusão quando uma versão atual de um objeto no bucket com versionamento é excluída.   | 
| s3:LifecycleTransition | Você recebe esse evento de notificação quando um objeto é transferido para outra classe de armazenamento do Amazon S3 por uma configuração do S3 Lifecycle. | 
| s3:IntelligentTiering | Você recebe esse evento de notificação quando um objeto dentro da classe de armazenamento S3 Intelligent-Tiering for movido para o nível de acesso de arquivo ou para o nível de acesso de arquivo profundo.  | 
|  `s3:ObjectTagging:*` `s3:ObjectTagging:Put` `s3:ObjectTagging:Delete`  |  Usando os tipos de evento `ObjectTagging`, é possível habilitar a notificação quando uma tag de objeto é adicionada ou excluída de um objeto. O tipo de evento `s3:ObjectTagging:Put` notifica você quando ocorre PUT de uma etiqueta em um objeto ou quando uma etiqueta existente é atualizada. O tipo de evento `s3:ObjectTagging:Delete` notifica você quando uma etiqueta é removida de um objeto. | 
| s3:ObjectAcl:Put | Você recebe esse evento de notificação quando ocorre PUT de uma ACL em um objeto ou quando uma ACL existente é alterada. Não é gerado evento quando uma solicitação não resulta em alteração na ACL de um objeto. | 

## Tipos de evento compatíveis com o Amazon EventBridge
<a name="supported-notification-event-types-eventbridge"></a>

Para obter uma lista de tipos de eventos que o Amazon S3 enviará ao Amazon EventBridge, consulte [Usar o EventBridge](EventBridge.md).

## Ordenação de eventos e eventos duplicados
<a name="event-ordering-and-duplicate-events"></a>

As notificações de eventos do Amazon S3 foram projetadas para entregar notificações pelo menos um dia, mas não há garantia de que cheguem na mesma ordem em que os eventos ocorreram. Em raras ocasiões, o mecanismo de nova tentativa do Amazon S3 pode causar notificações de eventos do S3 duplicadas para o mesmo evento de objeto. Consulte mais informações sobre como lidar com eventos duplicados ou fora de ordem em [Manage event ordering and duplicate events with Amazon S3 Event Notifications](https://aws.amazon.com/blogs/storage/manage-event-ordering-and-duplicate-events-with-amazon-s3-event-notifications/) no *Blog de armazenamento do AWS*.

# 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)

# Conceder permissões para publicar mensagens de notificação de vento a um destino
<a name="grant-destinations-permissions-to-s3"></a>

É necessário garantir à entidade principal do Amazon S3 as permissões necessárias para chamar a API relevante para publicar mensagens em um tópico do SNS, uma fila do SQS ou uma função Lambda. Isso serve para que o Amazon S3 possa publicar mensagens de notificação de eventos em um destino.

Para solucionar problemas de publicação de mensagens de notificação de eventos em um destino, consulte [Solução de problemas para publicar notificações de eventos do Amazon S3 em um tópico do Amazon Simple Notification Service](https://repost.aws/knowledge-center/sns-not-receiving-s3-event-notifications).

**Topics**
+ [Conceder permissões para invocar uma função do AWS Lambda](#grant-lambda-invoke-permission-to-s3)
+ [Conceder permissões para publicar mensagens em um tópico do SNS ou em uma fila do SQS](#grant-sns-sqs-permission-for-s3)

## Conceder permissões para invocar uma função do AWS Lambda
<a name="grant-lambda-invoke-permission-to-s3"></a>

O Amazon S3 publica mensagens de eventos no AWS Lambda invocando uma função do Lambda e fornecendo a mensagem de evento como um argumento.

Ao usar o console do Amazon S3 para configurar notificações de eventos em um bucket do Amazon S3 para uma função do Lambda, o console configurará as permissões necessárias na função Lambda. Isso ocorre para que o Amazon S3 tenha permissões para invocar a função do bucket. Para obter mais informações, consulte [Habilitar e configurar notificações de eventos usando o console do Amazon S3](enable-event-notifications.md). 

Você também pode conceder permissões do Amazon S3 do AWS Lambda para invocar a função do Lambda. Para obter mais informações, consulte [Tutorial: uso do AWS Lambda com o Amazon S3](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) no *Guia do desenvolvedor do AWS Lambda*.

## Conceder permissões para publicar mensagens em um tópico do SNS ou em uma fila do SQS
<a name="grant-sns-sqs-permission-for-s3"></a>

Para conceder ao Amazon S3 permissões para publicar mensagens em um tópico do SNS ou uma fila do SQS, anexe uma política do AWS Identity and Access Management (IAM) ao tópico do SNS ou à fila do SQS de destino. 

Para obter um exemplo de como anexar uma política a um tópico do SNS ou a uma fila do SQS, 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). Para obter mais informações sobre permissões, consulte os tópicos a seguir:
+ [Exemplos de casos de controle de acesso do Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/AccessPolicyLanguage_UseCases_Sns.html) no *Guia do desenvolvedor do Amazon Simple Notification Service*
+ [Gerenciamento de identidade e acesso no Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html) no *Guia do desenvolvedor do Amazon Simple Queue Service*

### Política do IAM para um tópico do SNS de destino
<a name="sns-topic-policy"></a>

Veja a seguir um exemplo de uma política do AWS Identity and Access Management (IAM) anexada ao tópico do SNS de destino. Para obter mais instruções sobre como usar essa política para configurar um tópico do Amazon SNS de destino para notificações de eventos, 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).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "Example SNS topic policy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SNS:Publish"
            ],
            "Resource": "arn:aws:sns:us-east-1:111122223333:example-sns-topic",
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-123456789012"
                }
            }
        }
    ]
}
```

------

### Política do IAM para uma fila do SQS de destino
<a name="sqs-queue-policy"></a>

Veja a seguir um exemplo de uma política do IAM anexada à fila do SQS de destino. Para obter mais instruções sobre como usar essa política para configurar uma fila do Amazon SQS de destino para notificações de eventos, 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).

Para usar essa política, você deve atualizar o ARN da fila do Amazon SQS, o nome do bucket e o ID da Conta da AWS do proprietário do bucket.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SQS:SendMessage"
            ],
            "Resource": "arn:aws:sqs:us-east-1:111122223333:queue-name",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-123456789012"
                }
            }
        }
    ]
}
```

------

Tanto para as políticas do IAM do Amazon SNS e do Amazon SQS, você pode especificar a condição `StringLike` na política, em vez da condição `ArnLike`.

Quando o `ArnLike` é usado, os elementos partição, serviço, ID da conta, tipo de recurso e ID parcial do recurso do ARN devem corresponder exatamente ao ARN no contexto da solicitação. Somente a região e o caminho do recurso permitem a correspondência parcial.

 Quando `StringLike` é usado em vez de `ArnLike`, a correspondência ignora a estrutura do ARN e permite a correspondência parcial, independentemente da parte que foi substituída pelo curinga. Para obter mais informações, consulte [Elementos de política JSON do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) no *Guia do usuário do IAM*.

```
"Condition": {         
  "StringLike": { "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket" }
  }
```

### Política de chave do AWS KMS
<a name="key-policy-sns-sqs"></a>

Se a fila do SQS ou os tópicos do SNS estiverem criptografados com uma chave gerenciada pelo cliente do AWS Key Management Service (AWS KMS), será necessário conceder permissão para que a entidade de serviço do Amazon S3 trabalhe com a fila ou os tópicos criptografados. Para conceder a permissão à entidade de serviço do Amazon S3, adicione a instrução a seguir à política de chave para a chave gerenciada pelo cliente.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Para obter mais informações sobre políticas de chave do AWS KMS, consulte [Uso de políticas de chave no AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) no *Guia do desenvolvedor do AWS Key Management Service*. 

Para obter mais informações sobre como usar a criptografia no lado do servidor com o AWS KMS para o Amazon SQS e o Amazon SNS, consulte:
+ [Gerenciamento de chaves](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html) no *Guia do desenvolvedor do Amazon Simple Notification Service*.
+ [Gerenciamento de chaves](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html) no *Guia do desenvolvedor do Amazon Simple Queue Service*.
+ [Criptografia de mensagens publicadas no Amazon SNS com o AWS KMS](https://aws.amazon.com/blogs/compute/encrypting-messages-published-to-amazon-sns-with-aws-kms/) no *Blog de computação da AWS*.

# Habilitar e configurar notificações de eventos usando o console do Amazon S3
<a name="enable-event-notifications"></a>

Você pode habilitar certos eventos de bucket de uso geral do Amazon S3 para enviar uma mensagem de notificação a um destino sempre que ocorrer um desses eventos. Esta seção explica como usar o console do Amazon S3 para habilitar notificações de evento. Para obter informações sobre como usar notificações de eventos com os AWS SDKs e as APIs REST do Amazon S3, consulte [Configuração de notificações de eventos de forma programática](how-to-enable-disable-notification-intro.md#event-notification-configuration). 

**Pré-requisitos**: antes de habilitar as notificações de eventos para seu bucket, você deve configurar um dos tipos de destino e, em seguida, configurar permissões. Para obter mais informações, consulte [Destinos de eventos suportados](notification-how-to-event-types-and-destinations.md#supported-notification-destinations) e [Conceder permissões para publicar mensagens de notificação de vento a um destino](grant-destinations-permissions-to-s3.md).

**nota**  
As filas FIFO (primeiro entrar, primeiro a sair) do Amazon Simple Queue Service não são compatíveis como destino de notificação de evento do Amazon S3. Para enviar uma notificação de um evento do Amazon S3 para uma fila FIFO do Amazon SQS, você pode usar o Amazon EventBridge. Para obter mais informações, consulte [Habilitar o Amazon EventBridge](enable-event-notifications-eventbridge.md).

**Topics**
+ [Habilitar notificações do Amazon SNS, Amazon SQS ou Lambda usando o console do Amazon S3](#enable-event-notifications-sns-sqs-lam)

## Habilitar notificações do Amazon SNS, Amazon SQS ou Lambda usando o console do Amazon S3
<a name="enable-event-notifications-sns-sqs-lam"></a>

**Para habilitar e configurar notificações de evento para um bucket do S3**

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

1. No painel de navegação à esquerda, escolha **Buckets de uso geral**.

1. Na lista de buckets, escolha o nome do bucket para o qual você deseja habilitar eventos.

1. Escolha **Properties (Propriedades)**.

1. Navegue até a seção **Event Notifications (Notificações de eventos)** e escolha **Create event notification (Criar notificação de evento)**.

1. Na seção **General configuration (Configuração geral)**, especifique o nome do evento descritivo para sua notificação de evento. Opcionalmente, você também pode especificar um prefixo e um sufixo para limitar as notificações a objetos com chaves terminando nos caracteres especificados.

   1. Insira uma descrição para o **Event name (Nome do evento)**.

      Se você não inserir um nome, um identificador exclusivo global (GUID) será gerado e usado para o nome. 

   1. (Opcional) Para filtrar notificações de eventos por prefixo, insira um **Prefix** (Prefixo). 

      Por exemplo, é possível configurar um filtro de prefixo para receber notificações somente quando os arquivos são adicionados a uma pasta específica (por exemplo, `images/`). 

   1. (Opcional) Para filtrar notificações de eventos por sufixo, insira um **Suffix** (Sufixo). 

      Para obter mais informações, consulte [Configurar notificações de eventos usando filtragem de nomes de chave de objeto](notification-how-to-filtering.md). 

1. Na seção **Event types** (Tipos de evento), selecione um ou mais tipos de eventos para os quais você deseja receber notificações. 

   Para obter uma lista dos diferentes tipos de evento, consulte [Tipos de evento compatíveis com SQS, SNS e Lambda](notification-how-to-event-types-and-destinations.md#supported-notification-event-types).

1. Na seção **Destination (Destino)**, escolha o destino da notificação de evento. 
**nota**  
Antes de publicar notificações de eventos, você deve conceder à entidade principal do Amazon S3 as permissões necessárias para chamar a API relevante. Desse modo, ela pode publicar notificações em uma função Lambda, tópico do SNS ou fila SQS.

   1. Selecione o tipo de destino: **Lambda Function (Função do Lambda)**, **SNS Topic (Tópico do SNS)** ou **SQS Queue (Fila do SQS)**.

   1. Depois de escolher o tipo de destino, escolha uma função, um tópico ou uma fila na lista.

   1. Como alternativa, se você preferir especificar um nome de recurso da Amazon (ARN), selecione **Enter ARN** (Inserir ARN) e insira o ARN.

   Para obter mais informações, consulte [Destinos de eventos suportados](notification-how-to-event-types-and-destinations.md#supported-notification-destinations).

1. Escolha **Save changes** (Salvar alterações) e o Amazon S3 enviará uma mensagem de teste para o destino de notificação de evento.

## 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)

# Demonstração: configurar um bucket para notificações (tópico do SNS ou fila do SQS)
<a name="ways-to-add-notification-config-to-bucket"></a>

Você pode receber notificações do Amazon S3 usando o Amazon Simple Notification Service (Amazon SNS) ou o Amazon Simple Queue Service (Amazon SQS). Nesta demonstração, você adiciona uma configuração de notificação ao seu bucket usando um tópico do Amazon SNS e uma fila do Amazon SQS.

**nota**  
As filas FIFO (primeiro entrar, primeiro a sair) do Amazon Simple Queue Service não são compatíveis como destino de notificação de evento do Amazon S3. Para enviar uma notificação de um evento do Amazon S3 para uma fila FIFO do Amazon SQS, você pode usar o Amazon EventBridge. Para obter mais informações, consulte [Habilitar o Amazon EventBridge](enable-event-notifications-eventbridge.md).

**Topics**
+ [Resumo da demonstração](#notification-walkthrough-summary)
+ [Etapa 1: Criar uma fila do Amazon SQS](#step1-create-sqs-queue-for-notification)
+ [Etapa 2: Criar um tópico do Amazon SNS](#step1-create-sns-topic-for-notification)
+ [Etapa 3: Adicionar a configuração de notificação para o bucket](#step2-enable-notification)
+ [Etapa 4: Testar a configuração](#notification-walkthrough-1-test)

## Resumo da demonstração
<a name="notification-walkthrough-summary"></a>

Esta demonstração ajuda você a fazer o seguinte:
+ Publicar eventos do tipo `s3:ObjectCreated:*` em uma fila do Amazon SQS.
+ Publicar eventos do tipo `s3:ReducedRedundancyLostObject` em um tópico do Amazon SNS.

Para obter informações sobre configuração de notificação, consulte [Usar o Amazon SQS, o Amazon SNS e o Lambda](how-to-enable-disable-notification-intro.md).

Você pode executar todas essas etapas usando o console, sem escrever nenhum código. Além disso, exemplos de código que usam os AWS SDKs for Java e .NET também são fornecidos para ajudar a adicionar configurações de notificação de maneira programática.

Este procedimento inclui as seguintes etapas:

1. Crie uma fila do Amazon SQS.

   Usando o console do Amazon SQS, crie uma fila do SQS. É possível acessar todas as mensagens que o Amazon S3 envia à fila de forma programática. Porém, para esta demonstração, verifique as mensagens de notificação no console. 

   Anexe uma política de acesso à fila para conceder ao Amazon S3 permissão para postar mensagens.

1. Crie um tópico do Amazon SNS.

   Usando o console do Amazon SNS, crie um tópico do SNS e assine o tópico. Assim, todos os eventos postados nele são entregues a você. Especifique o e-mail como o protocolo de comunicações. Depois de criar um tópico, o Amazon SNS envia um e-mail. Use o link no e-mail para confirmar a assinatura do tópico. 

   Anexe uma política de acesso ao tópico para conceder ao Amazon S3 permissão para postar mensagens. 

1. Adicione a configuração de notificação a um bucket. 

## Etapa 1: Criar uma fila do Amazon SQS
<a name="step1-create-sqs-queue-for-notification"></a>

Siga as etapas para criar e assinar uma fila do Amazon Simple Queue Service (Amazon SQS).

1. Usando o console do Amazon SQS, crie uma fila. Para obter instruções, consulte [Conceitos básicos do Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) no *Guia do desenvolvedor do Amazon Simple Queue Service*. 

1. Substitua a política de acesso que está anexada à fila pela política a seguir.

   1. No console do Amazon SQS, na lista **Queues** (Filas), escolha o nome da fila.

   1. Na guia **Access policy** (Política de acesso), escolha **Edit** (Editar).

   1. Substitua a política de acesso que está anexada à fila. Nele, forneça o ARN do Amazon SQS, o nome do bucket de origem e o ID da conta do proprietário do bucket.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Id": "example-ID",
          "Statement": [
              {
                  "Sid": "example-statement-ID",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "s3.amazonaws.com"
                  },
                  "Action": [
                      "SQS:SendMessage"
                  ],
                  "Resource": "arn:aws:sqs:us-west-2:111122223333:s3-notification-queue",
                  "Condition": {
                      "ArnLike": {
                          "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1"
                      },
                      "StringEquals": {
                          "aws:SourceAccount": "bucket-owner-123456789012"
                      }
                  }
              }
          ]
      }
      ```

------

   1. Escolha **Salvar**.

1. (Opcional) Se a fila do Amazon SQS ou o tópico do Amazon SNS for habilitado para criptografia no lado do servidor com o AWS Key Management Service (AWS KMS), adicione a política a seguir à chave de criptografia simétrica correspondente gerenciada pelo cliente. 

   Adicione a política a uma chave gerenciada pelo cliente porque você não pode modificar a chave gerenciada pela AWS para o Amazon SQS ou o Amazon SNS. 

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "example-ID",
       "Statement": [
           {
               "Sid": "example-statement-ID",
               "Effect": "Allow",
               "Principal": {
                   "Service": "s3.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   Para obter mais informações sobre como usar o SSE para o Amazon SQS e o Amazon SNS com o AWS KMS, consulte:
   + [Gerenciamento de chaves](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html) no *Guia do desenvolvedor do Amazon Simple Notification Service*.
   + [Gerenciamento de chaves](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html) no *Guia do desenvolvedor do Amazon Simple Queue Service*.

1. Anotar o ARN da fila. 

   A fila do SQS que você criou é outro recurso em sua Conta da AWS. Ele tem um nome do recurso da Amazon (ARN) exclusivo. Esse ARN será necessário na próxima etapa. O ARN tem este formato:

   ```
   arn:aws:sqs:aws-region:account-id:queue-name
   ```

## Etapa 2: Criar um tópico do Amazon SNS
<a name="step1-create-sns-topic-for-notification"></a>

Siga as etapas para criar e assinar um tópico do Amazon SNS.

1. Usando o console do Amazon SNS, crie um tópico. Para obter instruções, consulte [Criação de um tópico do Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) no *Guia do desenvolvedor do Amazon Simple Notification Service*. 

1. Inscreva-se no tópico. Neste exercício, use o e-mail como o protocolo de comunicação. Para obter instruções, consulte [Assinatura de um tópico do Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) no *Guia do desenvolvedor do Amazon Simple Notification Service*. 

   Você receberá um e-mail solicitando a confirmação da assinatura do tópico. Confirme a assinatura. 

1. Substitua a política de acesso anexada ao tópico pela seguinte política. Nele, forneça o ARN do tópico SNS, o nome do bucket de origem e o ID da conta do proprietário do bucket.

1. Anote o ARN do tópico.

   O tópico do SNS que você criou é outro recurso em sua Conta da AWS e tem um ARN exclusivo. Você precisará desse ARN na próxima etapa. O ARN terá o seguinte formato:

   ```
   arn:aws:sns:aws-region:account-id:topic-name
   ```

## Etapa 3: Adicionar a configuração de notificação para o bucket
<a name="step2-enable-notification"></a>

Você pode habilitar notificações de bucket usando o console do Amazon S3 ou de forma programática usando os AWS SDKs. Escolha qualquer uma das opções para configurar notificações no bucket. Esta seção fornece exemplos de código que usam os AWS SDKs for Java e .NET.

### Opção A: habilitar notificações em um bucket usando o console
<a name="step2-enable-notification-using-console"></a>

Usando o console do Amazon S3, adicione uma configuração de notificação solicitando que o Amazon S3 faça o seguinte:
+ Publique eventos do tipo **Todos os eventos criados por objetos** na fila do Amazon SQS.
+ Publique eventos do tipo **Objeto em RRS perdido** no tópico do Amazon SNS.

Depois de salvar a configuração de notificação, o Amazon S3 posta uma mensagem de teste, que você recebe via e-mail. 

Para obter instruções, consulte [Habilitar e configurar notificações de eventos usando o console do Amazon S3](enable-event-notifications.md). 

### Opção B: habilitar notificações em um bucket usando os AWS SDKs
<a name="step2-enable-notification-using-awssdk-dotnet"></a>

------
#### [ .NET ]

O exemplo de código C\$1 a seguir fornece uma lista completa de códigos que adicionam uma configuração de notificação a um bucket. Você deve atualizar o código e fornecer o nome do bucket e o ARN do tópico do SNS. Para obter informações sobre como configurar e executar exemplos de código, consulte [Conceitos básicos do AWS SDK for .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) no *Guia do desenvolvedor do AWS SDK for .NET*. 

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class EnableNotificationsTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string snsTopic = "*** SNS topic ARN ***";
        private const string sqsQueue = "*** SQS topic ARN ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            EnableNotificationAsync().Wait();
        }

        static async Task EnableNotificationAsync()
        {
            try
            {
               PutBucketNotificationRequest request = new PutBucketNotificationRequest
                {
                    BucketName = bucketName
                };

                TopicConfiguration c = new TopicConfiguration
                {
                    Events = new List<EventType> { EventType.ObjectCreatedCopy },
                    Topic = snsTopic
                };
                request.TopicConfigurations = new List<TopicConfiguration>();
                request.TopicConfigurations.Add(c);
                request.QueueConfigurations = new List<QueueConfiguration>();
                request.QueueConfigurations.Add(new QueueConfiguration()
                {
                    Events = new List<EventType> { EventType.ObjectCreatedPut },
                    Queue = sqsQueue
                });
                
                PutBucketNotificationResponse response = await client.PutBucketNotificationAsync(request);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' ", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown error encountered on server. Message:'{0}' ", e.Message);
            }
        }
    }
}
```

------
#### [ Java ]

Para ver exemplos de como configurar notificações de bucket com o AWS SDK para Java, consulte [Process S3 event notifications](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ProcessS3EventNotification_section.html) na *Referência de API do Amazon S3*.

------

## Etapa 4: Testar a configuração
<a name="notification-walkthrough-1-test"></a>

Agora você pode testar a configuração carregando um objeto no bucket e verificando a notificação de evento no console do Amazon SQS. Para obter instruções, consulte [Receber uma mensagem](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.htmlReceiveMessage.html) na *seção “Conceitos básicos” do Guia do desenvolvedor do Amazon Simple Queue Service*. 

# Configurar notificações de eventos usando filtragem de nomes de chave de objeto
<a name="notification-how-to-filtering"></a>

Ao configurar uma notificação de evento do Amazon S3, você deve especificar quais tipos de evento suportados do Amazon S3 fazem com que o Amazon S3 envie a notificação. Se um tipo de evento que você não especificou ocorrer no bucket do S3, o Amazon S3 não enviará a notificação.

Você pode configurar as notificações para serem filtradas pelo prefixo e pelo sufixo do nome da chave de objetos. Por exemplo, é possível definir uma configuração para que uma notificação seja enviada para você apenas quando arquivos de imagem com uma extensão de nome de arquivo "`.jpg`" forem adicionados a um bucket. Ou ter uma configuração que entregue uma notificação a um tópico do Amazon SNS quando um objeto com o prefixo "`images/`" for adicionado ao bucket, e fazer com que notificações para objetos com um prefixo "`logs/`" no mesmo bucket sejam entregues a uma função do AWS Lambda. 

**nota**  
Um caractere curinga (“\$1”) não pode ser usado em filtros como um prefixo ou sufixo. Se seu prefixo ou sufixo contiver um espaço, você deverá substituí-lo pelo caractere “\$1”. Se você usar qualquer outro caractere especial no valor do prefixo ou sufixo, deverá inseri-los no [formato codificado em URL (codificado em porcentagem)](https://en.wikipedia.org/wiki/Percent-encoding). Para obter uma lista completa de caracteres especiais que devem ser convertidos em formato codificado em URL quando usados em um prefixo ou sufixo para notificações de eventos, consulte [Caracteres seguros](object-keys.md#object-key-guidelines-safe-characters).

É possível definir configurações de notificação que usem filtro de nomes de chaves de objetos no console do Amazon S3. Você pode fazer isso usando as APIs do Amazon S3 por meio dos AWS SDKs ou das APIs REST diretamente. Para obter informações sobre como usar a interface do usuário do console para definir uma configuração de notificação em um bucket, consulte [Habilitar e configurar notificações de eventos usando o console do Amazon S3](enable-event-notifications.md). 

O Amazon S3 armazena a configuração de notificação como XML no sub-recurso *notificação* associado a um bucket, conforme descrito em [Usar o Amazon SQS, o Amazon SNS e o Lambda](how-to-enable-disable-notification-intro.md). Use a estrutura XML do `Filter` para definir regras para que as notificações sejam filtradas pelo prefixo ou pelo sufixo do nome da chave de um objeto. Para obter informações sobre a estrutura XML `Filter`, consulte [Notificação de PUT Bucket](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTnotification.html) na *Referência da API do Amazon Simple Storage Service*. 

Configurações de notificação que usam o `Filter` não podem definir regras de filtragem com prefixos sobrepostos, sufixos sobrepostos ou prefixos e sufixos sobrepostos. As seções a seguir têm exemplos de configurações de notificação válidas com filtragem de nome de chave de objeto. Elas também contêm exemplos de configurações de notificação que não são válidas devido à sobreposição de prefixo e sufixo. 

**Topics**
+ [Exemplos de configurações válidas de notificação com filtragem de nome de chave de objeto](#notification-how-to-filtering-example-valid)
+ [Exemplos de configurações de notificação com sobreposição inválida de prefixo e sufixo](#notification-how-to-filtering-examples-invalid)

## Exemplos de configurações válidas de notificação com filtragem de nome de chave de objeto
<a name="notification-how-to-filtering-example-valid"></a>

A configuração de notificação a seguir contém uma configuração de fila que identifica uma fila do Amazon SQS para a qual o Amazon S3 publica eventos do tipo `s3:ObjectCreated:Put`. Os eventos são publicados sempre que um objeto que tenha um prefixo `images/` e um sufixo `jpg` é PUT em um bucket. 

```
<NotificationConfiguration>
  <QueueConfiguration>
      <Id>1</Id>
      <Filter>
          <S3Key>
              <FilterRule>
                  <Name>prefix</Name>
                  <Value>images/</Value>
              </FilterRule>
              <FilterRule>
                  <Name>suffix</Name>
                  <Value>jpg</Value>
              </FilterRule>
          </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:s3notificationqueue</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
</NotificationConfiguration>
```

A configuração de notificação a seguir tem vários prefixos não sobrepostos. A configuração define que as notificações para solicitações PUT na pasta `images/` vão para a fila A, enquanto as notificações para solicitações PUT na pasta `logs/` vão para a fila B.

```
<NotificationConfiguration>
  <QueueConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images/</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-A</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
  <QueueConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>logs/</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-B</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
</NotificationConfiguration>
```

A configuração de notificação a seguir tem vários sufixos não sobrepostos. A configuração define que todas as imagens `.jpg` recém-adicionadas ao bucket sejam processadas por cloud-function-A do Lambda e que todas as imagens `.png` recém-adicionadas sejam processadas por cloud-function-B. Os sufixos `.png` e `.jpg` não se sobrepõem, apesar de terminarem com a mesma letra. Dois sufixos são considerados sobrepostos se determinada string puder terminar com ambos os sufixos. Uma string não pode terminar com `.png` e com `.jpg`, então os sufixos na configuração de exemplo não são sufixos sobrepostos. 

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.jpg</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
  <CloudFunctionConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.png</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
</NotificationConfiguration>
```

As configurações de notificação que usam o `Filter` não podem definir regras de filtro com prefixos sobrepostos para os mesmos tipos de evento. Eles só podem fazer isso se os prefixos sobrepostos forem usados com sufixos que não são sobrepostos. A configuração de exemplo a seguir mostra como objetos criados com um prefixo comum, mas com sufixos não sobrepostos, podem ser entregues a destinos diferentes.

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images</Value>
                </FilterRule>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.jpg</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
  <CloudFunctionConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images</Value>
                </FilterRule>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.png</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
</NotificationConfiguration>
```

## Exemplos de configurações de notificação com sobreposição inválida de prefixo e sufixo
<a name="notification-how-to-filtering-examples-invalid"></a>

Na maioria das vezes, as configurações de notificação que usam `Filter` não podem definir regras de filtro com prefixos sobrepostos, sufixos sobrepostos ou combinações sobrepostas de prefixos e sufixos para os mesmos tipos de evento. Você pode ter prefixos sobrepostos, desde que os sufixos não se sobreponham. Para ver um exemplo, consulte [Configurar notificações de eventos usando filtragem de nomes de chave de objeto](#notification-how-to-filtering).

Você pode usar filtros de nomes de chave de objetos sobrepostos com diferentes tipos de evento. Por exemplo, você poderia criar uma configuração de notificação que usasse o prefixo `image/` para o tipo de evento `ObjectCreated:Put` e o prefixo `image/` para o tipo de evento `ObjectRemoved:*`. 

Você receberá um erro se tentar salvar uma configuração de notificação que tenha filtros de nomes sobrepostos inválidos para os mesmos tipos de evento ao usar o console ou a API do Amazon S3. Esta seção mostra exemplos de configurações de notificação que não são válidas devido aos filtros de nomes sobrepostos. 

Presume-se que qualquer regra de configuração de notificação tenha um prefixo e um sufixo padrão que correspondam a qualquer outro prefixo e um sufixo, respectivamente. A configuração de notificação a seguir não é válida porque tem prefixos sobrepostos. Especificamente, o prefixo raiz sobrepõe qualquer outro prefixo. O mesmo se aplica se você usar um sufixo em vez de um prefixo neste exemplo. O sufixo raiz sobrepõe qualquer outro sufixo.

```
<NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-two</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>prefix</Name>
                     <Value>images</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>             
</NotificationConfiguration>
```

A configuração de notificação a seguir não é válida porque tem sufixos sobrepostos. Dois sufixos são considerados sobrepostos se determinada string puder terminar com ambos os sufixos. Uma string pode terminar com `jpg` e `pg`. Portanto, os sufixos se sobrepõem. O mesmo vale para prefixos. Dois prefixos são considerados sobrepostos se determinada string puder começar com ambos os prefixos.

```
 <NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic>
         <Event>s3:ObjectCreated:Put</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>pg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
</NotificationConfiguration
```

A configuração de notificação a seguir não é válida porque tem prefixos e sufixos sobrepostos. 

```
<NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>prefix</Name>
                     <Value>images</Value>
                 </FilterRule>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic>
         <Event>s3:ObjectCreated:Put</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
</NotificationConfiguration>
```

# Estrutura de mensagens de evento
<a name="notification-content-structure"></a>

A mensagem de notificação que o Amazon S3 envia para publicar um evento tem o formato JSON.

Para obter uma visão geral e instruções sobre como configurar notificações de eventos, consulte [Notificações de eventos do Amazon S3](EventNotifications.md).

Este exemplo mostra a *versão 2.1* da estrutura JSON de notificações de eventos. O Amazon S3 usa as *versões 2.1*, *2.2* e *2.3* desta estrutura de evento. O Amazon S3 usa a versão 2.2 para notificações de eventos de replicação entre regiões. Utiliza a versão 2.3 para o S3 Lifecycle, S3 Intelligent-Tiering, ACL de objeto, marcação de objetos e eventos de exclusão de restauração de objetos. Essas versões contêm informações adicionais específicas para essas operações. As versões 2.2 e 2.3 são compatíveis com a versão 2.1, que o Amazon S3 usa atualmente para outros tipos de notificação de eventos.

```
{  
   "Records":[  
      {  
         "eventVersion":"2.1",
         "eventSource":"aws:s3",
         "awsRegion":"us-west-2",
         "eventTime":"The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z) when Amazon S3 finished processing the request",
         "eventName":"The event type",
         "userIdentity":{  
            "principalId":"The unique ID of the IAM resource that caused the event"
         },
         "requestParameters":{  
            "sourceIPAddress":"The IP address where the request came from"
         },
         "responseElements":{  
            "x-amz-request-id":"The Amazon S3 generated request ID",
            "x-amz-id-2":"The Amazon S3 host that processed the request"
         },
         "s3":{  
            "s3SchemaVersion":"1.0",
            "configurationId":"The ID found in the bucket notification configuration",
            "bucket":{  
               "name":"The name of the bucket, for example, amzn-s3-demo-bucket",
               "ownerIdentity":{  
                  "principalId":"The Amazon retail customer ID of the bucket owner"
               },
               "arn":"The bucket Amazon Resource Name (ARN)"
            },
            "object":{  
               "key":"The object key name",
               "size":"The object size in bytes (as a number)",
               "eTag":"The object entity tag (ETag)",
               "versionId":"The object version if the bucket is versioning-enabled; null or not present if the bucket isn't versioning-enabled",
               "sequencer": "A string representation of a hexadecimal value used to determine event sequence; only used with PUT and DELETE requests"
            }
         },
         "glacierEventData": {
            "restoreEventData": {
               "lifecycleRestorationExpiryTime": "The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z), when the temporary copy of the restored object expires",
               "lifecycleRestoreStorageClass": "The source storage class for restored objects"
            }
         }
      }
   ]
}
```

Sobre a estrutura de mensagens de evento, observe:
+ O valor da chave `eventVersion` contém uma versão principal e secundária no formulário `major`.`minor`.

  A versão principal será incrementada se o Amazon S3 fizer uma alteração na estrutura do evento que não seja compatível com versões anteriores. Isso inclui remover um campo JSON que já está presente ou alterar como os conteúdos de um campo são representados (por exemplo, um formato de data).

  A versão secundária será incrementada se o Amazon S3 adicionar novos campos à estrutura do evento. Isso pode ocorrer se forem fornecidas novas informações para alguns ou todos os eventos existentes. Isso também pode ocorrer se novas informações forem fornecidas apenas para tipos de evento recém-introduzidos. Para manter a compatibilidade novas versões secundárias da estrutura de eventos, recomendamos que suas aplicações ignorem novos campos.

  Se novos tipos de evento forem introduzidos, mas a estrutura de eventos não for modificada, a versão do evento não será alterada.

  Para garantir que seus aplicativos possam analisar a estrutura do evento corretamente, recomendamos que você faça uma comparação "igual a" no número da versão principal. Para garantir que os campos esperados por sua aplicação estejam presentes, também recomendamos fazer uma comparação “maior que ou igual a” na versão secundária.
+ O valor de chave `eventName` faz referência à lista de [tipos de notificação de eventos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html), mas não contém o prefixo `s3:`.
+ O valor de chave `userIdentity` faz referência ao ID exclusivo do recurso do AWS Identity and Access Management (IAM) (usuário, perfil, grupo etc.) que causou o evento. Para obter uma definição de cada prefixo de identificação do IAM (por exemplo, AIDA, AROA e AGPA) e informações sobre como obter um identificador exclusivo, consulte [Identificadores do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html##identifiers-unique-ids) no *Guia do usuário do IAM*.
+ O valor da chave `responseElements` será útil se você quiser rastrear uma solicitação acompanhando o AWS Support. Tanto o `x-amz-request-id` quanto o `x-amz-id-2` ajudam o Amazon S3 a rastrear uma solicitação individual. Esses valores são os mesmos que os retornados pelo Amazon S3 na resposta à solicitação que inicia os eventos. Portanto, você pode usar esses valores para estabelecer correspondência entre o evento e a solicitação.
+ O valor de chave `s3` fornece informações sobre o bucket e objeto envolvidos no evento. O valor do nome da chave de objetos é codificado para URL. Por exemplo, `red flower.jpg` torna-se `red+flower.jpg`. (O Amazon S3 exibe “`application/x-www-form-urlencoded`” como o tipo de conteúdo na resposta.)

  O valor de chave `ownerIdentity` corresponde ao ID do cliente de varejo da Amazon (Amazon.com) do proprietário do bucket. Esse valor de ID não é mais usado e é mantido somente para fins de compatibilidade retroativa. 
+ O valor de chave `sequencer` oferece uma maneira de determinar a sequência de eventos. Não há garantia de que as notificações de evento cheguem na mesma ordem em que os eventos ocorreram. No entanto, as notificações de eventos que criam objetos (solicitações `PUT`) e excluem objetos contêm um `sequencer`. É possível usar esse valor para determinar a ordem dos eventos de determinada chave de objeto. 

  Se você comparar a sequências do `sequencer` nas duas notificações de evento na mesma chave de objeto, a notificação de evento com o valor hexadecimal `sequencer` maior será o evento que ocorreu depois. Se você estiver usando notificações de evento para manter um banco de dados ou um índice separado dos objetos do Amazon S3, recomendamos comparar e armazenar os valores de `sequencer` ao processar cada notificação de evento. 

  Observe o seguinte:
  + Não é possível usar `sequencer` para determinar a ordem de eventos em chaves de objetos diferentes.
  + As strings `sequencer` podem ter tamanhos diferentes. Portanto, para comparar esses valores, primeiro preencha zeros à esquerda do menor valor e, em seguida, faça uma comparação lexicográfica.
+ O valor de chave `glacierEventData` só está visível para eventos `s3:ObjectRestore:Completed`. 
+ O valor de chave `restoreEventData` contém atributos que estão relacionados à solicitação de restauração.
+ O valor de chave `replicationEventData` só é visível para eventos de replicação.
+ O valor de chave `intelligentTieringEventData` só fica visível para eventos do S3 Intelligent-Tiering.
+ O valor de chave `lifecycleEventData` só fica visível para eventos de transição do Ciclo de Vida do S3.

## Exemplos de mensagens
<a name="notification-content-structure-examples"></a>

Veja a seguir exemplos de mensagens de notificação de eventos do Amazon S3.

**Mensagem de teste do Amazon S3**  
Depois que você configura uma notificação de evento em um bucket, o Amazon S3 envia a mensagem de teste a seguir.

```
1. {  
2.    "Service":"Amazon S3",
3.    "Event":"s3:TestEvent",
4.    "Time":"2014-10-13T15:57:02.089Z",
5.    "Bucket":"amzn-s3-demo-bucket",
6.    "RequestId":"5582815E1AEA5ADF",
7.    "HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE"
8. }
```

**nota**  
A mensagem `s3:TestEvent` usa um formato diferente do formato usado por notificações de eventos regulares do S3. Diferentemente de outras notificações de eventos que usam a estrutura de matriz `Records` mostrada anteriormente, o evento de teste usa um formato simplificado com campos diretos. Ao implementar o tratamento de eventos, seu código deve distinguir e lidar adequadamente com ambos os formatos de mensagem.

**Mensagem de exemplo quando um objeto é criado usando uma solicitação `PUT`**  
Veja a seguir um exemplo de mensagem que o Amazon S3 envia para publicar um evento `s3:ObjectCreated:Put`.

```
 1. {  
 2.    "Records":[  
 3.       {  
 4.          "eventVersion":"2.1",
 5.          "eventSource":"aws:s3",
 6.          "awsRegion":"us-west-2",
 7.          "eventTime":"1970-01-01T00:00:00.000Z",
 8.          "eventName":"ObjectCreated:Put",
 9.          "userIdentity":{  
10.             "principalId":"AIDAJDPLRKLG7UEXAMPLE"
11.          },
12.          "requestParameters":{  
13.             "sourceIPAddress":"172.16.0.1"
14.          },
15.          "responseElements":{  
16.             "x-amz-request-id":"C3D13FE58DE4C810",
17.             "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
18.          },
19.          "s3":{  
20.             "s3SchemaVersion":"1.0",
21.             "configurationId":"testConfigRule",
22.             "bucket":{  
23.                "name":"amzn-s3-demo-bucket",
24.                "ownerIdentity":{  
25.                   "principalId":"A3NL1KOZZKExample"
26.                },
27.                "arn":"arn:aws:s3:::amzn-s3-demo-bucket"
28.             },
29.             "object":{  
30.                "key":"HappyFace.jpg",
31.                "size":1024,
32.                "eTag":"d41d8cd98f00b204e9800998ecf8427e",
33.                "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko",
34.                "sequencer":"0055AED6DCD90281E5"
35.             }
36.          }
37.       }
38.    ]
39. }
```



# Usar o EventBridge
<a name="EventBridge"></a>

O Amazon S3 pode enviar eventos ao Amazon EventBridge sempre que certos eventos ocorrerem no bucket. Ao contrário de outros destinos, não é necessário selecionar quais tipos de evento você deseja entregar. Depois que o EventBridge estiver habilitado, todos os eventos abaixo serão enviados ao EventBridge. Você pode usar regras do EventBridge para encaminhar eventos para outros destinos. A seguir, estão listados os eventos que o Amazon S3 envia ao EventBridge.


|  Tipo de evento |  Descrição  | 
| --- | --- | 
|  *Objeto criado*  |  Um objeto foi criado. O campo reason na estrutura de mensagens de eventos indica qual API do S3 foi usada para criar o objeto: [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) ou [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html).  | 
|  *Objeto excluído (DeleteObject)* *Objeto excluído (validade do ciclo de vida)*  |  Um objeto foi excluído. Quando um objeto é excluído usando uma chamada de API do S3, o campo reason é definido como DeleteObject. Quando um objeto é excluído por uma regra de validade do S3 Lifecycle, o campo reason (motivo) é definido como Lifecycle Expiration (Validade do ciclo de vida). Para obter mais informações, consulte [Expirando objetos](lifecycle-expire-general-considerations.md). Quando um objeto sem versionamento é excluído ou um objeto com versionamento é excluído permanentemente, o campo deletion-type é definido como Permanently Deleted. Quando um marcador de exclusão é criado para um objeto versionado, o campo `deletion-type` é definido como Delete Marker Created. Para obter mais informações, consulte [Excluir versões de objetos de um bucket com versionamento habilitado](DeletingObjectVersions.md).  | 
|  *Restauração de objeto iniciada*  |  Uma restauração de objetos foi iniciada da classe de armazenamento S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive ou do nível de acesso de arquivo ou de acesso de arquivo profundo do S3 Intelligent-Tiering. Para obter mais informações, consulte [Trabalhando com objetos arquivados](archived-objects.md).  | 
|  *Restauração de objeto concluída*  |  Uma restauração de objeto foi concluída.  | 
|  *Restauração de objeto expirada*  |  A cópia temporária de um objeto restaurado do S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive expirou e foi excluída.  | 
|  *Classe de armazenamento de objetos alterada*  |  Um objeto foi transferido para uma classe de armazenamento diferente. Para obter mais informações, consulte [Transição de objetos usando o Amazon S3 Lifecycle](lifecycle-transition-general-considerations.md).  | 
|  *Nível de acesso de objeto alterado*  |  Um objeto foi transferido para o nível de acesso de arquivo ou de acesso de arquivo profundo do S3 Intelligent-Tiering. Para obter mais informações, consulte [Gerenciar custos de armazenamento com o Amazon S3 Intelligent-Tiering](intelligent-tiering.md).  | 
|  *ACL de objeto atualizada*  |  Uma lista de controle de acesso (ACL) de objetos foi definida usando `PutObjectAcl`. Não é gerado evento quando uma solicitação não resulta em alteração na ACL de um objeto. Para obter mais informações, consulte [Visão geral da lista de controle de acesso (ACL)](acl-overview.md).  | 
|  *Etiquetas de objeto adicionadas*  |  Um conjunto de tags foi adicionado a um objeto usando `PutObjectTagging`. Para obter mais informações, consulte [Categorizar objetos usando tags](object-tagging.md).  | 
|  *Etiquetas de objeto excluídas*  |  Todas as tags foram removidas de um objeto usando `DeleteObjectTagging`. Para obter mais informações, consulte [Categorizar objetos usando tags](object-tagging.md).  | 

**nota**  
Para obter mais informações sobre como os tipos de eventos do Amazon S3 são mapeados para os tipos de evento do EventBridge, consulte [Mapeamento e solução de problemas do Amazon EventBridge](ev-mapping-troubleshooting.md).

Você pode usar o Amazon S3 Event Notifications com o EventBridge para escrever regras que executam ações quando um evento ocorre em seu bucket. Por exemplo, ele pode enviar uma notificação para você. Para obter mais informações, consulte [What is EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) no *Guia do usuário do Amazon EventBridge*.

Para obter mais informações sobre as ações e os tipos de dados com os quais você pode interagir usando a API do EventBridge, consulte [Amazon EventBridge API Reference](https://docs.aws.amazon.com/eventbridge/latest/APIReference/Welcome.html) na *Referência da API do Amazon EventBridge*.

Para obter informações sobre preços, consulte [Preços do Amazon EventBridge](https://aws.amazon.com/eventbridge/pricing).

**Topics**
+ [Permissões do Amazon EventBridge](ev-permissions.md)
+ [Habilitar o Amazon EventBridge](enable-event-notifications-eventbridge.md)
+ [Estrutura de mensagens de eventos do EventBridge](ev-events.md)
+ [Mapeamento e solução de problemas do Amazon EventBridge](ev-mapping-troubleshooting.md)

# Permissões do Amazon EventBridge
<a name="ev-permissions"></a>

O Amazon S3 não necessita de outras permissões para entregar eventos ao Amazon EventBridge.

# Habilitar o Amazon EventBridge
<a name="enable-event-notifications-eventbridge"></a>

Você pode habilitar o Amazon EventBridge usando o console do S3, a AWS Command Line Interface (AWS CLI) ou a API REST do Amazon S3. 

**nota**  
Depois que você habilitar o EventBridge, leva cerca de cinco minutos para que as alterações sejam implementadas.

## Usar o console do S3
<a name="eventbridge-console"></a>

**Para habilitar a entrega de eventos do EventBridge no console do S3.**

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

1. No painel de navegação à esquerda, escolha **Buckets de uso geral**.

1. Na lista de buckets, escolha o nome do bucket para o qual você deseja habilitar eventos.

1. Escolha **Properties (Propriedades)**.

1. Navegue até a seção **Event Notifications** (Notificações de eventos) e encontre a subsecção **Amazon EventBridge**. Escolha **Editar**.

1. Em** Send notifications to Amazon EventBridge for all events in this bucket** (Enviar notificações para o Amazon EventBridge para todos os eventos deste bucket), escolha **No** (Não).

## Como usar o AWS CLI
<a name="eventbridge-cli"></a>

O exemplo a seguir cria uma configuração de notificação de bucket para bucket *`amzn-s3-demo-bucket1`* com o Amazon EventBridge habilitado.

```
aws s3api put-bucket-notification-configuration --bucket amzn-s3-demo-bucket1 --notification-configuration='{ "EventBridgeConfiguration": {} }'
```

## Uso da API REST
<a name="eventbridge-api"></a>

Você pode habilitar o Amazon EventBridge de maneira programática em um bucket chamando a API REST do Amazon S3. Para obter mais informações, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotificationConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotificationConfiguration.html) na *Referência da API do Amazon Simple Storage Service*.

O exemplo a seguir exibe o XML usado para criar uma configuração de notificação de bucket com o Amazon EventBridge habilitado.

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

## Criar regras do EventBridge
<a name="ev-tutorial"></a>

Depois de habilitado, você pode criar regras do Amazon EventBridge para determinadas tarefas. Por exemplo, é possível enviar notificações por e-mail quando um objeto é criado. Para obter um tutorial completo, consulte [Tutorial: enviar uma notificação quando um objeto do Amazon S3 for criado](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-s3-object-created-tutorial.html) no *Guia do usuário do Amazon EventBridge*.

# Estrutura de mensagens de eventos do EventBridge
<a name="ev-events"></a>

A mensagem de notificação que o Amazon S3 envia para publicar um evento tem o formato JSON. Quando o Amazon S3 envia um evento ao Amazon EventBridge, os campos a seguir estão presentes.
+ `version`: atualmente é 0 (zero) para todos os eventos.
+ `id`: um UUID gerado para cada evento.
+ `detail-type`: o tipo de evento que está sendo enviado. Consulte [Usar o EventBridge](EventBridge.md) para ver uma lista dos tipos de evento.
+ `source`: identifica o serviço que gerou o evento.
+ `account`: o ID de 12 dígitos da Conta da AWS do proprietário do bucket.
+ `time`: a hora em que o evento ocorreu.
+ `region`: identifica a Região da AWS do bucket.
+ `resources`: uma matriz JSON que contém o nome do recurso da Amazon (ARN) do bucket.
+ `detail`: um objeto JSON que contém informações sobre o evento. Para obter mais informações sobre o que pode ser incluído nesse campo, consulte [Campo de detalhes da mensagem de evento](#ev-events-detail).

## Exemplos de estrutura de mensagens de evento
<a name="ev-events-list"></a>

Veja a seguir exemplos de algumas das mensagens de notificação de eventos do Amazon S3 que podem ser enviadas ao Amazon EventBridge.

### Objeto criado
<a name="ev-events-object-created"></a>

```
{
  "version": "0",
  "id": "17793124-05d4-b198-2fde-7ededc63b103",
  "detail-type": "Object Created",
  "source": "aws.s3",
  "account": "111122223333",
  "time": "2021-11-12T00:00:00Z",
  "region": "ca-central-1",
  "resources": [
    "arn:aws:s3:::amzn-s3-demo-bucket1"
  ],
  "detail": {
    "version": "0",
    "bucket": {
      "name": "amzn-s3-demo-bucket1"
    },
    "object": {
      "key": "example-key",
      "size": 5,
      "etag": "b1946ac92492d2347c6235b4d2611184",
      "version-id": "IYV3p45BT0ac8hjHg1houSdS1a.Mro8e",
      "sequencer": "617f08299329d189"
    },
    "request-id": "N4N7GDK58NMKJ12R",
    "requester": "123456789012",
    "source-ip-address": "1.2.3.4",
    "reason": "PutObject"
  }
}
```

### Objeto excluído (usando DeleteObject)
<a name="ev-events-object-deleted"></a>

```
{
  "version": "0",
  "id": "2ee9cc15-d022-99ea-1fb8-1b1bac4850f9",
  "detail-type": "Object Deleted",
  "source": "aws.s3",
  "account": "111122223333",
  "time": "2021-11-12T00:00:00Z",
  "region": "ca-central-1",
  "resources": [
    "arn:aws:s3:::amzn-s3-demo-bucket1"
  ],
  "detail": {
    "version": "0",
    "bucket": {
      "name": "amzn-s3-demo-bucket1"
    },
    "object": {
      "key": "example-key",
      "etag": "d41d8cd98f00b204e9800998ecf8427e",
      "version-id": "1QW9g1Z99LUNbvaaYVpW9xDlOLU.qxgF",
      "sequencer": "617f0837b476e463"
    },
    "request-id": "0BH729840619AG5K",
    "requester": "123456789012",
    "source-ip-address": "1.2.3.4",
    "reason": "DeleteObject",
    "deletion-type": "Delete Marker Created"
  }
}
```

### Objeto excluído (usando validade do ciclo de vida)
<a name="ev-events-object-deleted-lifecycle"></a>

```
{
  "version": "0",
  "id": "ad1de317-e409-eba2-9552-30113f8d88e3",
  "detail-type": "Object Deleted",
  "source": "aws.s3",
  "account": "111122223333",
  "time": "2021-11-12T00:00:00Z",
  "region": "ca-central-1",
  "resources": [
    "arn:aws:s3:::amzn-s3-demo-bucket1"
  ],
  "detail": {
    "version": "0",
    "bucket": {
      "name": "amzn-s3-demo-bucket1"
    },
    "object": {
      "key": "example-key",
      "etag": "d41d8cd98f00b204e9800998ecf8427e",
      "version-id": "mtB0cV.jejK63XkRNceanNMC.qXPWLeK",
      "sequencer": "617b398000000000"
    },
    "request-id": "20EB74C14654DC47",
    "requester": "s3.amazonaws.com",
    "reason": "Lifecycle Expiration",
    "deletion-type": "Delete Marker Created"
  }
}
```

### Restauração de objeto concluída
<a name="ev-events-object-restore-complete"></a>

```
{
  "version": "0",
  "id": "6924de0d-13e2-6bbf-c0c1-b903b753565e",
  "detail-type": "Object Restore Completed",
  "source": "aws.s3",
  "account": "111122223333",
  "time": "2021-11-12T00:00:00Z",
  "region": "ca-central-1",
  "resources": [
    "arn:aws:s3:::amzn-s3-demo-bucket1"
  ],
  "detail": {
    "version": "0",
    "bucket": {
      "name": "amzn-s3-demo-bucket1"
    },
    "object": {
      "key": "example-key",
      "size": 5,
      "etag": "b1946ac92492d2347c6235b4d2611184",
      "version-id": "KKsjUC1.6gIjqtvhfg5AdMI0eCePIiT3"
    },
    "request-id": "189F19CB7FB1B6A4",
    "requester": "s3.amazonaws.com",
    "restore-expiry-time": "2021-11-13T00:00:00Z",
    "source-storage-class": "GLACIER"
  }
}
```

## Campo de detalhes da mensagem de evento
<a name="ev-events-detail"></a>

O campo detail (detalhe) contém um objeto JSON com informações sobre o evento. Os campos a seguir podem estar presentes no campo detail (detalhe).
+ `version`: atualmente é 0 (zero) para todos os eventos.
+ `bucket`: informações sobre o bucket do Amazon S3 envolvido no evento.
+ `object`: informações sobre o objeto do Amazon S3 envolvido no evento.
+ `request-id`: ID da solicitação na resposta do S3.
+ `requester`: ID da Conta da AWS ou entidade principal do serviço do solicitante.
+ `source-ip-address`: o endereço IP de origem da solicitação do S3. Presente somente para eventos acionados por uma solicitação do S3.
+ `reason`: para eventos **Object Created**, a API do S3 é usada para criar o objeto ([https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) ou [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)). Para eventos **Object Deleted**, é definido como **DeleteObject** quando um objeto é excluído por uma chamada de API do S3 ou como **Validade do ciclo de vida** quando um objeto é excluído por uma regra de expiração do Ciclo de Vida do S3. Para obter mais informações, consulte [Expirando objetos](lifecycle-expire-general-considerations.md).
+ `deletion-type`: para eventos **Object Deleted** quando um objeto sem versionamento é excluído ou um objeto com versionamento é excluído permanentemente, é definido como **Excluído permanentemente**. Quando um marcador de exclusão é criado para um objeto versionado, é definido como **Marcador de exclusão criado**. Para obter mais informações, consulte [Excluir versões de objetos de um bucket com versionamento habilitado](DeletingObjectVersions.md).
**nota**  
Alguns atributos do objeto (como `etag` e `size`) estão presentes somente quando um delete marker é criado.
+ `restore-expiry-time`: para eventos **Object Restore Completed**, a hora em que a cópia temporária do objeto será excluída do S3. Para obter mais informações, consulte [Trabalhando com objetos arquivados](archived-objects.md).
+ `source-storage-class`: para eventos **Object Restore Initiated** e **Object Restore Completed**, a classe de armazenamento do objeto que está sendo restaurado. Para obter mais informações, consulte [Trabalhando com objetos arquivados](archived-objects.md).
+ `destination-storage-class`: para eventos **Object Storage Class Changed**, a nova classe de armazenamento do objeto. Para obter mais informações, consulte [Transição de objetos usando o Amazon S3 Lifecycle](lifecycle-transition-general-considerations.md).
+ `destination-access-tier`: para eventos **Object Access Tier Changed**, o novo nível de acesso do objeto. Para obter mais informações, consulte [Gerenciar custos de armazenamento com o Amazon S3 Intelligent-Tiering](intelligent-tiering.md).

# Mapeamento e solução de problemas do Amazon EventBridge
<a name="ev-mapping-troubleshooting"></a>

A tabela a seguir descreve como os tipos de eventos do Amazon S3 são mapeados para os tipos de evento do Amazon EventBridge.


|  Tipo de evento do S3 |  Tipo de detalhes do Amazon EventBridge  | 
| --- | --- | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)  |  Objeto criado  | 
|  ObjectRemoved:Delete ObjectRemoved:DeleteMarkerCreated LifecycleExpiration:Delete LifecycleExpiration:DeleteMarkerCreated  |  Objeto excluído  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html)  |  Restauração de objeto iniciada  | 
|  ObjectRestore:Completed  |  Restauração de objeto concluída  | 
|  ObjectRestore:Delete  |  Restauração de objeto expirada  | 
|  LifecycleTransition  |  Classe de armazenamento de objetos alterada  | 
|  IntelligentTiering  |  Nível de acesso de objeto alterado  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)  |  Etiquetas de objeto adicionadas  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)  |  Etiquetas de objeto excluídas  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html)  |  ACL de objeto atualizada  | 

## Solução de problemas do Amazon EventBridge
<a name="ev-troubleshooting"></a>

Para obter informações sobre como solucionar problemas do EventBridge, consulte [Solucionar problemas no Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-troubleshooting.html) no *Guia do usuário do Amazon EventBridge*.