Restrições ao Lambda@Edge - Amazon CloudFront

Restrições ao Lambda@Edge

As restrições a seguir aplicam-se somente ao Lambda@Edge.

Para obter informações sobre cotas, consulte Cotas do Lambda@Edge.

Resolução do DNS

O CloudFront executa uma resolução de DNS no nome de domínio da origem antes de executar a solicitação de origem da função do Lambda@Edge. Se o serviço DNS do domínio estiver com problemas e o CloudFront não puder resolver o nome de domínio para obter o endereço IP, a função do Lambda@Edge não será invocada. O CloudFront retornará um código de status HTTP 502 (gateway inativo) ao cliente. Para ter mais informações, consulte Código de status HTTP 502 (erro de DNS).

Para ter mais informações sobre como gerenciar failover de DNS, consulte Configurar failover de DNS no Guia do desenvolvedor do Amazon Route 53.

Códigos de status de HTTP

As funções do Lambda@Edge para eventos de resposta do visualizador não podem modificar o código de status HTTP da resposta, independentemente de a resposta ter vindo da origem ou do cache do CloudFront.

Versionamento da função do Lambda

Você deve usar uma versão numerada da função do Lambda, e não $LATEST nem aliases.

Região do Lambda

A função do Lambda deve estar na região Leste dos EUA (Norte da Virgínia).

Permissões de função do Lambda

A função de execução do IAM associada à função do Lambda deve permitir que os principais de serviço lambda.amazonaws.com e edgelambda.amazonaws.com assumam a função. Para ter mais informações, consulte Definição das permissões e funções do IAM para o Lambda@Edge.

Recursos do Lambda

Os seguintes recursos do Lambda não são compatíveis com o Lambda@Edge:

Tempos de execução compatíveis

O Lambda@Edge oferece suporte a funções do Lambda com os seguintes tempos de execução:

Node.js

Python

  • Node.js 20

  • Node.js 18

  • Node.js 16¹

  • Node.js 14²

  • Node.js 12²

  • Node.js 10²

  • Node.js 8²

  • Node.js 6²

  • Python 3.12

  • Python 3.11

  • Python 3.10

  • Python 3.9

  • Python 3.8

  • Python 3.7

¹ Essa versão do Node.js chegou ao fim da vida útil e em breve será descontinuada pelo AWS Lambda.

² Essa versão do Node.js chegou ao fim da vida útil e foi totalmente descontinuada pelo AWS Lambda.

Não é possível criar nem atualizar funções com versões descontinuadas do Node.js. Só é possível associar funções existentes a essas versões com distribuições do CloudFront. Funções com essas versões que estão associadas a distribuições continuam a ser executadas. No entanto, recomendamos mover sua função para versões mais recentes do Node.js. Para obter mais informações, consulte Política de descontinuação de tempo de execução no Guia do desenvolvedor do AWS Lambda e a Agenda de versões do Node.js no GitHub.

dica

Como prática recomendada, use as versões mais recentes dos runtimes fornecidos para melhorias de desempenho e novos atributos.

Cabeçalhos do CloudFront

As funções do Lambda@Edge podem ler, editar, remover ou adicionar qualquer um dos cabeçalhos do CloudFront listados em Adicionar cabeçalhos de solicitação do CloudFront.

Observações
  • Para que o CloudFront adicione esses cabeçalhos, configure-o para adicioná-los usando uma política de cache ou política de solicitação de origem.

  • O CloudFront adiciona os cabeçalhos após o evento de solicitação do visualizador, o que significa que eles não estão disponíveis para as funções do Lambda@Edge em uma solicitação do visualizador. Os cabeçalhos só estão disponíveis para funções do Lambda@Edge em uma solicitação e resposta de origem.

  • Se a solicitação do visualizador incluir cabeçalhos que têm esses nomes e você configurou o CloudFront para adicionar esses cabeçalhos usando uma política de cache ou política de solicitação de origem, o CloudFront substituirá os valores de cabeçalho que estavam na solicitação do visualizador. As funções voltadas para o visualizador veem o valor do cabeçalho da solicitação do visualizador, enquanto as funções voltadas para a origem veem o valor do cabeçalho adicionado pelo o CloudFront.

  • Se uma função de solicitação do visualizador adicionar o cabeçalho CloudFront-Viewer-Country, a validação falhará e o CloudFront retornará o código de status HTTP 502 (gateway inválido) para o visualizador.

Restrições do corpo da solicitação com a opção de incluir corpo

Ao escolher a opção Include Body (Incluir corpo) para expor o corpo da solicitação à função do Lambda@Edge, as informações e cotas de tamanho a seguir se aplicam às partes do corpo que são expostas ou substituídas.

  • O CloudFront sempre codifica em base64 o corpo da solicitação antes de expô-lo ao Lambda@Edge.

  • Se o corpo da solicitação for grande, o CloudFront o truncará antes de expô-lo ao Lambda@Edge da seguinte forma:

    • Para eventos de solicitação do visualizador, o corpo é truncado em 40 KB.

    • Para eventos de solicitação da origem, o corpo é truncado em 1 MB.

  • Se você acessar o corpo da solicitação como somente leitura, o CloudFront enviará o corpo da solicitação original completo à origem.

  • Se a função do Lambda@Edge substituir o corpo da solicitação, as cotas de tamanho a seguir se aplicarão ao corpo retornado pela função:

    • Se a função do Lambda@Edge retornar o corpo como texto simples:

      • Para eventos de solicitação do visualizador, o corpo é truncado em 40 KB.

      • Para eventos de solicitação da origem, o corpo é truncado em 1 MB.

    • Se a função do Lambda@Edge retornar o corpo como texto codificado em base64:

      • Para eventos de solicitação do visualizador, o corpo é truncado em 53,2 KB.

      • Para eventos de solicitação da origem, o corpo é truncado em 1,33 MB.