Header Ads

Como executar JavaScript no limite com funções do AWS CloudFront

Muitos aplicativos precisam da menor latência possível, mas ainda desejam executar alguma forma de lógica. Embora as redes de distribuição de conteúdo (CDNs) sejam tradicionalmente estáticas, está se tornando cada vez mais comum executar código na extremidade da rede, mais próximo do usuário.

RELACIONADO: Um CDN pode acelerar seu site. Aqui está o que você precisa saber!

A AWS ainda não tem Lambda @ Edge?

O CloudFront Functions não é a primeira ou única maneira de executar seu código personalizado na borda de um CDN. A AWS já tem Lambda @ Edge há algum tempo, o que permite que você execute qualquer função Lambda em uma borda CDN, embora por três vezes o custo.

Esse custo impede que muitas funções de transformação simples sejam muito viáveis ​​para serem executadas na borda. Em muitos casos, você não precisa fazer mais do que uma simples manipulação de string ou solicitação / resposta básica. Em vez disso, eles podem ser executados por funções básicas de curta duração.

Daí a necessidade de funções do CloudFront. Eles só conseguem executar código JavaScript leve, mas são executados em todos os nós de extremidade CDN do CloudFront por 1/6 do preço do Lambda @ Edge. Na verdade, isso é ainda mais barato do que o próprio Lambda.

Como é apenas um JS leve, seus usos são muito mais restritos. Mas, ainda existem algumas operações para as quais ele é bom, como:

  • Manipulação de cabeçalho
  • redirecionamentos ou reescritas de URL
  • Solicitar autorização
  • Normalização de chave de cache

Publicidade

Você tem duas opções para quando executar o CloudFront Functions: antes ou depois do CloudFront buscar a resposta do CDN. Se você estiver modificando URLs ou validando tokens de autenticação, execute antes. Se você está apenas modificando cabeçalhos de saída, pode não importar.

Uma coisa que ele não pode fazer é manipular o conteúdo do servidor de origem antes de ser armazenado em cache, ou seja, na Resposta da Origem; você só pode executar funções mediante solicitação do visualizador ou resposta do visualizador. Para qualquer outra coisa, você precisará usar Lambda @ Edge.

As funções devem ser executadas por um tempo máximo de execução inferior a 1 milissegundo. Isso garante que o desempenho seja bom mesmo em milhões de solicitações. As funções do CloudFront usam um novo modelo de isolamento baseado em processo com sistema de arquivos limitado e acesso à rede, que deve ser uma melhoria de desempenho em relação à solução VM tradicional da Lambda.

Em troca de 1/6 do custo, você obtém um tamanho total de pacote de 10 KB e 2 MB de memória. Use-o com sabedoria.

Usando funções do CloudFront

Para começar, é claro que você precisará usar um CDN do CloudFront. Se você não for e quiser começar com um, pode ler nosso guia para configurar um.

RELACIONADO: Primeiros passos com o CDN do CloudFront da AWS

No Console do CloudFront, clique em “ Funções ” na barra lateral e crie uma nova função:

Publicidade

Dê um nome a ela e você será levado a uma tela onde poderá criar, testar, publicar e implantar a função.

Obviamente, o código que você escreve varia muito, dependendo de seus objetivos. Para este tutorial, vou simplesmente criar uma função completamente inútil que altera todos os códigos de status para 404 e desativa o site, porque é fácil de testar.

Certifique-se de clicar em “ Salvar ” depois de escrever o código, antes de passar para a próxima etapa, o teste. Você recebe alguns exemplos de eventos de teste com base em diferentes tipos de eventos, para os quais pode escolher o URL e solicitar os cabeçalhos que o cliente está enviando.

Ele irá buscar uma resposta do CDN como faria na produção. Isso deve facilitar o teste de qualquer função antes de colocá-la ao vivo.

Em seguida, na próxima página, clique em “ publicar ” para salvar suas alterações na versão de produção da função. No entanto, isso não se aplica ao CDN automaticamente; você precisará associá-lo a uma distribuição do CloudFront ou a várias distribuições.

Obviamente, você desejará testar se a versão de produção está funcionando corretamente. Vá para o seu CDN e você verá a função sendo aplicada. Nesse caso, a função está fazendo seu trabalho de tornar meu site de exemplo totalmente inutilizável.

Publicidade

Se não estiver funcionando, você pode querer adicionar instruções console. log (), que serão enviadas diretamente para o AWS CloudWatch. Esta é a única forma de registro disponível, além das métricas básicas, pois as funções são muito leves. Para obter mais informações, você pode ler o guia da AWS sobre como fazer login no CloudFront Functions.

Nenhum comentário