Como o CloudFront processa códigos de status HTTP 4xx e 5xx da origem - Amazon CloudFront

Como o CloudFront processa códigos de status HTTP 4xx e 5xx da origem

Quando o CloudFront solicita um objeto do bucket do Amazon S3 ou servidor de origem personalizada, a origem pode retornar um código de status HTTP 4xx ou 5xx, que indica um erro. O comportamento do CloudFront depende do seguinte:

  • Se você configurou páginas de erro personalizadas

  • Se você configurou o tempo que o CloudFront armazenará em cache as respostas a erros da origem (TTL mínima de armazenamento de erros em cache).

  • O código do status

  • Em relação a códigos de status 5xx, se o objeto solicitado estiver no cache de borda do CloudFront.

  • Para alguns códigos de status 4xx, se a origem exibir um cabeçalho Cache-Control max-age ou Cache-Control s-maxage

O CloudFront sempre armazena respostas às solicitações GET e HEAD em cache. Também é possível configurar o CloudFront para armazenar respostas a solicitações OPTIONS em cache. O CloudFront não armazena em cache respostas a solicitações que usam outros métodos.

Se a origem não responder, a solicitação do CloudFront à origem expirará, o que é considerado um erro HTTP 5xx da origem, mesmo que a origem não tenha respondido com esse erro. Nessa situação, o CloudFront continua fornecendo conteúdo armazenado em cache. Para obter mais informações, consulte Origem indisponível.

Se você ativou o registro em log, o CloudFront gravará os resultados nos logs, independentemente do código de status HTTP.

Para mais informações sobre os recursos e as opções relacionadas à mensagem de erro retornada pelo CloudFront, consulte o seguinte:

Como o CloudFront processará erros quando páginas de erro personalizadas estiverem configuradas

Se você configurou páginas de erro personalizadas, o comportamento do CloudFront será determinado de acordo com o objeto solicitado estar ou não no cache de ponto de presença.

O objeto solicitado não está no cache de borda

O CloudFront continuará tentando obter o objeto solicitado da origem quando todas estas opções forem verdadeiras:

O CloudFront faz o seguinte:

  1. No cache de ponto de presença do CloudFront que recebeu a solicitação do visualizador, o CloudFront verifica a configuração da distribuição e obtém o caminho da página de erro personalizada correspondente ao código de status retornado pela origem.

  2. O CloudFront encontra o primeiro comportamento de cache na distribuição que tem um padrão de caminho correspondente ao caminho da página de erro personalizada.

  3. O ponto de presença do CloudFront envia uma solicitação da página de erro personalizada à origem especificada no comportamento de cache.

  4. A origem retorna a página de erro personalizada para o ponto de presença.

  5. O CloudFront retorna a página de erro personalizada ao visualizador que fez a solicitação e a armazena em cache por no máximo:

    • A quantidade de tempo especificada pelo TTL mínimo de armazenamento de erros em cache (10 segundos, por padrão)

    • A quantidade de tempo especificada por um cabeçalho Cache-Control max-age ou Cache-Control s-maxage retornado pela origem quando a primeira solicitação gerou o erro.

  6. Após o término do tempo de armazenamento em cache (determinado na Etapa 5), o CloudFront tentará obter o objeto solicitado novamente encaminhando outra solicitação à origem. O CloudFront continua tentando em intervalos especificados pelo TTL mínimo de armazenamento de erros em cache.

O objeto solicitado está no cache de borda

O CloudFront continuará fornecendo o objeto que está no cache de ponto de presença quando todas estas opções forem verdadeiras:

  • Um visualizador solicita um objeto.

  • O objeto está no cache do ponto de presença, mas expirou

  • A origem retorna um código de status HTTP 5xx, em vez de retornar um código de status 304 (Não modificado) ou uma versão atualizada do objeto

O CloudFront faz o seguinte:

  1. Se a origem retornar um código de status 5xx, o CloudFront fornecerá o objeto mesmo se ele tiver expirado. Pela duração do TTL mínimo de armazenamento de erros em cache, o CloudFront continuará respondendo a solicitações do visualizador fornecendo o objeto do cache do ponto de presença.

    Se a origem retornar um código de status 4xx, o CloudFront retornará o código de status ao visualizador, não o objeto solicitado.

  2. Após o término desse TTL mínimo, o CloudFront tentará obter o objeto solicitado novamente encaminhando outra solicitação para a origem. Observe que, se o objeto não for solicitado com frequência, o CloudFront poderá removê-lo do cache do ponto de presença enquanto o servidor de origem ainda estiver retornando respostas 5xx. Para obter informações sobre o tempo de permanência de objetos de caches de ponto de presença do CloudFront, consulte Gerenciar o tempo de permanência do conteúdo no cache (expiração).

Como o CloudFront processará erros quando páginas de erro personalizadas não estiverem configuradas

Se você não configurou páginas de erro personalizadas, o comportamento do CloudFront será determinado de acordo com o objeto solicitado estar ou não no cache de ponto de presença.

O objeto solicitado não está no cache de borda

O CloudFront continuará tentando obter o objeto solicitado da origem quando todas estas opções forem verdadeiras:

O CloudFront faz o seguinte:

  1. O CloudFront retorna o código de status 4xx ou 5xx ao visualizador e também armazena o código de status no cache do ponto de presença que recebeu a solicitação por no máximo:

    • A quantidade de tempo especificada pelo TTL mínimo de armazenamento de erros em cache (10 segundos, por padrão)

    • A quantidade de tempo especificada por um cabeçalho Cache-Control max-age ou Cache-Control s-maxage retornado pela origem quando a primeira solicitação gerou o erro.

  2. Durante o tempo de armazenamento em cache (determinado na etapa 1), o CloudFront responderá a solicitações subsequentes do visualizador do mesmo objeto com o código de status 4xx ou 5xx armazenado em cache.

  3. Após o término do tempo de armazenamento em cache (determinado na Etapa 1), o CloudFront tentará obter o objeto solicitado novamente encaminhando outra solicitação à origem. O CloudFront continua tentando em intervalos especificados pelo TTL mínimo de armazenamento de erros em cache.

O objeto solicitado está no cache de borda

O CloudFront continuará fornecendo o objeto que está no cache de ponto de presença quando todas estas opções forem verdadeiras:

  • Um visualizador solicita um objeto.

  • O objeto está no cache do ponto de presença, mas expirou

  • A origem retorna um código de status HTTP 5xx, em vez de retornar um código de status 304 (Não modificado) ou uma versão atualizada do objeto

O CloudFront faz o seguinte:

  1. Se a origem retornar um código de erro 5xx, o CloudFront fornecerá o objeto mesmo se ele tiver expirado. Pela duração do TTL mínimo de armazenamento de erros em cache (10 segundos, por padrão), o CloudFront continua respondendo a solicitações do visualizador fornecendo o objeto do cache de ponto de presença.

    Se a origem retornar um código de status 4xx, o CloudFront retornará o código de status ao visualizador, não o objeto solicitado.

  2. Após o término desse TTL mínimo, o CloudFront tentará obter o objeto solicitado novamente encaminhando outra solicitação para a origem. Observe que, se o objeto não for solicitado com frequência, o CloudFront poderá removê-lo do cache do ponto de presença enquanto o servidor de origem ainda estiver retornando respostas 5xx. Para obter informações sobre o tempo de permanência de objetos de caches de ponto de presença do CloudFront, consulte Gerenciar o tempo de permanência do conteúdo no cache (expiração).

Códigos de status HTTP 4xx e 5xx armazenados em cache pelo CloudFront

O CloudFront armazena em cache os códigos de status HTTP 4xx e 5xx retornados pela origem, dependendo do código de status específico que é retornado e se a origem retorna cabeçalhos específicos na resposta.

Códigos de status HTTP 4xx e 5xx que são sempre armazenados em cache pelo CloudFront

O CloudFront sempre armazena em cache os códigos de status HTTP 4xx e 5xx retornados pela origem a seguir. Se você configurou uma página de erro personalizada para um código de status HTTP, o CloudFront a armazenará em cache.

404

Não encontrado

414

URI da solicitação muito grande

500

Internal Server Error

501

Não implementado

502

Gateway inválido

503

Serviço indisponível

504

Tempo limite do gateway

Códigos de status HTTP 4xx que o CloudFront armazena em cache com base em cabeçalhos de Cache-Control

O CloudFront apenas armazena os seguintes códigos de status HTTP 4xx retornados pela origem se a origem retornar um cabeçalho Cache-Control max-age ou Cache-Control s-maxage. Se você configurou uma página de erro personalizada para um dos seguintes códigos de status HTTP, e a origem retornar um dos cabeçalhos de controle de cache, o CloudFront a armazenará em cache.

400

Solicitação inválida

403

Proibido

405

Método não permitido

412¹

Falha na pré-condição

415¹

Tipo de mídia incompatível

¹ O CloudFront não é compatível com a criação de páginas de erro personalizadas para esses códigos de status HTTP.