Normalmente, realizamos várias operações em um balde S3; portanto, em um determinado momento, podemos precisar desencadear alguma outra função, operação ou serviço sempre que houver alguma operação realizada em nosso balde. Isso pode ser alcançado usando notificações de eventos S3. Essas notificações de evento podem ser configuradas para fazer upload dos arquivos, atualizar as versões dos arquivos, excluir os objetos mais antigos, transações do ciclo de vida S3 e muitas outras operações. O S3 Bucket notificará o alvo sobre essa ação específica com notificações de eventos ativadas. O tempo de entrega de notificação é curto e na faixa de segundos e minutos.
Atualmente, três serviços da AWS podem ser acionados com AWS S3.
Agora vamos dar um mergulho mais profundo e ver como é praticamente feito.
Configure as notificações S3 para o AWS SQS
Primeiro, criaremos um balde S3 para o qual configuraremos notificações de eventos. Para isso, basta fazer login na sua conta da AWS e procurar o serviço S3 usando a barra de pesquisa disponível no topo do seu console de gerenciamento.
O console S3 aparecerá na sua frente; Basta clicar em Criar balde.
Nesta seção, você precisa fornecer um nome de balde que deve ser universalmente único.
Em seguida, você precisa especificar a região da AWS, onde deseja que seu balde S3 seja colocado. Sabemos que o S3 é um serviço global e é acessível a partir de qualquer região, mas ainda assim você precisa definir em que região deseja armazenar seus dados.
Em seguida, existem outras configurações que você pode gerenciar como versão, criptografia e acesso público, mas você pode simplesmente deixá -los tão padrão quanto não temos nada a ver com eles no momento. Então, basta arrastar para baixo e clicar no balde Criar no canto inferior direito para terminar o processo de criação do balde.
Então, finalmente, criamos um novo balde S3 em nossa conta da AWS.
Agora precisamos criar um alvo para nossas notificações de evento, e escolheremos o serviço SQS. Na melhor barra de pesquisa do console da AWS, procure pelo serviço simples de fila da Amazon.
Clique em Criar fila para criar um novo tópico SQS.
A primeira opção é escolher aqui o tipo de nossos SQs que vamos deixar para o padrão, eu.e., o padrão.
Em seguida, precisamos fornecer o nome do tópico do SQS.
Agora, para permitir que nosso balde S3 escreva para este serviço SQS, precisamos fornecer a política certa ao SQS. Para isso, selecione avançado na seção de política de acesso.
A política pode ser editada diretamente se você tiver boas habilidades com JSON e outras coisas, mas, por simplicidade, usaremos o gerador de políticas fornecido pela AWS. Basta clicar no link abaixo para abrir o gerador de políticas.
No gerador de políticas, primeiro selecione o tipo de política, que será a política da fila SQS.
Em seguida, precisamos escolher o efeito que é PERMITIR aqui. O princípio será o nosso balde S3 para o qual estamos configurando as notificações de eventos, por isso precisamos colocar o balde Arn aqui. O recurso é o serviço no qual precisamos que essa política seja aplicada, então esse deve ser o nosso tópico SQS Arn.
A ação que precisamos selecionar na lista suspensa é enviar mensagens, pois queremos que nosso balde S3 envie a mensagem para nossa fila SQS.
Agora clique em Adicionar declaração e selecione a política Criar para obter a política no formato JSON.
Basta copiar o conteúdo da política e colocá -los na política do SQS.
Agora role para baixo na seção SQS Create e clique em Criar uma fila. Deixe todas as outras configurações, como é por enquanto.
Finalmente, agora volte ao nosso balde S3 e selecione a guia Propriedades.
Arraste para baixo para notificações de eventos e clique em Criar notificações de eventos.
Primeiro, forneça o nome do seu evento.
Você precisa escolher o tipo de evento para o qual deseja ativar as notificações. Há uma longa lista que você pode escolher; Por enquanto, vamos escolher todos os eventos de criação de objetos.
Precisamos selecionar o destino para nossas notificações de evento. Para isso, selecione o serviço SQS e selecione o nome do seu tópico SQS.
Por fim, basta clicar em Salvar alterações para concluir o processo.
Então, finalmente, estamos prontos para ir com as notificações do evento S3. Agora envie um objeto no balde S3 e verifique se ele aciona os SQs.
Nós carregamos um objeto para o nosso balde S3.
Se você for ao nosso SQS e pesquisar mensagens, receberá notificações para os eventos que habilitamos.
Por isso, configuramos com sucesso as notificações de eventos S3 para um tópico SQS.
Configure as notificações S3 para AWS SNS
Veremos outro exemplo para notificações de eventos S3 para o SNS, mas desta vez em vez de usar o console de gerenciamento, usaremos a interface da linha de comando da AWS (CLI). Portanto, o primeiro passo é simplesmente criar os baldes em nossa conta da AWS, para a qual simplesmente precisamos usar o seguinte comando.
$: aws s3api create-bucket-bucket--região
Para visualizar os baldes S3 disponíveis em sua conta, você pode usar este comando
$: AWS S3API List-Buckets
Agora precisamos criar um tópico SNS. Para isso, use o seguinte comando na CLI
$: AWS SNS Create-tópico-Nome
Precisamos de um arquivo de configuração para definir o tipo de evento e tópico SNS ARN. O arquivo estará no formato JSON.
"TopicConfiguration":
"Evento": "S3: ObjectCreated:*", "Topic": "ARN: AWS: SNS: US-WEST-2: 123456789012: S3-Notification-Topic"
Agora, finalmente, podemos ativar a notificação do evento usando o seguinte comando.
$: aws s3api put-bucket-notificação-bucket--Arquivo de Configuração de Notificação: //
Por isso, ativamos com sucesso as notificações de eventos S3 para o nosso tópico SNS.
Conclusão:
As notificações de eventos S3 nos permitem notificar outros serviços sobre a operação realizada em nosso balde S3. Essas notificações podem ser usadas para desencadear funções Lambda, usando as quais podemos invocar as APIs REST para executar outra tarefa automatizada. As notificações também podem ser enviadas para SQS ou SNS, que são muito úteis para dissociar nossos aplicativos. Usando SQS e SNS, esse esquema pode ainda estar vinculado ao RDS para que possamos desenvolver nosso banco de dados para eventos S3 específicos.