

# Restrições ao Lambda@Edge
<a name="lambda-at-edge-function-restrictions"></a>

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

**Contents**
+ [

## Resolução do DNS
](#lambda-at-edge-restrictions-dns)
+ [

## Códigos de status de HTTP
](#lambda-at-edge-restrictions-status-codes)
+ [

## Versionamento da função do Lambda
](#lambda-at-edge-restrictions-version)
+ [

## Região do Lambda
](#lambda-at-edge-restrictions-region)
+ [

## Permissões de função do Lambda
](#lambda-at-edge-restrictions-role-permissions)
+ [

## Recursos do Lambda
](#lambda-at-edge-restrictions-features)
+ [

## Tempos de execução compatíveis
](#lambda-at-edge-restrictions-runtime)
+ [

## Cabeçalhos do CloudFront
](#lambda-at-edge-restrictions-cloudfront-headers)
+ [

## Restrições do corpo da solicitação com a opção de incluir corpo
](#lambda-at-edge-restrictions-request-body)
+ [

## Tempo limite de resposta e de manutenção (somente origens personalizadas)
](#timeout-for-lambda-edge-functions)

Para obter informações sobre cotas do , consulte [Cotas do Lambda@Edge](cloudfront-limits.md#limits-lambda-at-edge).

## Resolução do DNS
<a name="lambda-at-edge-restrictions-dns"></a>

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)](http-502-bad-gateway.md) ao cliente. Para obter mais informações, consulte [Erro de DNS (`NonS3OriginDnsError`)](http-502-bad-gateway.md#http-502-dns-error).

Se a lógica da função modificar o nome de domínio de origem, o CloudFront executará outra resolução de DNS no nome de domínio atualizado após a conclusão da execução da função.

Para ter mais informações sobre como gerenciar failover de DNS, consulte [Configurar failover de DNS](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring.html) no *Guia do desenvolvedor do Amazon Route 53*.

## Códigos de status de HTTP
<a name="lambda-at-edge-restrictions-status-codes"></a>

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
<a name="lambda-at-edge-restrictions-version"></a>

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

## Região do Lambda
<a name="lambda-at-edge-restrictions-region"></a>

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 name="lambda-at-edge-restrictions-role-permissions"></a>

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 obter mais informações, consulte [Configurar permissões e perfis do IAM para o Lambda@Edge](lambda-edge-permissions.md).

## Recursos do Lambda
<a name="lambda-at-edge-restrictions-features"></a>

Os seguintes recursos do Lambda não são compatíveis com o Lambda@Edge:
+ [Configurações de gerenciamento de runtime do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-controls) diferentes de **Auto** (padrão)
+ Configuração de sua função do Lambda para acessar recursos na VPC
+ [Filas de mensagens não entregues da função do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#dlq)
+ [Variáveis de ambiente do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html) (exceto variáveis de ambiente reservadas, que são automaticamente compatíveis)
+ Funções do Lambda com [Gerenciar dependências do AWS Lambda com camadas](https://docs.aws.amazon.com/lambda/latest/dg/chapter-layers.html)
+ [Usar o AWS X-Ray](https://docs.aws.amazon.com/lambda/latest/dg/lambda-x-ray.html)
+ Simultaneidade provisionada do Lambda
**nota**  
As funções do Lambda@Edge têm os mesmos recursos de [Simultaneidade regional](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html) que as funções do Lambda. Para obter mais informações, consulte [Cotas do Lambda@Edge](cloudfront-limits.md#limits-lambda-at-edge).
+ [Criar uma função do Lambda usando uma imagem de contêiner](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html)
+ [Funções do Lambda que usam a arquitetura arm](https://docs.aws.amazon.com/lambda/latest/dg/foundation-arch.html)
+ Funções do Lambda com mais de 512 MB de armazenamento temporário
+ Usar uma [chave gerenciada pelo cliente para criptografar pacotes de implantação .zip](https://docs.aws.amazon.com/lambda/latest/dg/encrypt-zip-package.html)

## Tempos de execução compatíveis
<a name="lambda-at-edge-restrictions-runtime"></a>

O Lambda@Edge é compatível com as versões mais recentes dos runtimes Node.js e Python. Para ver uma lista das versões compatíveis e suas futuras datas de descontinuação, consulte [Tempos de execução compatíveis](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html#runtimes-supported) no *Guia do desenvolvedor do AWS Lambda*.

**dica**  
Como prática recomendada, use as versões mais recentes dos runtimes fornecidos para melhorias de desempenho e novos atributos.
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 ter mais informações, consulte [Política de descontinuação de runtime](https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html) no *Guia do desenvolvedor do AWS Lambda* e o [cronograma de lançamentos do Node.js](https://github.com/nodejs/Release#release-schedule) no GitHub.

## Cabeçalhos do CloudFront
<a name="lambda-at-edge-restrictions-cloudfront-headers"></a>

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](adding-cloudfront-headers.md).

**Observações**  
Para que o CloudFront adicione esses cabeçalhos, configure-o para adicioná-los usando uma [política de cache](controlling-the-cache-key.md) ou [política de solicitação de origem](controlling-origin-requests.md).
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](controlling-the-cache-key.md) ou [política de solicitação de origem](controlling-origin-requests.md), 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
<a name="lambda-at-edge-restrictions-request-body"></a>

Ao escolher a opção **Incluir corpo** para expor o corpo da solicitação à função do Lambda@Edge, as informações e limites 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, os limites 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 limite do corpo é de 40 KB.
    + Para eventos de solicitação da origem, o limite do corpo é de 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 limite do corpo é de 53,2 KB.
    + Para eventos de solicitação da origem, o limite do corpo é de 1,33 MB.

**nota**  
Se a função do Lambda@Edge retornar um corpo que exceda esses limites, a solicitação falhará com um código de status HTTP 502 ([Erro de validação do Lambda](http-502-bad-gateway.md#http-502-lambda-validation-error)). Recomendamos que você atualize a função do Lambda@Edge para que o corpo não exceda esses limites.

## Tempo limite de resposta e de manutenção (somente origens personalizadas)
<a name="timeout-for-lambda-edge-functions"></a>

Se estiver usando as funções do Lambda@Edge para definir o tempo limite de resposta ou de manutenção para as origens da distribuição, verifique se você está especificando um valor compatível com a origem. Para obter mais informações, consulte [Cotas de tempo limite de resposta e manutenção](DownloadDistValuesOrigin.md#response-keep-alive-timeout-quota).