Lambda@Edge e padrões orientados a eventos
Execute funções nas localizações de borda do CloudFront e conecte o Lambda ao SQS, SNS, DynamoDB Streams e Kinesis para arquiteturas orientadas a eventos.
Lambda@Edge e padrões orientados a eventos é uma aula grátis de AWS Solutions Architect no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AWS Solutions Architect, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AWS Solutions Architect inclui 4 aulas no total.
O que é o Lambda@Edge
O Lambda@Edge permite executar funções do Lambda em locais de borda do CloudFront em todo o mundo, mais próximos dos usuários finais, em vez de executá-las em uma Região centralizada. Isso permite personalizar solicitações e respostas HTTP com latência adicional inferior a um milissegundo na camada de CDN. As funções do Lambda@Edge são implantadas globalmente e invocadas em todos os eventos de acerto ou falha do cache do CloudFront, o que as torna ideais para tarefas leves de manipulação de solicitações.
Os quatro pontos de acionamento do CloudFront
O Lambda@Edge pode interceptar o tráfego em quatro pontos do ciclo de vida das solicitações do CloudFront:
- Solicitação do visualizador: é acionada quando o CloudFront recebe uma solicitação do visualizador (usuário), antes de verificar o cache
- Solicitação da origem: é acionada quando o CloudFront encaminha uma falha de cache para a origem
- Resposta da origem: é acionada quando a origem retorna uma resposta, antes do armazenamento em cache
- Resposta do visualizador: é acionada antes de o CloudFront retornar a resposta ao visualizador
Limitações do Lambda@Edge em comparação com o Lambda comum
O Lambda@Edge tem limites mais rigorosos que o Lambda comum: no máximo 128 MB de memória (eventos do visualizador), 1 GB (eventos da origem), 5 segundos de tempo limite máximo (visualizador) e 30 segundos (origem). As funções devem ser criadas em us-east-1 e implantadas na borda por meio do CloudFront. Não há suporte a VPC, variáveis de ambiente ou camadas do Lambda. Essas restrições significam que o Lambda@Edge foi projetado para transformações leves, não para processamento pesado.
Casos de uso comuns do Lambda@Edge
O Lambda@Edge é especialmente útil para: testes A/B (reescrever URLs para caminhos de origem diferentes com base em cookies), autenticação (validar JWTs na borda antes de encaminhar para a origem), manipulação de cabeçalhos HTTP (adicionar cabeçalhos de segurança como HSTS, CSP e X-Frame-Options), normalização de URLs (redirecionar de www para não-www ou impor barras finais) e personalização (fornecer conteúdo diferente com base no país do visualizador, usando o cabeçalho CloudFront-Viewer-Country).
// Viewer Request: Add security headers
exports.handler = async (event) => {
const response = event.Records[0].cf.response;
response.headers['strict-transport-security'] = [{
key: 'Strict-Transport-Security',
value: 'max-age=63072000; includeSubdomains; preload'
}];
response.headers['x-frame-options'] = [{
key: 'X-Frame-Options',
value: 'DENY'
}];
return response;
};CloudFront Functions em comparação com Lambda@Edge
As CloudFront Functions são funções JavaScript extremamente leves que são executadas somente nas etapas de solicitação e resposta do visualizador, com um limite de execução de 2 ms e um custo muito menor. Para casos de uso simples (reescrita de URLs, manipulação de cabeçalhos e normalização de chaves de cache), as CloudFront Functions são preferíveis ao Lambda@Edge porque são mais rápidas e baratas. Use o Lambda@Edge quando precisar acessar chamadas de rede, cargas úteis maiores ou os pontos de acionamento de solicitação e resposta da origem.
Arquitetura orientada a eventos com o Lambda
Uma arquitetura orientada a eventos conecta serviços por meio de eventos: mensagens que representam algo que aconteceu. Na AWS, o Lambda é o principal consumidor de eventos: ele recebe eventos do SQS, SNS, DynamoDB Streams, Kinesis, S3, EventBridge e outros serviços. Cada evento aciona uma execução do Lambda, permitindo que os sistemas reajam de forma assíncrona e independente, sem acoplamento rígido. Esse padrão permite baixo acoplamento, escalabilidade independente e isolamento de falhas.
Lambda como consumidor do SQS
O Lambda pode ser configurado como um mapeamento de origem de eventos para o SQS. O Lambda consulta a fila, recupera até um tamanho de lote de mensagens (até 10.000 para filas padrão e 10 para FIFO) e invoca a função uma vez por lote. Se a função falhar, o lote inteiro será devolvido à fila. Configure uma janela de lote para aguardar mais mensagens antes da invocação, melhorando o desempenho. Use uma DLQ na fila SQS de origem para mensagens que falham repetidamente.
aws lambda create-event-source-mapping \
--function-name 'OrderProcessor' \
--event-source-arn 'arn:aws:sqs:us-east-1:123456789012:OrderQueue' \
--batch-size 10 \
--maximum-batching-window-in-seconds 5Lambda com DynamoDB Streams
O DynamoDB Streams captura cada alteração no nível do item (INSERT, MODIFY, REMOVE) como uma sequência ordenada de eventos. O Lambda lê o fluxo usando um mapeamento de origem de eventos com TRIM_HORIZON (começar pelo mais antigo) ou LATEST (começar pelo mais recente). O Lambda processa os registros na ordem dentro de uma partição. Lotes com falha bloqueiam o processamento adicional da mesma partição até serem resolvidos; use divisão em caso de erro para dividir os lotes com falha e isolar os registros problemáticos.
aws lambda create-event-source-mapping \
--function-name 'StreamProcessor' \
--event-source-arn 'arn:aws:dynamodb:us-east-1:123456789012:table/Orders/stream/...' \
--starting-position TRIM_HORIZON \
--batch-size 100 \
--bisect-batch-on-function-errorLambda com Kinesis Data Streams
O Lambda processa registros do Kinesis de forma semelhante ao DynamoDB Streams: uma execução simultânea por fragmento. As principais opções de configuração incluem o fator de paralelização (até 10 invocações simultâneas do Lambda por fragmento, processando sublotes em paralelo) e a distribuição aprimorada (vazão dedicada de 2 MB/s por fragmento para o consumidor do Lambda). Essas opções aumentam significativamente a vazão de fluxos de alto volume sem aumentar a quantidade de fragmentos.
EventBridge como roteador de eventos
O Amazon EventBridge é o barramento de eventos recomendado para conectar serviços da AWS e aplicações personalizadas. Os eventos fluem para um barramento, e as regras filtram os eventos por padrão e os encaminham para destinos, incluindo Lambda, SQS, Step Functions e outros. O EventBridge desacopla completamente os produtores dos consumidores de eventos: nenhum dos dois conhece o outro. O barramento de eventos padrão recebe eventos dos serviços da AWS; crie um barramento de eventos personalizado para os eventos da sua aplicação.
aws events put-rule \
--name 'OrderPlacedRule' \
--event-pattern '{"source": ["com.myapp.orders"], "detail-type": ["OrderPlaced"]}' \
--state ENABLED
aws events put-targets \
--rule 'OrderPlacedRule' \
--targets 'Id=LambdaTarget,Arn=arn:aws:lambda:us-east-1:123456789012:function:InventoryUpdater'Padrão de distribuição: SNS para vários Lambdas
Um padrão comum orientado a eventos é a distribuição: um evento aciona vários fluxos de processamento em paralelo. Publique em um tópico do SNS, e várias assinaturas de funções do Lambda reagirão de forma independente. Por exemplo, um evento de pedido realizado é distribuído para: um Lambda que envia um e-mail de confirmação, um Lambda que atualiza o inventário e um Lambda que notifica o armazém. Cada consumidor é independente e escala separadamente; nenhum consumidor pode bloquear os outros.
Verificação rápida
Teste sua compreensão dos conceitos de AWS Solutions Architect (SAA-C03) apresentados nesta lição.
Recapitulação da lição
Nesta lição, você aprendeu que: o Lambda@Edge executa funções em locais de borda do CloudFront, com quatro pontos de acionamento (solicitação/resposta do visualizador e solicitação/resposta da origem) para tarefas como autenticação, reescrita de URLs e manipulação de cabeçalhos; as CloudFront Functions são a alternativa de menor custo e menor latência para transformações simples na etapa do visualizador; e os padrões orientados a eventos que usam SQS, DynamoDB Streams, Kinesis, EventBridge e distribuição do SNS permitem arquiteturas com baixo acoplamento, nas quais o Lambda reage a eventos em tempo real. A seguir, exploraremos as filas SQS Standard e FIFO.
Perguntas Frequentes
A aula “Lambda@Edge e padrões orientados a eventos” é grátis?
Sim — o texto completo de “Lambda@Edge e padrões orientados a eventos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AWS Solutions Architect, atualize para CoddyKit PRO. O curso de AWS Solutions Architect inclui 4 aulas no total.
O que vou aprender em “Lambda@Edge e padrões orientados a eventos”?
Execute funções nas localizações de borda do CloudFront e conecte o Lambda ao SQS, SNS, DynamoDB Streams e Kinesis para arquiteturas orientadas a eventos. Você pratica AWS Solutions Architect com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AWS Solutions Architect?
Nenhuma experiência prévia é necessária. AWS Solutions Architect no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Lambda@Edge e padrões orientados a eventos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AWS Solutions Architect?
Sim. Cada aula de AWS Solutions Architect inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Funções do Lambda: ambientes de execução, acionadores e manipuladores
- Concorrência, limitação e concorrência reservada
- Camadas do Lambda e pacotes de implantação
- Lambda@Edge e padrões orientados a eventos