Como o CloudFront processa e armazena em cache códigos de status HTTP 4xx e 5xx da origem
Tópicos
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 de erro da origem (TTL mínimo de armazenamento de erros em cache).
O código do status.
Para códigos de status 5xx, se o objeto solicitado está no cache de ponto de presença do CloudFront.
Para alguns códigos de status 4xx, se a origem retorna 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.
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 |