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
ouCache-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:
-
Para obter informações sobre as configurações de páginas de erro personalizadas no console do CloudFront, consulte Páginas de erro personalizadas e erro de armazenamento em cache.
-
Para mais informações sobre o TTL mínimo de armazenamento de erros em cache no console do CloudFront, consulte Erro ao armazenar TTL mínimo em cache (segundos).
-
Para consultar uma lista de códigos de status HTTP armazenados em cache pelo CloudFront, consulte Códigos de status HTTP 4xx e 5xx armazenados em cache pelo CloudFront.
Tópicos
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:
-
Um visualizador solicita um objeto.
-
O objeto não está no ponto de presença de caches
-
Sua origem retorna um código de status HTTP 4xx ou 5xx e uma das seguintes situações é verdadeira:
-
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
-
A origem retorna um código de status HTTP 4xx que não é restrito por um cabeçalho de controle de cache e é incluído na seguinte lista de códigos de status: Códigos de status HTTP 4xx e 5xx que são sempre armazenados em cache pelo CloudFront.
-
A origem retorna um código de status HTTP 4xx sem um cabeçalho
Cache-Control max-age
ouCache-Control s-maxage
, e o código de status é incluído na seguinte lista de códigos de status: Control Códigos de status HTTP 4xx que o CloudFront armazena em cache com base em cabeçalhos de Cache-Control.
-
O CloudFront faz o seguinte:
-
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.
-
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.
-
O ponto de presença do CloudFront envia uma solicitação da página de erro personalizada à origem especificada no comportamento de cache.
-
A origem retorna a página de erro personalizada para o ponto de presença.
-
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
ouCache-Control s-maxage
retornado pela origem quando a primeira solicitação gerou o erro.
-
-
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:
-
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.
-
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:
-
Um visualizador solicita um objeto.
-
O objeto não está no ponto de presença de caches
-
Sua origem retorna um código de status HTTP 4xx ou 5xx e uma das seguintes situações é verdadeira:
-
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
-
A origem retorna um código de status HTTP 4xx que não é restrito por um cabeçalho de controle de cache e é incluído na seguinte lista de códigos de status: Códigos de status HTTP 4xx e 5xx que são sempre armazenados em cache pelo CloudFront
-
A origem retorna um código de status HTTP 4xx sem um cabeçalho
Cache-Control max-age
ouCache-Control s-maxage
, e o código de status é incluído na seguinte lista de códigos de status: Control Códigos de status HTTP 4xx que o CloudFront armazena em cache com base em cabeçalhos de Cache-Control.
-
O CloudFront faz o seguinte:
-
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
ouCache-Control s-maxage
retornado pela origem quando a primeira solicitação gerou o erro.
-
-
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.
-
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:
-
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.
-
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.