Minha distribuição do Amazon CloudFront recebeu um "503 Service Unavailable" erro.
Resolução
Para resolver um código de status HTTP 503 (Serviço indisponível), execute as seguintes ações para corrigir seu erro.
Erros HTTP 503 para seu servidor de origem
Se houver problemas de desempenho no servidor de origem ou se o servidor não estiver disponível, você poderá receber o "503 Service Unavailable" erro.
Para solucionar esse problema, consulte O servidor de origem não tem capacidade suficiente para oferecer suporte à taxa de solicitação.
Erros HTTP 503 com o Lambda@Edge ou a função CloudFront
Se houver exceções não tratadas na função do AWS Lambda ou erros no código, você poderá receber o "503 Service Unavailable" erro.
Para corrigir seu código, adicione instruções de registro às funções do Lambda. Revise seus logs do Lambda@Edge e do CloudFront Functions para verificar se o CloudFront funciona corretamente. Para obter mais informações, consulte Solucionar problemas de invocação no Lambda e Solucionar problemas de execução no Lambda.
Se você exceder uma cota do Lambda@Edge, o Lambda bloqueará a execução da função do Lambda e o CloudFront retornará um erro HTTP 503. Para solucionar um erro HTTP 503 devido a cotas excedidas, consulte Como solucionar os erros 502 e 503 causados pelas funções do Lambda@Edge no CloudFront?
Erros HTTP 503 com o Amazon S3
Se você tiver aplicações integradas ou suas origens estiverem no Amazon Simple Storage Service (Amazon S3), você poderá receber um erro HTTP 500 ou 503. Para solucionar esses erros, consulte Como solucionar um erro HTTP 500 ou 503 do Amazon S3?
Impeça o CloudFront de armazenar em cache os erros HTTP 503
Por padrão, o CloudFront encaminha as respostas de erro da origem para o cliente. O CloudFront armazena em cache a resposta de erro da origem por 10 segundos.
Se a resposta de erro da origem contiver um cabeçalho Cache-Control, o CloudFront armazenará o erro em cache com o tempo de vida (time to live, TTL) relevante em vez dos 10 segundos padrão. O CloudFront não armazena em cache suas próprias respostas de erro, a menos que especificado de outra forma em uma resposta a erro personalizada. É possível configurar uma resposta de erro personalizada para erros HTTP 503 com um TTL de 0 segundos para evitar que o CloudFront armazene o erro em cache.
Para otimizar a eficiência do cache, use a política CachingOptimized. Essa política define um TTL mínimo menor de 1 segundo para respostas de erro, em vez do valor padrão de 10 segundos. Para obter mais informações, consulte Usar políticas de cache gerenciadas.
É uma prática recomendada criar uma lógica de repetição em suas aplicações para repetir solicitações que retornam um erro HTTP 503. Todos os AWS SDKs têm um mecanismo de repetição integrado com um algoritmo que usa recuo exponencial. Esse algoritmo implementa tempos de espera cada vez maiores entre novas tentativas para respostas de erro consecutivas. Muitos dos algoritmos de recuo exponencial usa tremulação (atraso aleatório) para evitar colisões sucessivas. Para saber mais, consulte Comportamento de repetição.