Como posso solucionar erros de tempo limite 504 da API HTTP com o API Gateway?

4 minuto de leitura
0

Quando uso o Amazon API Gateway, recebo um código de status de erro HTTP 504 quando invoco minha API REST, API HTTP ou API WebSocket.

Breve descrição

Quando uma solicitação de integração demorar mais do que o parâmetro de tempo limite máximo de integração da API REST do API Gateway, o API Gateway retornará um código de status 504 de HTTP.

Para solucionar erros de tempo limite 504 do API Gateway, primeiro identifique e verifique a origem do erro nos logs de eventos do Amazon CloudWatch. Em seguida, use um ou mais dos métodos a seguir para reduzir o runtime de suas solicitações de integração até que elas não mais atinjam o tempo limite.

Resolução

Identifique e verifique a origem do erro 504 em seus logs do CloudWatch

Conclua as seguintes etapas:

  1. Para a API REST e a API WebSocket, configure os logs do API Gateway para os erros 504. Para a API HTTP, ative os logs para gravar logs nos logs do CloudWatch.

  2. Tente reproduzir manualmente o erro 504 na API.

  3. Ative os logs de acesso para a API. Em seguida, use os seguintes espaços reservados para parâmetros para diagnosticar a origem do erro:

    $context.integration.status: The status code returned from an integration. For AWS Lambda proxy integrations, this is the status code that your Lambda function code returns.
    $context.integrationStatus: For Lambda proxy integration, this parameter represents the status code returned from Lambda, not from the backend Lambda function.
    $context.integrationLatency: The integration latency in ms.

    Para mais informações, consulte as variáveis $context para modelos de dados, autorizadores, modelos de mapeamento e logs de acesso do CloudWatch.

  4. Para filtrar o código de status “5XX” dos logs de acesso, use a seguinte consulta do CloudWatch Log Insights:

    fields @timestamp, @message, @logStream
    | filter status like '5'
    | sort @timestamp desc
    | display @timestamp,httpMethod,resourcePath,status,extendedRequestId,requestId
  5. No console do CloudWatch, visualize os eventos de log do API Gateway para a integração que recebe o erro.

  6. Acompanhe o ID da solicitação em seus logs do CloudWatch. Se houver tempos limite na integração, um erro “Falha na execução devido a um tempo limite” aparecerá após a linha “Corpo da solicitação do endpoint após transformações:”. Para obter mais informações, consulte Como faço para encontrar erros de API REST do API Gateway em meus logs do CloudWatch?

  7. Para filtrar o erro e selecionar seu grupo de logs de execução do API Gateway, use a seguinte consulta do CloudWatch Log Insights:

    fields @timestamp, @message
    |filter @message like "Execution failed due to a timeout error"
    |sort @timestamp desc
  8. Para determinar a origem do erro, revise os logs do back-end e verifique se o endpoint de integração associado foi invocado.

  9. Confirme quanto tempo a integração levou para concluir o processo de solicitação e responder ao API Gateway.

  10. Se a integração não foi invocada, implemente novas tentativas de API no cliente. O erro pode resultar de uma falha temporária de rede no serviço API Gateway.
    Observação: Certifique-se de que sua aplicação seja idempotente para evitar conflitos de dados ao tentar novamente a solicitação da API.
    -or-
    Se a integração foi invocada, mas ainda retorna uma mensagem de erro 504, tente reduzir o runtime da integração. Se for uma API HTTP, tente aumentar o parâmetro de tempo limite máximo da solicitação de integração. Para obter mais informações, consulte Aumento do limite de tempo de integração do Amazon API Gateway para além de 29 segundos.

Observação: O tempo limite máximo de integração padrão da API REST do API Gateway é de 29 segundos. Para a API HTTP, o tempo limite pode ser configurado para até o valor máximo de 30 segundos.

Para reduzir o runtime da sua integração

Execute uma ou mais das seguintes ações:

Informações relacionadas

Integrações para APIs REST no API Gateway

Configure uma solicitação de integração da API WebSocket no API Gateway

Crie integrações para APIs HTTP no API Gateway

Cotas e observações importantes do Amazon API Gateway