Restrições de todas as funções de borda - Amazon CloudFront

Restrições de todas as funções de borda

As restrições a seguir aplicam-se a todas as funções de borda, tanto ao CloudFront Functions quanto ao Lambda@Edge.

Propriedade da Conta da AWS

Para associar uma função de borda a uma distribuição do CloudFront, a função e a distribuição devem pertencer à mesma Conta da AWS.

Combinação do CloudFront Functions ao Lambda@Edge

Para um determinado comportamento de cache, as seguintes restrições são aplicáveis:

  • Cada tipo de evento (solicitação do visualizador, solicitação de origem, resposta de origem e resposta do visualizador) pode ter apenas uma associação de função de borda.

  • Não é possível combinar o CloudFront Functions e o Lambda@Edge em eventos do visualizador (solicitação do visualizador e resposta do visualizador).

Todas as demais combinações de funções de borda são permitidas. A tabela a seguir explica as combinações permitidas.

Funções do CloudFront

Solicitação do visualizador

Resposta do visualizador

Lambda@Edge

Solicitação do visualizador

Não permitido

Não permitido

Solicitação da origem

Permitido

Permitido

Resposta da origem

Permitido

Permitido

Resposta do visualizador

Não permitido

Não permitido

Códigos de status de HTTP

O CloudFront não invocará funções de borda para eventos de resposta do visualizador se a origem retornar um código de status HTTP 400 ou superior.

As funções do Lambda@Edge para eventos de resposta de origem são chamadas para todas as respostas de origem, incluindo quando a origem retorna um código de status HTTP 400 ou superior. Para obter mais informações, consulte Atualizar respostas de HTTP em acionadores de resposta da origem.

Cabeçalhos HTTP

Determinados cabeçalhos HTTP não são permitidos, o que significa que eles não estão expostos a funções de borda e as funções não podem adicioná-los. Outros cabeçalhos são somente leitura, o que significa que as funções podem lê-los, mas não podem adicioná-los, modificá-los nem excluí-los.

Cabeçalhos não permitidos

Os cabeçalhos HTTP a seguir não são expostos a funções de borda e as funções não podem adicioná-los. Se sua função adicionar um desses cabeçalhos, o CloudFront não a validará e retornará o código de status HTTP 502 (gateway inválido) para o visualizador.

  • Connection

  • Expect

  • Keep-Alive

  • Proxy-Authenticate

  • Proxy-Authorization

  • Proxy-Connection

  • Trailer

  • Upgrade

  • X-Accel-Buffering

  • X-Accel-Charset

  • X-Accel-Limit-Rate

  • X-Accel-Redirect

  • X-Amz-Cf-*

  • X-Amzn-Auth

  • X-Amzn-Cf-Billing

  • X-Amzn-Cf-Id

  • X-Amzn-Cf-Xff

  • X-Amzn-Errortype

  • X-Amzn-Fle-Profile

  • X-Amzn-Header-Count

  • X-Amzn-Header-Order

  • X-Amzn-Lambda-Integration-Tag

  • X-Amzn-RequestId

  • X-Cache

  • X-Edge-*

  • X-Forwarded-Proto

  • X-Real-IP

Cabeçalhos somente leitura

Os cabeçalhos a seguir são somente leitura. Sua função pode lê-los ou usá-los como entrada para a lógica da função, mas não podem alterar os valores. Se sua função adicionar ou editar um cabeçalho somente leitura, a solicitação falhará na validação do CloudFront, o qual retornará o código de status HTTP 502 (gateway inválido) para o visualizador.

Cabeçalhos somente leitura em eventos de solicitação do visualizador

Os cabeçalhos a seguir são somente leitura em eventos de solicitação do visualizador.

  • Content-Length

  • Host

  • Transfer-Encoding

  • Via

Cabeçalhos somente leitura em eventos de solicitação de origem (somente Lambda@Edge)

Os seguintes cabeçalhos são somente leitura em eventos de solicitação de origem, os quais existem apenas no Lambda@Edge.

  • Accept-Encoding

  • Content-Length

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Transfer-Encoding

  • Via

Cabeçalhos somente leitura em eventos de resposta de origem (somente Lambda@Edge)

Os seguintes cabeçalhos são somente leitura em eventos de resposta de origem, os quais existem apenas no Lambda@Edge.

  • Transfer-Encoding

  • Via

Cabeçalhos somente leitura em eventos de resposta do visualizador

Os cabeçalhos a seguir são somente leitura em eventos de resposta do visualizador para o CloudFront Functions e para o Lambda@Edge.

  • Warning

  • Via

Os cabeçalhos a seguir são somente leitura em eventos de resposta do visualizador para o Lambda@Edge.

  • Content-Length

  • Content-Encoding

  • Transfer-Encoding

Strings de consulta

As restrições a seguir aplicam-se a funções que leem, atualizam ou criam uma string de consulta em um URI de solicitação.

  • (Somente Lambda@Edge) Para acessar a string de consulta em uma solicitação de origem ou função de resposta de origem, sua política de cache ou política de solicitação de origem deve ser definida como All (Todas) para Query strings (Strings de consulta).

  • Uma função pode criar ou atualizar uma string de consulta para eventos de solicitação do visualizador e solicitação da origem (eventos de solicitação da origem existem apenas no Lambda@Edge).

  • Uma função pode ler uma string de consulta, mas não pode criar ou atualizar uma, para eventos de resposta da origem e resposta do visualizador (eventos de resposta da origem existem apenas no Lambda@Edge).

  • Se uma função criar ou atualizar uma string de consulta, as seguintes restrições se aplicarão:

    • A string de consulta não pode incluir espaços, caracteres de controle nem o identificador de fragmento (#).

    • O tamanho total do URI, incluindo a string de consulta, deve ser menor que 8.192 caracteres.

    • Recomendamos o uso de codificação percentual para o URI e a string de consulta. Para obter mais informações, consulte Codificação do URI e da string de consulta.

URI

Se uma função alterar o URI para uma solicitação, o comportamento do cache da solicitação ou a origem para a qual a solicitação é encaminhada não será alterada.

O tamanho total do URI, incluindo a string de consulta, deve ser menor que 8.192 caracteres.

Codificação do URI e da string de consulta

Os valores de string de consulta e URI passados para as funções de borda são codificados em UTF-8. Sua função deve usar codificação UTF-8 para o URI e os valores da string de consulta retornados. A codificação percentual é compatível com a codificação UTF-8.

A lista a seguir explica como o CloudFront lida com a codificação de valores de URI e string de consulta:

  • Quando os valores na solicitação são codificados em UTF-8, o CloudFront encaminha os valores para a função sem alterá-los.

  • Quando os valores na solicitação são codificados em ISO-8859-1, o CloudFront os converte para a codificação UTF-8 antes de encaminhá-los para sua função.

  • Quando os valores na solicitação são codificados usando qualquer outra codificação de caracteres, o CloudFront assume que eles estão codificados em ISO 8859-1 e tenta convertê-los de ISO-8859-1 em UTF-8.

    Importante

    A versão convertida pode ser uma interpretação imprecisa dos valores da solicitação original. Isso pode fazer com que sua função ou origem produzam um resultado indesejado.

Os valores de URI e de string de consulta encaminhados pelo CloudFront para sua origem dependem se uma função altera os valores:

  • Se uma função não alterar o URI ou a string de consulta, o CloudFront encaminhará para sua origem os valores que recebeu na solicitação.

  • Se uma função alterar o URI ou a string de consulta, o CloudFront encaminhará os valores codificados em UTF-8.

Microsoft Smooth Streaming

Não é possível usar funções de borda com uma distribuição do CloudFront utilizada em streaming de arquivos de mídia transcodificados no formato Microsoft Smooth Streaming.

Tags

Não é possível adicionar tags a funções de borda. Consulte mais informações sobre marcação no CloudFront em Marcar uma distribuição.