Curso
O Amazon EventBridge é um serviço de barramento de eventos sem servidor que ajuda os desenvolvedores a criar arquiteturas orientadas a eventos com o mínimo de custos operacionais.
No meu trabalho com sistemas nativos da nuvem, vi como a capacidade de resposta em tempo real e a separação de serviços são essenciais para criar aplicativos escaláveis e fáceis de manter, e o EventBridge oferece exatamente isso.
O que é o Amazon EventBridge?
Antes de mergulhar na configuração, é importante entender o que é o EventBridge, por que ele é importante e como ele se encaixa no ecossistema mais amplo de ferramentas orientadas a eventos da AWS.
Visão geral do Amazon EventBridge
O Amazon EventBridgeé um serviço de barramento de eventos totalmente gerenciado e sem servidor que permite que os aplicativos se comuniquem por meio de eventos quase em tempo real.
Isso simplifica a tarefa de rotear eventos entre produtores de eventos (fontes de mudança, como S3, DynamoDB ou aplicativos personalizados) e consumidores de eventos (serviços que agem sobre essas mudanças, como Lambda, Step Functions ou SNS).
Imagem com um diagrama visual do Amazon EventBridge direcionando eventos de produtores para vários destinos. Fonte: Blogs da AWS
O EventBridge foi feito pra ser escalável e flexível.
Ele se adapta automaticamente para lidar com milhões de eventos por segundo e permite uma lógica de roteamento complexa por meio de regras baseadas em JSON.
Algumas das principais funcionalidades incluem:
- Integração nativa com mais de 90 serviços AWS (por exemplo, EC2, CodePipeline, CloudTrail)
- Suporte para fontes de eventos SaaS externas, como Zendesk, Shopify e Datadog
- Descoberta e registro de esquemas integrados, que detectam e documentam automaticamente as estruturas dos eventos
- Arquivamento e reprodução de eventos, para ajudar na depuração, auditoria ou reprocessamento de eventos passados
Isso faz do EventBridge uma ferramenta essencial pra criar arquiteturas em nuvem resilientes e independentes.
EventBridge e arquitetura orientada a eventos
O EventBridge é feito com base no modelo de arquitetura orientada a eventos (EDA).
Na EDA, os serviços se comunicam emitindo e reagindo a eventos, em vez de fazer chamadas sincronizadas entre si.
Por exemplo, em vez de um serviço chamar a API de outro serviço para iniciar uma tarefa, ele simplesmente emite um evento como “ImageUploaded”, e outros serviços que estão ouvindo esse evento reagem de acordo.
A imagem abaixo mostra essa configuração, com o Amazon API Gateway servindo como um ponto de entrada seguro para o barramento de eventos central do EventBridge.
Imagem mostrando o Amazon API Gateway como um ponto de entrada seguro para o barramento principal do EventBridge. Fonte: Blogs da AWS
Vantagens da arquitetura orientada a eventos:
Imagem que mostra as vantagens da arquitetura orientada a eventos.
- Acoplamento flexível: Os serviços são independentes e não sabem da existência uns dos outros.
- Escalabilidade: Os sistemas podem escalar componentes individuais de forma independente.
- Tolerância a falhas: Falhas em uma parte do sistema não afetam as outras.
- Processamento assíncrono: Melhora a capacidade de resposta e o desempenho do sistema.
O EventBridge é tipo a espinha dorsal do EDA na AWS, permitindo que você conecte microsserviços, recursos na nuvem e até sistemas de terceiros sem precisar ligar tudo direitinho.
Se você quer entender melhor o ecossistema orientado a eventos da AWS, dá uma olhada no o curso Tecnologia e serviços em nuvem da AWS.
Como o EventBridge é diferente de outras opções orientadas por eventos
A AWS tem várias ferramentas pra lidar com eventos e mensagens, mas o EventBridge tem recursos únicos que o diferenciam de outras opções, como o SNS e o SQS.
SNS (Serviço de Notificação Simples)
O SNS é perfeito pra mensagens simples do tipo pub/sub.
Você pode publicar uma mensagem em um tópico e enviá-la para vários assinantes, como e-mail, SMS ou Lambda.
Mas não tem um roteamento sofisticado nem filtragem de eventos.
SQS (Serviço de Fila Simples)
O SQS oferece uma fila confiável e escalável para armazenamento e processamento de mensagens.
Os consumidores verificam a fila de mensagens, o que é útil para sistemas assíncronos e desacoplados, mas não suporta roteamento baseado em push em tempo real.
EventBridge
O EventBridge junta o melhor dos dois mundos: roteamento em tempo real, filtragem avançada, validação de esquema e integração com SaaS.
Ele foi feito pra sistemas complexos, grandes e que funcionam com eventos, que precisam de regras flexíveis, vários alvos e integração perfeita entre os serviços.
Eventos do CloudWatch
O CloudWatch Events foi o precursor do EventBridge.
O EventBridge é o substituto de última geração, que traz:
- Integração de parceiros SaaS
- Ônibus personalizados para eventos
- Descoberta e registro de esquemas
- Gerenciamento aprimorado de regras e permissões
Se você ainda está usando o CloudWatch Events, considere migrar para o EventBridge para ter recursos mais avançados.
Aqui tá uma comparação rápida dos diferentes serviços que falamos :
Recurso |
SNS |
SQS |
EventBridge |
Modelo de entrega |
Empurrar (pub/sub) |
Enquete (fila) |
Push (com roteamento baseado em regras) |
Filtragem de eventos |
Básico (atributos da mensagem) |
Nenhuma |
Avançado (correspondência de padrões JSON) |
Suporte para fan-out |
Sim |
Não |
Sim |
Suporte a esquemas |
Não |
Não |
Sim (registro de esquemas) |
Integração com SaaS |
Limitado |
Limitado |
Sim (integrações SaaS nativas) |
Repetição do evento |
Não |
Com retenção |
Sim |
Fila de mensagens não entregues (DLQ) |
Sim |
Sim |
Sim |
Componentes principais e recursos importantes do Amazon EventBridge
Para usar o Amazon EventBridge de forma eficaz, é essencial entender seus principais componentes.
Esses componentes trabalham juntos para permitir fluxos de trabalho dinâmicos e orientados por eventos, com o mínimo de sobrecarga de infraestrutura.
Abaixo tem um detalhamento de cada componente, o que ele faz e como você pode usar.
Ônibus para eventos
No centro do EventBridge está o barramento de eventos, que é tipo um canal por onde todos os eventos passam.
Um barramento de eventos pega eventos dos serviços da AWS, aplicativos personalizados ou provedores de SaaS e depois manda eles para os lugares certos com base em regras de correspondência.
A imagem abaixo mostra a seção EventBridge Buses no Console da AWS.
Imagem com uma captura de tela do Console AWS mostrando a seção EventBridge Buses.
Tipos de ônibus para eventos
Aqui estão os tipos de eventos de eventos disponíveis na AWS:
Barramento de eventos padrão:
- Provisionado automaticamente em todas as contas AWS.
- Usado principalmente pra receber eventos dos serviços da AWS (como mudanças de estado do EC2 ou eventos do S3).
- Você também pode mandar seus próprios eventos personalizados para o barramento padrão, se não precisar de outro barramento.
Ônibus personalizados para eventos:
- Criado por você para dar suporte a diferentes domínios, serviços ou cargas de trabalho.
- Ótimo pra isolar eventos de aplicativos ou separar ambientes de desenvolvimento e produção.
- Tenha um controle mais preciso sobre as políticas de acesso e o roteamento de eventos.
Exemplo de caso de uso:
Crie barramentos de eventos separados para diferentes domínios, como um para operações de comércio eletrônico e outro para análises, para manter os fluxos de eventos isolados e gerenciáveis.
Criando um barramento de eventos personalizado:
aws events create-event-bus --name my-app-bus
Entendendo as regras e metas
As regras definem quais eventos devem ser encaminhados para quais destinos.
Eles usam a correspondência de padrões JSON para filtrar os eventos que chegam no barramento e os encaminham para um ou mais destinos.
Pontos principais das regras:
- Você pode filtrar por qualquer atributo do evento, como fonte,
detail-type
ou campos aninhadosdetail
. - Várias regras podem corresponder ao mesmo evento, o que permite o comportamento de fan-out.
- Uma única regra pode ter vários alvos, permitindo que um evento acione pipelines de processamento paralelo.
Os alvos suportados incluem:
- AWS Lambda
- Funções de etapas
- Fluxos de dados Kinesis
- SNS, SQS
- Tarefas ECS
- Gateway API
Imagem com ícones dos serviços AWS para os destinos compatíveis.
O exemplo a seguir mostra como definir uma regra de evento e vinculá-la a uma função Lambda como destino:
aws events put-rule \
--name "ImageUploadRule" \
--event-pattern file://event-pattern.json \
--event-bus-name my-app-bus
aws events put-targets \
--rule "ImageUploadRule" \
--targets "Id"="1","Arn"="arn:aws:lambda:region:account-id:function:ImageProcessor"
Padrão de evento de exemplo (event-pattern.json
):
{
"source": ["myapplication.upload"],
"detail-type": ["Image Uploaded"]
}
Tubos
O EventBridge Pipes facilita a conexão entre fontes (como DynamoDB Streams) e destinos (como SQS ou Lambda) sem precisar de código personalizado.
A imagem abaixo mostra a seção EventBridge Pipes no Console da AWS.
Imagem com uma captura de tela do Console AWS mostrando a seção EventBridge Pipes.
Principais recursos do Pipes:
- Filtragem: Use padrões de eventos para restringir quais eventos passam pelo canal.
- Enriquecimento: Adicione contexto chamando uma função Lambda para dar mais detalhes ao evento antes de enviá-lo.
- Transformação: Converta o formato do evento usando transformadores de entrada.
Quando usar Pipes:
- Conectando fluxos de dados (por exemplo, Kinesis ou DynamoDB) a consumidores a jusante.
- Integrando os serviços da AWS com diferentes formatos de eventos.
Agendador
O EventBridge Scheduler permite a execução de tarefas com base no tempo, perfeito para automatizar operações como backups diários, sincronizações de dados a cada hora ou acionamento de fluxos de trabalho em uma programação.
A imagem abaixo mostra a seção EventBridge Scheduler no Console da AWS.
Imagem com uma captura de tela do Console AWS mostrando a seção EventBridge Scheduler.
As principais características incluem:
- Execuções únicas ou recorrentes
- Suporte para expressões cron ou expressões baseadas em taxa
- Controle sobre fusos horários, janelas de início/fim e lógica de repetição
Criar um evento programado:
aws scheduler create-schedule \
--name "DailyETLJob" \
--schedule-expression "rate(1 day)" \
--flexible-time-window '{"Mode":"OFF"}' \
--target '{"Arn":"arn:aws:lambda:region:account-id:function:RunETL", "RoleArn":"arn:aws:iam::account-id:role/SchedulerExecutionRole"}'
Essa programação chama a função Lambda RunETL
todos os dias.
Registro de esquemas e reproduções de eventos
O Registro de Esquemas ajuda os desenvolvedores a entender e documentar a estrutura dos eventos.
Ele descobre automaticamente esquemas de serviços AWS e aplicativos personalizados e os guarda num registro.
Os benefícios do Registro de Esquemas incluem:
- Gerando ligações de código fortemente tipadas em Java, Python e TypeScript.
- Melhorando a consistência e reduzindo erros de análise em aplicativos orientados a eventos.
As repetições de eventos permitem arquivar eventos no bar e reproduzi-los mais tarde.
Isso é útil para:
- Depuração de fluxos de trabalho com falha
- Repetindo eventos depois de corrigir um bug
- Recuperando dados perdidos ou atrasados no processamento
Imagem com um diagrama conceitual que mostra os eventos de roteamento do EventBridge. Fonte: Blogs da AWS
Ativar arquivamento de eventos:
aws events create-archive \
--archive-name "MyApplicationArchive" \
--event-source-arn "arn:aws:events:region:account-id:event-bus/my-application-bus" \
--retention-days 7
Reproduzir eventos arquivados:
aws events start-replay \
--replay-name "MyReplay" \
--source-arn "arn:aws:events:region:account-id:archive/MyApplicationArchive" \
--destination "arn:aws:events:region:account-id:event-bus/my-application-bus"
Esses componentes, barramentos de eventos, regras, pipes, agendador e registro de esquemas, juntos formam uma plataforma abrangente e flexível para construir e gerenciar arquiteturas robustas orientadas a eventos na AWS.
Cada um tem um papel único na separação dos serviços, melhorando a escalabilidade e permitindo um desenvolvimento mais rápido das aplicações.
Criando aplicativos orientados a eventos com o EventBridge
Com a configuração básica pronta, é hora de usar o Amazon EventBridge em fluxos de trabalho reais.
Configurando o EventBridge no seu aplicativo
Veja como emitir eventos personalizados a partir do seu aplicativo usando a AWS CLI:
aws events put-events --entries '[
{
"Source": "myapplication.media",
"DetailType": "ImageUploaded",
"Detail": "{\"bucket\": \"my-bucket-name\", \"key\": \"image.jpg\"}",
"EventBusName": "default"
}
]'
Explicação:
Source
: O nome ou domínio do serviço que está mandando a mensagem.DetailType
: O tipo de evento emitido.Detail
: A carga útil, codificada como uma string JSON.EventBusName
: O ônibus que vai receber e distribuir as pessoas no evento.
Você pode integrar essa lógica diretamente nas suas funções Lambda, serviços de back-end ou cargas de trabalho em contêineres usando SDKs (por exemplo, Boto3, AWS SDK para JavaScript).
Encaminhamento de eventos entre serviços AWS
O roteamento de eventos entre os serviços da AWS permite integrações perfeitas, como acionar funções Lambda a partir de ações do S3 por meio do EventBridge.
Exemplo de cenário: Conecte o Amazon S3 a uma função Lambda usando o EventBridge.
Passo 01: Crie um bucket S3 e carregue um objeto.
Passo 02: Ative as notificações de eventos S3 pelo EventBridge:
- Vá para o bucket S3.
- Ative a opção “EventBridge” em Notificações de eventos.
Passo 03: Crie uma regra do EventBridge pra combinar com o padrão do evento:
{
"source": ["aws.s3"],
"detail-type": ["Object Created"],
"detail": {
"bucket": {
"name": ["my-bucket"]
}
}
}
Passo 04: Adicione uma função Lambda como destino da regra para processar o objeto enviado.
Esse padrão permite que você estenda o processamento mais tarde, adicionando outros destinos, como Step Functions ou SNS para notificações.
Exemplo prático: Fluxo de trabalho para upload e redimensionamento de imagens
A gente pode passar por um pipeline típico orientado por eventos:
01: O usuário faz upload de uma imagem para o S3.
02: O S3 manda um evento pro barramento padrão do EventBridge.
03: O EventBridge encontra uma regra para s3:ObjectCreated:*
e encaminha para uma função Lambda.
04: O Lambda redimensiona a imagem, salva em umbucket S3 diferentedo e registra a saída.
Esse padrão é poderoso porque:
- É escalável (ou seja, pode processar milhares de eventos por segundo).
- É modular (ou seja, você pode trocar a função de redimensionamento de imagem sem mexer nos outros componentes).
- Permite paralelismo (ou seja, você pode enviar o mesmo evento para pipelines de análise ou notificação ao mesmo tempo).
Adicionando regras para escalabilidade e flexibilidade
Você pode facilmente distribuir eventos anexando vários alvos a uma única regra:
aws events put-targets --rule image-uploaded \
--targets '[
{"Id": "resizeLambda", "Arn": "arn:aws:lambda:region:account-id:function:ResizeImage"},
{"Id": "notifySNS", "Arn": "arn:aws:sns:region:account-id:ImageUploadedTopic"}
]'
Isso permite que seu aplicativo processe o evento, avise os usuários e atualize os registros, tudo ao mesmo tempo, sem precisar juntar essas tarefas.
Otimizando o desempenho e garantindo a segurança
Otimize o desempenho e a segurança criando padrões de eventos precisos que minimizam o processamento desnecessário e reduzem os riscos.
Criando padrões de eventos eficientes
Evite padrões amplos ou genéricos que causam execuções desnecessárias. Em vez disso, filtre os eventos com precisão:
{
"source": ["myapplication.service"],
"detail-type": ["ImageUploaded"],
"detail": {
"bucket": ["media-uploads"]
}
}
Isso reduz custos, melhora a latência e garante que só os eventos relevantes sejam processados.
Implementando controles de segurança robustos
A segurança é super importante em qualquer arquitetura sem servidor. Siga estas orientações:
- Use o privilégio mínimo do IAM: Dá só as permissões necessárias pra publicar ou usar eventos.
- Ativar criptografia: O EventBridge dá suporte à criptografia em repouso usando o AWS KMS.
- Implementar DLQs (filas de mensagens não entregues) para entregas que não deram certo:
"DeadLetterConfig": {
"Arn": "arn:aws:sqs:region:account-id:my-dlq"
}
Os DLQs pegam os eventos que não puderam ser entregues, permitindo que você dê uma olhada neles e tente de novo depois.
> Se você quiser saber mais sobre como proteger aplicativos na nuvem e gerenciar permissões da AWS,dá uma olhada no curso AWS Security and Cost Management.
Gerenciando custos e cotas de serviço
Para gerenciar os custos e o desempenho de forma eficaz, é importante entender o modelo de preços do EventBridge e ficar de olho nas cotas de serviço regularmente.
Entendendo a estrutura de preços
Você é cobrado por:
- Evento publicado (em dólares por milhão de eventos)
- Evento repetido
- Uso do tubo
- Tarefas do agendador
O plano gratuito inclui 100.000 eventos por mês, o que é bastante generoso para a maioria dos casos de desenvolvimento e pequenas produções.
Monitorar e ajustar as cotas de serviço
Acompanhe e peça aumentos usando:
aws service-quotas list-service-quotas --service-code events
Principais cotas a serem monitoradas:
- Regras por barramento de eventos
- Metas por regra
- Invocação por segundo
Aumentar o uso de forma responsável garante que seu sistema continue confiável mesmo com o aumento da carga.
Configurações avançadas e alternativas do EventBridge
Para arquiteturas orientadas a eventos mais complexas, você deve considerar os recursos avançados do EventBridge e padrões alternativos para melhorar o controle, a segurança e a flexibilidade do agendamento.
Distribuição de eventos entre contas
Permitir o compartilhamento seguro de eventos entre contas AWS:
{
"Statement": [{
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::123456789012:root"},
"Action": "events:PutEvents",
"Resource": "arn:aws:events:region:account-id:event-bus/shared-bus"
}]
}
Use o AWS CloudTrail pra auditar o uso e garantir a conformidade.
Recursos avançados do agendador do EventBridge
Vá além do agendamento básico com:
- Estratégias flexíveis de repetição
- Cumprimento do prazo
- Suporte para expressões cron ou rate()
Exemplo de expressão cron:
Comece um fluxo de trabalho às 9h todas as segundas-feiras:
--schedule-expression "cron(0 9 ? * MON *)"
Quando pensar em outras opções
Dependendo do que você precisa, pode ser uma boa ideia pensar em outros serviços da AWS que podem ser mais adequados para casos específicos.
Aqui estão alguns exemplos:
Caso de uso |
Alternativa |
FIFO ou ordenação estrita |
Amazon SQS FIFO |
Alta taxa de transferência e baixa latência |
Amazon MSK (Kafka) |
Orquestração complexa |
Funções de etapas |
Notificações simples |
Amazon SNS |
Conclusão
O Amazon EventBridge é um bloco de construção fundamental para aplicativos modernos e nativos da nuvem, que permite criar sistemas escaláveis e pouco acoplados, responder a eventos em tempo real nas plataformas AWS e SaaS e integrar fluxos de trabalho com o mínimo de sobrecarga de infraestrutura.
Para ter sucesso com o EventBridge, concentre-se em projetar domínios modulares e baseados em eventos, aplicando as práticas recomendadas de privilégios mínimos e filas de mensagens não entregues e monitorando continuamente o uso, as cotas e os custos.
Se você quer saber mais sobre a AWS, dá uma olhada no programa de cursos AWS Cloud Practitioner!
Perguntas frequentes
Qual é a diferença entre o EventBridge, o SNS e o SQS?
O EventBridge tem filtragem baseada em regras, suporte a esquemas e integrações com plataformas SaaS, recursos que não estão disponíveis no SNS ou no SQS.
O EventBridge é sem servidor?
Sim, o EventBridge é um serviço totalmente gerenciado e sem servidor que se adapta automaticamente ao volume de eventos.
Posso usar o EventBridge pra acionar funções Lambda?
Sim. O EventBridge pode direcionar eventos para funções Lambda com base em regras e filtros personalizados.
O que são EventBridge Pipes e quando devo usá-los?
Os pipes permitem integrações diretas, ponto a ponto, entre fontes e destinos, com suporte para filtragem, transformação e enriquecimento.
Como faço pra proteger meus fluxos de trabalho do EventBridge?
Use políticas de IAM, criptografia e filas de mensagens não entregues para proteger e monitorar sua arquitetura orientada a eventos.
O EventBridge dá suporte ao roteamento de eventos entre contas?
Sim, o EventBridge dá suporte ao compartilhamento de eventos entre contas usando políticas e permissões baseadas em recursos.
O que é o EventBridge Scheduler?
O Agendador é um recurso integrado para acionadores de eventos baseados em tempo, com lógica de repetição e opções flexíveis de agendamento.
Como funciona o preço do EventBridge?
O EventBridge cobra com base no número de eventos publicados, entregues e reproduzidos, com um plano gratuito bem generoso.
Posso reproduzir eventos passados no EventBridge?
Sim, com o recurso de reprodução de eventos, os eventos arquivados podem ser reproduzidos para resolver problemas ou refazer o processamento.