O blog da AWS
Filtragem de eventos no Amazon EventBridge com correspondência de padrões genéricos
O Amazon EventBridge anunciou recentemente o suporte para filtros genérico (wildcard) em padrões de eventos de regras. Um barramento de eventos EventBridge é um roteador de eventos Serverless que ajuda você a desacoplar seus sistemas orientados a eventos. Você pode rotear eventos entre seus sistemas, serviços da AWS ou serviços SaaS de terceiros. Você anexa uma regra ao seu barramento de eventos para definir a lógica para rotear eventos dos produtores aos consumidores.
Você define um padrão de evento na regra para filtrar eventos recebidos para consumidores específicos. O novo filtro genérico (wildcard) permite criar padrões de correspondência de eventos mais flexíveis para reduzir o gerenciamento de regras e otimizar seus consumidores de eventos. Isso mostra como esses atributos do EventBridge funcionam juntos.
Os filtros genérico (wildcard) usam o caractere (*) para corresponder a zero, um ou vários caracteres em um valor de string. Por exemplo, uma string de filtro como “*.png
” corresponde a strings que terminam com “.png”.
Você também pode usar vários caracteres genérico (wildcard) em um filtro. Por exemplo, uma string de filtro como “*Título*
” corresponde a valores de string que incluem “Título” no meio. Ao usar filtros genérico, tenha cuidado para evitar combinar mais eventos do que o pretendido.
Este blog descreve como você pode usar filtros genérico em cenários de exemplo. Para obter mais informações sobre arquiteturas orientadas a eventos, visite Serverless Land.
Correspondência de padrões genérico nas notificações de eventos do S3
Muitas vezes, os aplicativos precisam executar uma ação quando novos dados estão disponíveis. Um exemplo pode ser processar dados comerciais enviados para seu bucket Amazon S3. Os dados podem ser armazenados em pastas individuais, dependendo da data, hora e símbolo do estoque. As regras de negócios podem determinar que, quando a stock XYZ recebe um arquivo, ela deve enviar uma notificação para um sistema posterior.
Essa é a estrutura de pastas típica em um bucket do S3:
O S3 pode enviar um evento para o EventBridge quando um objeto é gravado em um bucket. O evento S3 inclui a chave do objeto (por exemplo, 2023-10-01/T13:22:22Z/XYZ/filename.ext
). Quando qualquer objeto é carregado na pasta XYZ, você pode usar uma regra do EventBridge para enviar esses eventos para um serviço downstream, como o Amazon SQS.
Antes desse lançamento, você primeiro enviaria o evento para uma função do AWS Lambda. Os filtros de prefixo e sufixo existentes por si só não são insuficientes devido às pastas com data e hora. A função executaria seu código para inspecionar o caminho do objeto para o símbolo da ação. Seu código então encaminharia os eventos para o SQS quando eles correspondessem.
Com os novos padrões genérico (wildcard) nas regras do EventBridge, a lógica é mais simples. Você não precisa mais criar uma função Lambda para executar um código de correspondência personalizado. Em vez disso, você pode usar caracteres genérico (wildcard) no padrão de filtro da regra, fazendo a correspondência com partes da chave do objeto do S3.
- Para usar isso, comece criando uma nova regra no console do EventBridge:
- Escolha Avançar. Mantenha os parâmetros padrão e vá para a seção Padrão de eventos. Aqui você pode usar um padrão de evento baseado em JSON.
- Esse padrão procura notificações de eventos de um bucket específico. O padrão então filtra ainda mais os eventos pelas chaves do objeto que correspondem a “
*/XYZ/*
”. A regra filtra as notificações de outros símbolos de ações, ouvindo apenas os dados “XYZ”, independentemente da data e hora do feed de dados. - Para usar uma fila SQS para o destino do evento filtrado, você deve fornecer políticas baseadas em recursos para que o EventBridge envie mensagens para a fila.
- Escolha Avançar e revise os detalhes da regra antes de salvar.
- Antes do teste, habilite as notificações de eventos do S3 para o EventBridge no console do S3:
- Para testar o novo padrão genérico (wildcard), faça upload de qualquer arquivo CSV de amostra na pasta XYZ para iniciar as Notificações de eventos.
- Você pode monitorar as métricas do EventBridge CloudWatch para verificar se a regra foi invocada a partir do upload do S3. As métricas do SQS CloudWatch mostram se as mensagens são recebidas da regra do EventBridge.
Filtragem com base no nome de recurso da Amazon (ARN)
Os clientes geralmente precisam realizar ações quando as políticas do AWS Identity and Access Management (IAM) são adicionadas a funções específicas. Você pode fazer isso criando regras personalizadas do EventBridge, que filtram o evento de acordo com a correspondência ou criam várias regras para obter o mesmo efeito. Com o filtro genérico (wildcard) recém-introduzido, a tarefa de invocar uma ação é simplificada.
Considere uma função do IAM com políticas refinadas do IAM anexadas. Talvez seja necessário garantir que qualquer nova política associada a essa função deva ser de um ARNs específico. Essa ação pode ser implementada dessa forma.
Quando você anexa uma nova política do IAM a uma função, ela gera um evento como este:
Você pode criar uma regra que corresponda a uma combinação dessas propriedades do evento. Você pode filtrar detail.userIdentity.arn
com um genérico (wildcard) para capturar eventos provenientes de um ARN específico. Em seguida, você pode rotear esses eventos para um destino, como um stream do Amazon CloudWatch Logs, para registrar a alteração. Você também pode roteá-los para o Amazon Simple Notification Service (SNS). Você pode usar a notificação do SNS para iniciar uma análise e garantir que as políticas recém-anexadas sejam bem elaboradas como parte do seu processo de reconciliação e auditoria. O filtro tem a seguinte aparência:
Filtrando eventos personalizados
Você pode usar o EventBridge para criar seus próprios sistemas orientados a eventos com serviços de aplicativos escaláveis e pouco acoplados. Ao criar aplicativos orientados a eventos na AWS, você pode publicar eventos no barramento de eventos padrão ou criar um barramento de eventos personalizado. Você define a estrutura dos eventos emitidos pelos seus serviços.
Essa estrutura é conhecida como esquema de eventos. Quando você anexa regras ao seu barramento para rotear eventos de produtores a consumidores, você compara valores de propriedades em seu esquema de eventos. Os filtros genérico (wildcard) permitem que você combine valores de propriedades que são desconhecidos com antecedência ou em várias variantes de valor.
Considere um aplicativo de comércio eletrônico como exemplo. Você pode ter vários serviços desacoplados trabalhando juntos, como um serviço de carrinho de compras, um serviço de inventário e outros. Cada um desses serviços emite eventos em seu barramento de eventos enquanto seus clientes compram.
Os eventos podem incluir erros, para registrar os problemas que os clientes encontram ao usar seu sistema. Você pode usar uma única regra com um filtro genérico (wildcard) para combinar todos os eventos de erro e enviá-los para um destino comum. Isso permite que você simplifique a observabilidade em seus serviços.
Este é o fluxo do evento:
Seu serviço de carrinho de compras pode emitir um evento de erro de tempo limite:
A propriedade de detail-type
do evento de exemplo determina que tipo de evento é esse. Outros serviços podem emitir eventos de erro com prefixos diferentes no detail-type
. Outros tipos de erro podem ter sufixos diferentes no detail-type.
Por exemplo, um serviço de inventário pode emitir um evento de erro de falta de estoque como este:
Para rotear esses eventos para um destino comum, como um stream do Amazon CloudWatch Logs, você pode criar uma regra com um filtro genérico (wildcard) correspondente ao tipo de detalhe. Você pode combinar isso com um filtro de prefixo na fonte que filtra os eventos apenas para os serviços do seu sistema de compras. O filtro tem a seguinte aparência:
Sem um filtro genérico (wildcard), você precisaria criar um padrão de correspondência mais complexo, possivelmente em várias regras.
Conclusão
Os filtros genérico (wildcard) nas regras do EventBridge ajudam a simplificar seus aplicativos orientados a eventos, garantindo que os eventos corretos sejam transmitidos aos seus alvos. O novo recurso reduz a necessidade de código personalizado, que era exigido anteriormente. Experimente as regras do EventBridge com filtros genérico (wildcard) e experimente os benefícios desse novo recurso em seus aplicativos Serverless orientados a eventos.
Para obter mais recursos de aprendizado Serverless, visite Serverless Land.
Este artigo foi traduzido do Blog da AWS em Inglês.
Sobre o autor
Rajdeep Banerjee é um arquiteto de soluções para parceiros sênior,
Brian Krygsman é um arquiteto de soluções sênior
Tradutor
Daniel Abib é Enterprise Solution Architect na AWS, com mais de 25 anos trabalhando com gerenciamento de projetos, arquiteturas de soluções escaláveis, desenvolvimento de sistemas e CI/CD, microsserviços, arquitetura Serverless & Containers e segurança. Ele trabalha apoiando clientes corporativos, ajudando-os em sua jornada para a nuvem.