Fanout eventos do Amazon SNS no AWS Event Fork Pipelines - Amazon Simple Notification Service

Fanout eventos do Amazon SNS no AWS Event Fork Pipelines

Para arquivamento e análise de eventos, o Amazon SNS agora recomenda o uso de sua integração nativa com o Amazon Data Firehose. Você pode assinar fluxos de entrega do Firehose para tópicos do SNS, o que permite enviar notificações para endpoints de arquivamento e análise, como buckets do Amazon Simple Storage Service (Amazon S3), tabelas do Amazon Redshift, Amazon OpenSearch Service (OpenSearch Service) e muito mais. O uso de fluxos de entrega do Amazon SNS com o Firehose é uma solução totalmente gerenciada e sem código que não exige que você use funções do AWS Lambda. Para obter mais informações, consulte Fanout de fluxos de entrega do Firehose.

Você pode usar o Amazon SNS para desenvolver aplicações orientadas por eventos que usam serviços de assinante para executar o trabalho automaticamente em resposta a eventos acionados por serviços do editor. Esse padrão de arquitetura pode tornar os serviços mais reutilizáveis, interoperáveis e dimensionáveis. No entanto, pode ser trabalhoso usar o processamento de eventos em pipelines que abordam os requisitos de manipulação de eventos comuns, como armazenamento de eventos, backup, pesquisa, análise e reprodução.

Para acelerar o desenvolvimento de suas aplicações orientadas por eventos, você pode assinar pipelines de tratamento de eventos, por meio do AWS Event Fork Pipelines, em tópicos do Amazon SNS. O AWS Event Fork Pipelines é um conjunto de aplicações aninhadas de código aberto, com base no AWS Serverless Application Model (AWS SAM), que você pode implantar diretamente do pacote AWS Event Fork Pipelines (escolha Mostrar aplicações que criam perfis personalizados do IAM or ou políticas de recurso) em sua conta da AWS.

Para um caso de uso do AWS Event Fork Pipelines, consulte Implantar e testar a aplicação de exemplo de event fork pipelines do Amazon SNS.

Como o AWS Event Fork Pipelines funciona

AWSO Event Fork Pipelines é um padrão de projeto sem servidor. No entanto, ele também é um pacote de aplicações aninhadas sem servidor, baseado no AWS SAM (que pode ser implantado diretamente do AWS Serverless Application Repository (AWS SAR) em sua Conta da AWS para aprimorar suas plataformas orientadas por eventos). Você pode implantar essas aplicações aninhadas individualmente, conforme sua arquitetura exigir.

O diagrama a seguir mostra uma aplicação do AWS Event Fork Pipelines complementada por três aplicações aninhadas. É possível implantar qualquer um dos pipelines do pacote do AWS Event Fork Pipelines no AWS SAR de maneira independente, conforme sua arquitetura exigir.

A arquitetura AWS Event Fork Pipelines, mostrando como os eventos de um tópico do Amazon SNS são filtrados e processados por meio de três canais distintos: Armazenamento e Backup de Eventos, Pesquisa e Análise de Eventos e Repetição de Eventos. Esses pipelines são descritos como caixas empilhadas verticalmente, cada uma processando eventos paralelamente de forma independente do mesmo tópico do Amazon SNS.

Cada pipeline é inscrito no mesmo tópico do Amazon SNS, o que permite que ele processe eventos em paralelo conforme esses eventos são publicados no tópico. Cada pipeline é independente e pode definir sua própria política de filtro de assinatura. Isso permite que um pipeline processe apenas um subconjunto dos eventos em que está interessado (em vez de todos os eventos publicados no tópico).

nota

Como os três AWS Event Fork Pipelines são colocados juntos com os pipelines de processamento de eventos usuais (possivelmente já inscritos em seu tópico do Amazon SNS), não é necessário alterar nenhuma parte do editor de mensagens atual para aproveitar o AWS Event Fork Pipelines nas workloads existentes.

O pipeline de armazenamento e backup de eventos

O diagrama a seguir mostra o pipeline de armazenamento e backup de eventos. Você pode inscrever esse pipeline em seu tópico do Amazon SNS para fazer backup automaticamente dos eventos que passam pelo sistema.

Esse pipeline é composto de uma fila do Amazon SQS que armazena em buffer os eventos entregues pelo tópico do Amazon SNS, uma função do AWS Lambda que sonda automaticamente esses eventos na fila e os envia a um fluxo, e um bucket do Amazon S3 que faz backup durável dos eventos carregados pelo fluxo.

O Fork-Event-Storage-Backup-Pipeline, projetado para processar e fazer backup de eventos de um tópico do Amazon SNS. O fluxo começa com um tópico do Amazon SNS a partir do qual os eventos são distribuídos para uma fila do Amazon SQS. Esses eventos filtrados são então processados por uma função do Lambda, que os encaminha para um Data Firehose. O stream do Firehose é responsável por armazenar em buffer, transformar e compactar os eventos antes de carregá-los em um bucket de backup do Amazon S3. Por fim, o Amazon Athena pode ser usado para consultar os dados armazenados. O diagrama usa uma série de ícones e setas para ilustrar o fluxo de um serviço para o outro, identificando claramente cada componente do pipeline.

Para ajustar o comportamento de seu fluxo do Firehose, configure-o para armazenar em buffer, transformar e compactar seus eventos antes de carregá-los no bucket. À medida que os eventos forem carregados, use o Amazon Athena para consultar o bucket usando consultas SQL padrão. Você também pode configurar o pipeline para reutilizar um bucket do Simple Storage Service (Amazon S3) existente ou criar um novo.

O pipeline de pesquisa e análise de eventos

O diagrama a seguir mostra o pipeline de pesquisa e análise de eventos. Você pode inscrever esse pipeline em seu tópico do Amazon SNS para indexar os eventos que passam pelo sistema em um domínio de pesquisa e analisá-los.

Esse pipeline é composto por uma fila do Amazon SQS que armazena em buffer os eventos entregues pelo tópico do Amazon SNS, uma função do AWS Lambda que sonda eventos da fila e os envia para um fluxo, um domínio do Amazon OpenSearch Service que indexa os eventos carregados pelo fluxo do Firehose, e um bucket do Amazon S3 que armazena eventos de mensagens não entregues que não podem ser indexados no domínio de pesquisa.

O pipeline de pesquisa e análise de eventos em uma arquitetura da AWS. Começa à esquerda com o tópico Amazon SNS recebendo todos os eventos. Esses eventos são então canalizados por meio de uma linha tracejada representando “distribuir eventos filtrados” em uma fila do Amazon SQS. Da fila, os eventos são processados por uma função do Lambda, que os encaminha para um fluxo do Data Firehose. O Data Firehose direciona os eventos para dois destinos: uma rota leva a um Amazon Elasticsearch Service para indexação, e a outra rota envia eventos não processáveis ou “inativos” para um bucket de correio morto do Amazon S3. Na extrema direita, a saída do Elasticsearch Service é alimentada em um painel do Kibana para análise e visualização. Todo o fluxo é disposto horizontalmente e cada componente é conectado por linhas que mostram a direção do fluxo de dados.

Para ajustar o fluxo do Firehose em termos de armazenamento de eventos em buffer, transformação e compactação, você pode configurar esse pipeline.

Você também pode configurar se o pipeline deve reutilizar um domínio OpenSearch em sua Conta da AWS ou criar um novo para você. À medida que os eventos forem indexados no domínio de pesquisa, use o Kibana para executar a análise de seus eventos e atualizar os painéis visuais em tempo real.

O pipeline de reprodução de eventos

O diagrama a seguir mostra o pipeline de reprodução de eventos. Para registrar os eventos que foram processados pelo sistema nos últimos 14 dias (por exemplo, quando sua plataforma precisar se recuperar de uma falha), inscreva esse pipeline em seu tópico do Amazon SNS e processe novamente os eventos.

Esse pipeline é composto de uma fila do Amazon SQS que armazena em buffer os eventos entregues pelo tópico do Amazon SNS e uma função do AWS Lambda que sonda os eventos da fila e os redireciona para o pipeline de processamento de eventos usual, que também está inscrito em seu tópico.

O Event Replay Pipeline em formato de fluxograma. Da esquerda para a direita, começa com um tópico do Amazon SNS que distribui eventos filtrados para dois processos paralelos. O fluxo superior representa seu pipeline regular de processamento de eventos, que inclui uma fila do Amazon SQS que processa eventos. O fluxo inferior, denominado “fork-event-replay-pipeline”, inclui uma fila de reprodução do Amazon SQS em que os eventos são armazenados temporariamente antes de serem processados por uma função de reprodução do Lambda. Essa função do Lambda tem a capacidade de redirecionar eventos para seu pipeline regular de processamento de eventos ou mantê-los para reprodução, com base no fato de o recurso de repetição estar ativado ou desativado. O diagrama também indica que os operadores têm controle sobre a ativação ou desativação da funcionalidade de repetição de eventos.
nota

Por padrão, a função de reprodução está desabilitada e não redireciona seus eventos. Se precisar reprocessar os eventos, você deve habilitar a fila de reprodução do Amazon SQS como uma origem de eventos para a função de reprodução do AWS Lambda.

Implantar o AWS Event Fork Pipelines

O pacote AWS Event Fork Pipelines (escolha Mostrar aplicações que criam funções do IAM ou políticas de recurso personalizadas) está disponível como um grupo de aplicações públicas no AWS Serverless Application Repository, de onde você pode implantá-las e testá-las manualmente usando o console do AWS Lambda. Para obter informações sobre como implantar pipelines usando o console do AWS Lambda, consulte Inscrever AWS Event Fork Pipelines em um tópico do Amazon SNS.

Em um cenário de produção, recomendamos a incorporação do AWS Event Fork Pipelines no modelo do AWS SAM de sua aplicação geral. O recurso de aplicação aninhada permite fazer isso ao adicionar o recurso AWS::Serverless::Application ao seu modelo do AWS SAM, fazendo referência ao AWS e à ApplicationId da aplicação aninhada do SemanticVersion SAR.

Por exemplo, use o pipeline de armazenamento e backup de eventos como uma aplicação aninhada adicionando o seguinte trecho de YAML à seção Resources de seu modelo do AWS SAM.

Backup: Type: AWS::Serverless::Application Properties: Location: ApplicationId: arn:aws:serverlessrepo:us-east-2:123456789012:applications/fork-event-storage-backup-pipeline SemanticVersion: 1.0.0 Parameters: #The ARN of the Amazon SNS topic whose messages should be backed up to the Amazon S3 bucket. TopicArn: !Ref MySNSTopic

Ao especificar valores de parâmetro, use funções intrínsecas do AWS CloudFormation para fazer referência a outros recursos em seu modelo. Por exemplo, no trecho YAML acima, o parâmetro TopicArn faz referência ao recurso MySNSTopic do AWS::SNS::Topic, definido em outro lugar no modelo do AWS SAM. Para obter mais informações, consulte o Referência à função intrínseca no Guia do usuário do usuário do AWS CloudFormation.

nota

A página do console do AWS Lambda para a aplicação do AWS SAR inclui o botão Copiar como recurso do SAM, que copia o YAML necessário para aninhar uma aplicação do AWS SAR à área de transferência.