Personalizar na borda com funções
Com o Amazon CloudFront, você pode escrever seu próprio código para personalizar como suas distribuições do CloudFront processam solicitações e respostas HTTP. O código é executado perto dos visualizadores (usuários) para minimizar a latência e você não precisa gerenciar servidores ou outra infraestrutura. Você pode escrever código para manipular as solicitações e respostas que fluem pelo CloudFront, executar autenticação e autorização básicas, gerar respostas HTTP na borda e muito mais.
O código que você escreve e anexa à sua distribuição do CloudFront é chamado de função da borda. O CloudFront oferece duas maneiras de escrever e gerenciar funções da borda:
-
CloudFront Functions: com o CloudFront Functions, você pode escrever funções leves em JavaScript para personalizações de CDN de alta escala e sensíveis à latência. O ambiente de tempo de execução do CloudFront Functions oferece tempos de startup de submilissegundos, é dimensionado imediatamente para lidar com milhões de solicitações por segundo e é altamente seguro. O CloudFront Functions é um recurso nativo do CloudFront, o que significa que você pode criar, testar e implantar seu código inteiramente no CloudFront.
-
Lambda@Edge: o Lambda@Edge é uma extensão do AWS Lambda
que oferece computação poderosa e flexível para funções complexas e lógica completa de aplicações mais perto de seus visualizadores, além de ser altamente seguro. As funções do Lambda@Edge são executadas em um ambiente de tempo de execução Node.js ou Python. Você publica funções em uma única região da AWS, e ao associar a função a uma distribuição do CloudFront, o Lambda@Edge replica automaticamente seu código no mundo inteiro.
Como escolher entre o CloudFront Functions e o Lambda@Edge
O CloudFront Functions e o Lambda@Edge fornecem uma maneira de executar código em resposta aos eventos do CloudFront. No entanto, existem diferenças importantes que os distinguem. Essas diferenças podem ajudar você a escolher o que é certo para o seu caso de uso. A tabela a seguir lista algumas das diferenças importantes entre o CloudFront Functions e o Lambda@Edge.
CloudFront Functions | Lambda@Edge | |
---|---|---|
Linguagens de programação | JavaScript (compatível com ECMAScript 5.1) | Node.js e Python |
Origens de eventos |
|
|
Dimensionar | 10.000.000 de solicitações por segundo ou mais | Até 10.000 solicitações por segundo por região |
Duração da função | Submilissegundo |
Até 5 segundos (solicitação do visualizador e resposta do visualizador) Até 30 segundos (solicitação da origem e resposta da origem) |
Memória máxima | 2 MB | 128 a 3.008 MB |
Tamanho máximo do código de função e bibliotecas incluídas | 10 KB |
1 MB (solicitação do visualizador e resposta do visualizador) 50 MB (solicitação da origem e resposta da origem) |
Acesso à rede | Não | Sim |
Acesso ao sistema de arquivos | Não | Sim |
Acesso ao órgão de solicitação | Não | Sim |
Acesso a dados de geolocalização e dispositivos | Sim |
Não (solicitação do visualizador) Sim (solicitação da origem, resposta da origem e resposta do visualizador) |
Pode criar e testar inteiramente no CloudFront | Sim | Não |
Registro em log de funções e métricas | Sim | Sim |
Definição de preços | Nível gratuito disponível; cobrado por solicitação | Sem nível gratuito; cobrado por solicitação e duração da função |
O CloudFront Functions é ideal para funções leves e curtas para casos de uso, como os exemplos a seguir:
-
Normalização da chave de cache: você pode transformar atributos de solicitação HTTP (cabeçalhos, sequências de caracteres de consulta, cookies, até mesmo o caminho da URL de solicitação) para criar uma chave de cache ideal, que pode melhorar a taxa de acertos do cache.
-
Manipulação de cabeçalho: você pode inserir, modificar ou excluir cabeçalhos HTTP na solicitação ou resposta. Por exemplo, você pode adicionar um cabeçalho
True-Client-IP
a cada solicitação. -
Redirecionamento ou regravações de URL: você pode redirecionar os visualizadores para outras páginas com base nas informações da solicitação ou regravar todas as solicitações de um caminho para outro.
-
Solicitar autorização: você pode validar tokens de autorização com hash, como Tokens Web JSON (JWT), por meio da inspeção dos cabeçalhos de autorização ou outros metadados de solicitação.
Para começar a usar o CloudFront Functions, consulte Como personalizar a borda com o CloudFront Functions.
O Lambda@Edge é um bom ajuste para os seguintes cenários:
-
Funções que levam vários milissegundos ou mais para serem concluídas.
-
Funções que exigem CPU ou memória ajustável.
-
Funções que dependem de bibliotecas de terceiros (incluindo o SDK da AWS para integração com outros serviços da AWS).
-
Funções que exigem acesso à rede para usar serviços externos para processamento.
-
Funções que exigem acesso ao sistema de arquivos ou acesso ao corpo de solicitações HTTP.
Para começar a usar o Lambda@Edge, consulte Personalizar o conteúdo na borda com o Lambda@Edge.